14電氣EDA實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
14電氣EDA實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
14電氣EDA實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余45頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、EDA 實(shí)驗(yàn)指導(dǎo)書(shū)驗(yàn)驗(yàn)驗(yàn)驗(yàn)驗(yàn)基于QU ARTUS II圖形輸入電路的設(shè)計(jì). 含異步清零和同步使能的加法計(jì)數(shù)器的設(shè)計(jì) 圖形和VHDL混合輸入的電路設(shè)計(jì) 矩陣鍵盤(pán)接口電路的設(shè)計(jì) 交通燈控制電路實(shí)驗(yàn)EP1K10TC100 管腳圖主芯片:ACEX 1K 系列的 EP1K10TC100-3 下載電纜:Byte Blaster II實(shí)驗(yàn)一基于QUARTUSII圖形輸入電路的設(shè)計(jì)實(shí)驗(yàn)?zāi)康?、通過(guò)一個(gè)簡(jiǎn)單的3線一 8線譯碼器的設(shè)計(jì),掌握組合邏輯電路的設(shè)計(jì)方 法。2、初步了解QU ARTUS 11原理圖輸入設(shè)計(jì)的全過(guò)程。3、掌握組合邏輯電路的靜態(tài)測(cè)試方法。實(shí)驗(yàn)原理3線-8線譯碼器三輸入,八輸出。當(dāng)輸入信號(hào)按二進(jìn)

2、制方式的表示值為N時(shí),輸出端標(biāo)號(hào)為N的輸出端輸出高電平表示冇信號(hào)產(chǎn)生,而其它則為低電平表示無(wú) 信號(hào)產(chǎn)生。因?yàn)槿齻€(gè)輸入端能產(chǎn)生的組合狀態(tài)冇八種,所以輸出端在每種組合中 僅有一位為高電平的情況下,能表示所有的輸入組合。其真值表如表1-1所示輸入輸岀D2D1DOY7Y6Y5Y4Y3Y2Y1Y00000000000100100000010010000001000110000100010000010000101001000001100100000011110000000表1-13線線譯碼器真值表譯碼器不需要像編碼器那樣用一個(gè)輸出端指示輸出是否有效。但可以在輸 入中加入一個(gè)輸出使能端,用來(lái)指示是否將當(dāng)前的

3、輸入進(jìn)行冇效的譯碼,當(dāng)使 能端指示輸入信號(hào)無(wú)效或不用對(duì)當(dāng)前信號(hào)進(jìn)行譯碼時(shí),輸出端全為高電平,表 示無(wú)任何信號(hào)。本例設(shè)計(jì)屮沒(méi)有考慮使能輸入端,白己設(shè)計(jì)時(shí)可以考慮加入使 能輸入端時(shí),程序如何設(shè)計(jì)。、實(shí)驗(yàn)內(nèi)容在本實(shí)驗(yàn)屮,用三個(gè)撥動(dòng)開(kāi)關(guān)來(lái)表示3線-8線譯碼器的三個(gè)輸入(D2-D0);用八個(gè)LED來(lái)表示3線-8線譯碼器的八個(gè)輸出(YO-Y7 )。通過(guò)輸入不同的值來(lái) 觀察輸 入的結(jié)果與3線-8線譯碼器的真值表(表1-1)是否一致。實(shí)驗(yàn)箱中的 撥動(dòng)開(kāi)關(guān)當(dāng) 開(kāi)關(guān)閉合(撥動(dòng)開(kāi)關(guān)的檔位在下方)時(shí)其輸出為低電平,反Z輸出高電平。LED燈與其對(duì)應(yīng)的端口為高電平時(shí) LED就會(huì)發(fā)光,反之LED燈滅K打開(kāi)QUARTUSII

4、軟件,新建一個(gè)工程。Schematic File。并輸入 3 線一 82、建完T程之后,再新建一個(gè)圖形設(shè)計(jì)文件線譯碼器電路圖1T所示。DM1也輿r rD2:AND創(chuàng)詢(xún)LI"72L_6( irwYOY1Y2Y3Y4aii? Y5苛二Y6Y7圖i-i設(shè)計(jì)文件的輸入3、編譯仿真無(wú)誤后,根據(jù)用戶(hù)口己的要求進(jìn)行管腳分配。分配完成后,再進(jìn)行全編譯-次,以使管腳分配牛效4、根據(jù)實(shí)驗(yàn)內(nèi)容用實(shí)驗(yàn)導(dǎo)線將上面管腳分配的FPGA管腳與對(duì)應(yīng)的模塊連接起 來(lái)。如果是調(diào)用的木書(shū)提供的 VHDL 代碼,則實(shí)驗(yàn)連線如下:D2-D0 :編碼輸入端,接 3 個(gè)撥動(dòng)開(kāi)關(guān) Sl-S3?Y0-Y7 :編碼輸出信號(hào) , 接 8

5、個(gè) LED 燈 D1-D8。5、用下載電纜將對(duì)應(yīng)的 sof 文件加載到 FPGA 中。觀察實(shí)驗(yàn)結(jié)果。6、用 VHDL 語(yǔ)言設(shè)計(jì)上述 3 線-8 線譯碼器,新建 VHDL 設(shè)計(jì)文件,輸入程序如 下:(其中增加了 en 使能輸入端,低電平有效)五、 實(shí)驗(yàn)現(xiàn)象與結(jié)果文件加載到目標(biāo)器件后,撥動(dòng)撥動(dòng)開(kāi)關(guān), LED 燈會(huì)按表 1-1 所示的其值表對(duì)應(yīng) 的點(diǎn)亮。六、 實(shí)驗(yàn)報(bào)告1、進(jìn)一步熟悉和理解 QUARTUSII 軟件的使用方法。2、將實(shí)驗(yàn)原理、設(shè)計(jì)過(guò)程、編譯仿真波形和分析結(jié)果、硬件測(cè)試結(jié)果記錄下 來(lái)。實(shí)驗(yàn)二 含異步清零和同步使能的加法計(jì)數(shù)器的設(shè)計(jì)實(shí)驗(yàn)?zāi)康?、了解二進(jìn)制計(jì)數(shù)器的工作原理。2、進(jìn)一步熟悉QU

6、ARTUSII軟件的使用方法和VHDL輸入。3、時(shí)鐘在編程過(guò)程中的作用。實(shí)驗(yàn)原理二進(jìn)制計(jì)數(shù)器中應(yīng)用最多、功能最全的計(jì)數(shù)器之一,含異步清零和同步使能的加 法計(jì)數(shù)器的具體工作過(guò)程如下:在時(shí)鐘上升沿的情況下,檢測(cè)使能端是否允許計(jì)數(shù),如果允許計(jì)數(shù)(定義使 能端高電平有效)則開(kāi)始計(jì)數(shù),否則一肓檢測(cè)使能端信號(hào)。在計(jì)數(shù)過(guò)程屮再檢測(cè) 復(fù)位信號(hào)是否冇效(低電平有效),當(dāng)復(fù)位信號(hào)起作用時(shí),使計(jì)數(shù)值清零,繼續(xù) 進(jìn)行檢測(cè)和計(jì)數(shù)。其工作時(shí)序如圖 2? 1所示:時(shí)鐘 _TTTTTTTTTTTT_rT_n_n_n_rL_rT_TTJ進(jìn)位11 : 11 i mi i n : 1 ! 111 ! ! up! ! | i ! !

7、 1 ! !1 11使能端I眞位信號(hào)"TJ H | | H | | j | H | H |圖2-1計(jì)數(shù)器的工作時(shí)序三、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)要求完成的任務(wù)是在時(shí)鐘信號(hào)的作用下,通過(guò)使能端和復(fù)位信號(hào)來(lái)完成加法計(jì)數(shù)器的計(jì)數(shù)。實(shí)驗(yàn)中時(shí)鐘信號(hào)使川數(shù)字時(shí)鐘源模塊的1HZ信號(hào),川一位撥動(dòng)開(kāi)關(guān)S1表示使能端信號(hào),用復(fù)位開(kāi)關(guān) K1表示復(fù)位信號(hào),用LED模塊的D1? D4來(lái)表示計(jì)cout:out stdjogic進(jìn)位信號(hào)數(shù)的二進(jìn)制結(jié)果。實(shí)驗(yàn) LED亮表示對(duì)應(yīng)的位為T(mén), , LED滅表示對(duì)應(yīng)的位為 通過(guò)輸入 不同的值模擬計(jì)數(shù)器的工作吋序,觀察計(jì)數(shù)的結(jié)呆。四、實(shí)驗(yàn)步驟1、打開(kāi)QUARTUSII軟件,新建一個(gè)丄程。

8、2、建完工程Z后,再新建一個(gè)VHDL F訂e,打開(kāi)VHDL編輯器對(duì)話(huà)框注意:3、按照實(shí)驗(yàn)原理和白己的想法,在VHDL編輯窗口編寫(xiě)VHDL程序。要求有界步清零信信號(hào)ret,低電平有效;同步時(shí)能信號(hào)切,高電平有效參考程序:library ieee;use ieee.std_logic_l 164.all;use ieee.std_logic_arith.all;use ieee.std_logic_ un sig ned.all;en tity exp3 isPort( elk,ret,en:in stdjogic; 定義時(shí)鐘、界步復(fù)位、同步使能信號(hào)cq:out stdo gic_vector(3

9、 dow nto 0);一計(jì)數(shù)結(jié)果end exp3;architecture behave of exp3 is begi nprocess(clk,ret,e n)variable cqi : stdogic_vector(3 downto 0);begi n計(jì)數(shù)器異步復(fù)位if ret=,O' the n cqi:二(otherselsif clk'event and clk='l' then-檢測(cè)時(shí)鐘上升沿if en=Tthen-檢測(cè)是否允許計(jì)數(shù)(同步使能)if cqi< 15 then cqi:=cqi+1;else cqi:=(others =&g

10、t;'0');end if;end if;end if;if cqi=15 then cout<='r;-輸出進(jìn)位信號(hào)else cout<='0*;end if;cqv 二 cqi; 計(jì)數(shù)值向端口輸出end process;end behave;4、編寫(xiě)完 VHDL 程序后,保存起來(lái)。方法同實(shí)驗(yàn)一。5、對(duì)口己編寫(xiě)的 VHDL 程序進(jìn)行編譯并仿真,對(duì)程序的錯(cuò)誤進(jìn)行修改。6、編譯仿真無(wú)謀示,根據(jù)用戶(hù)自己的要求進(jìn)行管腳分配。分配完成示,再進(jìn)行 全編譯一次,以使管腳分配牛效。7、 根據(jù)實(shí)驗(yàn)內(nèi)容川實(shí)驗(yàn)導(dǎo)線將上面管腳分配的FPGA 管腳與對(duì)應(yīng)的模塊連接起 來(lái)。8

11、、用下載電纜將對(duì)應(yīng)的 sof 文件加載到 FPGA 中。觀察實(shí)驗(yàn)結(jié)果是否與自己的編 程思想一致。9、 思考:把該設(shè)計(jì)改成是加減法可控的計(jì)數(shù)器,增加控制輸入端M,當(dāng)M=0時(shí), 進(jìn)行加法計(jì)數(shù),當(dāng) M=1 吋,進(jìn)行減法計(jì)數(shù)。五、實(shí)驗(yàn)現(xiàn)象與結(jié)果六、實(shí)驗(yàn)報(bào)告1 、 繪出仿真波形,并作說(shuō)明。2、 寫(xiě)出在 VHDL 編程過(guò)程屮需要說(shuō)明的規(guī)則3、將實(shí)驗(yàn)原理、設(shè)計(jì)過(guò)程、編譯仿真波形和分析結(jié)果、碩件測(cè)試結(jié)果記錄下 來(lái)。4、改變吋鐘頻率,看實(shí)驗(yàn)現(xiàn)象會(huì)有什么改變,試解釋這一現(xiàn)象。實(shí)驗(yàn)三 圖形和VHDL混合輸入的電路設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)在QUARTUS1I軟件中模塊符號(hào)文件的生成與調(diào)用。2、掌握模塊符號(hào)與模塊符號(hào)之

12、間的連線規(guī)則與方法。3、掌握從設(shè)計(jì)文件到模塊符號(hào)的創(chuàng)建過(guò)程。二、實(shí)驗(yàn)原理在層次化的設(shè)計(jì)文件中,經(jīng)常需要將己經(jīng)設(shè)計(jì)好的 T程文件生成一個(gè)模塊符號(hào)文件 作為自己的功能模塊符號(hào)在頂層調(diào)川,該符號(hào)就像圖形設(shè)計(jì)文件中的任何其它宏功能符 號(hào)一樣可被高層設(shè)計(jì)重復(fù)調(diào)川。三、實(shí)驗(yàn)內(nèi)容在實(shí)驗(yàn)中,時(shí)鐘信號(hào)選取12KHZ做為數(shù)碼管的掃描時(shí)鐘,撥動(dòng)開(kāi)關(guān)輸入一個(gè)預(yù) 置 的八位數(shù)據(jù),經(jīng)過(guò)數(shù)控分頻電路分頻后得到 -?個(gè)較低的頻率做為加法計(jì)數(shù)器(實(shí) 驗(yàn) 一)的時(shí)鐘頻率進(jìn)行計(jì)數(shù)器的加法運(yùn)算。得到的值給數(shù)碼顯示譯碼電路在數(shù)碼管 上顯 示出來(lái)。四、實(shí)驗(yàn)步驟1、打開(kāi)QUARTUSII軟件,新建一個(gè)T程。2、其中,本實(shí)驗(yàn)的三個(gè)紐成模塊,

13、分別為:計(jì)數(shù)器模塊(expl.vhd),實(shí)驗(yàn)一。數(shù)碼顯示譯碼器模塊 (ymq.vhd),;數(shù)控分頻器的設(shè)計(jì)(fpq.vhd)3、對(duì)設(shè)計(jì)文件(expl. vhd: ymq. vhd; fpq. vhd)進(jìn)行模塊符號(hào)文件的創(chuàng)建。圖3-1實(shí)驗(yàn)三的設(shè)計(jì)電路5、編譯仿真無(wú)謀后,根據(jù)用戶(hù)H己的要求進(jìn)行管腳分配。分配完成后,再進(jìn)行全編譯一?次,以使管腳分配生效如果是調(diào)用的本書(shū)捉供的 VHDL代碼,則實(shí)驗(yàn)連線如下:CLK : FPGA時(shí)鐘信號(hào),接數(shù)字時(shí)鐘CL0CK3,并將這組時(shí)鐘設(shè)為1024HZDATA7. .0:分頻數(shù)據(jù)輸入信號(hào),分別接撥動(dòng)開(kāi)關(guān)的S8-SEC0UT:計(jì)數(shù)進(jìn)位輸出信號(hào),接一個(gè)LED燈D1RET

14、:計(jì)數(shù)復(fù)位信號(hào),接一個(gè)按鍵開(kāi)關(guān)K1LEDAG6.O:數(shù)碼管顯示信號(hào),接數(shù)碼管的 G、F、E、D、C、B、ASEL2.O:數(shù)碼管的位選信號(hào),接數(shù)碼管的SEL2、SELK SELO6、根據(jù)實(shí)驗(yàn)內(nèi)容用實(shí)驗(yàn)導(dǎo)線將上面管腳分配的FPGA管腳與對(duì)應(yīng)的模塊連接起7、用下載電纜將對(duì)應(yīng)的sof文件加載到FPGA中。觀察實(shí)驗(yàn)結(jié)果是否與自己的編程思想一 ?致五、實(shí)驗(yàn)現(xiàn)象與結(jié)果以設(shè)計(jì)的參考示例為例,當(dāng)設(shè)計(jì)文件加載到目標(biāo)器件后,撥動(dòng)八位撥動(dòng)開(kāi)關(guān),使其為一個(gè)數(shù)值,則八位數(shù)碼管按一定的速率開(kāi)始顯示“-F”,當(dāng)數(shù)碼管顯示A-F時(shí)LED燈LED1開(kāi)始被點(diǎn)亮,顯示其它數(shù)值吋熄滅。按S1鍵顯示的數(shù)值乂從0開(kāi)始,撥動(dòng)八 位撥動(dòng)開(kāi)關(guān),

15、宜于其它數(shù)據(jù),數(shù)碼管的顯示速率會(huì)發(fā)生改變。六、實(shí)驗(yàn)報(bào)告1 、 出仿真波形,并作說(shuō)明2、B 己設(shè)計(jì)文件,然后通過(guò)設(shè)計(jì)文件到模塊符號(hào)文件的轉(zhuǎn)換,設(shè)計(jì)白己的電路并 在實(shí)驗(yàn)系統(tǒng)中驗(yàn)證。進(jìn)一步掌握這種方法。3、寫(xiě)出在軟件中通過(guò)其它方法從設(shè)計(jì)文件到模塊符號(hào)文件的轉(zhuǎn)換過(guò)程。實(shí)驗(yàn)四矩陣鍵盤(pán)接口電路的設(shè)計(jì)、 實(shí)驗(yàn)?zāi)康?、了解普通4X4鍵盤(pán)掃描的原理。2、進(jìn)一步加深七段碼管顯示過(guò)程的理解。3、了解對(duì)輸入/輸出端口的定義方法。、 實(shí)驗(yàn)原理實(shí)現(xiàn)鍵盤(pán)有兩種方案:-?是采用現(xiàn)有的一些芯片實(shí)現(xiàn)鍵盤(pán)掃描;再就是用軟件 實(shí)現(xiàn)鍵盤(pán)掃描。作為一個(gè)嵌入系統(tǒng)設(shè)計(jì)人員,總是會(huì)關(guān)心產(chǎn)品成木。目前有很多芯 片可以川來(lái)實(shí)現(xiàn)鍵盤(pán)掃描,但是鍵盤(pán)掃

16、描的軟件實(shí)現(xiàn)方法冇助于縮減一個(gè)系統(tǒng)的重 復(fù)開(kāi)發(fā)成本,且只需要很少的 CPU開(kāi)銷(xiāo)。嵌入式控制器的功能能強(qiáng),可能充分利用這一資源,這里就介紹一下軟鍵盤(pán)的實(shí)現(xiàn)方案。VCC圖4-1簡(jiǎn)單鍵盤(pán)電路通常在一個(gè)鍵盤(pán)中使用了一個(gè)瞬時(shí)接觸開(kāi)關(guān),并且用如圖4? 1所示的簡(jiǎn)單電路:微處理器可以容易地檢測(cè)到閉合。當(dāng)開(kāi)關(guān)打開(kāi)時(shí),通過(guò)處理器的I/O 口的一個(gè)上拉電阻提供邏輯1;當(dāng)開(kāi)關(guān)閉合時(shí),處理器的/I0 口的輸入將被拉低得到邏輯 0。可遺 憾 的是,開(kāi)關(guān)并不完善,因?yàn)楫?dāng)它們被按下或者被釋放時(shí),并不能夠產(chǎn)生一個(gè)明確的1或者0。盡管觸點(diǎn)可能看起來(lái)穩(wěn)定而且很快地閉合,但與微處理器快速的運(yùn)行速度相比,這種動(dòng)作是比較慢的。當(dāng)觸點(diǎn)閉

17、合時(shí),其彈起就像一個(gè)球。彈起效果將產(chǎn)生如圖4? 2所示的好兒個(gè)脈沖。彈起的持續(xù)時(shí)間通常將維持在5ms-30ms之間。如果盂要多個(gè)鍵,則可以將每個(gè)開(kāi)關(guān)連接到微處理器上它自己的輸入端口。然而當(dāng)開(kāi)關(guān)的數(shù)目增加吋,這種方法將很快使用完所有的輸入端口。1 I I fI L15 30ms< >圖4-2按鍵抖動(dòng)鍵盤(pán)上陣列這些開(kāi)關(guān)最有效的方法(當(dāng)需要5個(gè)以上的鍵吋)就形成了一個(gè)如圖4- 3所示的二維矩陣。當(dāng)行和列的數(shù)目-樣多時(shí),也就是方型的矩陣,將產(chǎn)生一個(gè)最優(yōu)化的布列方式(I/O端被連接的時(shí)候)。一個(gè)瞬時(shí)接觸開(kāi)關(guān)(按鈕)放宜在每一行與線一列的交義點(diǎn)。矩陣所需的鍵的數(shù)目顯然根據(jù)應(yīng)用程序而不同。何一行

18、山一個(gè)輸出端口的位驅(qū)動(dòng),而每一列由一個(gè)電阻器上拉且供給輸入端U 一位。4行、4列,因此要識(shí)別按鍵,只需要知道是哪一行和哪一列即可,為了完成這一識(shí)別過(guò)程,我們的思想是,首先固定輸出4行為高電平,然后輸出4列為低電平,在讀入輸出的 4行的 值,通常高電平會(huì)被低電平拉低,如果讀入的4行均為高電平,那么肯定沒(méi)冇按鍵按下,否則,如果讀入的4行有一位為低電平,那么對(duì)應(yīng)的該行肯定有一個(gè)按鍵按下,這樣便可以獲取到按鍵的行值。同理,獲取列值也是如此,先輸出4列為高電平,然后在輸出4行為低電平,再讀入列值,如果其中有哪一位為低電平,那么肯定對(duì)應(yīng)的那一列有按鍵按下。獲取到行值和列值以后,組合成一個(gè)8位的數(shù)據(jù),根據(jù)實(shí)

19、現(xiàn)不同的編碼在對(duì)每個(gè)按鍵進(jìn)行匹配,找到鍵值后在7段碼管顯示。二、實(shí)驗(yàn)內(nèi)容木實(shí)驗(yàn)要求完成的任務(wù)是通過(guò)編程實(shí)現(xiàn)對(duì)4X4矩陣鍵盤(pán)按下鍵的鍵值的讀取,并在數(shù)碼管上完成一定功能(如移動(dòng)等)的顯示。三、|實(shí)驗(yàn)步囑1、打開(kāi)QUARTUSII軟件,新建一個(gè)工程。2、建完工程之后,再新建一個(gè) VHDL File,打開(kāi)VHDL編輯器對(duì)話(huà)框。3、 按照實(shí)驗(yàn)原理和H己的想法,在VHDL編輯窗口編寫(xiě)VHDL程序,用戶(hù) 可參照光盤(pán)中提供的示例程序。參考程序:library ieee;use ieee? std logic 1164.all;use ieee. std_logic_arith. al 1;use ieee.

20、 std logic unsigned. al 1;en tity cxpl2 isport( ClkKr一鍵盤(pán)行Kc鍵盤(pán)列a, b, c, d, e, f, gSa, sb, scin std_logic;-時(shí)鐘信號(hào)in std_logic_vector(3 dow nto 0);buffer std_logic_vector(3 dow nto 0);out stdogi c;-七段碼管顯示 buffer stdogi c);-七段碼管丿i?選end expl2;architecture behave of expl2signal keyr,kcycsignal kcournsignal

21、dcountstd_logic_voctor(3 downto 0); std_logic_vector(2 downto 0); std logic_vector (2 downto 0);signal kflagl, kflag2 : std_logic;signa1 buffi, buff2, buff3, buff4, buff5, buff6, buff7, buff8 : range 0 to 15; integor signal DispTemp : integer range 0 to 15;signal Disp_Decode : std_logic_vector(6 dow

22、nto 0);beginprocess (Clk) - 掃描鍵盤(pán)beginif(Clk'event and Clk 二' 1') then if(Kr 二 1111) then kflagl<= 0,; kcount<=kcount+1; if(kcount=0) then kc<= 1110; elsif(kcount=l) thenelsif(kcount=2) then kc =1011;elsekc= 0111; end if;el sekflagl<= V ;keyr<=Kr;keyc二Kc;end if;kflag2<=k

23、flagl;end if:end process;process (Clk) - 顯示右移 beginif (Clk' eve nt if(kflagl buffl< buff2< buff3< buff4< buff5< buff6<and Clk 二' 1') then'1' and kfldg2 二' O' ) then buff2; buff3;buff4;buff5;buff6;buff7;buff7<=buff8;end if;end if;end process; process (

24、Clk)- 獲取鍵值 begin辻 ( Clk'event and Clk 二 T') thenif(kflagl = r and kflag2= 0,) thenif(keyr= z/01ir ,) thencase keyc iswhe nwhen"0111 when>buff8<=15;when>buff8<=14;whe n>buff8<=13;>buff8<=12; >buf f8<=buff8;end case;others elsif(keyr= ,z 101 l/z) then no chan

25、gecase keyc is"0111>buff8<whe n >buff8<whe n >buff8<when1011 >buff8<when>buff8<when end case;11;10;9; & buff8;elsif(keyr 二"11010怖島一一 no changecase keyc iswhen>buff8<4;whe n 1110>buff8<5;whe n>buff8<6;when>buff8<7;when 1011 >buff8

26、<buff8;end case;"Olli"elsif(keyr 二"11100舟件說(shuō)case keyc iswhen>buff8<0;whe n 1110>buff8<1;1>buff8<2;whe nJ,when>buff8<3;when 1011 >buff8<buff8;end case;end if; others一一 no change一一 no changeend if; end if;end process; process(dcount) begincase (dcount) is

27、when "000"=>Disp_Temp二 buffiwhen "00l/ =>Disp_Tcmp<=buff2when "010"二Di sp Temp二 buff3 when z 011h =>Di sp_Tempv=buff4 when 100 =>Disp_Temp<=buff5 when /z 101 / =>Disp_Temp<=buff6 when 10 =>Disp Temp二 buff7 when "lll"=>Disp_Temp =buff8

28、end case; end process;process(Clk)begin5if (Clk eve nt and Clk 二 T') the n dcou nt<=dcou nt+1; a<=Disp Decode(0); b<=Disp_Decode(l); c<=Disp_Decode(2); d<=Disp_Decode(3);e<=DispDecode(4); f<=DispDecode(5); - 掃描累加g<=Disp_Decode(6); sa 二 dcount (0);sb<=dcount (1); sc<

29、=dcount (2);end if;end process;process (DispTemp)- 顯示轉(zhuǎn)換begincase Disp_Temp iswhen 0二 Disp Decode<="0111111"when 1 二 Disp Decode 二 "0000110"when 2=>Disp_Decode<=101101;when 3二 Disp_Decode 二"1001111"when 4=>Disp Decode二"1100110"when 5二 Disp Decode 二

30、"1101101"whe n 6=>Disp_Decode<二 1111101"when 7二 Disp_Decode 二"0000111"'O'when 8=>Disp_Decode<="ll11111"-'8''1'when 9 二 Disp_Decode<="l101111"'2''3''4'5''6',7,when 10=>Disp_Decod

31、e<=,/l 11011 l,z; -'A'when 1 l=>Disp_Decode<=,/l 111100z/;-' b'when 12=>Disp_Decode<=,/011100r/; -一' C'when 13=>Disp_Docode<=z/1011110z/; -一' d'when 14二 Disp_Decode<="l111001" -' E'when 15=>Disp_DecodeU"l 110001"

32、' F'when others二Disp_Decode二"0000000"-全滅 end case;end process;end behave;4、編寫(xiě)完 VHDL 程序后,保存起來(lái)。5、對(duì)自己編寫(xiě)的 VHDL 程序進(jìn)行編譯并仿真,對(duì)程序的錯(cuò)謀進(jìn)行修改6、編譯仿真無(wú)誤后,根據(jù)用戶(hù)口己的耍求進(jìn)行管腳分配。分配完成后,再進(jìn) 行全編譯一次,以使管腳分配牛效。7、根據(jù)實(shí)驗(yàn)內(nèi)容用實(shí)驗(yàn)導(dǎo)線將上而管腳分配的FPGA 管腳與對(duì)應(yīng)的模塊連接起來(lái)。如來(lái)是調(diào)用的木書(shū)提供的 VHDL 代碼,則實(shí)驗(yàn)連線如下:Clk : FPGAT作時(shí)鐘信號(hào),接數(shù)字時(shí)鐘CL0CK3,并設(shè)為1024H

33、Z。Kr0:3:分別接4X4鍵盤(pán)部分的Rl、R2、R3和R4。Kc0:3 :分別接 4X4 鍵盤(pán)部分的 Cl、 C2、 C3 和 C4。Sa> Sb> Sc接七段碼顯示區(qū)的 Sel0> Sell和Sel2。A、B、C、D、E、F、G:接七段碼顯示區(qū)的 A、B、C、D、E、F和G8、用下載電纜將對(duì)應(yīng)的 sof 文件加載到 FPGA 中。觀察實(shí)驗(yàn)結(jié)果是否與自己 的編程思想一致。四、實(shí)驗(yàn)結(jié)果與現(xiàn)象以設(shè)計(jì)的參考示例為例,當(dāng)設(shè)計(jì)文件加載到目標(biāo)器件后,按下矩陣鍵盤(pán)的某一個(gè)鍵,則在數(shù)碼管上顯示對(duì)應(yīng)的這個(gè)鍵標(biāo)識(shí)的鍵值,當(dāng)再按下第二個(gè)鍵的時(shí)候前一個(gè)鍵的鍵五、實(shí)驗(yàn)報(bào)告1、繪出不同的鍵值時(shí)的數(shù)碼管

34、的仿真波形,并作說(shuō)明。2、根據(jù)口己的思路,找找還有沒(méi)有其它方法進(jìn)行鍵盤(pán)的掃描顯示。并畫(huà)出流程圖。1、將實(shí)驗(yàn)原理、設(shè)計(jì)過(guò)程、編譯仿真波形和分析結(jié)果、駛件測(cè)試結(jié)果記錄下 來(lái)。實(shí)驗(yàn)五多功能數(shù)字鐘的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?、了解數(shù)字鐘的工作原理。2、進(jìn)一步熟悉用VHDL語(yǔ)言編寫(xiě)驅(qū)動(dòng)七段碼管顯示的代碼。3、掌握VHDL編寫(xiě)中的一些小技巧。二、實(shí)驗(yàn)原理多功能數(shù)字鐘應(yīng)該具有的功能有:顯示時(shí)一分一秒、整點(diǎn)報(bào)時(shí)、小時(shí)和分鐘可調(diào)等基木功能。首先要知道鐘表的工作機(jī)理,整個(gè)鐘表的工作應(yīng)該是在1Hz信號(hào)的作用下進(jìn)行,這樣每來(lái)一個(gè)時(shí)鐘信號(hào),秒增加 1秒,當(dāng)秒從59秒跳轉(zhuǎn)到()()秒 時(shí),分鐘增加1分,同吋當(dāng)分餅從59分跳轉(zhuǎn)到0

35、0分時(shí),小時(shí)增加1小時(shí),但是需 要注 意的是,小時(shí)的范圍是從 ()? 23時(shí)。在實(shí)驗(yàn)屮為了顯示的方便,由于分鐘和秒鐘顯示的范圍都是從()? 59,所以可以用一?個(gè)3位的二進(jìn)制碼顯示十位,用一個(gè)四位的二進(jìn)制碼(BCD碼)顯示個(gè)位,對(duì)于小時(shí)因?yàn)樗姆禝韋I是從()? 23,所以可以用一個(gè)2位的二進(jìn)制碼顯示十位, 用4位二進(jìn)制碼(BCD碼)顯示個(gè)位。實(shí)驗(yàn)中山于七段碼管是掃描的方式顯示,所以雖然吋鐘需要的是1Hz時(shí)鐘信號(hào),但是掃描確需要一個(gè)比較高頻率的信號(hào),因此為了得到準(zhǔn)確的1Hz信號(hào),必須對(duì)輸入的系統(tǒng)時(shí)鐘進(jìn)行分頻。對(duì)于整點(diǎn)報(bào)吋功能,用八可以根據(jù)系統(tǒng)的硬件結(jié)構(gòu)和自身的具體要求來(lái)設(shè)計(jì)。木實(shí)驗(yàn)設(shè)計(jì)的是當(dāng)進(jìn)

36、行整點(diǎn)的倒計(jì)時(shí) 5秒時(shí),讓LED來(lái)閃爍進(jìn)行整點(diǎn)報(bào)時(shí)的提示。三、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)的任務(wù)就是設(shè)計(jì)一個(gè)多功能數(shù)字鐘,要求顯示格式為小時(shí)一分鐘一秒鐘,整點(diǎn)報(bào)時(shí),報(bào)時(shí)時(shí)間為10秒,即從整點(diǎn)前10秒鐘開(kāi)始進(jìn)行報(bào)時(shí)提示,喇叭開(kāi)始發(fā)聲,直至g 過(guò)整點(diǎn)時(shí),在整點(diǎn)前5秒LED開(kāi)始閃爍,過(guò)整點(diǎn)后,停止閃爍。系統(tǒng)時(shí)鐘選擇調(diào)整吋時(shí),S2復(fù)位后用戶(hù)可時(shí)鐘模塊的WKHz,要得到1Hz時(shí)鐘信號(hào),必須對(duì)系統(tǒng)時(shí)鐘進(jìn)行 10,000次分頻 間的的按鍵用按鍵模塊的 S1和S2, S1調(diào)節(jié)小吋,每按下一次,小時(shí)增加一個(gè)小 調(diào)整分鐘,每按下一次,分鐘增加一分鐘。另外用 S8按鍵作為系統(tǒng)時(shí)鐘復(fù)位 全部顯示00-00-000四、實(shí)驗(yàn)步驟1、打

37、開(kāi)QUARTUSTI軟件,新建一個(gè)工程。2、建完工程Z后,再新建一個(gè)VHDL F訂e,打開(kāi)VHDL編輯器對(duì)話(huà)框3、 按照實(shí)驗(yàn)原理和口己的想法,在VHDL編輯窗口編寫(xiě)VHDL程序,參照光盤(pán)屮提供的示例程序。library ieee;use ieee. std_logic_l164. al 1;use ieee. std_logic_arith. all; use ieee. std_logic_ un sig ned.all;in stdlogic;en tity exp20 is port( Clk Rst S1,S2 SPK Display顯示輸岀SEG_SEL管掃描驅(qū)動(dòng));architec

38、ture behave of exp20 sig nal Disp_Temp sig nal Disp Decode sig nal SEC1,SEC10 sig nal M1N1,MIN10 sig nal H0UR1, HOUR10-時(shí)鐘輸入in stdAlogic;-復(fù)位輸入in std_logic;-時(shí)間調(diào)節(jié)輸入out stdogic; 一整點(diǎn)輸報(bào)時(shí)輸出out std logic vector (6 down to 0);-七段碼管buffer std_logic_vector (2 dow nto 0) 段碼isin teger range 0 to 15; std logic ve

39、ctor(6 downto 0);in teger range 0 to 9; in teger range 0 to 9; in teger range 0 to 9;signal ClkSM signal ClklHz signal Clk2Hz signal led_countstdlogic;:stdlogic;:std_logic;:std_logic_vector(2 downto 0);BEGINPROCESS (elk) 產(chǎn)生顯示掃描時(shí)鐘variable enttemp : INTEGER RANGE 0 TO 59999; BEGINIE elk 二' 1'

40、AND elk*event THENIF ent temp 二 59999 THEN enttemp:=0;ELSEIF cnttemp<30000 THEN clk_SM<= f ; ELSE clk_SM<= O'END IF;enttemp:=cnttemp+l;END IF;END IF;END PROCESS;PROCESS (elk) - 產(chǎn)生顯示掃描時(shí)鐘 1HZvariable ent : INTEGER RANGE 0 TO 23999999; BEGIN IF clk= 1' AND elk'event THENIF ent二 239

41、99999 THEN cnt:=0;ELSEIF cnt<12000000 THEN clklhz<= 1'ELSE clklhzU'O'END IF;ent:=cnt+1;END IF;END IF;END PROCESS;PROCESS (elk) 一產(chǎn)生顯示掃描吋鐘 2HZvariable ent : INTEGER RANGE 0 TO 23999999; BEGINTF clk= f AND elk'event THENIF cnt=l1999999 THEN cnt:=O;ELSEIF cnt<6000000 THEN clk2hz

42、<= 1'ELSE clk2hz<= 0,;END IF; ent:=cnt+l;END IF;END IF;END PROCESS;process(ClklHz, Rst) beginif (Rst 二'O') the n系統(tǒng)復(fù)位SEC1<=O;SEC10二 0;MINl<=0;MIN10 二 0;HOURIUO;H0UR10<=0;正常運(yùn)行elsif(ClklHz event and ClklHz 二 T') thenif (SI 二'O') then-調(diào)節(jié)小時(shí)辻(HOUR 仁9) the nH0UR1 二 0;

43、 HOUR10<=H0UR10+1;elsif(H0UR10=2 and HOUR1=3) then H0URl<=0;HOUR10二 0;elseHOUR1<=HOUR1+1;end if;elsif (S2 二'O') then -調(diào)節(jié)分鐘 if(MINI 二 9) thenMINl<=0;if(MIN10=5) thenMIN10<=0;elseMINI0<=MTNl0+1;end if;elseMINI "MINI+ 1; end if;elsif(SEC1 二 9) thenSEC120;if(SEC10=5) thenS

44、EC10<=0;if(MINI 二 9) thenMIN1<=O;if(MIN10=5) thenMIN1OUO;if(HOUR1=9) thenHOUR1<=O;HOUR1O 二 HOUR1O+1; elsif(H0UR10=2 and HOUR1=3) thenHOUR1 二 0;HOUR10<=0;elseHOUR1<=HOUR1+1;end if;elseMIN1O<=MIN1O+1;end if;elseMIN1<=MIN1+1;end if;elseSEC1O<=SEC1O+1;end if;elseSEC IX 二 SEC1+1;e

45、nd if;end if;end process;process(Clk) beginif(Clk2hz event and Clk2hz= T) thenif (MINI0=5 and MINI 二 9 and SEC 10=5 and secl>3) the在 59分 55 秒開(kāi)始提示led_Count<=led_Count+l;elseled count二"000"end if;end if;SPK<=led_count(0); end process;process(SEG_SEL)begincase (SEG_SEL+1) iswhen 000二

46、 Disp_Tcmp<=H0UR10;when /00r =>Disp_Temp<=H0URl;when "010"=>Disp_TempU10;when ,z011/,=>Disp_Temp<=MIN10;when /100/ =>Disp_Temp<=MINl;when z/101 /=>Di sp_Temp<= 10;when "110"二Disp Temp<=SEC10;when "11l"=>Disp_Temp二 SEC1; end case;end p

47、rocess;process(Clk)beginif (Clk_SM event and Clk_SM= T ) then- 掃描累加SEG_SEL<=SEG_SEL+1; Di splay<=Disp_Decode;end if;end process;process (Disp_Temp)顯示轉(zhuǎn)換begincase Disp_Temp iswhen 0=>Disp_Dec() de ="0111111"-0when l=>Disp_Decode<= 0000110zz; 1when 2=>Disp_Dccode<="1011011"-2when 3二

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論