版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章基本邏輯電路的VHDL設(shè)計【學(xué)習(xí)目標】
通過本章學(xué)習(xí)應(yīng)掌握組合邏輯電路設(shè)計,主要有基本門電路、編碼器、譯碼器、加法器、三態(tài)輸出電路等組合邏輯電路設(shè)計技術(shù);時序邏輯電路設(shè)計,主要有觸發(fā)器、移位寄存器、計數(shù)器等時序邏輯電路設(shè)計技術(shù);狀態(tài)機基本概念、狀態(tài)機設(shè)計流程、一般有限狀態(tài)機的VHDL設(shè)計、Moore型有限狀態(tài)機設(shè)計、Mealy型有限狀態(tài)機設(shè)計、有限狀態(tài)機的編碼等。5.1組合邏輯電路設(shè)計5.1.1基本門電路設(shè)計
1.與非門電路
與非門電路包括二輸入與非門、三輸入與非門、四輸入與非門和多輸入與非門等。下面介紹二輸入與非門電路的設(shè)計方法,其他的設(shè)計方法與二輸入與非門的設(shè)計方法類似,在這里不作更多論述。二輸入與非門電路的邏輯方程式為Y=,邏輯真值表見表5.1,二輸入與非門的電路符號如圖5.1所示輸入輸出ABY001011101110表5.1二輸入與非門的真值表
圖5.1二輸入與非門的電路符號5.1組合邏輯電路設(shè)計5.1.1基本門電路設(shè)計
1.與非門電路(1)VHDL設(shè)計方法二輸入與非門電路的邏輯真值表見表5.1,二輸入與非門的電路符號如圖5.1所示。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è)計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è)計5.1.1基本門電路設(shè)計
1.與非門電路---接上頁process(ab)isbegincaseabiswhen“00”=>y<=‘1‘;--這里的“=>”相當(dāng)于THEN或于是
when"01"=>y<='1';when"10"=>y<='1';when"11"=>y<='0';whenothers=>y<=null;endcase;endprocess;end;5.1組合邏輯電路設(shè)計(a)用nand實現(xiàn)的二輸入與非門的RTL電路(b)用case語句實現(xiàn)的二輸入與非門的RTL電路圖5.2二輸入與非門RTL電路
5.1組合邏輯電路設(shè)計5.1.1基本門電路設(shè)計
1.與非門電路(1)VHDL設(shè)計方法二輸入與非門的功能仿真結(jié)果如圖5.3所示,觀察波形可知,輸入為a與b,輸出為y,且其邏輯關(guān)系滿足二輸入與非門真值表的要求。
圖5.3二輸入與非門的功能仿真圖5.1組合邏輯電路設(shè)計5.1.1基本門電路設(shè)計
1.與非門電路(2)仿真結(jié)果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(a
xorb);--構(gòu)成異或非門
END;5.1組合邏輯電路設(shè)計
5.1.2編碼器設(shè)計
在數(shù)字系統(tǒng)中,常常需要將某信息變換為某一特定的代碼。把二進制碼按一定的規(guī)律進行編排,使每組代碼具有特定的含義,稱為編碼。具有編碼功能的邏輯電路稱為編碼器。編碼器是將
2N個分立的信息代碼以N個二進制碼來表示。5.1組合邏輯電路設(shè)計輸入輸出I0I1I2I3I4I5I6I7Y2Y1Y01000000000001000000001001000000100001000001100001000100000001001010000001011000000001115.1.2編碼器設(shè)計1.8線-3線編碼器的VHDL描述8線-3線編碼真值表見表5.2所示。表5.28線-3線編碼真值表5.1組合邏輯電路設(shè)計【例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描述
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描述
本例中,運用了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描述2.8線-3線編碼器的功能仿真
8線-3線編碼器的功能仿真結(jié)果如圖5.5所示。圖5.58線-3線編碼器功能仿真波形圖
5.1組合邏輯電路設(shè)計5.1.2編碼器設(shè)計5.1.3譯碼器設(shè)計譯碼是編碼的逆過程,它的功能是將具有特定含義的二進制碼進行辨別,并轉(zhuǎn)換成控制信號。具有譯碼功能的邏輯電路稱為譯碼器。5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
1.2線-4線譯碼器
2線-4線譯碼器的真值表見表5.3所示。輸入輸出A1A2Z3Z2Z1Z0000001010010100100111000表5.32線-4線譯碼器的真值表
5.1組合邏輯電路設(shè)計(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線譯碼器圖5.62線-4線譯碼器的RTL電路
5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
1.2線-4線譯碼器(2)2線-4線譯碼器的仿真波形如圖5.7所示,當(dāng)輸入使“00”、“01”、“10”、“11”時分別輸出“0001”、“0010”、“0100”和“1000”,這與真值表中顯示的邏輯關(guān)系一致。圖5.72線-4線譯碼器的仿真波形圖5.1組合邏輯電路設(shè)計5.1.3譯碼器設(shè)計
1.2線-4線譯碼器
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è)計【例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è)計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è)計
例5.6中輸出信號LED的7位分別接數(shù)碼管的7個段,高位在左,低位在右。例如當(dāng)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è)計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;圖5.94位二進制全加器的RTL電路圖
5.1組合邏輯電路設(shè)計5.1.4加法器設(shè)計2.4位全加器的仿真結(jié)果例5.7中的4位全加器的功能仿真結(jié)果如圖5-10所示,其時序仿真結(jié)果如圖5-17所示。從波形中可以看出,當(dāng)a、b和ci取不同的值時,執(zhí)行a+b+ci操作后,和數(shù)s與進位co均滿足4位全加器的邏輯功能要求。5.104位二進制全加器的功能仿真結(jié)果
5.1組合邏輯電路設(shè)計5.1.4加法器設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計
三態(tài)門,是指邏輯門的輸出除有高、低電平兩種狀態(tài)外,還有第三種狀態(tài)——高阻狀態(tài)的門電路,高阻態(tài)相當(dāng)于隔斷狀態(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è)計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è)計圖5.11三態(tài)門電路的RTL電路5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計1.三態(tài)門設(shè)計圖5.12三態(tài)門電路的功能仿真圖
5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計1.三態(tài)門設(shè)計2.雙向總線緩沖器雙向總線緩沖器用于對數(shù)據(jù)總線的驅(qū)動和緩沖,典型雙向總線緩沖電路圖如圖5.13所示。一般雙向總線緩沖器的模式為:兩個數(shù)據(jù)端口a、b,一個使能端en,一個方向控制端dr。其操作行為真值表如表5.4所示。
5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計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è)計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è)計
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è)計圖5.14雙向總線緩沖器的RTL電路圖5.1組合邏輯電路設(shè)計5.1.5三態(tài)門與雙向緩沖電路設(shè)計雙向總線緩沖器的RTL電路圖如圖5.14所示。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ā)器真值表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è)計圖5.16RS觸發(fā)器的RTL電路圖5.17RS觸發(fā)器功能仿真波形圖5.2時序邏輯電路設(shè)計5.2.1觸發(fā)器設(shè)計
1.RS觸發(fā)器設(shè)計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è)計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è)計圖5.18JK觸發(fā)器的RTL電路圖5.19JK觸發(fā)器的功能仿真圖5.2時序邏輯電路設(shè)計5.2.1觸發(fā)器設(shè)計
2.JK觸發(fā)器設(shè)計
5.2.2移位寄存器設(shè)計
移位寄存器是一個具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。既能左移又能右移的稱為雙向移位寄存器,只需要改變左、右移的控制信號便可實現(xiàn)雙向移位要求。根據(jù)移位寄存器存取信息的方式不同分為:串入串出、串入并出、并入串出、并入并出四種形式。
5.2時序邏輯電路設(shè)計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è)計
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è)計圖5.20移位寄存器的RTL電路圖圖5.21移位寄存器的功能仿真波形圖(十六進制表示形式)
5.2時序邏輯電路設(shè)計5.2.2移位寄存器設(shè)計5.2.3計數(shù)器設(shè)計1.十六進制加法計數(shù)器設(shè)計【例5.13】十六進制加法計數(shù)器的VHDL描述LIBRARYieee;USEieee.STD_LOGIC_1164.ALL;USEieee.STD_LOGIC_unsigned.ALL;ENTITYCNT10IS PORT(CLK,RST,EN
:
INSTD_LOGIC;CQ
:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT
:
OUTSTD_LOGIC);END;ARCHITECTUREoneOF
CNT16
ISBEGIN---接下頁5.2時序邏輯電路設(shè)計
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è)計
例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è)計另外,不完整條件語句是指在條件語句中,沒有對所有可能發(fā)生的條件給出對應(yīng)的處理方式。對于這種語言現(xiàn)象,VHDL綜合器將理解為當(dāng)不滿足條件時,不能執(zhí)行新的賦值,即應(yīng)保持原值不變,這就意味著必須引進時序元件來保存的原值,直到滿足IF語句的判斷條件后才能更新存儲器中的值。利用這種不完整的條件語句的描述引進寄存器元件,從而構(gòu)成時序電路的方式是VHDL描述時序電路最重要的途徑,通常,完整的條件語句只能構(gòu)成組合邏輯電路。
5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計圖5.22十六進制加法計數(shù)器的RTL電路圖5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計圖5.23十六進制加法計數(shù)器的功能仿真圖5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計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è)計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è)計十六進制減法計數(shù)器的仿真結(jié)果如圖5.24所示。圖5.24十六進制減法計數(shù)器功能仿真波形圖5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計
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è)計【例5.15】4個觸發(fā)器構(gòu)成的異步計數(shù)器的VHDL底層模塊程序libraryieee;useieee.std_logic_1164.all;entitydffrisport(clk,clr,d:in
std_logic;q,qb:outstd_logic);end;architecturestrofdffrissignalq_in:std_logic;Begin---接下頁5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計qb<=not(q_in);---接上頁q<=q_in;process(clk)beginif(clr='1')then
q_in<='0';
elsif(clk'eventandclk='1')then
q_in<=d;endif;endprocess;end;5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計圖5.25異步計數(shù)器的底層模塊的RTL電路圖
5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計【例5.16】4個觸發(fā)器構(gòu)成的異步計數(shù)器的頂層VHDL描述libraryieee;useieee.std_logic_1164.all;entityrplcontisport(clk,clr:in
std_logic;
count:outstd_logic_vector(3downto0));end;architecturestrofrplcontissignalcount_in_bar:std_logic_vector(4downto0);---接下頁5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計componentdffris---接上頁port(clk,clr,d:in
std_logic;
q,qb:out
std_logic);endcomponent;begincount_in_bar(0)<=clk;gen1:foriin0to3generate
u:dffrportmap(clk=>count_in_bar(i),
clr=>clr,d=>count_in_bar(i+1),q=>count(i),qb=>count_in_bar(i+1));endgenerate;end;5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計圖5.264個觸發(fā)器構(gòu)成的異步計數(shù)器的RTL電路圖5.2時序邏輯電路設(shè)計5.2.3計數(shù)器設(shè)計
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è)計
狀態(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)機
①現(xiàn)態(tài):是指當(dāng)前所處的狀態(tài)。②條件:又稱為“事件”。當(dāng)一個條件被滿足,將會觸發(fā)一個動作,或者執(zhí)行一次狀態(tài)的遷移。③動作:條件滿足后執(zhí)行的動作。動作執(zhí)行完畢后,可以遷移到新的狀態(tài),也可以仍舊保持原狀態(tài)。動作不是必需的,當(dāng)條件滿足后,也可以不執(zhí)行任何動作,直接遷移到新狀態(tài)。④次態(tài):條件滿足后要遷往的新狀態(tài)?!按螒B(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)機
根據(jù)時序輸出信號產(chǎn)生機理的不同,狀態(tài)機可以分成兩類:摩爾(Moore)型狀態(tài)機和米勒(Mealy)型狀態(tài)機。兩種狀態(tài)機的區(qū)別:
①前者的輸出僅是當(dāng)前狀態(tài)的函數(shù),后著的輸出是當(dāng)前狀態(tài)和輸入信號的函數(shù)。
②米勒型狀態(tài)機輸出的變化先于摩爾型。5.3狀態(tài)機的設(shè)計
5.3.1狀態(tài)機概述1.什么是狀態(tài)機
所有的狀態(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)機的流程圖
(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è)計流程5.3.2一般有限狀態(tài)機的VHDL設(shè)計
一般和最常用的狀態(tài)機通常包含:
①說明部分②主控時序進程③主控組合進程④輔助進程幾個部分5.3狀態(tài)機的設(shè)計
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è)計
2.主控時序進程①主控時序進程是指負責(zé)狀態(tài)機運轉(zhuǎn)和在時鐘驅(qū)動下負責(zé)狀態(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è)計
3.主控組合進程
①主控組合進程的任務(wù)是根據(jù)外部輸入的控制信號(包括來自狀態(tài)機外部的信號和來自狀態(tài)機內(nèi)部其他非主控的組合或時序進程的信號),或/和當(dāng)前狀態(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è)計
5.3狀態(tài)機的設(shè)計4.輔助進程
輔助進程用于配合狀態(tài)機工作的組合進程或時序進程。例如為了完成某種算法的進程,或用于配合狀態(tài)機工作的其他時序進程,或為了穩(wěn)定輸出設(shè)置的數(shù)據(jù)鎖存器等。
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
圖5.28一個狀態(tài)機的結(jié)構(gòu)框圖5.3狀態(tài)機的設(shè)計
5.3.2一般有限狀態(tài)機的VHDL設(shè)計
【例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è)計
----接上頁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è)計
---接上頁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è)計
圖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è)計
5.3.3摩爾(Moore)型狀態(tài)機設(shè)計
如圖5.31所示是摩爾型狀態(tài)機的結(jié)構(gòu)圖,圖中的輸出只與當(dāng)前的狀態(tài)有關(guān),而與當(dāng)前的輸入信號無關(guān)。其狀態(tài)圖如圖5.32所示,摩爾狀態(tài)機的VHDL描述如例5.18所示。
圖5.31摩爾型狀態(tài)機的結(jié)構(gòu)圖5.3狀態(tài)機的設(shè)計
圖5.32摩爾型狀態(tài)機的狀態(tài)圖5.3狀態(tài)機的設(shè)計
5.3.3摩爾(Moore)型狀態(tài)機設(shè)計
【例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:in
std_logic;
key_en:out
std_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è)計
ifrst=‘1’thenstate<=s1;---接上頁
elsif
clk'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è)計
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è)計
圖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)機的仿真波形5.3.4米勒(Mealy)型狀態(tài)機設(shè)計
如圖5.35所示是米勒型狀態(tài)機的結(jié)構(gòu)圖,圖中的輸出不僅與當(dāng)前狀態(tài)有關(guān),還與當(dāng)前輸入信號有關(guān)。米勒型狀態(tài)機的狀態(tài)圖如圖5.36所示。圖5.35米勒型狀態(tài)機的結(jié)構(gòu)圖5.3狀態(tài)機的設(shè)計
圖5.36米勒型狀態(tài)機的狀態(tài)圖5.3狀態(tài)機的設(shè)計
5.3.4米勒(Mealy)型狀態(tài)機設(shè)計
米勒型狀態(tài)機的結(jié)構(gòu)體也由三部分組成:說明部分、時鐘同步的時序進程和組合進程。說明部分和時鐘完全類似于摩爾型狀態(tài)機,不同的只是組合進程。例5.19是實現(xiàn)米勒型狀態(tài)機的VHDL代碼。米勒型狀態(tài)機的RTL電路圖如圖5.37所示,仿真圖形如圖5.38所示?!纠?.19】米勒型狀態(tài)機的VHDL描述libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitymealyisport(clk,rst,x_in:in
std_logic;
key_en:out
std_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è)計ifrst=‘1’thenstate<=s1;---接上頁
elsif
clk'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è)計out_p:process(state)---接上頁begincasestateiswhens1=>ifx_in='0'theny<="0001";key_en<='0
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年浙江貨運從業(yè)資格證模擬
- 2025年成都b2貨運資格證多少道題
- 加入學(xué)生會的演講稿15篇
- 2025個人股權(quán)轉(zhuǎn)讓協(xié)議書范本及法律風(fēng)險提示2篇
- 2025年度文化產(chǎn)業(yè)發(fā)展專項資金使用及監(jiān)管合同4篇
- 2025年度新材料研發(fā)場委托招聘協(xié)議3篇
- 2025年度信息技術(shù)項目臨時工雇傭合同范本3篇
- 二零二五年度土地租賃合同法律風(fēng)險防控協(xié)議
- 2025年度UPS不間斷電源設(shè)備銷售與產(chǎn)品研發(fā)合作合同3篇
- 二零二五年度嬰幼兒奶粉品牌授權(quán)專賣店加盟合同協(xié)議書
- 2025年安慶港華燃氣限公司招聘工作人員14人高頻重點提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級下冊數(shù)學(xué)第七章 相交線與平行線 單元測試卷(含答案)
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- 完整2024年開工第一課課件
- 從跨文化交際的角度解析中西方酒文化(合集5篇)xiexiebang.com
- 中藥飲片培訓(xùn)課件
- 醫(yī)院護理培訓(xùn)課件:《早產(chǎn)兒姿勢管理與擺位》
- 《論文的寫作技巧》課件
- 空氣自動站儀器運營維護項目操作說明以及簡單故障處理
- 2022年12月Python-一級等級考試真題(附答案-解析)
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專家共識
評論
0/150
提交評論