【文章內(nèi)容簡(jiǎn)介】
下后計(jì)數(shù)器停止計(jì)數(shù)。故計(jì)數(shù)模塊的功能符合設(shè)計(jì)要求。(二)、記憶模塊的波形仿真機(jī)分析 記憶模塊子程序REG3CNTDECODER38的仿真波形如下圖所示:REG32的仿真波形圖DECODER38的仿真波形圖CNT8的仿真波形圖波形分析:①、從REG32的波形來(lái)看,當(dāng)EN=1時(shí),將輸出數(shù)據(jù)保存下來(lái),當(dāng)EN=0時(shí)寄存器保持原來(lái)的數(shù)據(jù)部變。故該寄存器的功能符合設(shè)計(jì)要求。②、從DECODER38的仿真波形來(lái)看,當(dāng)?shù)刂份斎霝椴煌刂窌r(shí),輸出的8為數(shù)據(jù)只有一位為1。故該譯碼器符合設(shè)計(jì)要求。③、從CNT8的仿真波形來(lái)看,當(dāng)CLR=1時(shí),計(jì)數(shù)器清零,當(dāng)CLR=0時(shí),計(jì)數(shù)器正常工作。故該計(jì)數(shù)器符合設(shè)計(jì)要求。記憶模塊的仿真波形如下:記憶模塊的仿真波形圖波形分析:當(dāng)CLR為1時(shí)記憶模塊的輸出為0,當(dāng)CLR不為0時(shí),按下JISHU鍵,則依次記錄各道輸入數(shù)據(jù)。故該記憶模塊符合設(shè)計(jì)要求。(三)、選擇輸出模塊的波形仿真及分析選擇輸出模塊子程序SELECCT8_1的仿真波形如下圖:SELECT8_1的仿真波形圖波形分析:當(dāng)?shù)刂份斎攵薃R為不同的地址時(shí),Y端分別輸出D0至D7的數(shù)據(jù),實(shí)現(xiàn)了選擇輸出的功能。注:選擇輸出模塊子程序CNT8的程序與記憶模塊的CNT8的程序一樣,在此不贅敘。選擇輸出模塊的仿真波形如下圖:選擇輸出模塊的仿真波形圖波形分析:從選擇輸出模塊的波形來(lái)看,當(dāng)CLR為1時(shí),選擇輸出模塊輸出為0,當(dāng)CLR不為0時(shí),當(dāng)依次按下SELECT 1鍵的時(shí)候,依次選擇輸出8道輸入數(shù)據(jù)。(四)、譯碼模塊的波形仿真1,譯碼模塊子程序HC4511的仿真波形如下:CH511的仿真波形圖波形分析:從CH4511的波形來(lái)看,輸出的各位數(shù)據(jù),分別為輸入數(shù)據(jù)的字形碼。符合共陰極7端顯示數(shù)碼管譯碼的要求。故該譯碼器符合設(shè)計(jì)要求。譯碼模塊的仿真波形圖如下圖:譯碼模塊的仿真波行圖波形分析:從譯碼模塊的仿真波形圖來(lái)看,8位輸出分別輸出的是DIN輸入數(shù)據(jù)的字形碼,故符合譯碼的要求。(五)、由計(jì)數(shù)模塊和記憶模塊連接成的HXMK的仿真波形如下,HXMK的VHDL程序見(jiàn)附錄3。 HXMK的仿真波形圖波形分析:從HXMK的波形來(lái)看,當(dāng)CLR=1,是輸出置零,當(dāng)CLR不為0時(shí),當(dāng)JISHU鍵依次按下的時(shí)候,就將所記錄的時(shí)間數(shù)據(jù)記錄下了,該模塊把計(jì)數(shù)模塊和記憶模塊連接在一起,從而實(shí)現(xiàn)記憶模塊將計(jì)數(shù)模塊的記錄的數(shù)據(jù)保存下來(lái)。(六)、由HXMK與選擇輸出模塊連接在一起構(gòu)成的DCMK的仿真波形圖如下圖,DCMK的VHDL程序見(jiàn)附錄3。DCMK的仿真波形圖波形分析:從DCMK的波形來(lái)看,當(dāng)CLR=1后,模塊的輸出為0,計(jì)時(shí)開(kāi)始,連續(xù)按下JISHU鍵,記錄了8道數(shù)據(jù),再按下STOP鍵停止計(jì)數(shù),連續(xù)按下SELECT1鍵,輸出了,前面記錄的8道數(shù)據(jù),該模塊將HXMK及選擇輸出模塊的功能結(jié)合在一起,實(shí)現(xiàn)了計(jì)數(shù)和選擇輸出的功能,故符合設(shè)計(jì)要求。(七)、由DCMK和YMMK組成的頂層模塊SHUXIMIAOBIAO模塊的仿真波形如下圖,SHUZIMIAOBIAO的VHDL程序見(jiàn)附錄3。波形分析:當(dāng)CLR=1時(shí),數(shù)字秒表清零,開(kāi)始計(jì)數(shù),連續(xù)按下JISHU鍵,依次記錄8道數(shù)據(jù),然后按下停止鍵,停止計(jì)數(shù),連續(xù)按下SELECT1鍵,就可以依次輸出各道數(shù)據(jù)的字形碼,從而在數(shù)碼管上依次顯示各道時(shí)間。數(shù)字秒表的頂層模塊是由DCMK及YIMAMK組成,集合了這兩個(gè)模塊的功能,從而實(shí)現(xiàn)了數(shù)字秒表的功能 EDA實(shí)驗(yàn)箱的硬件仿真一、實(shí)驗(yàn)?zāi)康模河糜布抡骝?yàn)證數(shù)字秒表設(shè)計(jì)的正確性二、實(shí)驗(yàn)儀器:EDA試驗(yàn)箱,電腦一臺(tái),QUARTUSⅡ軟件。三、EDA實(shí)驗(yàn)箱仿真的引腳鎖定如下表:數(shù)字秒表功腳實(shí)驗(yàn)箱對(duì)應(yīng)外圍端口1K30對(duì)應(yīng)引腳數(shù)字秒表功腳實(shí)驗(yàn)箱對(duì)應(yīng)外圍端口1K30對(duì)應(yīng)引腳數(shù)字秒表功腳實(shí)驗(yàn)箱對(duì)應(yīng)外圍端口1K30對(duì)應(yīng)引腳Y(0)A1118Y(11)D3138Y(22)10C6Y(1)B1121Y(12)A4137Y(23)13D6Y(2)C1120Y(13)B4141SELECT144琴鍵1Y(3)D1128Y(14)C4140STOP46琴鍵2Y(4)A2122Y(15)D4143CLK59CLK3Y(5)B2131Y(16)A5142CLR47琴鍵3Y(6)C2130Y(17)B57Y(7)D2133Y(18)C5144Y(8)A3132Y(19)D59Y(9)B3136Y(20)A68Y(10)C3135Y(21)B61數(shù)字秒表的引腳鎖定圖總結(jié)本設(shè)計(jì)利用基于VHDL的DEA設(shè)計(jì)工具,采用大規(guī)模可編程邏輯器件的FPGA,通過(guò)設(shè)計(jì)芯片來(lái)實(shí)現(xiàn)系統(tǒng)功能。用EDA技術(shù)設(shè)計(jì)數(shù)字系統(tǒng),在每一層次上,都有描述、劃分、綜合、和驗(yàn)證四種類型的工作。把系統(tǒng)設(shè)計(jì)輸入到EDA軟件,可以用圖形輸入,硬件描述語(yǔ)言或者二者的混合輸入。劃分、綜合、和驗(yàn)證采用EDA軟件平臺(tái)自動(dòng)完成。其實(shí)是采用了模塊化是設(shè)計(jì)思想,將整個(gè)設(shè)計(jì)化分為計(jì)數(shù)模塊、記憶模塊、選擇輸出模塊和譯碼模塊,首先將各個(gè)模塊的功能通過(guò)硬件描述語(yǔ)言描述出來(lái),用軟件仿真波形驗(yàn)證其正確性。在此基礎(chǔ)上將各個(gè)模塊通過(guò)原件列化語(yǔ)句連接在一起,構(gòu)成數(shù)字秒表電路系統(tǒng),實(shí)現(xiàn)數(shù)字秒表的各個(gè)功能。在軟件設(shè)計(jì)和軟件仿真完成后,再通過(guò)EDA實(shí)驗(yàn)箱進(jìn)行硬件仿真,再次驗(yàn)證系統(tǒng)的正確性。在硬件和軟件仿真過(guò)程中,驗(yàn)證了時(shí)鐘秒表的各項(xiàng)功能的正確,滿足計(jì)數(shù)指標(biāo),但是在設(shè)計(jì)中還存在一些不足,比如在計(jì)數(shù)的時(shí)候,數(shù)碼管的輸出時(shí)為0的,不能看見(jiàn)當(dāng)時(shí)已總共計(jì)了多少時(shí),其次在數(shù)據(jù)輸出的時(shí)候要依據(jù)數(shù)據(jù)的大小來(lái)判斷輸出數(shù)據(jù)的道數(shù)等。希望通過(guò)進(jìn)一步的學(xué)習(xí)能夠解決以上出現(xiàn)的設(shè)計(jì)缺點(diǎn),在此基礎(chǔ)上豐富數(shù)字秒表的功能。參考文獻(xiàn)[1].[M].[2].[M].[3].[M].[4].譚會(huì)生,(第三版)[M].西安電子科技大學(xué)出版社[5].[M].成都::369,370,371[6].(第五版).附錄1 數(shù)字秒表電路圖附錄2 數(shù)字秒表明細(xì)表序號(hào)代 號(hào)名 稱型號(hào)或規(guī)格數(shù)量備注1FPGAFPGAEP1K30144_312R0電阻10K43R1電阻14R2電阻5K15C1電容1uf16C2電容17SW按鍵SWPB4附錄3 數(shù)字秒表源程序代碼CNT10源程序代碼:LIBRARY IEEE。USE 。USE 。ENTITY CNT10 IS PORT (CLK: IN STD_LOGIC。 CLR: IN STD_LOGIC。 ENA: IN STD_LOGIC。 CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 CARRY_OUT: OUT STD_LOGIC)。END CNT10。ARCHITECTURE ART OF CNT10 ISSIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0)。BEGINPROCESS(CLK, CLR, ENA)BEGIN IF CLR=39。139。 THEN CQI=0000。 ELSIF CLK39。EVENT AND CLK=39。139。 THEN IF ENA=39。039。 THEN IF CQI=1001 THEN CQI=0000。CARRY_OUT=39。139。 ELSE CQI=CQI+39。139。CARRY_OUT=39。039。 END IF。 END IF。 END IF。END PROCESS。CQ=CQI。END ART。CNT6源程序代碼:LIBRARY IEEE。USE 。USE 。ENTITY CNT6 IS PORT (CLK: IN STD_LOGIC。 CLR: IN STD_LOGIC。 ENA: IN STD_LOGIC。 CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 CARRY_OUT: OUT STD_LOGIC)。END CNT6。ARCHITECTURE ART OF CNT6 ISSIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0)。BEGINPROCESS(CLK, CLR, ENA)BEGIN IF CLR=39。139。 THEN CQI=0000。 ELSIF CLK39。EVENT AND CLK=39。139。 THEN IF ENA=39。039。 THEN IF CQI=0101 THEN CQI=0000。CARRY_OUT=39。139。 ELSE CQI=CQI+39。139。CARRY_OUT=39。039。 END IF。 END IF。 END IF。END PROCESS。CQ=CQI。END ART。CNT8源程序代碼:LIBRARY IEEE。USE 。USE 。ENTITY CNT8 IS PORT (CLK: IN STD_LOGIC。 CLR: IN STD_LOGIC。 CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。 END CNT8。ARCHITECTURE ART OF CNT8 ISSIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0)。BEGINPROCESS(CLK, CLR)BEGIN IF CLR=39。139。 THEN CQI=0000。 ELSIF CLK39。EVENT AND CLK=39。139。 THEN IF CQI=1000 THEN CQI=0000