西安電子科技大學(xué)EDA實驗報告
《西安電子科技大學(xué)EDA實驗報告》由會員分享,可在線閱讀,更多相關(guān)《西安電子科技大學(xué)EDA實驗報告(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 EDA大作業(yè)及實驗報告 實驗一:QUARTUS Ⅱ軟件使用及組合電路設(shè)計仿真 實驗?zāi)康模? 學(xué)習(xí) QUARTUS Ⅱ 軟件的使用,掌握軟件工程的建立,VHDL源文件的設(shè)計和波形仿真等基本內(nèi)容; 實驗內(nèi)容: 1. 四選一多路選擇器的設(shè)計 首先利用QuartusⅡ完成4選1多路選擇器的文本編輯輸入(mux41a.vhd)和仿真測試等步驟,給出仿真波形。 步驟: (1) 建立工作庫文件夾和編輯設(shè)計文件; (2) 創(chuàng)建工程; (3) 編譯前設(shè)置; (4) 全程編
2、譯; (5) 時序仿真; (6) 應(yīng)用RTL電路圖觀測器(可選擇) 實驗程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT( S10:IN STD_LOGIC_VECTOR(1 DOWNTO 0); A,B,C,D:IN STD_LOGIC; Q:OUT STD_LOGIC ); END ENTITY mux41; ARCHITECTURE bhv OF mux41 IS BEGIN PROCESS(A,B,C,D,S10)
3、 BEGIN IF S10="00" THEN Q<=A; ELSIF S10="01" THEN Q<=B; ELSIF S10="10" THEN Q<=C; ELSE Q<=D; END IF; END PROCESS; END bhv; 波形仿真如圖: 其中,分別設(shè)置A,B,C,D四個輸入都為10.0ns的方波,其占空比分別為25%,50%,75%,90%以作為四種輸入的區(qū)分,使能端s10以此輸入00(即[0]),01(即[1]),10(即[2]),11(即[3]),可以觀察
4、到輸出端Q依次輸出分別為A,B,C,D。試驗成功。 其RTL電路圖為: 2.七段譯碼器程序設(shè)計仿真 2.1 原理:7段數(shù)碼是純組合電路,通常的小規(guī)模專用IC,如74或4000系列的器件只能作十進(jìn)制BCD碼譯碼,然而數(shù)字系統(tǒng)中的數(shù)據(jù)處理和運算都是2進(jìn)制的,所以輸出表達(dá)都是16進(jìn)制的,為了滿足16進(jìn)制數(shù)的譯碼顯示,最方便的方法就是利用VHDL譯碼程序在FPGA或CPLD中實現(xiàn)。本項實驗很容易實現(xiàn)這一目的。例1作為7段BCD碼譯碼器的設(shè)計,輸出信號LED7S的7位分別接如實驗圖1數(shù)碼管的7個段,高位在左,低位在右。例如當(dāng)LED7S輸出為 "" 時,數(shù)碼管的7個段:g、f、e、d、c、b、a
5、分別接0、0、1、0、0、1、0,實驗中的數(shù)碼管為共陽極的,接有低電平的段發(fā)亮,于是數(shù)碼管顯示“5”。 實驗圖1 數(shù)碼管及其電路 2.2 實驗內(nèi)容:參考后面的七段譯碼器程序,在QUARTUS II上對以下程序進(jìn)行編輯、編譯、綜合、適配、仿真,給出其所有信號的時序仿真波形。 試驗程序如下: LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY DecL7S IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; LED
6、7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ; ARCHITECTURE one OF DecL7S IS BEGIN PROCESS( A ) BEGIN CASE A(3 DOWNTO 0) IS WHEN "0000" => LED7S <= "" ; -- X“80”->0 WHEN "0001" => LED7S <= "" ; -- X“79”->1 WHEN "0010" => LE
7、D7S <= "" ; -- X“24”->2 WHEN "0011" => LED7S <= "" ; -- X“30”->3 WHEN "0100" => LED7S <= "" ; -- X“19”->4 WHEN "0101" => LED7S <= "" ; -- X“12”->5 WHEN "0110" => LED7S <= "" ; -- X“02”->6 WHEN "0111" => LED7S <= "" ; -- X“78”->7
8、 WHEN "1000" => LED7S <= "" ; -- X“00”->8 WHEN "1001" => LED7S <= "" ; -- X“10”->9 WHEN "1010" => LED7S <= "" ; -- X“08”->A WHEN "1011" => LED7S <= "" ; -- X“03”->B WHEN "1100" => LED7S <= "" ; -- X“46”->C WHEN "1101" => LED7S <=
9、 "" ; -- X“21”->D WHEN "1110" => LED7S <= "" ; -- X“06”->E WHEN "1111" => LED7S <= "" ; -- X“0E”->F WHEN OTHERS => NULL ; END CASE ; END PROCESS ; END ; 波形仿真如圖: 如圖,當(dāng)輸入端A依次輸入0-15的四位二進(jìn)制碼時,輸出端依次輸出(0-9及A-F)的數(shù)碼管所對應(yīng)的七位二進(jìn)制數(shù),例如,當(dāng)輸入0000時,輸出端
10、輸出(即字符@的ASCII碼),顯示在數(shù)碼段上即‘0’。 實驗二 計數(shù)器設(shè)計與顯示 實驗?zāi)康模? (1)熟悉利用QUARTUS II中的原理圖輸入法設(shè)計組合電路,掌握層次化設(shè)計的方法; (2)學(xué)習(xí)計數(shù)器設(shè)計、多層次設(shè)計方法和總線數(shù)據(jù)輸入方式的仿真,并進(jìn)行電路板下載演示驗證。 實驗內(nèi)容: 1.完成計數(shù)器設(shè)計 設(shè)計含有異步清零和計數(shù)使能的4位二進(jìn)制加減可控計數(shù)器。 要求:(1)寫出設(shè)計框圖、流程和方法; (2) 利用VHDL設(shè)計實現(xiàn)程序; (3)進(jìn)行波形仿真驗證; CLC,CLK,EN 開始 EN,CLC,C
11、LK 開始 (4)完成設(shè)計實驗報告:將實驗原理、設(shè)計過程、編譯仿真波形和分析結(jié)果寫進(jìn)實驗報告。 CLC=’0’ Q1<=Q1-1Q Q1<=Q1+1 EN=’1’ CLK’EVENT CLK=’1’ Q1<=(OTHERS=>'0') NO Y Q<=Q1 Y N 其設(shè)計原理:由三個輸入端CLC,CLK,EN控制計數(shù)器的輸出和計數(shù)方式,其中當(dāng)清零端CLC=’1’時,輸出端輸出為全零;當(dāng)CLC=’0’時,正常計數(shù)。其中如果出現(xiàn)時鐘上升沿,加減控制端EN=’1’時,為加法計數(shù),反之則為減法計數(shù)。在程序設(shè)計時,在進(jìn)程中引入信號Q1,在進(jìn)程中完成標(biāo)準(zhǔn)
12、邏輯位的加減,結(jié)束進(jìn)程之后將其給輸出。設(shè)計框圖如上所示。 實驗程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC; EN:IN STD_LOGIC; CLC:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END ENTITY CNT4; ARCHITECTURE
13、BHV OF CNT4 IS SIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF CLC='1' THEN Q1<=(OTHERS=>'0'); ELSIF (CLK'EVENT AND CLK='1') THEN IF EN='1' THEN Q1<=Q1+1; ELSE Q1<=Q1-1; END IF; END IF; END PROCESS; Q<=Q1; EN
14、D ARCHITECTURE BHV; 波形仿真結(jié)果如圖: 如上圖所示,當(dāng)CLC=’1’時,清零;否則,正常計數(shù)。EN=’0’時,減法計數(shù),EN=’1’時,加法計數(shù)。仿真驗證實驗設(shè)計成功。 2.計數(shù)器顯示譯碼設(shè)計與下載 用原理圖輸入法的方式,以前面設(shè)計的七段譯碼器DecL7S和計數(shù)器為底層元件,完成“計數(shù)器顯示譯碼”的頂層文件設(shè)計。 設(shè)計原理:為了使數(shù)碼管的變化能夠用肉眼觀察,將輸入時鐘(50MHz)先進(jìn)行進(jìn)行50M分頻,輸出頻率為1Hz的時鐘。其中分頻器采用M=50M計數(shù)器的進(jìn)位輸出端來實現(xiàn),將分頻后的時鐘信號送入四位二進(jìn)制加減可控計數(shù)器的時鐘輸入端。 四位二進(jìn)制加減可控計數(shù)
15、器由實驗1中提供,其輸出作為七段譯碼器的輸入端。 50M分頻器程序設(shè)計: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT5M IS PORT(CLK:IN STD_LOGIC; CLK_OUT:OUT STD_LOGIC ); END ENTITY CNT5M; ARCHITECTURE BHV OF CNT5M IS SIGNAL COUNT:STD_LOGIC_VECTOR(26 DOWNTO 0);
16、 BEGIN PROCESS BEGIN WAIT UNTIL CLK'EVENT AND CLK='1'; IF(COUNT<) THEN COUNT<=COUNT+1; CLK_OUT<='0'; ELSE COUNT<=(OTHERS=>'0'); CLK_OUT<='1'; END IF; END PROCESS; END ARCHITECTURE BHV; 修改后加減計數(shù)器程序: LIBRARY IEEE; USE
17、 IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4 IS PORT(CLK:IN STD_LOGIC; UPDOWN:IN STD_LOGIC; RESET,ENABLE:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END ENTITY CNT4; ARCHITECTURE BHV OF CNT4 IS SIGNAL Q1:STD_LOGIC_VECTO
18、R(3 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF ENABLE='1' THEN IF RESET='1' THEN Q1<=(OTHERS=>'0'); ELSIF (CLK'EVENT AND CLK='1') THEN IF UPDOWN='1' THEN Q1<=Q1+1; ELSE Q1<=Q1-1; END IF; END IF; END IF; END PROCESS; Q<=Q1; END ARC
19、HITECTURE BHV; 其原理圖如下: 其中為了便于觀察,我們只仿真未加分頻器時的的波形圖如下: 其中,ENABLE為使能端,其為1時,電路正常工作。RESET為復(fù)位端,當(dāng)其為1時,輸出為全零。UPDOWAN為加減控制端,其為0時,減法計數(shù),為1時,加法計數(shù)。 硬件測試: 將編譯好的的程序下載到實驗板上,其引腳對應(yīng)如原理圖所示。 引腳及開關(guān)對應(yīng)關(guān)系如下: 控制引腳 enable reset updown 對應(yīng)的開關(guān) SW0 SW1 SW2 上電后,SW0為低電平,數(shù)碼管輸出為‘0‘,SW0為高電平時,正常計數(shù)。將SW1置為高電平時,清零,數(shù)碼管顯
20、示‘0’;只為低電平時,數(shù)碼管正常顯示。SW2為低電平時,減法計數(shù),為高電平時,加法計數(shù)。 實驗三:大作業(yè)設(shè)計——循環(huán)彩燈控制器 實驗任務(wù):設(shè)計一個循環(huán)彩燈控制器,該控制器可控制10個發(fā)光二極管循環(huán)點亮、間隔點亮或者閃爍等花型。要求至少設(shè)計三種以上花型,并用按鍵控制花型之間的轉(zhuǎn)換。 實驗設(shè)計:本實驗通過設(shè)計一個擁有11個狀態(tài)的狀態(tài)機(jī),其11個暫態(tài)s0-s10循環(huán)鏈接,將其所代替的二進(jìn)制碼送入led燈,以實現(xiàn)彩燈“流水”的特性。對于每個暫態(tài),都擁有4種二進(jìn)制碼,通過對輸入的使能端EN12的判斷,決定輸出的碼值,進(jìn)而確定顯示的彩燈的類型。同時用數(shù)碼管作為彩燈花型序號的顯示裝置
21、,當(dāng)EN12為00時,顯示‘1’;01時顯示‘2’;10時顯示‘3’,11時顯示‘4’。為了能搞看清彩燈的變化規(guī)律,須先經(jīng)過50M分頻器分頻。 程序設(shè)計如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY LIUSHUI IS PORT( CLK:IN STD_LOGIC; EN1:IN STD_LOGIC; EN2:IN STD_LOGIC; CON:IN STD_LOGIC; Z:OUT STD_LOGIC
22、_VECTOR(9 DOWNTO 0); LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END ENTITY LIUSHUI; ARCHITECTURE BHV OF LIUSHUI IS TYPE STATE_TYPE IS(S0,S1,S2,S3,S4,S5,S6,S7,S8,S9); SIGNAL CURRENT_STATE,NEXT_STATE:STATE_TYPE; SIGNAL EN12:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN EN12<=EN1&EN
23、2; TONGBU:PROCESS BEGIN WAIT UNTIL CLK'EVENT AND CLK='1'; CURRENT_STATE<=NEXT_STATE; END PROCESS; ZHUANYI:PROCESS(CURRENT_STATE) BEGIN NEXT_STATE<=CURRENT_STATE; CASE CURRENT_STATE IS WHEN S0=>NEXT_STATE<=S1; WHEN S1=>NEXT_STATE<=S2; WHEN
24、 S2=>NEXT_STATE<=S3; WHEN S3=>NEXT_STATE<=S4; WHEN S4=>NEXT_STATE<=S5; WHEN S5=>NEXT_STATE<=S6; WHEN S6=>NEXT_STATE<=S7; WHEN S7=>NEXT_STATE<=S8; WHEN S8=>NEXT_STATE<=S9; WHEN S9=>NEXT_STATE<=S0; END CASE; END PROCESS
25、; SHUCHU:PROCESS(CURRENT_STATE,EN12) BEGIN IF CON='1' THEN Z<=(OTHERS=>'0'); CASE EN12(1 DOWNTO 0) IS WHEN "00"=>LED7S<=""; WHEN "01"=>LED7S<=""; WHEN "10"=>LED7S<=""; WHEN "11"=>LED7S<=""; END CASE; CASE CURRENT_STATE IS
26、 WHEN S0=> Z<=""; WHEN S1=> IF EN12="00" THEN Z<=""; ELSIF EN12="01" THEN Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE Z<=""; END IF; WHE
27、N S2=> IF EN12="00" THEN Z<=""; ELSIF EN12="01" THEN Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE Z<=""; END IF; WHEN S3=> IF EN12="00" THEN
28、 Z<=""; ELSIF EN12="01" THEN Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE Z<=""; END IF; WHEN S4=> IF EN12="00" THEN Z<=""; ELSIF EN12="01" THEN
29、 Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE Z<=""; END IF; WHEN S5=> IF EN12="00" THEN Z<=""; ELSIF EN12="01" THEN Z<=""; ELSIF EN12="10"
30、THEN Z<=""; ELSE Z<=""; END IF; WHEN S6=> IF EN12="00" THEN Z<=""; ELSIF EN12="01" THEN Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE
31、 Z<=""; END IF; WHEN S7=> IF EN12="00" THEN Z<=""; ELSIF EN12="01" THEN Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE Z<=""; END IF;
32、 WHEN S8=> IF EN12="00" THEN Z<=""; ELSIF EN12="01" THEN Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE Z<=""; END IF; WHEN S9=> IF EN12="00" TH
33、EN Z<=""; ELSIF EN12="01" THEN Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE Z<=""; END IF; WHEN S10=> IF EN12="00" THEN Z<=""; ELSIF EN1
34、2="01" THEN Z<=""; ELSIF EN12="10" THEN Z<=""; ELSE Z<=""; END IF; END CASE; END IF; END PROCESS; END ARCHITECTURE BHV; 其波形仿真結(jié)果如圖: 其中 當(dāng)CON為1時,正常顯示,當(dāng)其為0時,保持上一次最后花型。如圖所示, 當(dāng)EN12為00時,LED7S為(即
35、‘1‘的二進(jìn)制碼),此時Z[9]-Z[0]作為流水燈,依次點亮,視為花型1; 當(dāng)EN12為10時,LED7S為(即‘2‘的二進(jìn)制碼),此時Z[9]-Z[0]作為流水燈,依次逐漸全部點亮,視為花型2; 當(dāng)EN12為01時,LED7S為(即‘3‘的二進(jìn)制碼),此時Z[9]-Z[0]作為流水燈,依次逐漸由兩頭向中間挨個點亮,視為花型3; 當(dāng)EN12為01時,LED7S為(即‘4‘的二進(jìn)制碼),此時Z[9]-Z[0]作為流水燈,全亮之后全滅之后再全亮,即閃爍,視為花型4。 這樣可視為完成四種花型的循環(huán)彩燈。 其原理圖如圖: 引腳及開關(guān)對應(yīng)關(guān)系如下: 控制引腳 CON EN1 EN2 對應(yīng)的開關(guān) SW0 SW1 SW2 硬件測試: 將編譯好的的程序下載到實驗板中, 當(dāng)SW1與SW2為00時,數(shù)碼管顯示1,Z[9]-Z[0]挨個依次點亮后又熄滅。 當(dāng)SW1與SW2為01時,數(shù)碼管顯示2,Z[9]-Z[0]挨個依次點亮最終全部點亮。 當(dāng)SW1與SW2為10時,數(shù)碼管顯示3,Z[9]-Z[0]依次逐漸由兩頭向中間挨個點亮。 當(dāng)SW1與SW2為11時,數(shù)碼管顯示4,Z[9]-Z[0]全亮之后全滅之后再全亮,完成閃爍功能。 當(dāng)SW0置為0時,彩燈停止變化。 驗證試驗成功。 專心---專注---專業(yè)
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。