版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
會計學(xué)1第基本邏輯電路的VHDL設(shè)計輸入輸出ABY001011101110表5.1二輸入與非門的真值表
圖5.1二輸入與非門的電路符號5.1組合邏輯電路設(shè)計5.1.1基本門電路設(shè)計
1.與非門電路(1)VHDL設(shè)計方法二輸入與非門電路的邏輯真值表見表5.1,二輸入與非門的電路符號如圖5.1所示。第1頁/共99頁5.1.1基本門電路設(shè)計
1.與非門電路(1)VHDL設(shè)計方法【例5.1】二輸入與非門的VHDL描述方法一:LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYnand_2IS PORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);END;ARCHITECTUREoneOFnand_2IS BEGIN y<=anandb;END;5.1組合邏輯電路設(shè)計第2頁/共99頁5.1.1基本門電路設(shè)計
1.與非門電路(1)VHDL設(shè)計方法【例5.2】二輸入與非門的VHDL描述方法二:LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYnand_2IS PORT(a,b:IN STD_LOGIC; y:OUT STD_LOGIC);END;ARCHITECTUREoneOFnand_2IS SIGNALab:STD_LOGIC_VECTOR(1DOWNTO0);BEGIN ab<=a&b;--接下頁5.1組合邏輯電路設(shè)計第3頁/共99頁5.1.1基本門電路設(shè)計
1.與非門電路---接上頁process(ab)isbegincaseabiswhen“00”=>y<=‘1‘;--這里的“=>”相當于THEN或于是
when"01"=>y<='1';when"10"=>y<='1';when"11"=>y<='0';whenothers=>y<=null;endcase;endprocess;end;5.1組合邏輯電路設(shè)計第4頁/共99頁(a)用nand實現(xiàn)的二輸入與非門的RTL電路(b)用case語句實現(xiàn)的二輸入與非門的RTL電路圖5.2二輸入與非門RTL電路
5.1組合邏輯電路設(shè)計5.1.1基本門電路設(shè)計
1.與非門電路(1)VHDL設(shè)計方法第5頁/共99頁
二輸入與非門的功能仿真結(jié)果如圖5.3所示,觀察波形可知,輸入為a與b,輸出為y,且其邏輯關(guān)系滿足二輸入與非門真值表的要求。
圖5.3二輸入與非門的功能仿真圖5.1組合邏輯電路設(shè)計5.1.1基本門電路設(shè)計
1.與非門電路(2)仿真結(jié)果第6頁/共99頁5.1.1基本門電路設(shè)計2.基本邏輯門電路的VHDL描述【例5.3】基本邏輯門電路的VHDL描述LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYgateIS PORT(a,b:INSTD_LOGIC;
y1,y2,y3,y4,y5,y6:OUTSTD_LOGIC);END;ARCHITECTUREoneOFgateIS BEGIN y1<=aandb;--構(gòu)成與門
y2<=aorb;--構(gòu)成或門
y3<=nota;--構(gòu)成非門
y4<=anandb;--構(gòu)成與非門
y5<=anorb;--構(gòu)成異或門
y6<=not(axorb);--構(gòu)成異或非門
END;5.1組合邏輯電路設(shè)計第7頁/共99頁
5.1.2編碼器設(shè)計
在數(shù)字系統(tǒng)中,常常需要將某信息變換為某一特定的代碼。把二進制碼按一定的規(guī)律進行編排,使每組代碼具有特定的含義,稱為編碼。具有編碼功能的邏輯電路稱為編碼器。編碼器是將2N個分立的信息代碼以N個二進制碼來表示。5.1組合邏輯電路設(shè)計第8頁/共99頁輸入輸出I0I1I2I3I4I5I6I7Y2Y1Y010000000000010000000010010000001000010000011000010001000000010010100000010110000000011115.1.2編碼器設(shè)計1.8線-3線編碼器的VHDL描述8線-3線編碼真值表見表5.2所示。表5.28線-3線編碼真值表5.1組合邏輯電路設(shè)計第9頁/共99頁【例5.4】
8線-3線編碼器的VHDL設(shè)計LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYencoder8_3IS PORT(i:IN STD_LOGIC_VECTOR(7downto0); y:OUT STD_LOGIC_VECTOR(2downto0));END;ARCHITECTUREoneOFencoder8_3ISBEGINProcess(i)isbegin caseiis--接下頁5.1組合邏輯電路設(shè)計5.1.2編碼器設(shè)計1.8線-3線編碼器的VHDL描述第10頁/共99頁
when“00000001”=>y<=“000”;--接上頁
when"00000010"=>y<="001"; when"00000100"=>y<="010"; when"00001000"=>y<="011";when"00010000"=>y<="100"; when"00100000"=>y<="101";when"01001000"=>y<="110";when"10000000"=>y<="111";whenothers=>y<="000";endcase;endprocess;endprocess;end;5.1組合邏輯電路設(shè)計5.1.2編碼器設(shè)計1.8線-3線編碼器的VHDL描述第11頁/共99頁
本例中,運用了case語句完成了編碼器內(nèi)部邏輯結(jié)構(gòu)設(shè)計,其RTL電路圖如圖5.4所示。圖5.48線-3線編碼器的RTL電路圖
5.1組合邏輯電路設(shè)計5.1.2編碼器設(shè)計1.8線-3線編碼器的VHDL描述第12頁/共99頁2.8線-3線編碼器的功能仿真
8線-3線編碼器的功能仿真結(jié)果如圖5.5所示。圖5.58線-3線編碼器功能仿真波形圖
5.1組合邏輯電路設(shè)計5.1.2編碼器設(shè)計第13頁/共99頁5.1.3譯碼器設(shè)計譯碼是編碼的逆過程,它的功能是將具有特定含義的二進制碼進行辨別,并轉(zhuǎn)換成控制信號。具有譯碼功能的邏輯電路稱為譯碼器。5.1組合邏輯電路設(shè)計第14頁/共99頁5.1.3譯碼器設(shè)計
1.2線-4線譯碼器2線-4線譯碼器的真值表見表5.3所示。輸入輸出A1A2Z3Z2Z1Z0000001010010100100111000表5.32線-4線譯碼器的真值表
5.1組合邏輯電路設(shè)計第15頁/共99頁(1)2線-4線譯碼器的VHDL設(shè)計libraryieee;---【例5.5】
2線-4線譯碼器的VHDL代碼useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydecode_24isport(a:instd_logic_vector(1downto0);z:outstd_logic_vector(3downto0));end;architecturestrofdecode_24isBeginwithaselect
z<="0001"when"00","0010"when"01","0100"when"10","1000"when"11","XXXX"whenothers;end;5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
1.2線-4線譯碼器第16頁/共99頁圖5.62線-4線譯碼器的RTL電路
5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
1.2線-4線譯碼器第17頁/共99頁(2)2線-4線譯碼器的仿真波形如圖5.7所示,當輸入使“00”、“01”、“10”、“11”時分別輸出“0001”、“0010”、“0100”和“1000”,這與真值表中顯示的邏輯關(guān)系一致。圖5.72線-4線譯碼器的仿真波形圖5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
1.2線-4線譯碼器第18頁/共99頁7段數(shù)碼顯示譯碼電路是一個組合邏輯電路,通常的小規(guī)模專用集成IC,如74系列或4000系列的器件只能作十進制BCD碼譯碼,然而數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運算都是2進制的,所以輸出表達都是16進制的,為了滿足16進制數(shù)的譯碼顯示,最方便的方法就是利用譯碼程序在FPGA/CPLD中來實現(xiàn)。5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
2.7段數(shù)碼顯示譯碼器設(shè)計第19頁/共99頁【例5.6】
7段BCD譯碼顯示器的VHDL描述
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYLED_SEGISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);LED:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneOFLED_SEGISBEGINPROCESS(A)BEGIN5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
2.7段數(shù)碼顯示譯碼器設(shè)計第20頁/共99頁CASEAISWHEN"0000"=>LED<="0111111";--顯示“0”WHEN"0001"=>LED<="0000110";--顯示“1”WHEN"0010"=>LED<="1011011";--顯示“2”WHEN"0011"=>LED<="1001111";--顯示“3”WHEN"0100"=>LED<="1100110";--顯示“4”WHEN"0101"=>LED<="1101101";--顯示“5”WHEN"0110"=>LED<="1111101";--顯示“6”WHEN"0111"=>LED<="0000111";--顯示“7”WHEN"1000"=>LED<="1111111";--顯示“8”WHEN"1001"=>LED<="1101111";--顯示“9”WHEN"1010"=>LED<="1110111";--顯示“A”WHEN"1011"=>LED<="1111100";--顯示“B”WHEN"1100"=>LED<="0111001";--顯示“C”WHEN"1101"=>LED<="1011110";--顯示“D”WHEN"1110"=>LED<="1111001";--顯示“E”WHEN"1111"=>LED<="1110001";--顯示“F”WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;END;5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
2.7段數(shù)碼顯示譯碼器設(shè)計第21頁/共99頁
例5.6中輸出信號LED的7位分別接數(shù)碼管的7個段,高位在左,低位在右。例如當LED輸出為“1101111”時,數(shù)碼管的7個段:g、f、e、d、c、b、a分別接1、1、0、1、1、1、1;接有高電平的段點亮,低電平的段不亮,于是數(shù)碼管顯示“9”,其功能仿真如圖5.8所示。圖5.87段數(shù)碼顯示譯碼電路功能仿真波形
5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
2.7段數(shù)碼顯示譯碼器設(shè)計第22頁/共99頁5.1.4加法器設(shè)計
1.四位二進制全加器的VHDL5.1組合邏輯電路設(shè)計【例5.7】
四位二進制全加器的VHDL描述
LIBRARYieee; USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL; ENTITYadder_4bitIS PORT(a,b:INSTD_LOGIC_VECTOR(3DOWNTO0);ci:INSTD_LOGIC; s:OUTSTD_LOGIC_VECTOR(3DOWNTO0); co:OUTSTD_LOGIC);END; ARCHITECTUREoneOFadder_4bitISSIGNALtemp:STD_LOGIC_VECTOR(4DOWNTO0); BEGIN temp<=('0'&a)+b+ci;s<=temp(3downto0);co<=temp(4); END;第23頁/共99頁圖5.94位二進制全加器的RTL電路圖
5.1組合邏輯電路設(shè)計5.1.4加法器設(shè)計第24頁/共99頁2.4位全加器的仿真結(jié)果例5.7中的4位全加器的功能仿真結(jié)果如圖5-10所示,其時序仿真結(jié)果如圖5-17所示。從波形中可以看出,當a、b和ci取不同的值時,執(zhí)行a+b+ci操作后,和數(shù)s與進位co均滿足4位全加器的邏輯功能要求。5.104位二進制全加器的功能仿真結(jié)果
5.1組合邏輯電路設(shè)計5.1.4加法器設(shè)計第25頁/共99頁5.1.5三態(tài)門與雙向緩沖電路設(shè)計
三態(tài)門,是指邏輯門的輸出除有高、低電平兩種狀態(tài)外,還有第三種狀態(tài)——高阻狀態(tài)的門電路,高阻態(tài)相當于隔斷狀態(tài)。三態(tài)門都有一個EN為控制使能端,來控制門電路的通斷。具備這三種狀態(tài)的器件就叫做三態(tài)(門、總線、...)。VHDL設(shè)計中,如果用STD_LOGIC數(shù)據(jù)類型的'Z'對一個變量賦值,即會引入三態(tài)門,并在使能信號的控制下可使其輸出呈高阻態(tài),這等效于使三態(tài)門禁止輸出。
5.1組合邏輯電路設(shè)計第26頁/共99頁5.1.5三態(tài)門與雙向緩沖電路設(shè)計1.三態(tài)門設(shè)計
【例5.8】4位三態(tài)控制門電路的VHDL描述LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL;ENTITYtri_gateIS PORT(en:INSTD_LOGIC;din:INSTD_LOGIC_VECTOR(3DOWNTO0); dout:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREoneOFtri_gateISBEGINPROCESS(en,din)BEGINIF(en='1')thendout<=din;elsedout<="ZZZZ";endif;endprocess;END;5.1組合邏輯電路設(shè)計第27頁/共99頁圖5.11三態(tài)門電路的RTL電路5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計1.三態(tài)門設(shè)計第28頁/共99頁圖5.12三態(tài)門電路的功能仿真圖
5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計1.三態(tài)門設(shè)計第29頁/共99頁2.雙向總線緩沖器雙向總線緩沖器用于對數(shù)據(jù)總線的驅(qū)動和緩沖,典型雙向總線緩沖電路圖如圖5.13所示。一般雙向總線緩沖器的模式為:兩個數(shù)據(jù)端口a、b,一個使能端en,一個方向控制端dr。其操作行為真值表如表5.4所示。
5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計第30頁/共99頁2.雙向總線緩沖器
ain<=a;a<=aout;圖5.13雙向總線驅(qū)動電路
如果A為輸入端口,即ain<=a時,aout應(yīng)為“ZZZZZZZZ”EnDr功能00a=b01b=a1X高阻表5.4雙向總線驅(qū)動電路真值表
5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計第31頁/共99頁2.雙向總線緩沖器【例5.9】
雙向總線緩沖器的VHDL描述libraryieee;useieee.std_logic_1164.all;ENTITYDUB_GATEIS PORT( a,b:INOUTSTD_LOGIC_VECTOR(7DOWNTO0); en:INSTD_LOGIC; dr:INOUTSTD_LOGIC);ENDDUB_GATE;ARCHITECTUREaOFDUB_GATEISSIGNALabuf,bbuf:STD_LOGIC_VECTOR(7DOWNTO0);BEGINP1:PROCESS(a,dr,en) BEGIN if(en='0')and(dr='1')then bbuf<=a;----接下頁5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計第32頁/共99頁else---接上頁
bbuf<="ZZZZZZZZ"; endif; b<=bbuf; ENDPROCESS; P2:PROCESS(b,dr,en)BEGIN if(en='0')and(dr='0')then abuf<=b; else abuf<="ZZZZZZZZ"; endif; a<=abuf; ENDPROCESS;ENDa;5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計第33頁/共99頁圖5.14雙向總線緩沖器的RTL電路圖5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計雙向總線緩沖器的RTL電路圖如圖5.14所示。第34頁/共99頁5.2時序邏輯電路設(shè)計5.2.1觸發(fā)器設(shè)計
1.RS觸發(fā)器設(shè)計
RS觸發(fā)器由兩個與非門(或者或非門)的輸入和輸出交叉連接而成,如圖5.15所示,
真值表見表5.5。
圖5.15RS觸發(fā)器原理圖
輸入輸出RSQQ非0001011010不變不變11不定不定表5.5RS觸發(fā)器真值表第35頁/共99頁5.2.1觸發(fā)器設(shè)計
1.RS觸發(fā)器設(shè)計【例5.10】RS觸發(fā)器的VHDL程序代碼LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYRSFFISPORT(R,S:INSTD_LOGIC; Q,QB:OUTSTD_LOGIC);END;ARCHITECTUREoneOFRSFFISSIGNALQ_TEMP,QB_TEMP:STD_LOGIC;BEGIN
Q_TEMP<=SNANDQB_TEMP;QB_TEMP<=RNANDQ_TEMP;
Q<=Q_TEMP;QB<=QB_TEMP;END;5.2時序邏輯電路設(shè)計第36頁/共99頁圖5.16RS觸發(fā)器的RTL電路圖5.17RS觸發(fā)器功能仿真波形圖5.2時序邏輯電路設(shè)計5.2.1觸發(fā)器設(shè)計
1.RS觸發(fā)器設(shè)計第37頁/共99頁5.2.1觸發(fā)器設(shè)計
2.JK觸發(fā)器設(shè)計
JK觸發(fā)器的狀態(tài)方程是:Q_tmp<=j+q_temp。用VHDL邏輯表達式對JK觸發(fā)器進行描述。其真值表見表5.6所示。
輸入輸出jkq00保持01010111翻轉(zhuǎn)表5.6JK觸發(fā)器真值表5.2時序邏輯電路設(shè)計第38頁/共99頁5.2.1觸發(fā)器設(shè)計
【例5.11】JK觸發(fā)器VHDL程序libraryieee;useieee.std_logic_1164.all;entityjkff1isport(j,k,clk:instd_logic;q:outstd_logic);end;architectureoneofjkff1issignalq_temp:std_logic;beginp1:processbeginwaituntil(clk'eventandclk='1');q_temp<=(jand(notq_temp))or((notk)andq_temp);endprocess;q<=q_temp;end;
5.2時序邏輯電路設(shè)計第39頁/共99頁圖5.18JK觸發(fā)器的RTL電路圖5.19JK觸發(fā)器的功能仿真圖5.2時序邏輯電路設(shè)計5.2.1觸發(fā)器設(shè)計
2.JK觸發(fā)器設(shè)計第40頁/共99頁
5.2.2移位寄存器設(shè)計
移位寄存器是一個具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。既能左移又能右移的稱為雙向移位寄存器,只需要改變左、右移的控制信號便可實現(xiàn)雙向移位要求。根據(jù)移位寄存器存取信息的方式不同分為:串入串出、串入并出、并入串出、并入并出四種形式。
5.2時序邏輯電路設(shè)計第41頁/共99頁5.2.2移位寄存器設(shè)計【例5.12】8位右移移位寄存器的VHDL描述LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYSHFRTISPORT(CLK,LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0); QB:OUTSTD_LOGIC);END;ARCHITECTUREONEOFSHFRTISBEGIN---接下頁5.2時序邏輯電路設(shè)計第42頁/共99頁
PROCESS(CLK,LOAD)---接上頁
VARIABLEREG8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFLOAD='1'THENREG8:=DIN;ELSEREG8(6DOWNTO0):=REG8(7DOWNTO1);ENDIF;ENDIF;QB<=REG8(0);ENDPROCESS;END;5.2時序邏輯電路設(shè)計5.2.2移位寄存器設(shè)計第43頁/共99頁圖5.20移位寄存器的RTL電路圖圖5.21移位寄存器的功能仿真波形圖(十六進制表示形式)
5.2時序邏輯電路設(shè)計5.2.2移位寄存器設(shè)計第44頁/共99頁5.2.3計數(shù)器設(shè)計1.十六進制加法計數(shù)器設(shè)計【例5.13】十六進制加法計數(shù)器的VHDL描述LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL;ENTITYCNT16IS PORT(CLK,RST,EN
:
INSTD_LOGIC;CQ
:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT
:
OUTSTD_LOGIC);END;ARCHITECTUREoneOF
CNT16
ISBEGIN---接下頁5.2時序邏輯電路設(shè)計第45頁/共99頁
PROCESS(CLK,RST,EN)---接上頁
VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS=>'0');--計數(shù)器高電平復(fù)位
ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THEN--計數(shù)器控制端高電平有效
IFCQI<15
THENCQI:=CQI+1;--計數(shù)器開始計數(shù)
ELSECQI:=(OTHERS=>'0');ENDIF;ENDIF;ENDIF;IFCQI=15THENCOUT<='1';--計數(shù)滿16產(chǎn)生一個進位
ELSECOUT<='0';ENDIF;CQ<=CQI;ENDPROCESS;END;5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第46頁/共99頁
例5.13描述的是一個帶有異步復(fù)位和同步時鐘使能的十六進制加法計數(shù)器。所謂同步或異步都是相對于時鐘而言的。依賴時鐘而有效的信號稱為同步信號,否則稱為異步信號。例5.13中的進程語句中含有兩個獨立的IF語句,第1個IF語句是不完整性條件語句,因而將產(chǎn)生計數(shù)器時序電路;第二個IF語句產(chǎn)生一個純組合邏輯的多路選擇器。從結(jié)構(gòu)上講,更一般的表述是將這兩個獨立的IF語句用兩個獨立的進程語句來表達,一個為時序進程(或稱時鐘進程),另一個為組合進程。5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第47頁/共99頁
另外,不完整條件語句是指在條件語句中,沒有對所有可能發(fā)生的條件給出對應(yīng)的處理方式。對于這種語言現(xiàn)象,VHDL綜合器將理解為當不滿足條件時,不能執(zhí)行新的賦值,即應(yīng)保持原值不變,這就意味著必須引進時序元件來保存的原值,直到滿足IF語句的判斷條件后才能更新存儲器中的值。利用這種不完整的條件語句的描述引進寄存器元件,從而構(gòu)成時序電路的方式是VHDL描述時序電路最重要的途徑,通常,完整的條件語句只能構(gòu)成組合邏輯電路。
5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第48頁/共99頁圖5.22十六進制加法計數(shù)器的RTL電路圖5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第49頁/共99頁圖5.23十六進制加法計數(shù)器的功能仿真圖5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第50頁/共99頁2.十六進制減法計數(shù)器設(shè)計【例5.14】十六進制減法計數(shù)器VHDL程序LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL;ENTITYCNT16IS PORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREoneOFCNT16ISBEGIN---接下頁5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第51頁/共99頁PROCESS(CLK,RST,EN)---接上頁
VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:="1111";ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIFCQI>0THENCQI:=CQI-1;ELSECQI:="1111";ENDIF;ENDIF;ENDIF;CQ<=CQI;ENDPROCESS;END;5.2時序邏輯電路設(shè)計第52頁/共99頁十六進制減法計數(shù)器的仿真結(jié)果如圖5.24所示。圖5.24十六進制減法計數(shù)器功能仿真波形圖5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第53頁/共99頁3.異步計數(shù)器設(shè)計異步計數(shù)器,它的下一位計數(shù)器的輸出作為上一位計數(shù)器的時鐘信號,這樣一級一級串行連接起來就構(gòu)成了一個異步計數(shù)器。用VHDL語言描述異步邏輯電路時,由于一個時鐘進程只能構(gòu)成對應(yīng)單一時鐘信號的時序電路,如果在進程中需要構(gòu)成多觸發(fā)器時序電路,也只能產(chǎn)生對應(yīng)某個單一時鐘的同步時序邏輯,異步時序邏輯一般采取多個時鐘進程來構(gòu)成。
5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第54頁/共99頁【例5.15】4個觸發(fā)器構(gòu)成的異步計數(shù)器的VHDL底層模塊程序libraryieee;useieee.std_logic_1164.all;entitydffrisport(clk,clr,d:instd_logic;q,qb:outstd_logic);end;architecturestrofdffrissignalq_in:std_logic;Begin---接下頁5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第55頁/共99頁qb<=not(q_in);---接上頁q<=q_in;process(clk)beginif(clr='1')thenq_in<='0';elsif(clk'eventandclk='1')thenq_in<=d;endif;endprocess;end;5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第56頁/共99頁圖5.25異步計數(shù)器的底層模塊的RTL電路圖
5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第57頁/共99頁【例5.16】4個觸發(fā)器構(gòu)成的異步計數(shù)器的頂層VHDL描述libraryieee;useieee.std_logic_1164.all;entityrplcontisport(clk,clr:instd_logic;count:outstd_logic_vector(3downto0));end;architecturestrofrplcontissignalcount_in_bar:std_logic_vector(4downto0);---接下頁5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第58頁/共99頁componentdffris---接上頁port(clk,clr,d:instd_logic;q,qb:outstd_logic);endcomponent;begincount_in_bar(0)<=clk;gen1:foriin0to3generateu:dffrportmap(clk=>count_in_bar(i),clr=>clr,d=>count_in_bar(i+1),q=>count(i),qb=>count_in_bar(i+1));endgen1;end;5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第59頁/共99頁圖5.264個觸發(fā)器構(gòu)成的異步計數(shù)器的RTL電路圖5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計第60頁/共99頁
5.3.1狀態(tài)機概述1.什么是狀態(tài)機
通俗地說,狀態(tài)機就是事物存在狀態(tài)的一種綜合描述。比如,一個單向路口的一盞紅綠燈,它有“亮紅燈”、“亮綠燈”和“亮黃燈”3種狀態(tài)。在不同情況下,3種狀態(tài)可以互相轉(zhuǎn)換。轉(zhuǎn)換的條件可以是經(jīng)過多少時間,比如經(jīng)過30秒鐘由“亮紅燈”狀態(tài)變?yōu)椤傲辆G燈”狀態(tài);也可以是特殊條件,比如有緊急事件,不論處于什么狀態(tài)都將轉(zhuǎn)變?yōu)椤傲良t燈”狀態(tài)。而所謂的狀態(tài)機,就是對這盞紅綠燈3種狀態(tài)的綜合描述,說明任意兩個狀態(tài)之間的轉(zhuǎn)變條件。
5.3狀態(tài)機的設(shè)計
第61頁/共99頁
狀態(tài)機是由狀態(tài)寄存器和組合邏輯電路構(gòu)成的,能夠根據(jù)控制信號按照預(yù)先設(shè)定的狀態(tài)進行狀態(tài)轉(zhuǎn)移,是協(xié)調(diào)相關(guān)信號動作、完成特定操作的控制中心。狀態(tài)機可歸納為4個要素:即現(xiàn)態(tài)、條件、動作及次態(tài)。這樣的歸納,主要是出于對狀態(tài)機的內(nèi)在因果關(guān)系的考慮?!艾F(xiàn)態(tài)”和“條件”是因,“動作”和“次態(tài)”是果。5.3狀態(tài)機的設(shè)計
5.3.1狀態(tài)機概述1.什么是狀態(tài)機
第62頁/共99頁①現(xiàn)態(tài):是指當前所處的狀態(tài)。②條件:又稱為“事件”。當一個條件被滿足,將會觸發(fā)一個動作,或者執(zhí)行一次狀態(tài)的遷移。③動作:條件滿足后執(zhí)行的動作。動作執(zhí)行完畢后,可以遷移到新的狀態(tài),也可以仍舊保持原狀態(tài)。動作不是必需的,當條件滿足后,也可以不執(zhí)行任何動作,直接遷移到新狀態(tài)。④次態(tài):條件滿足后要遷往的新狀態(tài)。“次態(tài)”是相對于“現(xiàn)態(tài)”而言的,“次態(tài)”一旦被激活,就轉(zhuǎn)變成新的“現(xiàn)態(tài)”了。
5.3狀態(tài)機的設(shè)計
5.3.1狀態(tài)機概述1.什么是狀態(tài)機
第63頁/共99頁
根據(jù)時序輸出信號產(chǎn)生機理的不同,狀態(tài)機可以分成兩類:摩爾(Moore)型狀態(tài)機和米勒(Mealy)型狀態(tài)機。兩種狀態(tài)機的區(qū)別:
①前者的輸出僅是當前狀態(tài)的函數(shù),后著的輸出是當前狀態(tài)和輸入信號的函數(shù)。
②米勒型狀態(tài)機輸出的變化先于摩爾型。5.3狀態(tài)機的設(shè)計
5.3.1狀態(tài)機概述1.什么是狀態(tài)機
第64頁/共99頁
所有的狀態(tài)均可表達為CASEWHEN結(jié)構(gòu)中的一條CASE語句,而狀態(tài)的轉(zhuǎn)移則通過IF_THEN_ELSE語句實現(xiàn)。應(yīng)用VHDL設(shè)計有限狀態(tài)機的流程如圖5.27所示。
5.3狀態(tài)機的設(shè)計
5.3.1狀態(tài)機概述2.有限狀態(tài)機的設(shè)計流程根據(jù)系統(tǒng)要求建立狀態(tài)轉(zhuǎn)移圖根據(jù)狀態(tài)轉(zhuǎn)移圖編寫VHDL代碼利用EDA工具進行仿真和驗證
圖5.27VHDL設(shè)計有限狀態(tài)機的流程圖
第65頁/共99頁(1)選擇狀態(tài)機類型(2)建立狀態(tài)表或者畫出狀態(tài)圖(3)根據(jù)狀態(tài)表或狀態(tài)圖,構(gòu)建狀態(tài)機的VHDL模型(4)利用EDA工具進行仿真、驗證
5.3狀態(tài)機的設(shè)計
5.3.1狀態(tài)機概述2.有限狀態(tài)機的設(shè)計流程第66頁/共99頁5.3.2一般有限狀態(tài)機的VHDL設(shè)計
一般和最常用的狀態(tài)機通常包含:
①說明部分②主控時序進程③主控組合進程④輔助進程幾個部分5.3狀態(tài)機的設(shè)計
第67頁/共99頁1.說明部分①使用TYPE語句定義新的數(shù)據(jù)類型,此數(shù)據(jù)類型為枚舉型,其元素通常都用狀態(tài)機的狀態(tài)名來定義;②狀態(tài)變量(如現(xiàn)態(tài)和次態(tài))應(yīng)定義為信號,便于信息傳遞;
③并將狀態(tài)變量的數(shù)據(jù)類型定義為含有既定狀態(tài)元素的新定義的數(shù)據(jù)類型;
④說明部分一般放在結(jié)構(gòu)體的ARCHITECTURE和BEGIN之間。
5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第68頁/共99頁2.主控時序進程①主控時序進程是指負責狀態(tài)機運轉(zhuǎn)和在時鐘驅(qū)動下負責狀態(tài)轉(zhuǎn)換的進程;
②狀態(tài)機是隨外部時鐘信號、以同步時序方式工作的;③狀態(tài)機向下一狀態(tài)(包括再次進入本狀態(tài))轉(zhuǎn)換的實現(xiàn)僅僅取決于時鐘信號的到來。
5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第69頁/共99頁3.主控組合進程
①主控組合進程的任務(wù)是根據(jù)外部輸入的控制信號(包括來自狀態(tài)機外部的信號和來自狀態(tài)機內(nèi)部其他非主控的組合或時序進程的信號),或/和當前狀態(tài)的狀態(tài)值確定下一狀態(tài)(next_state)的取向,即next_state的取值內(nèi)容;②確定對外輸出或?qū)?nèi)部其他組合或時序進程輸出控制信號的內(nèi)容。5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第70頁/共99頁5.3狀態(tài)機的設(shè)計4.輔助進程
輔助進程用于配合狀態(tài)機工作的組合進程或時序進程。例如為了完成某種算法的進程,或用于配合狀態(tài)機工作的其他時序進程,或為了穩(wěn)定輸出設(shè)置的數(shù)據(jù)鎖存器等。
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第71頁/共99頁
圖5.28一個狀態(tài)機的結(jié)構(gòu)框圖5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第72頁/共99頁【例5.17】一般有限狀態(tài)機的VHDL設(shè)計,利用狀態(tài)機設(shè)計方法輸出一個方波信號。LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;ENTITYA_EXAMPLEISPORT(clk,reset:INSTD_LOGIC;output:OUTSTD_LOGIC);END;ARCHITECTUREONEOFA_EXAMPLEISTYPESTATE_TYPEIS(S0,S1,S2,S3);--狀態(tài)機說明部分SIGNALstate:STATE_TYPE;BEGIN---接下頁5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第73頁/共99頁----接上頁REG:PROCESS(clk,reset)--狀態(tài)機主控時序進程
BEGINIFreset='1'THENstate<=S0;ELSIFclk'EVENTANDclk='1'THENCASEstateISWHENS0=>state<=S1;WHENS1=>state<=S2;WHENS2=>state<=S3;WHENS3=>state<=S0;ENDCASE;ENDIF;ENDPROCESS;---接下頁5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第74頁/共99頁---接上頁COM:PROCESS(state)--狀態(tài)機主控組合進程BEGINCASEstateISWHENS0=>output<='1';WHENS1=>output<='1';WHENS2=>output<='0';WHENS3=>output<='0';ENDCASE;ENDPROCESS;END;5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第75頁/共99頁圖5.29狀態(tài)機設(shè)計輸出一個方波信號的RTL電路
圖5.30利用一般狀態(tài)機設(shè)計方法實現(xiàn)的方波信號5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
第76頁/共99頁5.3.3摩爾(Moore)型狀態(tài)機設(shè)計
如圖5.31所示是摩爾型狀態(tài)機的結(jié)構(gòu)圖,圖中的輸出只與當前的狀態(tài)有關(guān),而與當前的輸入信號無關(guān)。其狀態(tài)圖如圖5.32所示,摩爾狀態(tài)機的VHDL描述如例5.18所示。
圖5.31摩爾型狀態(tài)機的結(jié)構(gòu)圖5.3狀態(tài)機的設(shè)計
第77頁/共99頁圖5.32摩爾型狀態(tài)機的狀態(tài)圖5.3狀態(tài)機的設(shè)計
5.3.3摩爾(Moore)型狀態(tài)機設(shè)計
第78頁/共99頁【例5.18】摩爾狀態(tài)機的VHDL描述libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitymoore_stateisport(clk,x_in,rst:instd_logic;key_en:outstd_logic;y:outstd_logic_vector(3downto0));end;architecturestrofmoore_stateistypestate_typeis(s1,s2,s3,s4);signalstate:state_type;beginp1_state_p:process(clk,rst)Begin---接下頁5.3狀態(tài)機的設(shè)計
5.3.3摩爾(Moore)型狀態(tài)機設(shè)計
第79頁/共99頁ifrst=‘1’thenstate<=s1;---接上頁
elsifclk'eventandclk='1'thencasestateiswhens1=>ifx_in='0'thenstate<=s2;endif;whens2=>ifx_in='1'thenstate<=s3;endif;whens3=>ifx_in='0'thenstate<=s4;endif;whens4=>ifx_in='1'thenstate<=s1;endif;whenothers=>state<=s1;endcase;endif;---接下頁5.3狀態(tài)機的設(shè)計
5.3.3摩爾(Moore)型狀態(tài)機設(shè)計
第80頁/共99頁endprocess;---接上頁p2_state_p:process(state)begincasestateiswhens1=>y<="0001";key_en<='0';whens2=>y<="0010";key_en<='1';whens3=>y<="0100";key_en<='1';whens4=>y<="1000";key_en<='0';whenothers=>null;endcase;endprocess;end;5.3狀態(tài)機的設(shè)計
5.3.3摩爾(Moore)型狀態(tài)機設(shè)計
第81頁/共99頁圖5.33摩爾型狀態(tài)機的RTL電路圖RTL電路圖如圖5.33所示,仿真波形如圖5.34所示。5.3狀態(tài)機的設(shè)計
5.3.3摩爾(Moore)型狀態(tài)機設(shè)計
圖5.34摩爾型狀態(tài)機的仿真波形第82頁/共99頁5.3.4米勒(Mealy)型狀態(tài)機設(shè)計
如圖5.35所示是米勒型狀態(tài)機的結(jié)構(gòu)圖,圖中的輸出不僅與當前狀態(tài)有關(guān),還與當前輸入信號有關(guān)。米勒型狀態(tài)機的狀態(tài)圖如圖5.36所示。圖5.35米勒型狀態(tài)機的結(jié)構(gòu)圖5.3狀態(tài)機的設(shè)計
第83頁/共99頁圖5.36米勒型狀態(tài)機的狀態(tài)圖5.3狀態(tài)機的設(shè)計
5.3.4米勒(Mealy)型狀態(tài)機設(shè)計第84頁/共99頁
米勒型狀態(tài)機的結(jié)構(gòu)體也由三部分組成:說明部分、時鐘同步的時序進程和組合進程。說明部分和時鐘完全類似于摩爾型狀態(tài)機,不同的只是組合進程。例5.19是實現(xiàn)米勒型狀態(tài)機的VHDL代碼。米勒型狀態(tài)機的RTL電路圖如圖5.37所示,仿真圖形如圖5.38所示。第85頁/共99頁【例5.19】米勒型狀態(tài)機的VHDL描述libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymealyisport(clk,rst,x_in:instd_logic;key_en:outstd_logic;y:outstd_logic_vector(3downto0));end;architecturestrofmealyistypestate_typeis(s1,s2,s3,s4);signalstate:state_type;beginstate_p:process(clk,rst)begin---接下頁5.3狀態(tài)機的設(shè)計
5.3.4米勒(Mealy)型狀態(tài)機設(shè)計第86頁/共99頁ifrst=‘1’thenstate<=s1;---接上頁
elsifclk'eventandclk='1'thencasestateiswhens1=>ifx_in='0'thenstate<=s2;endif;whens2=>ifx_in='1'thenstate<=s3;endif;whens3=>ifx_in='0'thenstate<=s4;endif;whens4=>ifx_in='1'thenstate<=s1;endif;whenothers=>state<=s1;endcase;endif;endprocess;---接下頁5.3狀態(tài)機的設(shè)計
5.3.4米勒(Mealy)型狀態(tài)機設(shè)計第87頁/共99頁out_p:process(state)---接上頁begincasestateiswhens1=>ifx_in='0'theny<="0001";key_en<='0';elsey<="1111";key_en<='1';endif;whens2=>ifx_in='1'
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版文化藝術(shù)節(jié)專用舞臺搭建與施工承包合同3篇
- 二零二五年度塔吊安全監(jiān)控安裝施工勞務(wù)分包合同
- 二零二五年度房產(chǎn)買賣合同關(guān)于房屋附屬設(shè)施使用協(xié)議4篇
- 口腔科2025年度公益活動策劃與執(zhí)行合同3篇
- 二零二五年度土地儲備與交易居間合同
- 2025年度消防器材租賃與維修專業(yè)承包服務(wù)協(xié)議3篇
- 2025年度臨時倉儲倉儲貨物保險及理賠合同
- 2025年度牧草種植與農(nóng)業(yè)科技研發(fā)合同范本4篇
- 2024維修電器合同
- 2025年度配電箱模塊化設(shè)計與制造合同4篇
- GB/T 43650-2024野生動物及其制品DNA物種鑒定技術(shù)規(guī)程
- 2024年南京鐵道職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 暴發(fā)性心肌炎查房
- 口腔醫(yī)學(xué)中的人工智能應(yīng)用培訓(xùn)課件
- 工程質(zhì)保金返還審批單
- 【可行性報告】2023年電動自行車項目可行性研究分析報告
- 五月天歌詞全集
- 商品退換貨申請表模板
- 實習(xí)單位鑒定表(模板)
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
- 2023年常州市新課結(jié)束考試九年級數(shù)學(xué)試卷(含答案)
評論
0/150
提交評論