王金明 電子設計自動化 第七章課件(非原版)_第1頁
王金明 電子設計自動化 第七章課件(非原版)_第2頁
王金明 電子設計自動化 第七章課件(非原版)_第3頁
王金明 電子設計自動化 第七章課件(非原版)_第4頁
王金明 電子設計自動化 第七章課件(非原版)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第第7章章 Verilog設計的層次與風格設計的層次與風格 學習目標及學習重點學習目標及學習重點學習目標:學習目標: 1) 理解和掌握理解和掌握verilog的幾種不同的設計方法;的幾種不同的設計方法; 2)掌握基本組合邏輯電路和時序邏輯電路的設計方法掌握基本組合邏輯電路和時序邏輯電路的設計方法。學習重點學習重點 1) 如何以不同的設計風格設計如何以不同的設計風格設計verilog程序代碼;程序代碼; 2) 每種設計方法的特點及應用;每種設計方法的特點及應用; 3) 組合邏輯電路和時序邏輯電路的概念。組合邏輯電路和時序邏輯電路的概念。 3) 基本組合邏輯電路的設計;基本組合邏輯電路的設計; 4

2、) 基本時序邏輯電路的設計?;緯r序邏輯電路的設計。 主要主要 內容內容 7.1 Verilog設計的層次設計的層次 1.verilog設計的層次包含哪些?設計的層次包含哪些? 系統級;系統級; 算法級;算法級; 寄存器傳輸級寄存器傳輸級; 門級:門級:利用邏輯門以及邏輯門之間的連接來構建電路利用邏輯門以及邏輯門之間的連接來構建電路 模型;模型; 開關級:開關級:利用三極管、存儲節點以及它們之間的連接利用三極管、存儲節點以及它們之間的連接 來構建電路模型。來構建電路模型。2.設計層次的高低是如何區分的?設計層次的高低是如何區分的? 系統級、算法級、寄存器級系統級、算法級、寄存器級-高級別的描述

3、方式。高級別的描述方式。 設計電路更多的是使用設計電路更多的是使用verilog提供的過程語句、控制結構,提供的過程語句、控制結構,描述的是電路輸入輸出之間的邏輯關系。描述的是電路輸入輸出之間的邏輯關系。 門級、開關級門級、開關級-低層次的描述方式。低層次的描述方式。 利用底層的門元件和晶體管直接搭建電路。利用底層的門元件和晶體管直接搭建電路。 7.1 Verilog設計的層次設計的層次 3.Verilog所包含的設計風格及層次所包含的設計風格及層次 1) 結構(結構(Structural)描述描述 調用電路元件(比如邏輯門、晶體管調用電路元件(比如邏輯門、晶體管) 來構建電路。來構建電路。

4、2)行為()行為(Behavioural)描述描述 通過描述電路的行為特性(電路輸入通過描述電路的行為特性(電路輸入輸輸 出之間的邏輯關系)來設計電路。出之間的邏輯關系)來設計電路。 3)數據流()數據流(Data Flow)描述描述 通過表達式、操作符和操作數來設計通過表達式、操作符和操作數來設計 電路。電路。4. 不同設計層次的應用不同設計層次的應用 在設計電路時,一般優先選擇層次高的描在設計電路時,一般優先選擇層次高的描 述方式。門級結構描述一般很少采用,只用于述方式。門級結構描述一般很少采用,只用于一些關鍵路徑的設計。一些關鍵路徑的設計。 層次高的描述給綜合器提供了可優化的空層次高的描

5、述給綜合器提供了可優化的空間,而門級結構描述的電路綜合器是很難再進間,而門級結構描述的電路綜合器是很難再進行優化的。行優化的。 要靈活選用最適宜的設計風格。要靈活選用最適宜的設計風格。 7.1 Verilog設計的層次設計的層次 1.verilog中的結構描述方式中的結構描述方式 1)調用)調用Verilog內置門元件(門級結構描述)內置門元件(門級結構描述) 2)調用開關級元件(晶體管級結構描述)調用開關級元件(晶體管級結構描述) 不是本書的討論重點。不是本書的討論重點。 3) 用戶自定義元件用戶自定義元件UDP(也在門級)(也在門級) 主要用于仿真。主要用于仿真。 注:除了上述結構描述的方

6、式外,在多層次結構注:除了上述結構描述的方式外,在多層次結構 電路的設計中,不同模塊間的調用也可以認電路的設計中,不同模塊間的調用也可以認 為是結構描述。為是結構描述。 include “文件名文件名.v” 7.2 結構結構描述描述 2. Verilog的內置門元件的內置門元件 Verilog的內置門元件的內置門元件 3. 基本門的邏輯真值表基本門的邏輯真值表 Verilog的內置門元件的內置門元件 nand(與非門與非門)0 1 x z nor(或非門)(或非門)0 1 x z01 1 1 1 01 0 x x11 0 x x 10 0 0 0 x1 x x x x x 0 x xz1 x

7、x x zx 0 x x Verilog的內置門元件的內置門元件 xor0 1 x z xnor 0 1 x z00 1 x x 0 1 0 x x11 0 x x 1 0 1 x xxx x x x x x x x xzx x x x z x x x x 門元件的調用門元件的調用4 調用門元件的格式調用門元件的格式 門元件名字門元件名字 () 1) 其中普通門的端口列表按下面的順序列出:其中普通門的端口列表按下面的順序列出: (輸出,輸入(輸出,輸入1,輸入,輸入2,輸入,輸入3);); 例:例: and a1(out,in1,in2,in3); /三輸入與門三輸入與門 2)對于三態門,則按

8、如下順序列出輸入輸出端口:)對于三態門,則按如下順序列出輸入輸出端口: (輸出,輸入,使能控制端);(輸出,輸入,使能控制端); 例:例: bufif1 mytri1(out,in,enable); /高電平使能的三態門高電平使能的三態門3)調用三態門以及非門的注意事項)調用三態門以及非門的注意事項 允許有多個輸出,但是只能有一個輸入。允許有多個輸出,但是只能有一個輸入。 例:例: not N1(out1,out2,in); /一個輸入一個輸入in,兩個輸出兩個輸出out1,out2 buf B1(out1,out2,out3,in); /一個輸入一個輸入in,兩個輸出兩個輸出out1, ou

9、t2,out3 門元件的調用門元件的調用門級結構描述的門級結構描述的2選選1MUXmodule MUX1(out, a, b, sel);output out;Input a, b, sel;not (sel_, sel);and (a1, a, sel_),(a2, b, sel);or (out, a1, a2);endmodule門級結構描述的門級結構描述的2選選1MUX7.3 行為描述行為描述 1. 概念概念 行為描述就是對設計實體的數學模型的描述,其抽象程度遠高于結行為描述就是對設計實體的數學模型的描述,其抽象程度遠高于結構描述方式。構描述方式。 行為描述類似于高級編程語言,當描述一

10、個設計實體的行為時,無行為描述類似于高級編程語言,當描述一個設計實體的行為時,無需知道具體電路的結構,只需要描述清楚輸入與輸出信號之間的邏輯需知道具體電路的結構,只需要描述清楚輸入與輸出信號之間的邏輯關系,而不需要花費更多的精力關注設計功能的門級實現。關系,而不需要花費更多的精力關注設計功能的門級實現。 2.對比對比 結構描述側重于表示一個電路由哪些基本元件組成,以及這些基本結構描述側重于表示一個電路由哪些基本元件組成,以及這些基本元件的互聯關系。元件的互聯關系。 行為描述則主要描述輸入輸出信號間的邏輯關系。行為描述則主要描述輸入輸出信號間的邏輯關系。 3. 實現途徑實現途徑 always 過

11、程語句實現,這種行為描述的方式,既適合于設計時序電過程語句實現,這種行為描述的方式,既適合于設計時序電路,也適合于實現組合電路。路,也適合于實現組合電路。 行為描述的行為描述的2選選1MUXmodule mux2(out, a, b, sel); output out; input a, b, sel; reg out; always (a or b or sel) begin if(sel) out = b; else out = a; endendmodule7.4 數據流描述數據流描述 1.概念概念 數據流描述是通過表達式、操作符和操作數來數據流描述是通過表達式、操作符和操作數來設計電路

12、的一種方式。設計電路的一種方式。2.實現途徑實現途徑 數據流描述方式主要使用持續賦值語句數據流描述方式主要使用持續賦值語句assign,多用于描述組合邏輯電路,其格式為:,多用于描述組合邏輯電路,其格式為: assign LHS_net=RHS_expression; 右邊表達式中的操作數無論何時發生變化,都右邊表達式中的操作數無論何時發生變化,都會引起表達式值的重新計算會引起表達式值的重新計算, 并將重新計算后的值并將重新計算后的值賦予左邊表達式的賦予左邊表達式的net型變量。型變量。 數據流描述的數據流描述的2選選1MUXmodule MUX3(out, a, b, sel);output

13、 out;input a, b, sel;assign out = sel ? b : a;endmodule7.5 不同描述風格的設計不同描述風格的設計 對設計者而言,采用的描述級別越高,設計對設計者而言,采用的描述級別越高,設計越容易;描述級別越低,設計就越繁瑣越艱難越容易;描述級別越低,設計就越繁瑣越艱難。就像用高級語言和匯編語言編寫程序的區別。就像用高級語言和匯編語言編寫程序的區別一樣。一樣。 對綜合器而言,高級別的描述為綜合器的對綜合器而言,高級別的描述為綜合器的優化提供了更大的空間,較之門級結構描述更優化提供了更大的空間,較之門級結構描述更能發揮綜合器的性能,所以在電路設計中,除能

14、發揮綜合器的性能,所以在電路設計中,除非一些關鍵路徑的設計采用門級結構描述外,非一些關鍵路徑的設計采用門級結構描述外,一般更多地采用行為建模方式。一般更多地采用行為建模方式。 結構描述的結構描述的1 1位全加器位全加器module full_add1(a, b, module full_add1(a, b, cincin, sum, , sum, coutcout); );input a, b, input a, b, cincin; ;output sum, output sum, coutcout; ;wire s1,m1, m2, m3;wire s1,m1, m2, m3;and (m

15、1, a, b),and (m1, a, b), (m2, b, (m2, b, cincin), ), (m3, a, (m3, a, cincin); );xorxor (s1, a, b), (s1, a, b), (sum, s1, (sum, s1, cincin); );or (or (coutcout, m1, m2, m3);, m1, m2, m3);endmoduleendmodule數據流描述的數據流描述的1 1位全加器位全加器module full_add1(a, b, module full_add1(a, b, cincin, sum, , sum, coutcou

16、t); );input a, b, input a, b, cincin; ;output sum, output sum, coutcout; ;assign sum = a b assign sum = a b cincin; ;assign assign coutcout = (a & b ) | (b & = (a & b ) | (b & cincin ) | ( ) | (cincin & a ); & a );endmoduleendmodulemodule full_add2(a, b, module full_add2(a, b

17、, cincin, sum, , sum, coutcout); );input a, b, input a, b, cincin; ;output sum, output sum, coutcout; ;assign cout,sum=a+b+cin;endmoduleendmodule行為描述的行為描述的1 1位全加器位全加器module full_add3(a,b,cin,sum,cout);module full_add3(a,b,cin,sum,cout);input input a,b,cina,b,cin; output ; output sum,coutsum,cout; ;r

18、egreg sum,cout,m1,m2,m3; sum,cout,m1,m2,m3;always (a or b or always (a or b or cincin) )begin begin m1=m1=a&ba&b; m2=; m2=b&cinb&cin; m3=; m3=a&cina&cin; ;sum=(sum=(ab)cinab)cin; ; coutcout=(m1|m2)|m3;=(m1|m2)|m3;endendendmoduleendmodulemodul full_add4(a,b,cin,sum,cout);input

19、 a,b,cin; output sum,cout;reg sum,cout;always (a or b or cin)begin cout,sum=a+b+cin;endendmodule 混合方式描述的混合方式描述的1位全加器位全加器 在模塊中,可以將結構描述和行為描述混合。在模塊中,可以將結構描述和行為描述混合。 也就是說,模塊描述中可以調用門元件、調用其他模塊,也可以包含持續賦也就是說,模塊描述中可以調用門元件、調用其他模塊,也可以包含持續賦值語句以及過程語句(值語句以及過程語句(initial、always)。)。 來自來自always語句和語句和initial語句的值可以驅動門或

20、開關,而來自門或持續賦值語語句的值可以驅動門或開關,而來自門或持續賦值語句的值也能夠用于觸發句的值也能夠用于觸發always語句和語句和initial語句。語句。 modul full_add5(a,b,cin,sum,cout); input a,b,cin; output sum,cout; reg cout,m1,m2,m3; xor x1(s1,a,b); assign sum=s1cin; always(a or b or cin) begin m1=a&b;m2=b&cin;m3=a&cin;cout=(m1|m2) |m3; end endmodule 4

21、 4位加法器位加法器4-bit adderinclude full_add1.vmodule add4_1(sum, cout, a, b, cin);output 3:0 sum;output cout;input 3:0 a, b; input cin; full_add1 f0 (a0,b0,cin,sum0,cin1);full_add1 f1 (a1,b1,cin1,sum1, cin2);full_add1 f2 (a2,b2,cin2,sum2, cin3);full_add1 f3 (a3,b3,cin3,sum3, cout);endmodule問題:什么是級聯全加器?有何特

22、點?問題:什么是級聯全加器?有何特點?結構描述的結構描述的4 4位級連全加器位級連全加器module add4_2(cout,sum,a,b,cin);output3:0 sum;output cout;input3:0 a,b;input cin;assign cout,sum=a+b+cin;endmodule數據流描述的數據流描述的4 4位加法器位加法器行為描述的行為描述的4 4位加法器位加法器module add4_3(cout,sum,a,b,cin);output3:0 sum;output cout;input3:0 a,b;input cin;reg3:0 sum; reg c

23、out;always ( a or b or cin )begincout,sum=a+b+cin;endendmodule組合邏輯電路與時序邏輯電路的概念組合邏輯電路與時序邏輯電路的概念組合邏輯電路組合邏輯電路 組合邏輯電路的特點是任意時刻的輸出僅取組合邏輯電路的特點是任意時刻的輸出僅取決于當前時刻的輸入,與電路原來的狀態無關。輸決于當前時刻的輸入,與電路原來的狀態無關。輸入的變化直接反映出了輸出的變化。入的變化直接反映出了輸出的變化。時序邏輯電路時序邏輯電路 輸出不僅與當前的輸入有關,而且其輸出與輸出不僅與當前的輸入有關,而且其輸出與電路原來的狀態有關。相當于在組合邏輯的輸出端電路原來的狀

24、態有關。相當于在組合邏輯的輸出端加上了一個鎖存電路和一個反饋輸入。以存儲電路加上了一個鎖存電路和一個反饋輸入。以存儲電路上一時刻的狀態,并將這個狀態反饋回輸入端。上一時刻的狀態,并將這個狀態反饋回輸入端。7.6 基本組合電路設計基本組合電路設計門級結構描述門級結構描述 module gate1(F,A,B,C,D);input A,B,C,D;output F;nand(F1,A,B); /調用門元件調用門元件and(F2,B,C,D);or(F,F1,F2);endmodule數據流描述數據流描述module gate2(F,A,B,C,D);input A,B,C,D;output F;a

25、ssign F=(A&B)|(B&C&D);/assign持續賦值持續賦值endmodule行為描述行為描述module gate3(F,A,B,C,D);input A,B,C,D;output F;reg F;always (A or B or C or D)/過程賦值過程賦值beginF=(A&B)|(B&C&D);endendmoduleF1F2基本組合電路設計基本組合電路設計 三態門三態門1)1)用用bufif1關鍵字描述的三態門關鍵字描述的三態門 module tri_1 (in,en, out); input in, en; out

26、put out; tri out;/與定義為與定義為wire 型是一樣型是一樣 bufif1 b1(out,in,en); endmodule2)用數據流描述三態門)用數據流描述三態門 module tri_2 (in,en, out); input in, en; output out; assign out=en?in:bz; endmodule3)行為描述三態門)行為描述三態門 module tri_3(in,en,out); input in, en; output out; reg out; always(in or en) out=en?in:bz; endmodulemodule

27、 bidir(tri_inout,out,in,en,b); input in,en,b; inout tri_inout; output out; assign tri_inout=en?in:bz; assign out=tri_inoutb;endmodule 基本組合電路設計基本組合電路設計 三態雙向驅動器三態雙向驅動器基本組合電路設計基本組合電路設計3-8譯碼器譯碼器module decoder_38(out, in);output7:0 out;input2:0 in; reg7:0 out; 3-8譯碼器真值表譯碼器真值表always (in) begin case(in) 3d

28、0: out=8b11111110; 3d1: out=8b11111101; 3d2: out=8b11111011; 3d3: out=8b11110111; 3d4: out=8b11101111; 3d5: out=8b11011111; 3d6: out=8b10111111; 3d7: out=8b01111111; endcase endendmodule輸入輸出0001111111000111111101010111110110111111011110011101111101110111111101011111111101111111基本組合電路設計基本組合電路設計8-3優先編

29、碼器優先編碼器module encoder8_3(none_on,outcode,a,b,c,d,e,f,g,h); input a,b,c,d,e,f,g,h; output none_on; output2:0 outcode; regt3:0 outtemp; assign none_on, outcode=outtemp; always(a or b or c or d or e or f or g or h) begin if(h) outtemp=4b0111; else if(g) outtemp=4b0110; else if(f) outtemp=4b0101; else i

30、f(e) outtemp=4b0100; else if(d) outtemp=4b0011; else if(c) outtemp=4b0010; else if(b) outtemp=4b0001; else if(a) outtemp=4b0000; else outtemp=4b1000; endendmodule 問題:問題: 何謂優先編碼?何謂優先編碼? 如何實現優先編碼?如何實現優先編碼? 基本組合電路設計基本組合電路設計8-3優先編碼器優先編碼器(函數實現函數實現)module code_83(din,dout); input7:0 din; output2:0 dout; f

31、unction2:0 code; input7:0 din; if (din7) code =3b111; else if(din6) code =3b110; else if din5) code =3b101; else if(din4) code=3b100; else if(din3) code=3b011; else if(din2) code=3b010; else if(din1) code=3b001; else if(din0) code=3b000; else code=3b000; endfunctionassign dout=code(din);endmodule基本組

32、合電路設計基本組合電路設計- -奇偶校驗位產生器奇偶校驗位產生器 奇偶校驗位產生器奇偶校驗位產生器 Module parity(even_bit,odd_bit,input_bus); output even_bit,odd_bit; input7:0 input_bus; assign odd_bit=input_bus; /產生奇校驗位產生奇校驗位 assign even_bit=odd_bit; /產生偶校驗位產生偶校驗位 endmodule 奇偶校驗位產生的原理:奇偶校驗位產生的原理: 將輸入數據的每一位相互進行異或運算(用縮位運算符)將輸入數據的每一位相互進行異或運算(用縮位運算符)

33、,若有奇數個,若有奇數個“1”則輸出則輸出“1”,否則輸出,否則輸出“0”。7.7 基本時序電路設計基本時序電路設計 D-FF designs(基本基本D觸發器觸發器)module DFF(Q, D, CLK);output Q;input D, CLK;reg Q;always (posedge CLK)beginQ = D;endEndmoduleD觸發器原理:觸發器原理: 當時鐘信號為有效邊沿時,將輸入當時鐘信號為有效邊沿時,將輸入D鎖存到輸出鎖存到輸出Q. 即,來一次有效邊沿,則執行一次數據鎖存。其他時刻,無論即,來一次有效邊沿,則執行一次數據鎖存。其他時刻,無論 輸入信號如何變化,輸

34、出都不變。輸入信號如何變化,輸出都不變。 因此,用邊沿觸發的因此,用邊沿觸發的always語句就能實現。語句就能實現?;緯r序電路設計基本時序電路設計 帶異步清帶異步清0、異步置、異步置1的的D觸發器觸發器module DFF1(q,qn,d,clk,set,reset); input d,clk,set,reset; output q,qn; reg q,qn; always (posedge clk or negedge set or negedge reset) begin if (!reset) begin q = 0; qn = 1; /異步清異步清0,低電平有效,低電平有效 end

35、 else if (!set) begin q = 1; qn = 0; /異步置異步置1,低電平有效,低電平有效 end else begin q = d; qn = d; end endendmodule基本時序電路設計基本時序電路設計 帶同步清帶同步清0、同步置、同步置1的的D觸發器觸發器module DFF2(q, qn, d, clk, set, reset);input d, clk, set, reset;output q, qn; reg q, qn; always (posedge clk) begin if (reset) /同步清同步清0,高電平有效,高電平有效 begi

36、n q=0;qn=1; end else if (set) /同步置同步置1,高電平有效,高電平有效 begin q =1;qn =0; end else begin q=d; qn=d; end endendmodule基本時序電路設計基本時序電路設計8位數據鎖存器位數據鎖存器module latch_8(qout,data,clk);output7:0 qout;input7:0 data; input clk;reg7:0 qout; always (clk or data) begin if(clk) qout=data; endEndmodule鎖存器的含義:鎖存器的含義: 當時鐘為

37、有效電平(時段)時,鎖存器的輸出同步反映輸入值。當時鐘為有效電平(時段)時,鎖存器的輸出同步反映輸入值。 基本時序電路設計基本時序電路設計8位數據寄存器位數據寄存器module reg8(out_data,in_data,clk,clr);output7:0 out_data;input7:0 in_data;input clk,clr; reg7:0 out_data;always (posedge clk or posedge clr)beginif(clr) out_data =0;else out_data = in_data;endendmodule寄存器的含義:寄存器的含義: 當時

38、鐘為有效邊沿時(時刻),將輸入賦給輸出。其他時刻當時鐘為有效邊沿時(時刻),將輸入賦給輸出。其他時刻,保持不變,直到下一有效邊沿到來為止。,保持不變,直到下一有效邊沿到來為止。 鎖存器和寄存器的區別:鎖存器和寄存器的區別: 鎖存器一般用電平來控制;鎖存器一般用電平來控制; 寄存器一般用同步時鐘的邊沿來控制;寄存器一般用同步時鐘的邊沿來控制;鎖存器和寄存器的應用場合:鎖存器和寄存器的應用場合: 若數據信號滯后于控制信號有效,則只能用鎖存器。若數據信號滯后于控制信號有效,則只能用鎖存器。 若數據信號超前于控制信號有效,并且要求同步操作,若數據信號超前于控制信號有效,并且要求同步操作,則可以選擇寄存

39、器來存放數據。則可以選擇寄存器來存放數據。 基本時序電路設計基本時序電路設計基本時序電路設計基本時序電路設計可變模加法可變模加法/減法計數器減法計數器module updown_count(d,clk,clear,load,up_down,qd);input7:0 d; input clk,clear,load,up_down;output7:0 qd; reg7:0 cnt;assign qd=cnt;always (posedge clk)beginif(!clear) cnt=8h00;/同步清同步清0,低電平有效低電平有效else if(load) cnt=d;/同步預置同步預置else if(up_down) cn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論