EDA設計技術(shù)教學課件 第7章 邏輯設計_第1頁
EDA設計技術(shù)教學課件 第7章 邏輯設計_第2頁
EDA設計技術(shù)教學課件 第7章 邏輯設計_第3頁
EDA設計技術(shù)教學課件 第7章 邏輯設計_第4頁
EDA設計技術(shù)教學課件 第7章 邏輯設計_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第7章 邏輯設計EDA設計技術(shù)設計技術(shù) 邏輯設計包括組合邏輯設計和時序邏輯設計兩大類,一個系統(tǒng)可能由數(shù)十個至數(shù)百萬個規(guī)模不等的組合邏輯電路和時序邏輯電路構(gòu)成。 7.1 組合邏輯設計 表7-1 四選一多路開關的輸入輸出邏輯表EnS0,S1Z12b00A12b 01B12b 10C12b 11D02b xxx7.1.2 譯碼器譯碼器是多輸入口、多輸出口邏輯電路,將編碼輸入按一對一方式轉(zhuǎn)換為編碼輸出,輸入端和輸出端采用不同的編碼方式。例如74x138譯碼器,n=3,可獲得23共8個編碼,輸入端比輸出端的端口數(shù)少。74x138譯碼器邏輯圖如圖7-2所示。圖7-2 74x138譯碼器邏輯圖(1)利用ca

2、se多分支語句描述。將使能控制端G1、G2An和G2Bn連接在一起,與使能條件比較: G1, G2An,G2Bn=3b100;再將輸入端連接在一起C,B,A ,以多分支語句描述。 譯碼器建模步驟:module Decoder38(Y,G1,G2An,G2Bn,C,B,A);input G1,G2An,G2Bn,C,B,A;output 7:0Y;reg 7:0Y;always(G1 or G2An or G2Bn or A or B or C) begin if(G1, G2An,G2Bn=3b100) case(C,B,A ) 3b000: Y = 8b1111_1110; 3b001: Y

3、 = 8b1111_1101;3b010: Y = 8b1111_1011;3b011: Y = 8b1111_0111;3b100: Y = 8b1110_1111;3b101: Y = 8b1101_1111;3b110: Y = 8b1011_1111;3b111: Y = 8b0111_1111;default: Y = 8b1111_1111; endcase endendmodule (2)利用for循環(huán)語句描述。多分支語句描述有8條語句有相同的表達形式,可將其歸納為循環(huán)8次的for循環(huán)語句,開始循環(huán)之前,將所有位置為無效位,在for循環(huán)中,按循環(huán)次數(shù)作為索引值,判斷并操作相應輸出

4、端。always(G1 or G2An or G2Bn or A or B or C) begin Y = 8b1111_1111;if(G1, G2An,G2Bn=3b100) for(i=0;i8;i=i+1) if(i=C,B,A ) Yi = 0; endendmodulemodule Decoder38(Y,G1,G2An,G2Bn,C,B,A); input G1,G2An,G2Bn,C,B,A; output 7:0Y; reg 7:0Y; integer i; 與譯碼器相反,編碼器通常是輸出端總線寬度比輸入端總線寬度更少,按既定的編碼規(guī)則輸出。7.1.3 編碼器圖7-3 74x

5、148優(yōu)先編碼器其最高優(yōu)先級為I7,最低優(yōu)先級為I0。8端口輸入3端口輸出module M74x148(A,EO,GS,I,En); input En; input 7:0I; output 2:0A; output EO,GS; reg 2:0A; reg EO,GS; integer k;always(En or I) begin if(En =1) /禁止編碼器 begin GS = 1; /編碼無效 EO = 1; /允許輸出 A = 3b111; /無效編碼 end【例】對M74x148編碼器建模。設A為3位二進制編碼輸出,EO為編碼輸出使能端,高電平有效;GS為有效編碼輸出端,低電

6、平有效;I為8位編碼輸入端,En為編碼器使能端,低電平有效。else if(En=0)&(I=8b1111_1111) /禁止編碼輸出 begin GS = 1; EO = 0; A = 3b111; end;else for (k=0;kY) /若X大于Y,將ZXgtY置為高電平 begin ZXgtY = 1b1; ZXeqY = 1b0; ZXltY = 1b0; endelse if(XY) /若小于Y,將ZXltY置為高電平 begin ZXgtY = 1b0; ZXeqY = 1b0; ZXltY = 1b1; end else /不當條件處理 begin ZXgtY =

7、1bx; ZXeqY = 1bx; ZXltY = 1bx; end endmodule7.1.5 加法器和減法器(1)加法器 8個全加器串行級聯(lián)的總體結(jié)構(gòu),如圖7-5所示: 圖7-5 8個全加器串行級聯(lián)7.1.5 加法器和減法器(2)(2)減法器減法器 利用n個全減器級聯(lián)構(gòu)建n位減法器,如圖7-6所示的8位減法器。頂層模塊由4個全減器構(gòu)成4位減法器,兩個4位減法器級聯(lián)設計8位減法器。 圖7-6 8位減法器的級聯(lián)結(jié)構(gòu)7.1.6 7.1.6 乘法器乘法器vVerilog HDL的乘法運算是兩個無符號的矢量相乘,積的總線寬度是被乘數(shù)或乘數(shù)的一倍。例如,采用行為描述設計一個8x8的乘法器:vmodu

8、le Multiplier(p,x,y);v input 7:0 x,y;voutput 15:0p; vassign p=x*y;vendmodule該模塊占用該模塊占用100100個邏輯單元!為了優(yōu)化資源和個邏輯單元!為了優(yōu)化資源和速度,一般采用組合邏輯乘法結(jié)構(gòu)的移位相加法、速度,一般采用組合邏輯乘法結(jié)構(gòu)的移位相加法、流水線等設計乘法器。如圖流水線等設計乘法器。如圖7-97-9。圖7-9 8x8乘法器的移位相加法8x88x8乘法器的順序相乘示意下圖所示。乘法器的順序相乘示意下圖所示。圖7-10 8x8乘法器的順序相乘 算法實現(xiàn)的主要程序如下: 圖7-10 預處理乘積單元(1)預處理乘積單元

9、。如圖7-10所示。(2)預處理加數(shù)。如圖)預處理加數(shù)。如圖7-11所示。所示。 圖7-11 預處理加數(shù)(3)例化8位加法器,和、進位輸出、被加數(shù)、加數(shù)、進位輸入分別為PCS0、PCC0、PC1、T0及0。參見圖7-10。(4)輸出乘法結(jié)果。參見圖7-10,p15對應第七個加法器的進位輸出,p14至p7在dut7模塊例化語句中對端口賦值,p6至p1對應第一個至第六個8位加法器求和結(jié)果PCS的最低位,即PCSi-10。7.1.7 7.1.7 初等函數(shù)與通用查找表初等函數(shù)與通用查找表v初等函數(shù)是應用最廣泛的一類函數(shù),包括正弦函數(shù)、余弦函數(shù)、正切函數(shù)、指數(shù)函數(shù)及對數(shù)函數(shù)等。v通用查找表將初等函數(shù)的解

10、保存在RAM、ROM、Flash類存儲器中,采用尋址方法查找初等函數(shù)的解,間接獲得計算結(jié)果。7.2 7.2 時序邏輯設計時序邏輯設計7.2.1 鎖存器和觸發(fā)器鎖存器和觸發(fā)器 鎖存器和觸發(fā)器是時序邏輯電路的基本結(jié)構(gòu)塊,以實現(xiàn)一定的時序邏輯功能。常用的鎖存器和觸發(fā)器見表7-5。 表7-5 常用的鎖存器和觸發(fā)器及其特征方程7.2.1.1 同步RS觸發(fā)器 RS觸發(fā)器的輸出受clk同步。依照特征函數(shù),利用case語句描述置位端S和復位端R的不同條件組合,控制輸出。module RSFF(clk,R,S,Q,Qn); input clk,R,S; output Q,Qn; reg Q,Qn; always

11、(posedge clk)begin: Block_Q case(R,S) 2b00:Q = 1b0; 2b01:Q = 1b1; 2b10:Q = 1b0; 2b11:Q = 1bx; endcase endalways(posedge clk)begin:Block_Qn case(R,S) 2b00:Qn = 1b1; 2b01:Qn = 1b0; 2b10:Qn = 1b1; 2b11:Qn = 1bx; endcase end endmodule7.2.1.2 D7.2.1.2 D觸發(fā)器及觸發(fā)器及D D鎖存器鎖存器 當clk上升沿到來時,利用語句“Q = D;”對Q進行非阻塞賦值,否

12、則Q一直保持過去的值,即實現(xiàn)特征方程對D觸發(fā)器的行為描述。利用上升沿對表7-5的D觸發(fā)器建模:module DFF(Q,clk,D); input clk,D; output Q; reg Q; always(posedge clk) Q = D;endmodule將D觸發(fā)器改為D鎖存器,鎖存使能控制端為C:module DLatch(Q,D,C); parameter Buswidth = 8; input Buswidth-1:0D; input C; output Buswidth-1:0Q; reg Buswidth-1:0Q; always(C or D or Q)begin if(

13、C=1)Q = D; /如果鎖存使能無效,則輸入信號D else Q = Q; /否則,鎖存信號 end endmodule 帶使能端、復位控制和反向輸出端的D觸發(fā)器。設D觸發(fā)器為上升沿觸發(fā),復位信號rst為低電平有效,使能控制En為高電平有效。當En為低電平時,鎖存輸出。module DFF(Q,Qn,clk,D,En,rst); input clk,D,En,rst; output Q,Qn; reg Q,Qn; always(posedge clk)begin if(rst=0)Q = 1b0; else begin if(En = 1)Q = D; else Q= Q; end end

14、assign Qn = Q; endmodule7.2.1.3 JK觸發(fā)器對于JK觸發(fā)器,其狀態(tài)輸出分類見表7-6表7-6 JK觸發(fā)器的狀態(tài)輸出及分類 module JKFF(clk,J,K,Q, Qn); input clk,J,K; output Q,Qn; reg Q,Qn; always(posedge clk) begin case (J,K) 2b01: Q = 1b0; /置0輸出 2b10: Q = 1b1; /置1輸出 2b11: Q = Q; /逆保持輸出 default:Q=Q; /鎖存輸出 endcase end7.2.1.4 T觸發(fā)器當T觸發(fā)器可由D 觸發(fā)器或JK觸發(fā)

15、器例化而來,當J=1、K=1時,即構(gòu)成T觸發(fā)器,如圖7-14(a)所示。圖7-14(a) 由JK觸發(fā)器(a)或D觸發(fā)器(b)構(gòu)成T觸發(fā)器 module TFF(T,Q,Qn); input T; output Q,Qn; reg Q,Qn;JKFF init1(T,1,1,Q, Qn); /例化JK觸發(fā)器 endmodule當J=1、K=1時,即構(gòu)成T觸發(fā)器圖7-14(a) 由JK觸發(fā)器(a)或D觸發(fā)器(b)構(gòu)成T觸發(fā)器 當D連接至Qn端,則可構(gòu)成兼有使能端的T觸發(fā)器。如圖7-14(b)所示。在端口列表中,反相輸出口Qn與輸入口D相連,因此Qn應設為雙向口。module TFF(Q,Qn,T,

16、 En,rst); input T, En,rst; inputQ; inout Qn; /將Qn設為雙向口 reg Q,Qn; DFFP init1(Q,Qn,T,Qn,En,rst); /例化D觸發(fā)器endmodule圖7-14(a) 由JK觸發(fā)器(a)或D觸發(fā)器(b)構(gòu)成T觸發(fā)器7.2.2有限狀態(tài)機有限狀態(tài)機(簡稱FSM)是一種順序事件控制模型,由外部輸入和現(xiàn)狀態(tài)驅(qū)動狀態(tài)機的次狀態(tài)跳轉(zhuǎn),其輸出與模型的現(xiàn)態(tài)和輸入有關,在有限狀態(tài)范圍內(nèi)由時鐘同步,控制輸出,結(jié)構(gòu)如圖7-15(a)所示。圖7-15有限狀態(tài)機 (a)結(jié)構(gòu)示意圖 (b)四狀態(tài)FSM的狀態(tài)轉(zhuǎn)換圖S0狀態(tài)有兩個狀態(tài)跳轉(zhuǎn)條件:若A=3b

17、000,則跳轉(zhuǎn)到現(xiàn)態(tài)S0;若A=3b001,則跳轉(zhuǎn)到次態(tài)S1。同理,S1狀態(tài)也有兩個狀態(tài)跳轉(zhuǎn)條件。對于S0狀態(tài)來說,S1是次態(tài);對于S1來說,S2和S3是次態(tài)。在S0狀態(tài),輸出為Z=1;在S1狀態(tài),輸出為Z=2。 每個現(xiàn)態(tài)可以設置有限個次態(tài),但跳轉(zhuǎn)條件必須是唯一條件,每個狀態(tài)有相應的輸出,一個模塊或狀態(tài)機可以設置有限個狀態(tài),即有限狀態(tài)機?!纠?-6】四狀態(tài)有限狀態(tài)機。module FSM4(Z,A,clk);input 3:0A;input clk;output 2:0Z; reg Z; reg 1:0State; /定義狀態(tài)寄存器變量,以保存現(xiàn)態(tài) parameter S0 = 2b00,S1

18、=2b01,S2 = 2b10,S3=2b11; /定義狀態(tài)參數(shù) always(posedge clk) case(State) S0:begin Z = 1; /輸出Zif(A = =3b000)State = S0; /跳轉(zhuǎn)至現(xiàn)態(tài)else State = S1; /跳轉(zhuǎn)至次態(tài)endS1:begin Z = 2;if(A = =3b100)State = S2;else State = S3;endS2:begin Z = 3; if(A = 3b100)State = S3;else State = S2; endS3:begin Z = 4; State = S1; /無條件跳轉(zhuǎn)至S1e

19、ndendcaseendmodule 圖7-16 現(xiàn)態(tài)保持的FSM狀態(tài)轉(zhuǎn)換【例7-6】狀態(tài)寄存器變量State若采用三位寬度:reg 2:0State;將有23=8個狀態(tài):S0、S1、S2、S3、S4、S5、S6、S7,但實際上僅S1、S1、S2和S3為有效狀態(tài),因此,狀態(tài)枚舉和輸出控制需相應修改:always(posedge clk) case(State) S0: State= (A = 3b001)? S1:S0; default:State = S0; /跳轉(zhuǎn)到初始狀態(tài)Endcase always(posedge clk) case(State) S0: Z= 1; default:Z

20、 = 1; /默認輸出為1endcase7.2.3 計數(shù)器計數(shù)器通常是一周期狀態(tài)的時序邏輯電路,一個計數(shù)器含有m個狀態(tài),則稱該計數(shù)器是模為m的計數(shù)器常用的計數(shù)器按結(jié)構(gòu)可分為:二進制計數(shù)器、環(huán)形計數(shù)器、同步計數(shù)器、移位寄存計數(shù)器7.2.3.1 二進制計數(shù)器二進制計數(shù)器分為遞增計數(shù)器和遞減計數(shù)器常用if-else 判斷是否達到邊界條件若未達到邊界條件,計數(shù)器遞增或遞減計數(shù);若達到邊界條件,則計數(shù)器回到初始值。對于模為medulo_m的遞增計數(shù)器建模,邊界條件為計數(shù)值小于模值,即count medulo_m。else if(count medulo_m) count = count + 8h01;

21、else count = 8h00; endendmodulemodule counter (count, clk, rst); parameter medulo_m = 18; output 7:0 count; input clk, rst; reg 7:0 count;always (posedge clk or posedge rst) begin if (rst) count = 8h00;圖7-17 計數(shù)器用于定時器利用計數(shù)器對應的時間單位,可將計數(shù)器用于定時器。7.2.3.2環(huán)形計數(shù)器 環(huán)形計數(shù)器由n個T觸發(fā)器級聯(lián)組成,當且僅當時鐘跳變時,觸發(fā)器的輸出按權(quán)值翻轉(zhuǎn)一次。與各種類型的

22、計數(shù)器比較,環(huán)形計數(shù)器所需的觸發(fā)器數(shù)目最少,但時鐘級聯(lián)結(jié)構(gòu)降低了系統(tǒng)的速度,計數(shù)輸出的每一位跳變是異步的。若一個T觸發(fā)器的傳輸延時為tTTF,則最高位在ntTTF之后才開始跳變。如圖7-18所示。圖7-18 環(huán)形計數(shù)器 圖7-19 模為16的環(huán)形計數(shù)器仿真結(jié)果7.2.3.3同步計數(shù)器將所有觸發(fā)器的時鐘端連接在一起,即構(gòu)成同步計數(shù)器的同步時鐘,所有的觸發(fā)器在同步時鐘的作用下同步變化。 圖7-20 模為4的同步計數(shù)器 module SyncCount_testbench;reg CLK,En,rst;wire 3:0Q,Qn;wirew1En,w2En,w3En;TFF TFF1(Q0,Qn0,C

23、LK, En,rst); /例化第一個T觸發(fā)器and A1(w1En,En,Q0); /例化與門,生成TFF2的使能控制信號TFF TFF2(Q1,Qn1,Qn0, w1En,rst);and A2(w2En,En,Q1,Q0);TFF TFF3(Q2,Qn2,Qn1, w2En,rst);and A3(w3En,En,Q2,Q1,Q0);TFF TFF4(Q3,Qn3,Qn2, w3En,rst);endmodule7.2.3.4移位寄存器及移位計數(shù)器 移位寄存器是在時鐘作用下,將所存儲的數(shù)據(jù)向既定的存儲位置移動的寄存器。若每個時鐘節(jié)拍下,移入的1位數(shù)據(jù)存儲在最后一個存儲單元,則稱之為串行輸

24、入-串行輸出移位寄存器。如圖7-21所示。 圖7-21 串行輸入-串行輸出移位寄存器結(jié)構(gòu)以8位數(shù)據(jù)寬度的移位寄存器示例如下:module SSR #(parameter word_size = 8) (SO,SI,CLK,rst);input SI,CLK,rst; output word_size-1:0SO;reg word_size-1:0 Data_reg; assign SO = Data_reg0;always(posedge CLK or posedge rst)beginif(rst =1b0) Data_reg = word_size1b0;else Data_reg = SI,Data_regword_size-1:1; endendmodule【例7-9】具有綜合功能的并行移位寄存器。設移位寄存器需要清零、數(shù)據(jù)加載、左移、右移、保持等功能,分別將上述綜合功能進行方式編碼Mode,采用case多分支語句描述,見下表。左移數(shù)據(jù)輸入端SL,右移數(shù)據(jù)輸入端SR,并行數(shù)據(jù)輸入端D。工作方式編工作方式編碼碼功能定義功能定義描述描述3b000清零3b000

溫馨提示

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

評論

0/150

提交評論