版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
EDA項(xiàng)目教程
——基于VHDL與FPGA主編:于潤(rùn)偉項(xiàng)目7數(shù)字系統(tǒng)設(shè)計(jì)實(shí)訓(xùn)本章要點(diǎn)
數(shù)字系統(tǒng)層次化設(shè)計(jì)元件例化語(yǔ)句的應(yīng)用
數(shù)字系統(tǒng)的功能測(cè)試7.1籃球比賽24秒計(jì)時(shí)器7.1.1項(xiàng)目說(shuō)明1.任務(wù)書(shū)國(guó)際籃聯(lián)修改的藍(lán)球比賽規(guī)則中,有一個(gè)關(guān)于24秒進(jìn)攻的規(guī)則,即從獲取球權(quán)到投籃擊中籃框、命中、被侵犯(對(duì)方犯規(guī))、球出界,其有效時(shí)間合計(jì)不能超過(guò)24秒,否則被判違例,將失去球權(quán)。另外,對(duì)非投籃的防守犯規(guī)、腳踢球或者出界球等判罰之后,如果所剩時(shí)間超過(guò)14秒(包括14秒),開(kāi)球后繼續(xù)計(jì)時(shí);如果所剩時(shí)間少于14秒(不包括14秒),將從14秒開(kāi)始計(jì)時(shí)。(1)能夠設(shè)置24秒倒計(jì)時(shí)和14秒倒計(jì)時(shí),遞減時(shí)間隔為1秒;(2)計(jì)時(shí)器遞減到零時(shí),數(shù)碼管顯示“00”,同時(shí)發(fā)出聲音報(bào)警信號(hào);(3)設(shè)置外部操作開(kāi)關(guān),控制計(jì)時(shí)器的清零、啟動(dòng)計(jì)時(shí)、暫停和繼續(xù)計(jì)時(shí)。啟動(dòng)、暫停、繼續(xù)計(jì)時(shí)用1個(gè)按鈕開(kāi)關(guān)控制,按下為“啟動(dòng)”或“繼續(xù)”、抬起為“暫?!?。設(shè)計(jì)一個(gè)用2個(gè)數(shù)碼管顯示的籃球比賽24秒計(jì)時(shí)器,具體要求如下:
2.計(jì)劃書(shū)(1)閱讀、討論項(xiàng)目要求,明確項(xiàng)目?jī)?nèi)容;(2)研究項(xiàng)目設(shè)計(jì)方案,分析參考程序;(3)編輯、編譯、仿真參考程序,確定一個(gè)項(xiàng)目實(shí)現(xiàn)方案;(4)測(cè)試24秒計(jì)時(shí)器,評(píng)價(jià)性能和應(yīng)用效果。1.項(xiàng)目分析
籃球比賽24秒計(jì)時(shí)器的主要功能是倒計(jì)時(shí),工作人員按動(dòng)“清零”按鈕,顯示24秒,這時(shí)按動(dòng)“14秒設(shè)置”鍵則顯示14秒;按下“啟動(dòng)/暫停/繼續(xù)”按鈕,開(kāi)始倒計(jì)時(shí);計(jì)時(shí)過(guò)程中,抬起(再按1次)“啟動(dòng)/暫停/繼續(xù)”按鈕,計(jì)時(shí)暫停,保持顯示時(shí)間;再次按下“啟動(dòng)/暫停/繼續(xù)”按鈕,從停止的時(shí)間開(kāi)始繼續(xù)倒計(jì)時(shí);時(shí)間結(jié)束時(shí)顯示00,不再變化同時(shí)發(fā)出報(bào)警信號(hào)。整個(gè)系統(tǒng)可分為計(jì)時(shí)控制模塊和顯示控制模塊兩個(gè)部分。7.1.2設(shè)計(jì)方案
7.1.2設(shè)計(jì)方案1.項(xiàng)目分析籃球比賽24秒計(jì)時(shí)器的主要功能是倒計(jì)時(shí),工作人員按動(dòng)“清零”按鈕,顯示24秒,這時(shí)按動(dòng)“14秒設(shè)置”鍵則顯示14秒;按下“啟動(dòng)/暫停/繼續(xù)”按鈕,開(kāi)始倒計(jì)時(shí);計(jì)時(shí)過(guò)程中,抬起(再按1次即可)“啟動(dòng)/暫停/繼續(xù)”按鈕,計(jì)時(shí)暫停,顯示時(shí)間不變;再次按下“啟動(dòng)/暫停/繼續(xù)”按鈕,從停止的時(shí)間開(kāi)始繼續(xù)計(jì)時(shí);時(shí)間結(jié)束時(shí)顯示00,不再變化同時(shí)發(fā)出報(bào)警信號(hào)。整個(gè)系統(tǒng)可分為計(jì)時(shí)控制模塊和顯示控制模塊2個(gè)部分。24秒計(jì)時(shí)器系統(tǒng)框圖
計(jì)時(shí)模塊完成24秒或14秒倒計(jì)時(shí)功能。設(shè)系統(tǒng)時(shí)鐘為CLK(1Hz)、14秒預(yù)置端為PLD、啟動(dòng)/暫停/繼續(xù)控制端為ENB、清零端為CLR;報(bào)警信號(hào)輸出端為WARN、十位數(shù)字輸出端為DDOUT、個(gè)位數(shù)字輸出端為SSOUT,文件名為BSJSB。參考程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;2.計(jì)時(shí)模塊ENTITYBSJSBISPORT(CLR,PLD,ENB,CLK:INSTD_LOGIC;WARN:OUTSTD_LOGIC;--報(bào)警信號(hào)DDOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--十位SSOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0));--個(gè)位ENDENTITYBSJSB;ARCHITECTUREARTOFBSJSBISBEGINPROCESS(CLK,CLR,ENB)ISVARIABLETMPA:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETMPB:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETMPWARN:STD_LOGIC;BEGINIFCLR='1'THENTMPA:="0100";TMPB:="0010";TMPWARN:='0';ELSIFCLK'EVENTANDCLK='1'THENIFPLD='1'THENTMPB:="0001";TMPA:="0100";ELSIFENB='1'THENIFTMPA="0000"THENIFTMPB/="0000"THENTMPA:="1001";TMPB:=TMPB-1;ELSETMPWARN:='1';ENDIF;ELSETMPA:=TMPA-1;ENDIF;ENDIF;ENDIF;SSOUT<=TMPA;DDOUT<=TMPB;WARN<=TMPWARN;ENDPROCESS;ENDARCHITECTUREART;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYsdispISPORT(D:INSTD_LOGIC_VECTOR(3DOWNTO0);--4位數(shù)據(jù)輸入端S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));--七位數(shù)碼輸出端ENDsdisp;ARCHITECTUREAOFsdispISBEGINPROCESS(D)BEGIN3.顯示模塊CASEDISWHEN"0000"=>S<="1111110";--0WHEN"0001"=>S<="0110000";--1WHEN"0010"=>S<="1101101";--2WHEN"0011"=>S<="1111001";--3WHEN"0100"=>S<="0110011";--4WHEN"0101"=>S<="1011011";--5WHEN"0110"=>S<="1011111";--6WHEN"0111"=>S<="1110000";--7WHEN"1000"=>S<="1111111";--8WHEN"1001"=>S<="1111011";--9WHENOTHERS=>S<="0000000";--其他狀態(tài)不顯示,
數(shù)碼管全暗ENDCASE;ENDPROCESS;ENDA;1.頂層文件設(shè)計(jì)
這里采用元件例化語(yǔ)句連接各個(gè)模塊的文本設(shè)計(jì)方式。(1)新建項(xiàng)目。在項(xiàng)目建立向?qū)У奶砑游募?duì)話框中輸入BASKCOUNT.VHD(文件名),單擊【Add】按鈕,添加該文件;再單擊添加文件對(duì)話框的Filename右側(cè)的按鈕,選擇BSJSB.VHD文件所在的文件夾,選中BSJSB.VHD文件,單擊【Add】按鈕,添加該文件;再次單擊添加文件對(duì)話框的Filename右側(cè)的按鈕,選擇DISP.VHD文件所在的文件夾,選中DISP.VHD文件,單擊【Add】按鈕,添加DISP.VHD文件。7.1.3項(xiàng)目實(shí)現(xiàn)(2)建立文本文件,編輯頂層文件設(shè)計(jì)程序。在程序?qū)嶓w中定義整個(gè)系統(tǒng)的輸入和輸出,設(shè)系統(tǒng)時(shí)鐘為CLK(1Hz)、14秒預(yù)置端為PLD、啟動(dòng)/暫停/繼續(xù)控制端為ENB、清零端為CLR;報(bào)警信號(hào)輸出端為WARN、顯示輸出信號(hào)為S0和S1,接2個(gè)7段數(shù)碼管;結(jié)構(gòu)體中定義2臨時(shí)信號(hào),代表十位數(shù)字輸出端DDOUT和個(gè)位數(shù)字輸出端SSOUT;文件名為BASKCOUNT。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYBASKCOUNTISPORT(CLR,PLD,ENB,CLK:INSTD_LOGIC;WARN:OUTSTD_LOGIC;S0,S1:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDENTITYBASKCOUNT;ARCHITECTUREARTOFBASKCOUNTISCOMPONENTBSJSBISPORT(CLR,PLD,ENB,CLK:INSTD_LOGIC;WARN:OUTSTD_LOGIC;DDOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);SSOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOMPONENTBSJSB;COMPONENTDISPISPORT(D:INSTD_LOGIC_VECTOR(3DOWNTO0);S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDCOMPONENTDISP;SIGNALTEMPDD:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALTEMPSS:STD_LOGIC_VECTOR(3DOWNTO0);BEGINU0:BSJSBPORTMAP(CLR,PLD,ENB,CLK,WARN,TEMPDD,TEMPSS);U1:DISPPORTMAP(TEMPDD,S0);U2:DISPPORTMAP(TEMPSS,S1);ENDARCHITECTUREART;7.1.4功能擴(kuò)展與項(xiàng)目評(píng)價(jià)1.功能擴(kuò)展在完成項(xiàng)目的任務(wù)要求后,考慮以下內(nèi)容:(1)蜂鳴器的長(zhǎng)音改成斷續(xù)音。(2)不顯示十位數(shù)碼管無(wú)效的數(shù)碼“0”,例如09顯示9、08顯示為8。(3)倒計(jì)時(shí)的最后5秒,每減少1秒就發(fā)出1個(gè)提示信號(hào)(蜂鳴器短音)。(4)增加手動(dòng)設(shè)置時(shí)間(預(yù)置數(shù))功能。(5)將顯示模塊改成2位一體共陰極數(shù)碼管動(dòng)態(tài)顯示。2.項(xiàng)目評(píng)價(jià)
項(xiàng)目評(píng)價(jià)是在教師的主持下,通過(guò)項(xiàng)目負(fù)責(zé)人的講解演示,評(píng)估項(xiàng)目的完成情況,評(píng)價(jià)內(nèi)容如下:(1)功能評(píng)價(jià)?;@球比賽計(jì)時(shí)器能否完成比賽計(jì)時(shí)、計(jì)時(shí)誤差是多少、操作是否方便等方面。(2)演示過(guò)程評(píng)價(jià)。主要評(píng)價(jià)演示過(guò)程中操作是否熟練、回答問(wèn)題是否準(zhǔn)確等方面。(3)拓展功能完成情況評(píng)價(jià)。7.2數(shù)字頻率計(jì)7.2.1項(xiàng)目說(shuō)明1.任務(wù)書(shū)設(shè)計(jì)一個(gè)能測(cè)量方波信號(hào)頻率的簡(jiǎn)易數(shù)字頻率計(jì),測(cè)量結(jié)果用十進(jìn)制數(shù)顯示,測(cè)量的頻率范圍是1~9999Hz,用四位數(shù)碼管顯示測(cè)量頻率。2.計(jì)劃書(shū)(1)閱讀、討論項(xiàng)目要求,明確項(xiàng)目?jī)?nèi)容;(2)研究設(shè)計(jì)方案,分析方案中的參考程序;(3)完成數(shù)字頻率計(jì)的設(shè)計(jì);(4)測(cè)量數(shù)字信號(hào),計(jì)算頻率計(jì)的誤差。7.2.2設(shè)計(jì)方案1.項(xiàng)目分析方波信號(hào)的頻率就是在單位時(shí)間內(nèi)產(chǎn)生的脈沖個(gè)數(shù),表達(dá)式為f=N/T,其中f為被測(cè)信號(hào)的頻率;N為計(jì)數(shù)器所累計(jì)的脈沖數(shù);T為產(chǎn)生N個(gè)脈沖所需的時(shí)間。計(jì)數(shù)器在1秒時(shí)間內(nèi)所計(jì)的結(jié)果,就是被測(cè)信號(hào)的頻率。簡(jiǎn)易數(shù)字頻率計(jì)可以分為測(cè)頻控制模塊和譯碼顯示模塊2個(gè)部分。2.系統(tǒng)框圖該模塊將1Hz的系統(tǒng)工作時(shí)鐘脈沖2分頻,取前半個(gè)周期產(chǎn)生脈寬為1秒的控制時(shí)鐘脈沖,作為計(jì)數(shù)器的閘門(mén)信號(hào),當(dāng)控制時(shí)鐘為上升沿(由低變高)時(shí),開(kāi)始計(jì)數(shù);當(dāng)控制時(shí)鐘為下降沿(由高變低)時(shí),輸出計(jì)數(shù)值;最后還要在下次控制時(shí)鐘上升沿到來(lái)之前,產(chǎn)生清零信號(hào),將計(jì)數(shù)器清零,為下次計(jì)數(shù)作準(zhǔn)備。設(shè)系統(tǒng)時(shí)鐘脈沖為CLK(1Hz)、被測(cè)信號(hào)為T(mén)EST,輸出信號(hào)為DOUT(十六位),文件名為FREQ。2.測(cè)頻控制模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFREQISPORT(TEST:INSTD_LOGIC;--被測(cè)信號(hào)CLK:INSTD_LOGIC;--系統(tǒng)時(shí)鐘脈沖DOUT:OUTSTD_LOGIC_VECTOR(15DOWNTO0));--計(jì)數(shù)值ENDENTITYFREQ;ARCHITECTUREARTOFFREQISSIGNALCLR,EN:STD_LOGIC;--CLR清零信號(hào)、EN計(jì)數(shù)使能信號(hào)SIGNALDATA:STD_LOGIC_VECTOR(15DOWNTO0);--計(jì)數(shù)值寄存器,與DOUT對(duì)應(yīng)BEGINPROCESS(CLK,CLR,EN)IS--產(chǎn)生寬度為1秒的閘門(mén)信號(hào)進(jìn)程BEGINIFCLK'EVENTANDCLK='1'THEN--檢查CLK的上升沿EN<=NOTEN;ENDIF;ENDPROCESS;
CLR<=NOTCLKANDNOTEN;--CLK和EN同時(shí)為低電平時(shí),產(chǎn)生清零信號(hào)PROCESS(TEST,CLR)IS--計(jì)數(shù)進(jìn)程BEGINIFCLR='1'THENDATA<="0000000000000000";--清零ELSIFRISING_EDGE(TEST)THEN--RISING_EDGE檢查信號(hào)上升沿--下面的IF語(yǔ)句可以將十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)IFDATA(11DOWNTO0)="100110011001"THENDATA<=DATA+"011001100111";ELSIFDATA(7DOWNTO0)="10011001"THENDATA<=DATA+"01100111";ELSIFDATA(3DOWNTO0)="1001"THENDATA<=DATA+"0111";ELSEDATA<=DATA+'1';ENDIF;ENDIF;ENDPROCESS;PROCESS(DATA,EN)IS--控制時(shí)鐘下降沿輸出計(jì)數(shù)值進(jìn)程BEGINIFFALLING_EDGE(EN)THENDOUT<=DATA;--FALLING_EDGE檢查信號(hào)下降沿ENDIF;ENDPROCESS;ENDART;
譯碼顯示模塊采用共陰極7段數(shù)碼管靜態(tài)顯示方式實(shí)現(xiàn)??墒褂庙?xiàng)目四中數(shù)碼管靜態(tài)顯示的程序,也可以調(diào)用籃球比賽計(jì)時(shí)器中生成的模塊sdisp。2.譯碼顯示模塊7.2.3項(xiàng)目實(shí)現(xiàn)(1)新建項(xiàng)目。在項(xiàng)目建立向?qū)У奶砑游募?duì)話框中輸入SDF.VHD(文件名),單擊【Add】按鈕,添加該文件;再單擊添加文件對(duì)話框的Filename右側(cè)的按鈕,選擇FREQ.VHD文件所在的文件夾,選中FREQ.VHD文件,再次單擊【Add】按鈕,添加該文件;再次單擊添加文件對(duì)話框的Filename右側(cè)的按鈕,選擇DISP.VHD所在的文件夾,選中DISP.VHD文件,再次單擊【Add】按鈕,添加DISP.VHD文件。(2)建立文本文件,編輯頂層文件設(shè)計(jì)程序。在程序?qū)嶓w中,定義整個(gè)系統(tǒng)的輸入和輸出,設(shè)系統(tǒng)時(shí)鐘脈沖為CLK(1Hz)、被測(cè)信號(hào)為T(mén)EST,輸出的顯示信號(hào)為S0、S1、S2和S3,接4個(gè)7段數(shù)碼管;結(jié)構(gòu)體中描述模塊的連接關(guān)系,需要定義臨時(shí)信號(hào),代表模塊之間的連線。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSDFISPORT(TEST:INSTD_LOGIC;--被測(cè)信號(hào)CLK:INSTD_LOGIC;--系統(tǒng)時(shí)鐘脈沖S0,S1,S2,S3:OUTSTD_LOGIC_VECTOR(6DOWNTO0));--顯示信號(hào)ENDENTITYSDF;ARCHITECTUREARTOFSDFISCOMPONENTFREQIS--測(cè)頻控制模塊的例化聲明PORT(TEST:INSTD_LOGIC;CLK:INSTD_LOGIC;DOUT:OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDCOMPONENTFREQ;COMPONENTDISPIS--顯示模塊的例化聲明PORT(D:INSTD_LOGIC_VECTOR(3DOWNTO0);S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDCOMPONENTDISP;SIGNALTEMPDOUT:STD_LOGIC_VECTOR(15DOWNTO0);--定義臨時(shí)信號(hào)SIGNALTEMPD:STD_LOGIC_VECTOR(3DOWNTO0);--定義臨時(shí)信號(hào)BEGINU0:FREQPORTMAP(TEST,CLK,TEMPDOUT);--測(cè)頻控制模塊的端口映射U1:DISPPORTMAP(TEMPDOUT(3DOWNTO0),S0);--顯示模塊的端口映射(個(gè)位)U2:DISPPORTMAP(TEMPDOUT(7DOWNTO4),S1);--顯示模塊的端口映射(十位)U3:DISPPORTMAP(TEMPDOUT(11DOWNTO8),S2);--顯示模塊的端口映射(百位)U4:DISPPORTMAP(TEMPDOUT(15DOWNTO12),S3);--顯示模塊的端口映射(千位)ENDARCHITECTUREART;數(shù)字頻率計(jì)的仿真波形7.2.4功能擴(kuò)展與項(xiàng)目評(píng)價(jià)在完成項(xiàng)目的任務(wù)要求后,考慮以下內(nèi)容:(1)將輸出的靜態(tài)顯示改為4位一體共陰極數(shù)碼管動(dòng)態(tài)顯示。(2)通過(guò)改變閘門(mén)時(shí)間(2秒),提高測(cè)量精度。(3)將元件例化語(yǔ)句的位置映射改成名稱映射。2.項(xiàng)目評(píng)價(jià)項(xiàng)目評(píng)價(jià)是在教師的主持下,通過(guò)項(xiàng)目負(fù)責(zé)人的講解演示,評(píng)估項(xiàng)目的完成情況,評(píng)價(jià)內(nèi)容如下:(1)項(xiàng)目的功能描述情況。(2)團(tuán)隊(duì)合作和任務(wù)分配情況。(3)簡(jiǎn)易數(shù)字頻率計(jì)的設(shè)計(jì)完成情況。(4)簡(jiǎn)易數(shù)字頻率計(jì)的操作和信號(hào)測(cè)量誤差分析。7.3電子密碼鎖7.3.1項(xiàng)目說(shuō)明1.任務(wù)書(shū)設(shè)計(jì)一個(gè)具有4×3掃描鍵盤(pán)(不需要去抖動(dòng))、4個(gè)數(shù)碼管動(dòng)態(tài)顯示,能夠設(shè)置和輸入四位密碼的電子密碼鎖,具體要求如下:(1)每按下一個(gè)數(shù)字鍵,就輸入一個(gè)數(shù)碼,并在4個(gè)數(shù)碼管的最右方顯示出該數(shù)值,同時(shí)將先前輸入的數(shù)據(jù)依序左移一個(gè)數(shù)字位置;(2)有數(shù)碼清除鍵,按下該鍵可清除前面所有的輸入數(shù)碼,清除后數(shù)碼管顯示“0000”;(3)有密碼設(shè)置鍵,在鎖開(kāi)的狀態(tài)下,按下該鍵,會(huì)將當(dāng)前數(shù)碼管顯示的數(shù)字設(shè)置成新密碼;(4)有密碼鎖鎖定鍵,按下該鍵可將密碼鎖上鎖;(5)有密碼鎖開(kāi)鎖鍵,按下該鍵,會(huì)檢查輸入的密碼是否正確,密碼正確即開(kāi)鎖。(6)為保證密碼鎖主人能夠隨時(shí)開(kāi)鎖,設(shè)有萬(wàn)能密碼(3581),用于解除其他人設(shè)置的密碼。2.計(jì)劃書(shū)(1)討論、分析項(xiàng)目要求,明確項(xiàng)目?jī)?nèi)容;(2)檢索閱讀相關(guān)的參考資料,研究項(xiàng)目設(shè)計(jì)方案;(3)制定計(jì)劃并分組后,實(shí)現(xiàn)設(shè)計(jì)方案中的各個(gè)模塊;(4)完成項(xiàng)目并測(cè)試功能;(5)撰寫(xiě)項(xiàng)目開(kāi)發(fā)報(bào)告。(6)項(xiàng)目演示、講解設(shè)計(jì)方案,完成項(xiàng)目評(píng)價(jià)。7.3.2設(shè)計(jì)方案1.項(xiàng)目分析輸入模塊外接的一個(gè)4×3矩陣式鍵盤(pán),數(shù)字0~9作為密碼數(shù)字輸入按鍵,功能按鍵“*”作為密碼鎖鎖定鍵,功能按鍵“#”作為密碼鎖開(kāi)鎖鍵/數(shù)碼清除鍵,密碼正確,開(kāi)鎖后清除輸入的數(shù)碼;密碼不正確,不開(kāi)鎖直接清除輸入的數(shù)碼。輸入模塊需要產(chǎn)生鍵盤(pán)掃描信號(hào)和控制模塊工作時(shí)鐘信號(hào),并對(duì)輸入的按鍵信號(hào)進(jìn)行譯碼。設(shè)系統(tǒng)時(shí)鐘脈沖為CLK(1KHz)、按鍵輸入端為KEYIN;鍵盤(pán)掃描信號(hào)輸出端為SCAN、數(shù)字按鍵輸出端為DATAOUT、功能按鍵輸出端為FUNOUT、數(shù)字鍵輸出標(biāo)志為DF、功能鍵輸出標(biāo)志為FF、控制電路工作時(shí)鐘輸出端為CLKOUT;文件名為INPUTBLOCK。2.輸入模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYinputblockISPORT(CLK:INSTD_LOGIC;--系統(tǒng)時(shí)鐘脈沖KEYIN:INSTD_LOGIC_VECTOR(2DOWNTO0);--按鍵輸入SCAN:OUTSTD_LOGIC_VECTOR(3DOWNTO0);DATAOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--數(shù)字輸出FUNOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--功能輸出DF:OUTSTD_LOGIC;--數(shù)字輸出標(biāo)志FF:OUTSTD_LOGIC;--功能輸出標(biāo)志CLKOUT:OUTSTD_LOGIC);--控制電路工作時(shí)鐘信號(hào)ENDENTITYinputblock;ARCHITECTUREARTOFinputblockISSIGNALTEMPCLK:STD_LOGIC;--控制電路工作時(shí)鐘信
號(hào)寄存器SIGNALKEYSCAN:STD_LOGIC_VECTOR(1DOWNTO0);--掃描控制信號(hào)寄存器SIGNALN,F:STD_LOGIC_VECTOR(3DOWNTO0);--數(shù)字、功能按鍵譯碼值的寄存器SIGNALTEMPDF,TEMPFF:STD_LOGIC;--數(shù)字、功能按鍵標(biāo)志值的寄存器BEGINCOUNTER:BLOCKIS--掃描信號(hào)發(fā)生塊SIGNALQ:STD_LOGIC_VECTOR(5DOWNTO0);SIGNALSEL:STD_LOGIC_VECTOR(3DOWNTO0);--掃描控制信號(hào)寄存器BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;KEYSCAN<=Q(5DOWNTO4);--32分頻,
產(chǎn)生掃描控制信號(hào)00→01→10→11TEMPCLK<=Q(0);--2分頻ENDPROCESS;SEL<="1110"WHENKEYSCAN=0ELSE--條件信號(hào)
賦值語(yǔ)句"1101"WHENKEYSCAN=1ELSE"1011"WHENKEYSCAN=2ELSE"0111"WHENKEYSCAN=3ELSE"1111";SCAN<=SEL;--掃描信號(hào)1110→1101→1011→0111ENDBLOCKCOUNTER;KEYDECODER:BLOCKIS--掃描鍵盤(pán)譯碼塊SIGNALZ:STD_LOGIC_VECTOR(4DOWNTO0);--按鍵信號(hào)寄存器BEGINPROCESS(TEMPCLK)BEGINZ<=KEYSCAN&KEYIN;--連接KEYSCAN和KEYINIFTEMPCLK'EVENTANDTEMPCLK='1'THENCASEZISWHEN"11101"=>N<="0000";--0WHEN"00011"=>N<="0001";--1WHEN"00101"=>N<="0010";--2WHEN"00110"=>N<="0011";--3WHEN"01011"=>N<="0100";--4WHEN"01101"=>N<="0101";--5WHEN"01110"=>N<="0110";--6WHEN"10011"=>N<="0111";--7WHEN"10101"=>N<="1000";--8WHEN"10110"=>N<="1001";--9WHENOTHERS=>N<="1111";ENDCASE;ENDIF;IFTEMPCLK'EVENTANDTEMPCLK='1'THENCASEZISWHEN"11011"=>F<="0100";--密碼鎖鎖定鍵"*"WHEN"11110"=>F<="0001";--密碼鎖開(kāi)鎖鍵"#"WHENOTHERS=>F<="1100";ENDCASE;ENDIF;ENDPROCESS;TEMPDF<=NOT(N(3)ANDN(2)ANDN(1)ANDN(0));--N不是1111TEMPFF<=NOT(F(3)ANDF(2));--F(3)和F(2)不是11ENDBLOCKKEYDECODER;DATAOUT<=N;FUNOUT<=F;DF<=TEMPDF;FF<=TEMPFF;CLKOUT<=TEMPCLK;ENDARCHITECTUREART;
控制模塊包括按鍵數(shù)據(jù)的緩沖存儲(chǔ)、密碼的清除修改、密碼核對(duì)、鎖控制(鎖定/開(kāi)鎖)、萬(wàn)能密碼(3581)設(shè)置等部分,能夠?qū)崿F(xiàn)以下功能:(1)如果按下數(shù)字鍵,第一個(gè)數(shù)碼會(huì)從數(shù)碼管的最右端開(kāi)始顯示,此后每按一個(gè)數(shù)碼時(shí),數(shù)碼管上的數(shù)碼左移1位,以便將新的數(shù)碼顯示出來(lái)。(2)要更改輸入的數(shù)碼,按功能鍵“#”清除所有輸入的數(shù)碼,再重新輸入4位數(shù)碼。3.控制模塊(3)當(dāng)輸入的數(shù)碼超過(guò)4個(gè)時(shí),電路不予理會(huì),也不再顯示第4個(gè)以后的數(shù)碼。(4)在鎖打開(kāi)的狀態(tài)下,輸入一個(gè)4位的數(shù)碼,按下密碼鎖鎖定鍵“*”,可將密碼鎖鎖定,并將輸入的4位數(shù)碼作為密碼自動(dòng)存儲(chǔ),同時(shí)清除輸入的密碼。(5)在鎖鎖定的狀態(tài)下,輸入一個(gè)4位數(shù)碼,按下密碼鎖開(kāi)鎖鍵“#”,檢查輸入的密碼是否正確,若密碼正確則開(kāi)鎖,并清除顯示的密碼;輸入的密碼不正確,不開(kāi)鎖直接清除輸入的密碼。
設(shè)工作時(shí)鐘輸入端為CLKIN、數(shù)字按鍵輸入端為DATAIN、功能按鍵輸入端為FUNIN、數(shù)字鍵輸入標(biāo)志為DFIN、功能鍵輸入標(biāo)志為FFIN;鎖控制信號(hào)ENLOCK(1鎖定、0開(kāi)鎖)、密碼信號(hào)輸出端為KEYBCD;文件名為ctrlblock。參考程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYctrlblockISPORT(DATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0);FUNIN:INSTD_LOGIC_VECTOR(3DOWNTO0);DFIN:INSTD_LOGIC;FFIN:INSTD_LOGIC;CLKIN:INSTD_LOGIC;ENLOCK:OUTSTD_LOGIC;KEYBCD:OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDENTITYctrlblock;ARCHITECTUREARTOFctrlblockISSIGNALACC:STD_LOGIC_VECTOR(15DOWNTO0);--ACC用于暫存鍵盤(pán)輸入的信息SIGNALNC:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALRST,TMLOCK:STD_LOGIC;SIGNALR1,R0:STD_LOGIC;BEGINCOUNT:BLOCKIS--清零信號(hào)的產(chǎn)生塊BEGINPROCESS(CLKIN)BEGINIFCLKIN'EVENTANDCLKIN='1'THENR1<=R0;R0<=FFIN;ENDIF;RST<=R1ANDNOTR0;--在按下的功能鍵松開(kāi)后(從1變成0)產(chǎn)生清零信號(hào)ENDPROCESS;ENDBLOCKCOUNT;KEYINPUT:BLOCKIS--按鍵輸入數(shù)據(jù)的存儲(chǔ)、清零塊BEGINPROCESS(DFIN,RST)ISBEGINIFRST='1'THENACC<="0000000000000000";--按鍵輸入數(shù)據(jù)清零NC<="000";ELSIFDFIN'EVENTANDDFIN='1'THENIFNC<4THENACC<=ACC(11DOWNTO0)&DATAIN;--按鍵輸
入數(shù)據(jù)左移NC<=NC+1;ENDIF;ENDIF;ENDPROCESS;ENDBLOCKKEYINPUT;LOCKCTRL:BLOCKIS--鎖定/開(kāi)鎖控制塊BEGINPROCESS(CLKIN,FUNIN)ISVARIABLEREG:STD_LOGIC_VECTOR(15DOWNTO0);--REG用于存儲(chǔ)輸入的密碼 BEGINIF(CLKIN'EVENTANDCLKIN='1')THENIFNC=4THENIFFUNIN="0100"THEN--鎖定控制信號(hào)(0100)有效REG:=ACC;--密碼存儲(chǔ)TMLOCK<='1';--鎖定ELSIFFUNIN="0001"THEN--開(kāi)鎖控制信號(hào)(0001)有效IFREG=ACCTHEN--密碼核對(duì)TMLOCK<='0';--開(kāi)鎖ENDIF;ELSIFACC="0011010110000001"THEN--設(shè)置“3581”
為萬(wàn)能密碼TMLOCK<='0';--開(kāi)鎖ENDIF;ENDIF;ENDIF;ENDPROCESS;ENDBLOCKLOCKCTRL;ENLOCK<=TMLOCK;--輸出鎖定信號(hào),1鎖定、0開(kāi)鎖KEYBCD<=ACC;--輸出密碼信息ENDARCHITECTUREART;采用4位一體數(shù)碼管動(dòng)態(tài)顯示方式。設(shè)CLK為系統(tǒng)時(shí)鐘脈沖(1KHz以上,頻率太低,顯示的數(shù)碼會(huì)閃動(dòng))、A、B、C、D為顯示數(shù)據(jù)、COM為數(shù)碼管的選通信號(hào)、SEG為數(shù)碼管的驅(qū)動(dòng)信號(hào),實(shí)體名為ddisp。參考程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;4.顯示模塊
ENTITYddispISPORT(CLK:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(3DOWNTO0);B:INSTD_LOGIC_VECTOR(3DOWNTO0);C:INSTD_LOGIC_VECTOR(3DOWNTO0);D:INSTD_LOGIC_VECTOR(3DOWNTO0);--A、B、C、D為顯示數(shù)據(jù)COM:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--數(shù)碼管的選通信號(hào)SEG:OUTSTD_LOGIC_VECTOR(6DOWNTO0));--數(shù)碼管的顯示驅(qū)動(dòng)信號(hào)ENDENTITYddisp;ARCHITECTUREARTOFddispISSIGNALCNT:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALBCD:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THEN--周期性變化的
信號(hào)CNTIFCNT="11"THENCNT<="00";ELSECNT<=CNT+'1';ENDIF;ENDIF;ENDPROCESS;PROCESS(CNT)BEGINCASECNTISWHEN"00"=>BCD<=A;COM<="1110";--COM選通信號(hào)低電平有效WHEN"01"=>BCD<=B;COM<="1101";WHEN"10"=>BCD<=C;COM<="1011";WHEN"11"=>BCD<=D;COM<="0111";WHENOTHERS=>BCD<="0000";COM<="1111";ENDCASE;CASEBCDIS--譯碼器WHEN"0000"=>SEG<="1111110";--0WHEN"0001"=>SEG<="0110000";--1WHEN"0010"=>SEG<="1101101";--2WHEN"0011"=>SEG<="1111001";--3WHEN"0100"=>SEG<="0110011";--4WHEN"0101"=>SEG<="1011011";--5WHEN"0110"=>SEG<="1011111";--6WHEN"0111"=>SEG<="1110000";--7WHEN"1000"=>SEG<="1111111";--8WHEN"1001"=>SEG<="1111011";--9WHENOTHERS=>SEG<="0000000";ENDCASE;ENDPROCESS;ENDART;7.3.3項(xiàng)目實(shí)現(xiàn)這里采用文本設(shè)計(jì)方式,文件名為KEYLOCK。(1)新建項(xiàng)目。在項(xiàng)目建立向?qū)У奶砑游募?duì)話框中輸入KEYLOCK.VHD(文件名),單擊【Add】按鈕,添加該文件,然后依次添加輸入模塊INPUTBLOCK.VHD和控制模塊CTRLBLOCK.VHD;再單擊添加文件對(duì)話框的Filename右側(cè)的按鈕,添加第5章的動(dòng)態(tài)顯示程序DDISP.VHD文件。(2)建立文本文件,編輯頂層文件。實(shí)體中定義整個(gè)系統(tǒng)的輸入和輸出,設(shè)系統(tǒng)時(shí)鐘脈沖為CLK(1KHz)、按鍵輸入信號(hào)為KEYIN;鍵盤(pán)行掃描信號(hào)為SCAN、鎖控制信號(hào)ENLOCK、數(shù)碼管選通信號(hào)COM、7段數(shù)碼管顯示驅(qū)動(dòng)端SEG;再定義幾個(gè)臨時(shí)信號(hào),代表模塊之間的連線。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYKEYLOCKISPORT(CLK:INSTD_LOGIC;--系統(tǒng)時(shí)鐘脈沖KEYIN:INSTD_LOGIC_VECTOR(2DOWNTO0);--按鍵輸入SCAN:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--掃描信號(hào)ENLOCK:OUTSTD_LOGIC;COM:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--數(shù)碼管的選通信號(hào)SEG:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDENTITYKEYLOCK;ARCHITECTUREARTOFKEYLOCKISCOMPONENTINPUTBLOCKISPORT(CLK:INSTD_LOGIC;--系統(tǒng)時(shí)鐘脈沖KEYIN:INSTD_LOGIC_VECTOR(2DOWNTO0);--按鍵輸入SCAN:OUTSTD_LOGIC_VECTOR(3DOWNTO0);DATAOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--數(shù)字輸出FUNOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--功能輸出DF:OUTSTD_LOGIC;--數(shù)字輸出標(biāo)志FF:OUTSTD_LOGIC;--功能輸出標(biāo)志CLKOUT:OUTSTD_LOGIC);--控制電路工作時(shí)鐘信號(hào)ENDCOMPONENTINPUTBLOCK;COMPONENTCTRLBLOCKISPORT(DATAIN:INSTD_LOGIC_VECTOR(3DOWNTO0);FUNIN:INSTD_LOGIC_VECTOR(3DOWNTO0);DFIN:INSTD_LOGIC;FFIN:INSTD_LOGIC;CLKIN:INSTD_LOGIC;ENLOCK:OUTSTD_LOGIC;KEYBCD:OUTSTD_LOGIC_VECTOR(15DOWNTO0));ENDCOMPONENTCTRLBLOCK;COMPONENTDDISPISPORT(CLK:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(3DOWNTO0);B:INSTD_LOGIC_VECTOR(3DOWNTO0);C:INSTD_LOGIC_VECTOR(3DOWNTO0);D:INSTD_LOGIC_VECTOR(3DOWNTO0);--A、B、C、D為顯示數(shù)據(jù)COM:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--數(shù)碼管的選通信號(hào)SEG:OUTSTD_LOGIC_VECTOR(6DOWNTO0));--數(shù)碼管的顯示驅(qū)動(dòng)信號(hào)ENDCOMPONENTDDISP;SIGNALTMDAT:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALTMFUN:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALTMD:STD_LOGIC;SIGNALTMF:STD_LOGIC;SIGNALTMCLK:STD_LOGIC;SIGNALTMKEY:STD_LOGIC_VECTOR(15DOWNTO0);BEGINU0:INPUTBLOCKPORTMAP(CLK,KEYIN,SCAN,TMDAT,TMFUN,TMD,TMF,TMCLK);U1:CTRLBLOCKPORTMAP(TMDAT,TMFUN,TMD,TMF,TMCLK,ENLOCK,TMKEY);U2:DDISPPORTMAP(TMCLK,TMKEY(3DOWNTO0),TMKEY(7DOWNTO4),TMKEY(11DOWNTO8),TMKEY(15DOWNTO12),COM,SEG);ENDARCHITECTUREART;系統(tǒng)通過(guò)仿真后,根據(jù)EDA實(shí)驗(yàn)開(kāi)發(fā)平臺(tái)的實(shí)際情況,選擇可編程邏輯器件,鎖定管腳進(jìn)行編程下載。驗(yàn)證電子密碼鎖功能時(shí),先輸入數(shù)碼,觀察顯示數(shù)碼管,這時(shí)按動(dòng)“#”鍵,能夠清除輸入的數(shù)碼;再輸入數(shù)碼,數(shù)碼能夠左移顯示,并且只顯示前4個(gè)數(shù)碼,記錄這4個(gè)作為密碼的數(shù)碼,按動(dòng)“*”鍵,鎖控制信號(hào)應(yīng)為高電平,表示密碼鎖鎖定;輸入記錄的密碼或輸入萬(wàn)能密碼(3581),按動(dòng)“#”鍵,鎖控制信號(hào)應(yīng)為低電平,表示密碼鎖開(kāi)鎖,同時(shí)清除顯示的密碼。2.系統(tǒng)的硬件驗(yàn)證7.3.4功能擴(kuò)展與項(xiàng)目評(píng)價(jià)1.功能擴(kuò)展在完成項(xiàng)目的任務(wù)要求后,考慮以下內(nèi)容:(1)增加密碼位數(shù)到五位。(2)將掃描鍵盤(pán)改為編碼鍵盤(pán)。(3)動(dòng)態(tài)顯示改為靜態(tài)顯示。(4)元件例化語(yǔ)句中的位置映射改為名稱映射。(5)項(xiàng)目實(shí)現(xiàn)部分,將文本編輯方式改成原理圖編輯方式。2.項(xiàng)目評(píng)價(jià)
評(píng)價(jià)重點(diǎn)是項(xiàng)目的分析能力和程序設(shè)計(jì)調(diào)試能力,包括以下幾個(gè)方面:(1)方案的研究能力。能否找到系統(tǒng)設(shè)計(jì)的重點(diǎn)和難點(diǎn),能否實(shí)現(xiàn)已有的設(shè)計(jì)方案,并指出其設(shè)計(jì)特點(diǎn)。(2)功能評(píng)價(jià)。主要評(píng)價(jià)密碼鎖使用是否方便、題目要求的功能能否實(shí)現(xiàn)、密碼鎖工作是否穩(wěn)定可靠等方面。(3)答辯過(guò)程評(píng)價(jià)。主要評(píng)價(jià)對(duì)設(shè)計(jì)方案的理解程度如何?思路是否清晰?回答問(wèn)題是否準(zhǔn)確?語(yǔ)言是否流暢等。7.4智力競(jìng)賽搶答器7.4.1項(xiàng)目說(shuō)明1.任務(wù)書(shū)設(shè)計(jì)一個(gè)可容納3組參賽者的智力競(jìng)賽器,具體要求如下:(1)每組設(shè)置一個(gè)按鈕供搶答使用。搶答器具有第一信號(hào)鑒別功能,使除第一搶答者外的按鈕不起作用;第一信號(hào)鑒別電路得到信號(hào)后,用指示燈顯示搶答組別;(2)設(shè)置一個(gè)主持人復(fù)位按鈕,主持人按動(dòng)復(fù)位按鈕后,顯示搶答組別的3個(gè)指示燈熄滅;主持人宣讀題目,如果有選手提前搶答(對(duì)應(yīng)的組別指示燈亮),視為犯規(guī);設(shè)置一個(gè)計(jì)時(shí)電路,由主持人預(yù)先設(shè)置答題時(shí)間,答題超時(shí)視為犯規(guī);(3)每組設(shè)置一個(gè)計(jì)分電路,由主持人記分,答對(duì)一次加1分,答錯(cuò)和犯規(guī)不減分,但失去下一題的搶答機(jī)會(huì);滿分為9分,積滿9分的選手本輪勝出,清零后開(kāi)始下一輪搶答。2.計(jì)劃書(shū)(1)討論、分析項(xiàng)目要求,明確項(xiàng)目?jī)?nèi)容;(2)檢索閱讀相關(guān)的參考資料,研究項(xiàng)目設(shè)計(jì)方案;(3)制定計(jì)劃并分組后,實(shí)現(xiàn)設(shè)計(jì)方案中的各個(gè)模塊;(4)完成項(xiàng)目并測(cè)試功能;(5)撰寫(xiě)項(xiàng)目開(kāi)發(fā)報(bào)告。(6)項(xiàng)目演示、講解設(shè)計(jì)方案,完成項(xiàng)目評(píng)價(jià)。7.4.2設(shè)計(jì)方案1.項(xiàng)目分析3組搶答理論上應(yīng)該有8種可能情況,但由于芯片的速度非???,兩組以上同時(shí)搶答成功的可能性極小,因此可設(shè)計(jì)成只有3種情況,簡(jiǎn)化電路的復(fù)雜性。搶答按鈕帶自鎖功能,按下即鎖定,再次按下才能抬起。設(shè)復(fù)位端為RESET、搶答按鈕分別為A、B、C;輸出到組別顯示的信號(hào)為SA、SB、SC;輸出到計(jì)分模塊的搶答結(jié)果為STATES;文件名為XHJB。2.第一信號(hào)鑒別模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYXHJBISPORT(RESET:INSTD_LOGIC;A,B,C:INSTD_LOGIC;SA,SB,SC:OUTSTD_LOGIC;STATES:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENTITYXHJB;ARCHITECTUREARTOFXHJBISCONSTANTW1:STD_LOGIC_VECTOR:="001";CONSTANTW2:STD_LOGIC_VECTOR:="010";CONSTANTW3:STD_LOGIC_VECTOR:="100";SIGNALW:STD_LOGIC_VECTOR(2DOWNTO0);BEGINPROCESS(RESET,A,B,C)ISBEGINIFRESET='1'THENW<="000";SA<='0';SB<='0';SC<='0';ELSIF(A='1'ANDB='0'ANDC='0')THENSA<='1';SB<='0';SC<='0';W<=W1;ELSIF(A='0'ANDB='1'ANDC='0')THENSA<='0';SB<='1';SC<='0';W<=W2;ELSIF(A='0'ANDB='0'ANDC='1')THENSA<='0';SB<='0';SC<='1';W<=W3;ENDIF;STATES<=W;ENDPROCESS;ENDARCHITECTUREART;采用十進(jìn)制加法計(jì)數(shù)器,主持人根據(jù)選手答題情況,按動(dòng)加分按鈕,每次可給答題組加1分;按動(dòng)清零按鈕,所有答題組的分?jǐn)?shù)清零,開(kāi)始下輪搶答。設(shè)清零端為CLR、加分按鈕為ADD、選擇端為CHOSE;輸出到計(jì)分顯示模塊的信號(hào)為AA、BB、CC;文件名為JFBLOCK。3.計(jì)分模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJFBLOCKISPORT(CLR,ADD:INSTD_LOGIC;CHOSE:INSTD_LOGIC_VECTOR(2DOWNTO0);AA,BB,CC:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYJFBLOCK;ARCHITECTUREARTOFJFBLOCKISBEGINPROCESS(CLR,ADD,CHOSE)ISVARIABLETEMPAA:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETEMPBB:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETEMPCC:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIF(ADD'EVENTANDADD='1')THENIFCLR='1'THENTEMPAA:="0000";TEMPBB:="0000";TEMPCC:="0000";ELSIFCHOSE="001"THENTEMPAA:=TEMPAA+'1';ELSIFCHOSE="010"THENTEMPBB:=TEMPBB+'1';ELSIFCHOSE="100"THENTEMPCC:=TEMPCC+'1';ENDIF;ENDIF;AA<=TEMPAA;BB<=TEMPBB;CC<=TEMPCC;ENDPROCESS;ENDARCHITECTUREART;主持人復(fù)位后,按下預(yù)置按鈕,可設(shè)置答題時(shí)間為19秒或39秒,若沒(méi)有設(shè)置答題時(shí)間,則限定在59秒以內(nèi);抬起預(yù)置按鈕,按下計(jì)時(shí)使能按鈕,開(kāi)始倒計(jì)時(shí),時(shí)間結(jié)束時(shí)顯示00,直到下次按動(dòng)復(fù)位鍵。設(shè)系統(tǒng)工作時(shí)鐘為CLK(1Hz)、復(fù)位端為RESET、計(jì)時(shí)使能端為EN、預(yù)置端為L(zhǎng)DN、預(yù)置按鈕為T(mén)A(19秒)和TB(39秒);輸出的時(shí)間顯示信號(hào)為QA和QB;文件名為JSBLOCK。4.計(jì)時(shí)模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJSBLOCKISPORT(CLR,LDN,EN,CLK:INSTD_LOGIC;TA,TB:INSTD_LOGIC;QA:OUTSTD_LOGIC_VECTOR(3DOWNTO0);QB:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDENTITYJSBLOCK;ARCHITECTUREARTOFJSBLOCKISBEGINPROCESS(CLR,CLK)ISVARIABLETMPA:STD_LOGIC_VECTOR(3DOWNTO0);VARIABLETMPB:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFCLR='1'THENTMPA:="1001";TMPB:="0101";ELSIFCLK'EVENTANDCLK='1'THENIFLDN='1'THENIFTA='1'THENTMPB:="0001";ENDIF;IFTB='1'THENTMPB:="0011";ENDIF;ELSIFEN='1'THENIFTMPA="0000"THENIFTMPB/="0000"THENTMPA:="1001";TMPB:=TMPB-1;ENDIF;ELSETMPA:=TMPA-1;ENDIF;ENDIF;ENDIF;QA<=TMPA;QB<=TMPB;ENDPROCESS;ENDARCHITECTUREART;IFLDN='1'THENIFTA='1'THENTMPB:="0001";ENDIF;IFTB='1'THENTMPB:="0011";ENDIF;ELSIFEN='1'THENIFTMPA="0000"THENIFTMPB/="0000"THENTMPA:="1001";TMPB:=TMPB-1;ENDIF;ELSETMPA:=TMPA-1;ENDIF;ENDIF;ENDIF;QA<=TMPA;QB<=TMPB;ENDPROCESS;ENDARCHITECTUREART;
由時(shí)間顯示、組別顯示和計(jì)分顯示模塊組成,時(shí)間顯示和計(jì)分顯示使用6位一體共陰極數(shù)碼管動(dòng)態(tài)顯示,組別顯示使用發(fā)光二極管。6位一體共陰極數(shù)碼管動(dòng)態(tài)顯示參考程序如下。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;5.顯示模塊ENTITYddispISPORT(CLK:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(3DOWNTO0);B:INSTD_LOGIC_VECTOR(3DOWNTO0);C:INSTD_LOGIC_VECTOR(3DOWNTO0);D:INSTD_LOGIC_VECTOR(3DOWNTO0);E:INSTD_LOGIC_VECTOR(3DOWNTO0);--A、B、C、D、E為顯示數(shù)據(jù)COM:OUTSTD_LOGIC_VECTOR(4DOWNTO0);--數(shù)碼管的選通信號(hào)SEG:OUTSTD_LOGIC_VECTOR(6DOWNTO0));--數(shù)碼管的顯示驅(qū)動(dòng)信號(hào)ENDENTITYddisp;ARCHITECTUREARTOFddispISSIGNALCNT:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALBCD:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THEN--周期性變化的信號(hào)CNTIFCNT="100"THENCNT<="000";ELSECNT<=CNT+'1';ENDIF;ENDIF;ENDPROCESS;PROCESS(CNT)BEGINCASECNTISWHEN"000"=>BCD<=A;COM<="11110";--COM選通信號(hào)低電平有效WHEN"001"=>BCD<=B;COM<="11101";WHEN"010"=>BCD<=C;COM<="11011";WHEN"011"=>BCD<=D;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (規(guī)劃可研)卷材配套膠項(xiàng)目可行性研究報(bào)告
- 大班植樹(shù)節(jié)生成課程設(shè)計(jì)
- 新建木柄排梳項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 新建折標(biāo)磚項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告
- 新建木塞項(xiàng)目可行性研究報(bào)告
- 高氯酸生產(chǎn)加工項(xiàng)目可行性研究報(bào)告
- 2024-2030年枸櫞酸鉍鉀公司技術(shù)改造及擴(kuò)產(chǎn)項(xiàng)目可行性研究報(bào)告
- 2024-2030年暈車(chē)藥搬遷改造項(xiàng)目可行性研究報(bào)告
- 2024-2030年新版中國(guó)橡膠塑膠按鍵項(xiàng)目可行性研究報(bào)告
- 2024-2030年撰寫(xiě):中國(guó)光盤(pán)軟件行業(yè)發(fā)展趨勢(shì)及競(jìng)爭(zhēng)調(diào)研分析報(bào)告
- (施工單位)投標(biāo)人承擔(dān)項(xiàng)目?jī)?yōu)勢(shì)
- 白酒行業(yè)生產(chǎn)數(shù)字化的方案課件
- 北京豐臺(tái)2023-2024學(xué)年四年級(jí)數(shù)學(xué)第一學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含答案
- 預(yù)算與預(yù)算法課件
- 電梯使用單位電梯安全日管控、周排查、月調(diào)度制度和電梯安全總監(jiān)職責(zé)及電梯安全員守則
- 法蘭球閥壓力試驗(yàn)作業(yè)指導(dǎo)書(shū)
- 2023年藥學(xué)考試-執(zhí)業(yè)藥師(西藥)考試歷年真題集錦加答案
- 幼兒園優(yōu)質(zhì)課件-中班社會(huì)《電話禮儀》
- 2023年盛京銀行校園招聘人員筆試歷年難、易錯(cuò)考點(diǎn)試題含答案解析-1
- 小學(xué)五年級(jí)語(yǔ)文修改病句方法
- DB5105-T 4001-2023 白酒貯藏容器 陶壇
評(píng)論
0/150
提交評(píng)論