300 likes | 388 Views
推 Seaka: 原來數位邏輯也要上機? 0 0" 140.115.235.65 12/04 推 tlyeh: 工程師 什麼都要上ㄚ ( 不要亂想 ) 十八般 武藝 都要使得出來ㄚ 沒看到 我電工木工 水泥工金工化工生醫 ? 平常都得用出來ㄚ 140.115.7.94 12/05 → tlyeh: 學會了 就用得出來 只是知道卻沒學會 140.115.7.94 12/05
E N D
推 Seaka:原來數位邏輯也要上機?0 0" 140.115.235.65 12/04 推 tlyeh:工程師 什麼都要上ㄚ (不要亂想) 十八般 武藝 都要使得出來ㄚ 沒看到 我電工木工 水泥工金工化工生醫?平常都得用出來ㄚ 140.115.7.94 12/05 → tlyeh: 學會了 就用得出來 只是知道卻沒學會 140.115.7.94 12/05 → tlyeh: 就變成 唸書無用 的情形了 140.115.7.94 12/05 → lambdadriver:真...真不愧是老師... 140.115.214.238 12/05 → lambdadriver:那我們上機是要幹嘛...打電動!? 140.115.214.238 12/05 推 xiiuili:老師真強......@@" 140.115.214.56 12/05 → xiiuili:根據助教的說法... 140.115.214.56 12/05 → xiiuili:上機 = 模擬電路 = 以前的實驗電腦化 @@" 140.115.214.56 12/05 推 onepieceQ:是喔!!! 140.115.214.246 12/05 推 ant3690:好...抽像 140.115.65.30 12/05 推 tlyeh:昨天上課到後來 怎麼變成是鬧場的樣子 140.115.7.94 12/06 → tlyeh: 助教 故做 輕鬆狀 同學仍然要有節制分寸 140.115.7.94 12/06 → tlyeh: 弄到 妨礙上課的情形 就過分了!! 要記住 140.115.7.94 12/06 → tlyeh:到外面做事的時候 也一體適用 否則會被人! 140.115.7.94 12/06 作者 morphous (SCP動起來吧~~~) Wed Dec 6 13:13:32 2006 看板 ME-1A 標題 數位邏輯 12.05 實驗課投影片 http://140.115.67.230/ncume_dl_verilog_intro.ppt 推 jackchang:P4使用軟體是ModelSim 220.134.24.151 12/06 → jackchang:p8~p10的程式範例在modeule後面需加分號 220.134.24.151 12/06 → jackchang:p14 中always的用法nogedge改成negedge 220.134.24.151 12/06 推 morphous:嘖嘖嘖 學長昨天沒來上課喔.... 140.115.67.228 12/06 推 morphous:那是大魔王故意設計的bug啦... 140.115.67.228 12/06
數 位 邏 輯 軟 體 設 計 實 驗 • FPGA (Filed Programmable Gate Array) • CPLD (Complex Programmable Logic Device)
CPLD適合用來實現各種 運算和組合邏輯 時間特性預估容易 有固定內部連線電路的邏輯功能來編程 編程採用E2PROM或Flash技術,使用時外部不需要另外的記憶儲存元件 Verilog FPGA適用於實現循序邏輯 分段式佈線結構使得其時間延遲的預測變的困難 具有更大的靈活性透過改變內部電路佈線來編程 可編程邏輯閘數大 許多編程採用SRAM技術,所以使用時外部需要搭配記憶儲存元件存放編程訊息使用方法較複雜 VHDL 差異 :
使用軟體 : • Mdelsim • ISE ( Xilinx Project Navigator)
Outline • Introduction • 四種描述層次 • 基本單位的描述 • module • port • 常用的Logic Gates • 其他的語法協定
Introduction • Verilog HDL是一種硬體描述語言,用來描述電路功能或是架構。 • 只要有C語言的相關經驗即可容易上手。 • 一般的邏輯合成工具普遍都有支援Verilog HDL。 • 大部分的製造商皆有提供Verilog HDL的函數庫,因此用Verilog HDL設計晶片在廠商方面有較多的選擇。
四種描述層次 • Behavioral level:只考慮模組中的功能和函數,不必考慮硬體方面的詳細電路,如同是在寫C語言一樣。 • Dataflow level:說明資料如何在暫存器中儲存和傳送,和資料處理的方式。 • Gate level:模組是由Logic gates所構成的,使用Logic gates來設計電路。 • Switch level:最低層次,設計者需知道電晶體的元件特性。
Behavioral module Beh_AND ( in1 , in2 , Out) input in1 , in2 ; output Out ; reg Out ; always @ ( in1 or in2 ) begin Out = in1 & in2 end endmodule
Data Flow module DF_AND ( in1 , in2 , Out) input in1, in2 ; output Out ; wrie Out ; assign Out = in1 & in2 ; endmodule
四種準位數值 • 0 • 1 • X : 不確定 • Z : 高阻抗
常用敘述 assign • assign 驅動某個值到 wire , wand , wor ,tri 用於資料處理模型 Data Flow Model wire a,b,c; // 宣告三個接縣型態的變數 assign a= b & c; //a = b 和c 作 and 運算
常用敘述 always • 可隨時監督外界輸出入port ,訊號有變化時即告訴模組內部配合相對應的工作 always @(a or b) begin f=a&b&c; end
always 例子: always @( posedge clock) begin end // posedge 正緣觸發 // nogedge 負緣觸發
wire 敘述 • 接線是連接硬體元件之連接線 • 接線必須被驅動才能改變它內函值 • 內定為一個位元值 z
reg • 暫存器 • 功能與變數很像 ,可以給定一個數值,主要功能在保持住電路中某個值,不必像(wire)要被驅動才能改變它的內函值 • 內定為一個位元值 x
選用wire 或 reg 時機 • wire 必須配合 assign 來使用 ,且不能出現在always區塊描述裡 Wire a,b,c; assign a &c; • reg 必須放在always區塊描述裡 input [3:0] a, b; output [3:0] c; reg [3:0] c; always @(a or b) Begin c=a+b; end
二元逐位運算子 • ~ NOT • & AND • | OR • ^ XOR • ~^ XNOR
範例 • Assign a= ~ b ; // not // 若 b= 4’b0010 // 則 a= 4’b1101 • Assign a= b & c; // and // 若 b= 4’b0011 // 若 c= 4’b1010 // 則 a= 4’b0010
範例 • Assign a= b|c ; // or // 若 b= 4’b0011 // 若 c= 4’b1010 // 則 a= 4’b1011 • Assign a= b ^ c; // and // 若 b= 4’b0011 // 若 b= 4’b1010 // 則 a= 4’b1001
單元運算子 • & = AND , ~& = NAND , | = OR , ~| = NOR • ^ = XOR ,~^ = NXOR assign a=&b ; assign a=|b;
邏輯運算子 • != NOT , &&=AND , || = OR 三種 != NOT 條件 : 不成立 , 經過 ! 後 : 成立 對於一特定一比輸入資料任何一為元,只要一位元為1運算結果為0 或只要一位元為0運算結果為1 a =!a 0=1 , 1=0 , 00=1 , 01 = 0 , 10=0 , 11=0 , 00=1
&&=AND 對於二個
基本單位-模組(module) • Module是以input, output, bi-direction ports和外部溝通。 • 一個已經設計好的Module可以放在另一個Module之中使用。 • Ex.module fulladd4(SUM,C_OUT,A,B,C_IN);…endmodule//有port的modulemodule Top;…endmodule/*沒有任何的port的modole,常用於模擬之用*/ Input、Output 模組的名字(自行命名)
Top Level Module可以包含許多的其他Modules。 Modules之中可能還有其他的Modules。 Level的概念 Top Level Module X Module T1 A B Module T2 A B Module T3 A B
範例 module X(a,b,c,d,e,f); … … T1 jack1(y1,y2,x); T2 jack2(k1,k2,q); T3 jack3(z1,z2,p); … endmodule module T1(u1,u2,u3); … endmodule module T2(v1,v2,v3); … endmodule … Top Level Module X Module T1 A B Module T2 A B Module T3 A B
基本單位-port • 與module外部的信號溝通。 • 分為輸出(output)、輸入(input)、雙向(inout) • 如果你只有宣告input,output,inout,則將被視為是wire的型態。 • 如果想要維持信號到下一個clock,則需要宣告成reg的型態(序向邏輯電路會用到) • Ex. output q; reg q; //這樣才可以儲存資料 • 向量:wire和reg皆可宣告成向量Ex. wire [7:0] a; //8-bit a變數reg [40:0] address; //41-bit address變數
Ports的連接規定 • Port可以浮接,主要是用來除錯。Ex.fulladd4 fa0(SUM, ,A,B,C_IN); • 輸出輸入的連接規定: Module X 常見的net型態: ex. wire c; Module T1
模擬用 Error ports module Top; reg [3:0] A,B; reg C_IN; reg [3:0] SUM; wire C_OUT; fulladd4 fa0(SUM,C_OUT,A,B,C_IN); … endmodule module fulladd4(s,co,a,b,cin); … … endmodule module的別名,可以隨便取,但是不可相同 Call fulladd4 fulladd4的輸出不可以接到reg型態的sum