版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實訓(xùn)十七基本單元電路的VHDL設(shè)計
本章提要:本章介紹了數(shù)字系統(tǒng)設(shè)計中經(jīng)常用到的計數(shù)器,分頻器,選擇器,譯碼器,編碼器,寄存器,
存儲器,輸入電路,顯示電路等基本單元電路的VHDL程序設(shè)計。
學(xué)習(xí)要求:在教師講授這些基本單元電路的設(shè)計思想的基礎(chǔ)上,通過上機(jī)調(diào)試熟練掌握這些基本單元電路
的設(shè)計。
關(guān)鍵詞:計數(shù)器(Counter),分頻器(Divder),選擇器(Multiplexer),譯碼器(Decoder),編碼器
(Encoder),寄存器(Register),存儲器(Memory),輸入電路(InputCircuit),顯示電路(Display
Circuit)
6.1計數(shù)器的設(shè)計
6.1.1同步計數(shù)器的設(shè)計
6.1.2異步計數(shù)器的設(shè)計
6.2分頻器的設(shè)計
6.3選擇器的設(shè)計
6.4譯碼器的設(shè)計
6.5編碼器的設(shè)計
6.5.1一般編碼器的設(shè)計
6.5.2優(yōu)先級編碼器的設(shè)計
6.6寄存器的設(shè)計
6.6.1數(shù)碼寄存器的設(shè)計
6.6.2移位寄存器的設(shè)計
6.6.3并行加載移位寄存器的設(shè)計
6.7存儲器的設(shè)計
6.7.1只讀存儲器ROM的設(shè)計
6.7.2讀寫存儲器SRAM的設(shè)計
6.8輸入電路的設(shè)計
6.8.1鍵盤掃描電路的設(shè)計
6.8.2鍵盤接口電路的設(shè)計
6.9顯示電路的設(shè)計
6.9.1數(shù)碼管靜態(tài)顯示電路的設(shè)計
6.9.2數(shù)碼管動態(tài)顯示電路的設(shè)計
6.9.2液晶顯示控制電路的設(shè)計
6.1計數(shù)器的設(shè)計
計數(shù)器是在數(shù)字系統(tǒng)中使用最多的時序電路,它不僅能用于對時鐘脈沖計數(shù),還可以用于分頻,定時,產(chǎn)
生節(jié)拍脈沖和脈沖序列以及進(jìn)行數(shù)字運(yùn)算等。計數(shù)器是一個典型的時序電路,分析計數(shù)器就能更好地了解
時序電路的特性。計數(shù)器分同步計數(shù)器和異步計數(shù)器兩種。
6.1.1同步計數(shù)器的設(shè)計
所謂同步計數(shù)器,就是在時鐘脈沖(計數(shù)脈沖)的控制下,構(gòu)成計數(shù)器的各觸發(fā)器狀態(tài)同時發(fā)生變化的那
一類計數(shù)器。
1)六十進(jìn)制計數(shù)器
眾所周知,用一個4位二進(jìn)制計數(shù)器可構(gòu)成1位十進(jìn)制計數(shù)器,而2位十進(jìn)制計數(shù)器連接起來可以構(gòu)成一
個六十進(jìn)制的計數(shù)器。六十進(jìn)制計數(shù)器常用于時鐘計數(shù)。一個六十進(jìn)制計數(shù)器的外部端口示意圖如圖6.1
所示。在該六十進(jìn)制計數(shù)器的電路中,BCDLWR和BCD10WR與DATAIN配合,以實現(xiàn)對六十進(jìn)制計數(shù)器的個
位和十位值的預(yù)置操作。應(yīng)注意,在對個位和十位進(jìn)行預(yù)置操作時,DATAIN輸入端是公用的,因而個位和
十位的預(yù)置操作必定要串行進(jìn)行。利用VHDL語言描述六十進(jìn)制計數(shù)器的程序如例6.1所示。
圖6.1六十進(jìn)制計數(shù)器外部端口示意圖
【例6.1]用VHDL設(shè)計一個六十進(jìn)制計數(shù)器(方法1)。
—BCD60C0UNT.VHD
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYBCD60C0UNTIS
PORT(CLK,BCD1WR,BCD10WR,CIN:STD_LOGIC;
CO:OUTSTD_LOGIC;
DATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0);
BCD1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);
BCDIO:OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDBCD60C0UNT;
ARCHITECTURERTLOFBCD60C0UNTIS
SIGNALBCD1N:STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALBCD10N:STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
BCD1<=BCD1N;
BCDI0<=BCD10N;
PROCESS(CLK,BCD1WR)--個位數(shù)處理進(jìn)程
BEGIN
IF(BCD1WR=T')THEN
BCD1N<=DATAIN;
ELSIF(CLK,EVENTANDCLK='1')THEN
IF(CIN=f)THEN
IF(BCD1N=9)THEN
BCD1NU0000";
ELSE
BCD1N<=BCD1N+1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS:
PROCESS(CLK,BCD1OWR)--十位數(shù)處理進(jìn)程
BEGIN
IF(BCD1OWR='1')THEN
BCD1ON<=DATAIN(2DOWNTO0);
ELSIF(CLK'EVENTANDCLK=T')THEN
IF(CIN=fANDBCD1N=9)THEN
IF(BCD10N=5)THEN
BCD1ON<=Z/OOO";
ELSE
BCD1ON<=BCD1ON+1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS:
PROCESS(BCD1ON,BCD1N,CIN)--進(jìn)位位處理進(jìn)程
BEGIN
IF(CIN=TANDBCD1N=9ANDBCD10N=5)THEN
CO<=r;
ELSE
CO<=O';
ENDIF;
ENDPROCESS:
ENDRTL;
【例6.2】用VHDL設(shè)計一個六十進(jìn)制計數(shù)器(方法2)。
—C0UNTER60.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYC0UNTER60IS
PORT(CP:INSTD_LOGIC;一時鐘脈沖
BIN:OUTSTD_LOGIC_VECTOR(5DOWNTO0);一二進(jìn)制
S:INSTD_LOGIC;一輸出啟動信號
CLR:INSTD_LOGIC;一清除信號
EC:INSTD_LOGIC:一使能計數(shù)信號
CY60:OUTSTD_LOGIC);一計數(shù)60進(jìn)位信號
ENDC0UNTER60;
ARCHITECTURERTLOFC0UNTER60IS
SIGNALQ:STD_LOGIC_VECTOR(5DOWNTO0);
SIGNALRST,DLY:STD_LOGIC;
BEGIN
PROCESS(CP,RST)—計數(shù)60
BEGIN
IFRST=T'THEN
Q<="000000”;一復(fù)位計數(shù)器
ELSIFCP*EVENTANDCP二T'THEN
DLY<=Q(5);
IFEC=T'THEN
Q<=Q+l;~計數(shù)值加1
ENDIF;
ENDIF;
ENDPROCESS;
CY60<=NOTQ(5)ANDDLY;—進(jìn)位信號微分
RST〈二T'WHENQ=60ORCLR=T'ELSE—復(fù)位信號設(shè)定
'O';
BIN<=QWHENS='1'ELSE"計數(shù)輸出
“000000〃;
ENDRTL;
2)可逆計數(shù)器
在時序應(yīng)用電路中,計數(shù)器的應(yīng)用十分普遍,如加法計數(shù)器,減法計數(shù)器,可逆計數(shù)器等。所謂可逆計數(shù)
器,就是根據(jù)計數(shù)控制信號的不同,在時鐘脈沖作用下,計數(shù)器可以進(jìn)行加1或者減1操作的一種計數(shù)器。
可逆計數(shù)器有一個特殊的控制端,這就是UPDN端。當(dāng)UPDN='1'時,計數(shù)器進(jìn)行加1操作,當(dāng)UPDN='0'
時,計數(shù)器就進(jìn)行減1操作。表6.1是一個3位可逆計數(shù)器的真值表,它的VHDL語言描述如例6.3所示。
表6.1可逆計數(shù)器真值表
輸入端輸出端
DIRCPQ2QIQ0
XX000
1計數(shù)器加1操作
0計數(shù)器減1操作
【例6.3]用VHDL設(shè)計一個3位二進(jìn)制的可逆計數(shù)器。
—C0UNT3.vhd
LIBRARYIEEE;
USEIEEE.STDLOGIC1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYC0UNT3IS
PORT(CP,DIR:INSTD_LOGIC;
Q:OUTSTD_L0GIC_VECT0R(2DOWNTO0));
END;
ARCHITECTURERTLOFCOUNT3IS
SIGNALQN:STD_L0GIC_VECT0R(2DOWNTO0);
BEGIN
PROCESS(CP)
BEGIN
IFCP'EVENTANDCP:'TTHEN
IFDIR='O'THEN
QN<=QN+1;
ELSE
QN<=QN-1;
ENDIF;
ENDIF;
ENDPROCESS;
Q<=QN;
ENDRTL;
編寫可逆計數(shù)器VHDL程序時,在語法上,就是把加法和減法計數(shù)器合并,使用一個控制信號決定計數(shù)器作
加法或減法的動作。在本例中,利用“控制信號DIR”可以讓計數(shù)器的計數(shù)動作加1或減1。
6.1.2異步計數(shù)器的設(shè)計
異步計數(shù)器又稱行波計數(shù)器,它將低/高位計數(shù)器的輸出做為高/低位計數(shù)器的時鐘信號,這一級一級串行
連接起來就構(gòu)成了一個異步計數(shù)器。異步計數(shù)器與同步計數(shù)器不同之處就在于時鐘脈沖的提供方式,但是,
由于異步計數(shù)器采用行波計數(shù),從而使計數(shù)延遲增加,在要求延遲小的領(lǐng)域受到了很大限制。盡管如此,
由于它的電路簡單,仍有廣泛的應(yīng)用。
圖6.2是用VHDL語言描述的一個由8個觸發(fā)器構(gòu)成的異步計數(shù)器.它的程序如例6.4所示,采用元件例化
方式生成。與上述同步計數(shù)器不同之處主要表現(xiàn)在對各級時鐘脈沖的描述上,這一點請讀者在閱讀程序時
多加注意。
圖6.28位異步計數(shù)器原理圖
【例6.4]用VHDL設(shè)計一個由8個觸發(fā)器構(gòu)成的8位二進(jìn)制異步計數(shù)器。
-RPLCONT.VHD
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
ENTITYDFFRIS
PORT(CLK,CLR,D:INSTD_LOGIC;
Q,QB:OUTSTD_LOGIC);
ENDENTITYDFFR;
ARCHITECTUREART1OFDFFRIS
SIGNALQ_IN:STD_LOGIC;
BEGIN
QB<=NOTQ_IN;
Q<=Q_IN;
PROCESS(CLK,CLR)IS
BEGIN
IF(CLR='1')THEN
Q_IN<=,0*;
ELSIF(CLK,EVENTANDCLK二T')THEN
Q_IN<=D;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART1;
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
ENTITYRPLCONTIS
PORT(CLK,CLR:INSTD_LOGIC;
COUNT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYRPLCONT;
ARCHITECTUREART2OFRPLCONTIS
SIGNALCOUNT_IN_BAR:STD_LOGIC_VECTOR(8DOWNTO0);
COMPONENTDFFRIS
PORT(CLK,CLR,D:INSTD_LOGIC;
Q,QB:OUTSTD_LOGIC);
ENDCOMPONENT;
BEGIN
COUNT_IN_BAR(O)<=CLK;
GEN1:FORIIN0TO7GENERATE
U:DFFRPORTMAP(CLK=>COUNT_IN_BAR(I),CLR=>CLR,
D二)COUNT」N_BAR(1+1),Q=>COUNT(I),QB=>COUNT_IN_BAR(1+1));
ENDGENERATE;
ENDARCHITECTUREART2;
6.2分頻器的設(shè)計
一般來說,可以把加法計數(shù)器看成一種分頻電路,而且是除2的N的次方的分頻電路。
但是也常常會有除M(M不是2的N次方)的分頻電路需求.
下面就介紹一個除6的加法分頻電路。先建立一個計數(shù)器,而這個計數(shù)器的大小必須是3位(計數(shù)默認(rèn)范圍
是0?2R-1:7),不過將把這樣的計數(shù)值為6的瞬間,立即復(fù)位改變?yōu)?,其丫皿1程序如例6.5所示
【例6.5】用VHDL設(shè)計一個除6的加法分頻電路。
—C0UNT6.vhd
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITILALL;
USEIEEE.STDLOGICUNSIGNED.ALL;
ENTITYC0UNT6is
PORT(CP:INSTD_LOGIC;
Result:OUTSTD_LOGIC);
ENDC0UNT6;
ARCHITECTUREaOFC0UNT6IS
SIGNALRST:STD_LOGIC;
SIGNALQN:STD_LOGIC_VECTOR(2DOWNTO0);
BEGIN
PROCESS(CP,RST)—***COUNTER
BEGIN
IFRST='1'THEN
QN<="000〃;一ResetCounter
ELSIFCP*eventANDCP='1'THEN
QN<=QN+1;—COUNTER+1
ENDIF;
ENDPROCESS;
RST<=T'WHENQN=6ELSE—RESETCOUNTER
'O';
Result<=QN(2);-ResultOutput
ENDa;
以后遇到需要分頻是N的同步計數(shù)器,需將上述QN=6改成QN=N,而且計數(shù)器Xbits數(shù)需調(diào)整為符合條件
2X〉二N才可以。
6.3選擇器的設(shè)計
多路選擇器可以從多組數(shù)據(jù)來源中選取一組送入目的地。它的應(yīng)用范圍相當(dāng)廣泛,從組合邏輯的執(zhí)行,到
數(shù)據(jù)路徑的選擇,經(jīng)常可以看到它的蹤影。另外在像時鐘,計數(shù)定時器等的輸出顯示電路中都可以看到利
用多路選擇器制作掃描電路來分別驅(qū)動輸出裝置(通常為七段數(shù)碼顯示管,點矩陣或液晶面板),以降低功率
的消耗。有時也希望把兩組沒有必要同時觀察的數(shù)據(jù),共享一組顯示電路,以降低成本。
多路選擇器的結(jié)構(gòu)是2N個輸入線,會有N個地址選擇線及一個輸出線配合?,F(xiàn)以一個四選一的多路選擇器
為例,其四選一電路的真值表如表6.2所示,其外部端口示意圖如圖6.3所示。
表6.2四選一電路真值表
選擇輸入數(shù)據(jù)輸入數(shù)據(jù)輸出
baInput(0)Input(1)Input(2)Input(3)y
000XXX0
001XXX1
01X0XX0
01X1XX1
10XX0X0
10XX1X1
11XXX00
11XXX11
圖6.3四選一電路外部端口示意圖
描述四選一多路選擇器的方法有多種,例如在一個進(jìn)程中使用if-then-else語句;在一個進(jìn)程中使用case
語句;使用wilhselect構(gòu)造或使用結(jié)構(gòu)VHDL?,F(xiàn)用ifThen-else語句對它進(jìn)行描述,就可以得到如例
6.6所示的程序。
【例6.6】設(shè)計一個四選一的多路選擇器的VHDL程序(使用if-lhen-else語句)。
—MUX4.VHD
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
ENTITYMUX4IS
PORT(DATAO,DATA1,DATA2,DATA3:INSTD_LOGIC_VECTOR(3DOWNTO0);
A,B:INSTD_LOGIC;
Y:OUTSTD_L0GIC_VECT0R(3DOWNTO0));
ENDENTITYMUX4;
ARCHITECTUREARTOFMUX4IS
SIGNALSEL:STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
SELCB&A;
PROCESS(SEL)
BEGIN
IF(SEL=〃OO〃)THEN
Y<=DATAO;
ELSIF6EL="01")THEN
Y<=DATA1;
ELSIF(SEL="10")THEN
Y<=DATA2;
ELSE
Y<=DATA3;
ENDIF;
ENDPROCESS;
ARCHITECTUREART;
例6.6中的四選一選擇器是用IF語句描述的,程序中的ELSE項作為余下的條件,將選擇INPUT(3)從Y
端輸出,這種描述比較安全。當(dāng)然,不用ELSE項也可以,這時必須列出SEL的所有可能出現(xiàn)的情況,加以
一一確認(rèn)。在進(jìn)程中使用CASE語句會更清晰易讀。例6.7是用CASE語句描述的四選一選擇器。
【例6.7】設(shè)計一個四選一的多路選擇器的VHDL程序(使用case語句)。
—MUX4.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC」164.ALL;
ENTITYMUX4IS
PORT(DATAO,DATA1,DATA2,DATA3:INSTD_LOGIC_VECTOR(3DOWNTO0);
A,B:INSTD_LOGIC;
Y:OUTSTD_L0GIC_VECT0R(3DOWNTO0));
ENDENTITYMUX4;
ARCHITECTUREARTOFMUX4IS
SIGNALSEL:STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
SELCB&A;
PROCESS(SEL)
BEGIN
CASESELIS
WHEN〃00"=>Y〈=DATA0;
WHEN,,0r=>Y<=DATAl;
WHEN,,10,=>Y<=DATA2;
WHEN,/ir=>Y<=DATA3;
WHENOTHERS=>Y<=NULL;
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREART;
【例6.8】設(shè)計一個四選一的多路選擇器的VHDL程序(使用WHEN-ELSE并行條件賦值語句)。
—MUX4.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYMUX4IS
PORT(DATAO,DATA1,DATA2,DATA3:INSTD_LOGIC_VECTOR(3DOWNTO0);
A,B:INSTD_LOGIC;
Y:OUTSTD_L0GIC_VECT0R(3DOWNTO0));
ENDENTITYMUX4;
ARCHITECTUREARTOFMUX4IS
SIGNALSEL:STDLOGICVECTOR(1DOWNTO0);
BEGIN
SELCB&A;
Y<=DATAOWHENSEL=〃00〃ELSE
DATA1WHENSEL=〃01〃ELSE
DATA2WHENSEL="10"ELSE
DATA3WHENSEL=ELSE
'O';
ENDARCHITECTUREART;
6.4譯碼器的設(shè)計
譯碼器是把輸入的數(shù)碼解出其對應(yīng)的數(shù)碼,如果有N個二進(jìn)制選擇線,則最多可以譯碼轉(zhuǎn)換成2N個數(shù)據(jù)。
譯碼器也經(jīng)常被應(yīng)用在地址總線或用作電路的控制線。像只讀存儲器(ROM)中便利用譯碼器來進(jìn)行地址選
址的工作。
3-8譯碼器是最常用的種小規(guī)模集成電路。3-8譯碼器外部端口示意圖如圖6.9所示,它有3個二進(jìn)制輸入
端a,b,c和8個譯碼輸出端yO~y7。對輸入a,b,c的值進(jìn)行譯碼,就可以確定輸出端yO~y7的哪一個輸出
端變?yōu)橛行Вǖ碗娖剑?,從而達(dá)到譯碼的目的。另外為方便譯碼器的控制或便于將來擴(kuò)充用,在設(shè)計時常
常會增加一個EN使能輸入腳。3-8譯碼器的真值表如表6.3所示。有了真值表,就可以直接用查表法來設(shè)
計。
在VHDL中,“WITH…SELECT,“CASE…WHEN”及“WHEN…ELSE”這類指令都是執(zhí)行查表或?qū)?yīng)動作的
能手。
圖6.43-8譯碼器外部端口示意圖
表6.33-8譯碼器的真值表
使能二進(jìn)制輸入端譯碼輸出端
encbayOyly2y3y4y5y6y7
0xxx1111111
100001111111
100110111111
101011011111
101111101111
10011110111
110111111011
111011111101
11111111110
【例6.9]用VHDL設(shè)計一個3-8譯碼器(用“CASE…'”語句)。
—DEC0DER38.VHD
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
ENTITYDEC0DER38IS
PORT(A,B,C,EN:INSTD_LOGIC;
Y:OUTSTDLOGICVECTOR(7DOWNTO0));
ENDDEC0DER38;
ARCHITECTURERTLOFDECODER38IS
SIGNALINDATA:STD_L0GIC_VECT0R(2DOWNTO0);
BEGIN
INDATA〈=C&B&A;
PROCESS(INDATA,EN)
BEGIN
IF(EN=T)THEN
CASEINDATAIS
WHEN"000〃
WHEN"001〃
WHEN"010〃=>Y<=〃11111011”;
WHEN〃011〃=>Y<="111101ir;
WHEN"100〃=>Y<=/z111011irz;
WHEN"101〃=>Y<=〃11011111”;
WHEN〃110"=>Y<=z,101111ir;
WHEN〃111〃
WHENOTHERS=>Y<=NULL;
ENDCASE;
ELSE
¥<=/zllllllir;
ENDIF;
ENDPROCESS;
ENDRTL;
【例6.10]用VHDL設(shè)計一個3-8譯碼器(用“WITH…SELECT”語句)。
LIBRARYIEEE;
USEIEEE.STD_LOGIC」164.All;
ENTITYDECODER38IS
PORT(A,B,C,EN:INSTD_LOGIC;
Y:OUTSTD_L0GIC_VECT0R(7DOWNTO0));
ENDDEC0DER38;
ARCHITECTURERTLOFDEC0DER38IS
SIGNALINDATA:STD_L0GIC_VECT0R(3DOWNTO0);
BEGIN
INDATA<=EN&C&B&A;一將EN,A,B,C合并成序列的一種寫法
WITHINDATASELECT
¥<="11111110"WHEN〃1000〃,
"minorWHEN"1001”,
"liiiioirWHEN"1010”,
"llllOlll"WHEN"1011”,
T1101111"WHEN"1100”,
"11011111"WHEN"1101”,
"10111111"WHEN"1110”,
01111111〃WHEN
“11111111〃WHENOTHERS;
ENDRTL;
在本節(jié)中用到的兩種描述語句,“WITH…SELECT'是并行同時性語句,“CASE…WHEN”是與其功能相同的
順序性語句,讀者在使用時一定要確定需要的是順序性語句還是并行性語句,否則程序在編譯時會發(fā)生錯
誤。
6.5編碼器的設(shè)計
編碼器是將2飛個分離的信息代碼以N個二進(jìn)制碼來表示。它的功能和譯碼器正好相反。編碼器常常運(yùn)用
于影音壓縮或通信方面,以達(dá)到精簡傳輸量的目的。可以將編碼器看成壓縮電路,譯碼起看成解壓縮電路。
傳送數(shù)據(jù)前先用編碼器壓縮數(shù)據(jù)后在傳送出去,在接收端則由譯碼器將數(shù)據(jù)解壓縮,還原其原來的數(shù)據(jù)。
這樣,在傳送過程中,就可以以N個數(shù)碼來代替2飛個數(shù)碼的數(shù)據(jù)量,來提升傳輸效率。
6.5.1一般編碼器的設(shè)計
如果沒有特別說明,各編碼輸入端無優(yōu)先
區(qū)別。圖6.5是8-3編碼器的外部端口圖,
有了外部端口圖,就能夠做ENTITY的定義,
再根據(jù)編碼器的真值表如表6.4所示.,再使用
查表法就可以輕松描述結(jié)構(gòu)體了。
圖6.58-3編碼器外部端口圖
表6.48-3編碼器的真值表
輸入二進(jìn)制編碼輸出
A7A6A5A4A3A2AlAOY2Y1Y0
11111110111
1111110110
11111011101
11110111100
11101111011
1101111100
10111111001
0111111000
【例6.11】用VHDL設(shè)計一個8-3編碼器。
—CH_8_3.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCH_8_3IS
PORT(A:INSTD_L0GIC_VECT0R(7DOWNTO0);
Y:OUTSTD_L0GIC_VECT0R(2DOWNTO0));
ENDCH_8_3;
ARCHITECTURERTLOFCH_8_3IS
BEGIN
WITHASELECT
Y〈二”000〃WHEN”11111110”,
“001〃WHEN"minor,
”010〃WHEN"iimoir,
“011〃WHEN“11110111”,
〃100〃WHEN"11101111",
,ziorWHEN"iioimr;
“110〃WHEN"loiimr,
WHEN"omiiir,
〃000”WHENOTHERS;
ENDRTL;
6.5.2優(yōu)先級編碼器的設(shè)計
優(yōu)先級編碼器長用于中斷的優(yōu)先級控制,例如,74LS148是一個8輸入,3位二進(jìn)制碼輸出的優(yōu)先級編碼器。
當(dāng)其某一個輸入有效時,就可以輸出一個對應(yīng)的3位二進(jìn)制編碼。另外,當(dāng)同時有幾個輸入有效時,將輸
優(yōu)先級最高的那個輸入所對應(yīng)的二進(jìn)制編碼。
該優(yōu)先級編碼器的真值表如表6.5所示。表中的“X”項表示任意項,它可以是“0”,也可以是“1”。
INPUT(0)的優(yōu)先級最高,INPUT(7)的優(yōu)先級最低。
表6.5優(yōu)先級編碼器真值表
輸入二進(jìn)制編碼輸出
Input(7)Input(6)Input(5)Input(4)Input(3)Input(2)Input(1)Input(0)Y2Y1Y0
XXXXXXX0111
XXXXXX01110
XXXXX011101
XXXX0111100
XXX01111011
01111100
X0111111001
X111111000
【例6.12]用VHDL設(shè)計一個8-3優(yōu)先級編碼器。
—CH8_3.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCH8_3IS
PORT(INPUT:INSTD_L0GIC_VECT0R(7DOWNTO0);
Y:OUTSTD_L0GIC_VECT0R(2DOWNTO0));
ENDCH8_3;
ARCHITECTURERTLOFCH8.3IS
BEGIN
PROCESS(INPUT)
BEGIN
IF(INPUT(0)='O')THEN
Y<=,znr;
ELSIF(INPUT(1)='O'THEN
Y<=〃110”;
ELSIF(INPUT(2)=0*THEN
YU101〃;
ELSIF(INPUT(3)='O'THEN
YU'IOO";
ELSIF(INPUT(4)='O'THEN
Y<=/Zoir;
ELSIF(INPUT(5)=,0,THEN
Y<=〃010〃;
ELSIF(INPUT(6)=0,THEN
y<=z/oor;
ELSIF
YU'OOO";
ENDIF;
ENDPROCESS;
ENDRTL;
6.6寄存器的設(shè)計
寄存(鎖存)器是一種重要的數(shù)字電路部件,常用來暫時存放指令、參與運(yùn)算的數(shù)據(jù)或運(yùn)算結(jié)果等。它是數(shù)
字測量和數(shù)字控制中常用的部件,是計算機(jī)的主要部件之一。寄存器的主要組成部分是具有記憶功能的雙
穩(wěn)態(tài)觸發(fā)器。一個觸發(fā)器可以儲存一位二進(jìn)制代碼,要儲存N位二進(jìn)制代碼,就在有N個觸發(fā)器。寄存器
從功能上說,通??煞譃閿?shù)碼寄存器和移位寄存器兩種。
6.6.1數(shù)碼寄存器的設(shè)計
數(shù)碼寄存器用于寄存一組二進(jìn)制代碼,廣泛用于各類數(shù)字系統(tǒng)。下面給出一個8位寄存器的VHDL描述。
【例6.13】用VHDL設(shè)計一個8位的數(shù)碼寄存器。
—REG.VHD
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
ENTITYREGIS
PORT(D:INSTD_LOGIC_VECTOR(7TO0);
CLK:INSTD_LOGIC;
Q:OUTSTD_L0GIC_VECT0R(7TO0));
ENDENTITYREG;
ARCHITECTUREARTOFREGIS
BEGIN
PROCESS(CLK)IS
BEGIN
IF(CLK*EVENTANDCLK=T')THEN
Q<=D;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
6.6.2移位寄存器的設(shè)計
移位寄存器除了具有存儲代碼的功能以外,還具有移位功能。所謂移位功能,是指寄存器里存儲的代碼能
在移位脈沖的作用下依次左移或右移。因此,移位寄存器不但可以用來寄存代碼,還可用來實現(xiàn)數(shù)據(jù)的串
并轉(zhuǎn)換、數(shù)值的運(yùn)算以及數(shù)據(jù)處理等。下面給出一個8位的移位寄存器,其具有左移一位或右移一位、并
行輸入和同步復(fù)位的功能。
【例6.14】用VHDL設(shè)計一個8位的移位寄存器,其具有左移一位或右移一位、并行輸入和同步復(fù)位的功
能.
—SHIFT_REG.VHD
LIBRARYIEEE;
USEIEEE.STD_L0GIC_1164.ALL;
ENTITYSHIFT_REGIS
PORT(DATA:INSTD_LOGIC_VECTOR(7DOWNTO0);
CLK:INSTD_LOGIC;
SHIFT_LEFT,SHIFT_RIGHT:INSTD_LOGIC;
RESET:INSTD_LOGIC;
MODE:INSTD_LOGIC_VECTOR(1DOWNTO0);
QOUT:BUFFERSTD_L0GIC_VECT0R(7DOWNTO0));
ENDENTITYSHIFT_REG;
ARCHITECTUREARTOFSHIFT_REGIS
BEGIN
PROCESSIS
BEGIN
WAITUNTIL(RISING_EDGE(CLK));
IF(RESET='1')THEN
Q0UT<="00000000\
ELSE一同步復(fù)位功能的實現(xiàn)
CASEMODEIS
WHEN//O1Z'=>QOUT<=SHIFT_RIGHT&QOIIT(7DOWTO1);一右移一位
WHEN"10"=〉Q0UT〈=Q0UT(6DOWNTOO)&SHIFT_LEFT;一左移一位
WHEN<,ir=>QOUT<=DATA;一并行輸入
WHENOTHERS=>NULL;
ENDCASE;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
6.6.3并行加載移位寄存器的設(shè)計
在TTL手冊中的74LS166是一個帶清零端的8位并行加載的移位寄存器,其引腳圖及邏輯圖如圖6.6所示。
圖6.674LS166的引腳圖及邏輯圖
圖中各引腳名稱和功能如下:
A,B,C,D,E,F,G,II:8位并行數(shù)據(jù)輸入端;
SER:串行數(shù)據(jù)輸入端;
QH:串行數(shù)據(jù)輸出端;
CLK:時鐘信號輸入端;
CLKINH:時鐘信號禁止(FE)端:
SH/LD:移位加載控制(SL)端;
CLR:清零端。
當(dāng)清零輸入端CLR為‘0'時,8個觸發(fā)器的輸出均為'0',從而使輸出Q為‘0'。CLKINH是時鐘禁止端,
當(dāng)它為‘1'時將禁止時鐘,即不管時鐘信號如何變化,移位寄存器的狀態(tài)不發(fā)生改變。另外,時鐘信號只
在上升沿時才有效,且CLKINH為‘0'。當(dāng)控制端SH/LD='1'時是移位狀態(tài),在時鐘脈沖上升沿的控制
下右移,當(dāng)SH/LD='0'時是加載狀態(tài),在時鐘脈沖上升沿的作用下,數(shù)據(jù)輸入端A?H的信號就是裝載
到移位寄存器的QA?QH。根據(jù)上述描述,就可以用VHDL語言編寫出描述74166功能的程序。
【例6.15】用VHDL設(shè)計的帶清零端的8位并行加載的移位寄存器74LS166.
一SREG8PARLWCLR.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYSREG8PARLWCLRIS
PORT(CLR,SL,FE,CLK,SER:INSTD_LOGIC;
A,B,C,D,E,F,G,H:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
ENDSREG8PARLWCLR;
ARCHITECTUREBEHAVOFSREG8PARLWCLRIS
SIGNALTMPREG8:STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(CLK,SL,FE,CLR)
IF(CLR='O')THEN
TMPREG8<="00000000”:
Q<=TMPREG8(7);
ELSIF(CLK'EVENT)AND(CLK='1')AND(FE='O')THEN
IF(SL='O')THEN
TMPREG8(0)<=A;
TMPREG8(1)<=B;
TMPREG8(2)<=C;
TMPREG8(3)<=D;
TMPREG8(4)<=E;
TMPREG8(5)<=F;
TMPREG8(6)<=G;
TMPREG8(7)<=H;
Q<=TMPREG8(7);
ELSIF(SL=)THEN
FORIINTMPREG8,HIGHDOWNTOTMPREG8'LOW+1LOOP
TMPREG8(I)<=TMPREG8(I-1);
ENDLOOP;
TMPREG8(TMPREG8'LOW)<=SE;
Q<=TMPREG8(7);
ENDIF;
ENDIF;
ENDPROCESS;
ENDBEHAV;
6.7存儲器的設(shè)計
半導(dǎo)體存儲器的種類很多,從功能上可以分為只讀存儲器(READONLYMEMORY,簡稱ROM)和隨機(jī)存儲器
(RANDOMACCESSMEMORY,簡稱RAM)兩大類。
6.7.1只讀存儲器ROM的設(shè)計
只讀存儲器在正常工作時從中讀取數(shù)據(jù),不能快速地修改或重新寫入數(shù),適用于存儲固定數(shù)據(jù)的場合。下
面是一個容量為256X4的ROM存儲的例子,該ROM有8位地址線ADR(0)-ADR(7),4位數(shù)據(jù)輸出線DOUT(0)?
D0UT(3)及使能EN,如圖6.7所示。
圖6.7ROM
【例6.16】用VHDL設(shè)計一個一個容量為256X4的ROM存儲的例子,該ROM有8位地址線ADR(O)-ADR(7),
4位數(shù)據(jù)輸出線DOUT(0)?DOUT(3)及使能EN。
—ROM.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL:
USEIEEE.STDJOGICJJNSIGNED.ALL;
USESTD.TEXTIO.ALL;
ENTITYROMIS
PORT(EN:INSTD_LOGIC;
ADR:INSTD_L0GIC_VECT0R(7DOWNTO0);
DOUT:OUTSTD_L0GIC_VECT0R(3DOTOTO0));
ENDENTITYROM;
ARCHITECTUREARTOFROMIS
SUBTYPEWORDISSTD_L0GICJ,ECT0R(3DOWNTO0);
TYPEMEMORYISARRAY(0TO255)OFWORD;
SIGNALADRIN:INTEGERRANGE0TO255:
VARIABLEROM:MEMORY;
VARIABLESTARTUP:BOOLEAN:=TRUE;
VARIABLEL:LINE;
VARIABLEJ:INTEGER;
FILEROMIN:TEXTISIN“ROMIN”:
BEGIN
PROCESS(EN,ADR)IS
BEGIN
IFSTART_UPTHEN-初始化開始
FORJINROM'RANGELOOP
READLINE(ROMIN,1);
READ(1,ROM(J));
ENDLOOP;
STARTUP::FALSE:一初始化結(jié)束
ENDIF;
ADR」N<=CONV」NTEGER(ADR);一將向量轉(zhuǎn)化成整數(shù)
IF(EN=T)THEN
DOUT<=ROM(ADR_IN);
ELSE
DOUT<="ZZZZ”;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
6.7.2讀寫存儲器SRAM的設(shè)計
RAM和ROM的主要區(qū)別在于RAM描述上有讀和寫兩種操作,而且在讀寫上對時間有較嚴(yán)格的要求。下面我
們給出一個8X8位的雙口SRAM的VHDL描述實例,如圖6.8所示。
圖6.8雙口SRAM
【例6.17]用VHDL設(shè)計一個8X8位的雙口SRAM。
—DPRAM.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYDPRAMIS
GENERIC(WIDTH:INTEGER:=8;
DEPTH:INTEGER:=8;
ADDER:INTEGER:=3);
PORT(DATAIN:INSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);
DATAOUT:OUTSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);
CLOCK:INSTD_LOGIC;
WE,RE:INSTD_LOGIC;
WADD:INSTD_LOGIC_VECTOR(ADDER-1DOWNTO0);
RADD:INSTDLOGICVECTOR(ADDER-1DOWNTO0));
ENDENTITYDPRAM;
ARCHITECTUREARTOFDPRAMIS
TYPEMEMISARRAY(DEPTH-1TO0)OF
STD_LOGIC_VECTOR(WIDTH-1DOWNTO0);
SIGNALRAMTMP:MEM:
BEGIN
一寫進(jìn)程
PROCESS(CLOCK)IS
BEGIN
IF(CLOCK'EVENTANDCLOCK=T)THEN
IF(WE=DTHEN
RAMTMP(CONV_INTEGER(WADD))<=DATAIN;
ENDIF;
ENDIF;
ENDPROCESS;
一讀進(jìn)程
PROCESS(CLOCK)IS
BEGIN
IF(CLOCK'EVENTANDCLOCK?1')THEN
IF(RE="I')THEN
DATAOUT<=RAMTMP(CONV_INTEGER(RADD));
ENDIF;
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
6.8輸入電路的設(shè)計
6.8.1鍵盤掃描電路的設(shè)計
計算機(jī)控制系統(tǒng)中,數(shù)據(jù)和控制信號的輸入主要使用鍵盤。下面給出一個鍵盤掃描電路VHDL描述。
【例6.18]用VHDL設(shè)計一個鍵盤掃描電路。
—KSCAN.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL:
ENTITYKSCANIS
PORT(CLK:INSTD_LOGIC;
KIN1,KIN2:INSTD_LOGIC;
LEDA,LEDB,LEDC:OUTSTD_LOGIC;
LEDD:OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDKSCAN;
ARCHITECTUREHAVOFKSCANIS
SIGNALSEG:STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALSEL:STD_L0GIC_VECT0R(2DOWNTO0);
SIGNALKNUM:STDLOGICVECTOR(3DOWNTO0):
SIGNALCOUNT:STD_L0GIC_VECT0R(4DOWNTO0);
SIGNALCOUNTO:STD_LOGIC;
BEGIN
LEDD<=SEG;
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
COUNT<=COUNT+1;
ENDIF;
ENDPROCESS;
COUNTO<=COUNT(0):
PROCESS(COUNTO,COUNT,KIN1,KIN2)
BEGIN
IFCOUNT。'EVENTANDCOUNTO:PTHEN
IF(KIN2='O')ANDCOUNT(1)='O'THEN
KNUM<=T&COUNT(4DOWNTO2);
ELSIF(KIN1='O')ANDCOUNT(1)='O'THEN
KNUM<='O'&COUNT(4DOWNTO2);
ENDIF;
ENDIF;
ENDPROCESS;
SEL<=COUNT(4DOWNTO2):
PROCESS(KNUM)
BEGIN
CASEKNUMIS
WHEN“0000”=>SEG<="00111111”
WHEN“0001”=>SEG<="00000110”
WHEN“0010”=>SEG<="01011011”
WHEN“0011”=>SEG<="01001111”
WHEN“0100”=>SEG<="01100110”
WHEN“0101”=>SEG<="01101101”
WHEN“0110”=>SEG<="01111101”
WHEN“0111”=>SEG<="00000111”
WHEN“1000”=>SEG<="01111111”
WHEN“1001”=>SEG<="01101111”
WHEN“1010”=>SEG<="01110111”
WHEN“1011”=>SEG<="01111100"
WHEN“1100”=>SEG<="00111001”
WHEN=>SEG<="01011110”
WHEN“1110”=>SEG<="01111001”
WHEN“1111”=>SEG<="01110001”
WHENOTHERS=>SEG<="OOOOOOOO”;
ENDCASE;
ENDPROCESS;
LEDA〈二SEL(O);
LEDB<=SEL(1);
LEDC<=SEL(2);
ENDHAV;
6.8.2鍵盤接口電路的設(shè)計
PS/2鍵盤接口通常使用專用芯片實現(xiàn)。由于PS/2鍵盤或鼠標(biāo)串行輸出信號速度較高,普通單片機(jī)無法
接收,現(xiàn)利用VHDL在目標(biāo)器件FPGA/CPLD上實現(xiàn)一個鍵碼接收部分。PS/2接口的鍵盤每按下一個鍵,
該鍵的掃描碼即以十六進(jìn)制形式顯示在數(shù)碼管上。以下為接收PS/2鍵盤信號的VHDL邏輯描述。
【例6.20]用VI1DL設(shè)計一個接收PS/2鍵盤信號的接口電路。
—KB2PCL.VHD
LIBRARYIEEE;
USEIEEE.STD_LOG1C_1164.ALL;
ENTITYKB2PCLIS
PORT(SYSCLK:INSTD_LOGIC;RESET:INSTD_LOGIC;
KBCLK:INSTD_LOGIC;KBDATA:INSTD_LOGIC;
PDATA:OUTSTD_LOGIC_VECTOR(7DOWNTO0);
PARITY:OUTSTD_LOGIC;DTOE:BUFFERSTD_LOGIC);
ENDKB2PC1;
ARCHITECTUREONEOFKB2PC1IS
SIGNALCOSTATE:STD_LOGIC,VECTOR(1DOWNTO0);
SIGNALSPDATA:STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALSTART,SWT002,RECVEN:STDLOGIC;
SIGNALCNT8:INTEGERRANGE0TO15;
BEGIN
SLRL:PROCESS(RESET,KBCLK,KBDATA,STAFF,COSTATE)
BEGIN
IFRESET='1'THEN
START<='O';
ELSIFKBCLK,EVENTANDKBCLK='O'THEN
IFCOSTATE="00"ANDKBDATA='O'THEN
STAFF<=T';
ENDIF;
ENDIF;
ENDPROCESS;
STR2:PROCESS(RESET,KBCLK,KBDATA,STAFF,COSTATE)
BEGIN
IFRESET=THEN
SWT002<='O';
ELSIFKBCLK'EVENTANDKBCLK=THEN
IFCOSTATE="00"ANDSTART='1'ANDKBDATA='O'THEN
SWT002O’1’;
ENDIF;
ENDIF;
ENDPROCESS;
CHSTATE:PROCESS(RESET,SYSCLK,COSTATE,SWTOO2)
BEGIN
IFRESET=T'THEN
COSTATE<=“00”;
ELSIFSYSCLK,EVENTANDSYSCLK:THEN
IFSWT002='1'THEN
COSTATE<="01”;
ELSIFCNT8=9THEN
COSTATE<=“10”;
ENDIF;
ENDIF;
ENDPROCESS;
RECV:PROCESS(RESET,KBCLK,KBDATA,COSTATE)
BEGIN
IFRESET='THEN
CNT8<=0:SPDATA<="000000000”;
ELSIFKBCLK,EVENTANDKBCLK='O'THEN
IFCOSTATE="01”THEN
IFCNT8/=9THEN
SPDATA(7DOWNTO0)<=SPDATA(8D0WT01);
SPDATA(8)<=KBDATA:
CNT8<=CNT8+1:
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
RECVEND:PROCESS(RESET,KBCLK,RECVEN,COSTATE)
BEGIN
IFRESET二T'THEN
DTOE<='O';
ELSIFKBCLK,EVENTANDKBCLK='1'THEN
IFCNT8=9ANDCOSTATE="01”THEN
DTOE<=4";ENDIF;
ENDIF;
ENDPROCESS;
PARITY<=SPDATA(8);PDATA<=SPDATA(7DOWNTO0);
ENDONE;
6.9顯示電路的設(shè)計
常用的顯示器件有發(fā)光二極管,數(shù)碼管,液晶顯示器等,其中最常用的為數(shù)碼管。數(shù)碼管顯示數(shù)據(jù)的方式
有靜態(tài)顯示和動態(tài)顯示之分。所謂靜態(tài)顯示,就是將被顯示的數(shù)據(jù)的BCD碼,通過各自的4-7/8顯示譯碼
器譯碼后,分別接到顯示譯碼器的顯示驅(qū)動段a-g(p),而公共端COM則根據(jù)數(shù)碼管的類型(共陰/共陽)
分別接GND/VCC。動態(tài)顯示,就是將被顯示的數(shù)據(jù)的BCD碼,按照一定的變化頻率,在不同的時刻周期性
地分別送到一個數(shù)據(jù)總線上,再通過一個公共的4-7/8顯示譯碼器譯碼后,接到多個顯示譯碼器的公共顯
示驅(qū)動段a-g(p)上,同時,在不同的時刻周期性地選通對應(yīng)的數(shù)碼管的公共端COM。
6.9.1數(shù)碼管靜態(tài)顯示電路的設(shè)計
七段數(shù)碼顯示器由7根顯示碼管組成,對每一根碼管,用一位二進(jìn)制表示。若該數(shù)碼管的為共陰數(shù)碼管,
則該位為1時,表示此碼管發(fā)光,如為0,表示此碼管不發(fā)光,對7根碼管編號。共陽數(shù)碼管則正好相反。
下面用一個7位二進(jìn)制數(shù)表示一個七段顯示器的編碼,其VHDL程序段描述如下:
CASECNT4BIS
WHEN0=>DOUT<="0111111”;
WHEN1=>DOUT<="0000110”;
WHEN2=>DOUT<="1011011”;
WHEN3=>DOUT<="1001111”;
WHEN4=>DOUT<="1100110”;
WHEN5=>DOUT<="1101101”;
WHEN6=>DOUT<="1111101”;
WHEN7=>DOUT<="0000111”;
WHEN8=>DOUT<="1111111”;
WHEN9=>DOUT<="1101111”;
WHENOTHERS=>DOUT<="0000000”
ENDCASE;
下面給出一個4位二進(jìn)制加法計數(shù)器靜態(tài)顯示的VHDL程序。
【例6.21]用VIIDL設(shè)計一個4位二進(jìn)制加法計數(shù)器,并將計數(shù)結(jié)果用7段LED顯示數(shù)碼管進(jìn)行靜態(tài)顯示。
—CNTDISPLAY.VHD
LIBRARYIEEE;
USEIEEE.STDLOGIC1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNTDISPLAYIS
PORT(CLK:INSTD_LOGIC;
DOUT:OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDDECLED;
ARCHITECTUREBEHAVOFCNTDISPLAYIS
SIGNALCNT4B:STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
CNT4B<=CNT4B+1;
ENDIF;
ENDPROCESS;
PROCESS(CNT4B)
BEGIN
CASECNT4BIS
WHEN“0000”=>DOUT<=“0111111”
WHEN“0001”=>DOUT“0000110”
WHEN“0010”=>DOUT“1011011”
WHEN“0011”=>DOUT<=“1001111”
WHEN“0100”=>DOUT<=“1100110”
〈二
WHEN“0101”二>DOUT“1101101”
WHEN“0110”=>DOUT<=“1111101”
WHEN“0111”=>DOUT<=“0000111”
WHEN
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版購車貸款利率調(diào)整合同3篇
- 金融服務(wù)工程承諾書
- 環(huán)保設(shè)備采購招投標(biāo)合同范本
- 建筑工程腳手架租賃合同范本
- 律師協(xié)會財務(wù)風(fēng)險管理規(guī)范
- 資金運(yùn)用監(jiān)控規(guī)范
- 眼鏡生產(chǎn)廠房租賃合同
- 非營利組織安全責(zé)任區(qū)管理辦法
- 體育產(chǎn)業(yè)招投標(biāo)領(lǐng)導(dǎo)小組啟動
- 垃圾處理安全事故防范指南
- 中藥材及飲片性狀鑒別1總結(jié)課件
- 信息系統(tǒng)及信息安全運(yùn)維服務(wù)項目清單
- 最新大壩固結(jié)灌漿生產(chǎn)性試驗大綱
- DB32-T 2948-2016水利工程卷揚(yáng)式啟閉機(jī)檢修技術(shù)規(guī)程-(高清現(xiàn)行)
- 公司EHS(安全、環(huán)保、職業(yè)健康)檢查表
- 《模擬電子技術(shù)基礎(chǔ)》課程設(shè)計-心電圖儀設(shè)計與制作
- 公司治理(馬連福 第2版) 課后答案及案例分析 第2章
- 繪本brown bear教案及反思
- 《航空專業(yè)英語》課件飛機(jī)結(jié)構(gòu)修理專業(yè)英語
- 某污水處理廠及再生水回用工程施工組織設(shè)計
- 川中干法脫硫
評論
0/150
提交評論