可編程邏輯器件實驗講義11個_第1頁
可編程邏輯器件實驗講義11個_第2頁
可編程邏輯器件實驗講義11個_第3頁
可編程邏輯器件實驗講義11個_第4頁
可編程邏輯器件實驗講義11個_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、可 編 程 邏 輯 器 件實驗講義目 錄目 錄實驗一 Quartus軟件及EDA實驗平臺介紹1實驗二 Quartus文本設(shè)計輸入4實驗三 Quartus混合設(shè)計輸入5實驗四 D、T觸發(fā)器7實驗五 十六進制數(shù)碼管顯示8實驗六 3-8譯碼器設(shè)計10實驗七 計數(shù)器的設(shè)計12實驗八 數(shù)控分頻器的設(shè)計13實驗九 鎖存器的設(shè)計14實驗十 4選1多路選擇器19實驗十一 循環(huán)彩燈控制器的設(shè)計21可編程邏輯器件實驗講義實驗一 Quartus軟件及EDA實驗平臺介紹(1)實驗?zāi)康模菏煜uartus軟件的使用,學(xué)習(xí)其操作過程及仿真過程。(2)實驗內(nèi)容:學(xué)習(xí)使用Quartus對程序進行編輯輸入、編譯及仿真。1、打開

2、QuartusII軟件。2、選擇路徑。選擇File/New Project Wizard,指定工作目錄,指定工程和頂層設(shè)計實體稱;注意:工作目錄名不能有中文。3、添加設(shè)計文件。將設(shè)計文件加入工程中。單擊“Next”,如果有已經(jīng)建立好的VHDL或者原理圖等文件可以在File name中選擇路徑然后添加,或者選擇Add All添加所有可以添加的設(shè)計文件(.VHDL ,.Verilog原理圖等)。如果沒有直接點擊“Next”,等建立好工程后再添加也可,這里我們暫不添加。4、選擇FPGA器件。Family選擇Cyclone,Available device選EP1C12Q240C8,點擊“Next”。

3、5、選擇外部綜合器、仿真器和時序分析器。Quartus II支持外部工具,可通過選中來指定工具的路徑。這里我們不做選擇,默認使用Quartus II自帶的工具。6、結(jié)束設(shè)置。單擊“Next”,彈出“工程設(shè)置統(tǒng)計”窗口,上面列出了工程的相關(guān)設(shè)置情況。最后單擊“Finish”,結(jié)束工程設(shè)置。7、建立VHDL原文件。選擇菜單“File”“New”。8、添加文件到工程中。VHDL原文件編輯完后,選擇File/Save,選擇和工程相同的文件名。點擊“保存”,文件就被添加進工程當(dāng)中。21library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_

4、unsigned.all;entity adder4b isport(clr,cin: in std_logic;a,b: in std_logic_vector(3 downto 0);s: out std_logic_vector(3 downto 0);cout:out std_logic);end adder4b;architecture art of adder4b issignal sint:std_logic_vector(4 downto 0);signal aa,bb:std_logic_vector(4 downto 0);begin aa=0&a; bb=0&b; sin

5、t=aa+bb+cin; s=sint(3 downto 0); coutGenerate Functional Simulator NetList, 生產(chǎn)網(wǎng)表文件之后,點擊Start Simulator,進行功能仿真,然后驗證邏輯功能是否正確。(4)實驗報告:簡述實驗步驟,寫出實驗的源程序,給出波形仿真結(jié)果。實驗二 Quartus文本設(shè)計輸入(1)實驗?zāi)康模菏煜uartus軟件的使用及仿真過程;掌握操作符的邏輯運算關(guān)系及數(shù)據(jù)類型,熟悉VHDL文本輸入法。(2)實驗內(nèi)容:使用VHDL文本輸入法完成基本門的設(shè)計,學(xué)習(xí)使用Quartus對程序進行編輯輸入、編譯及仿真。library ieee;u

6、se iee.std_logic_1164.all;entity jbm is port(a,b: in bit; f1,f2,f3,f4,f5,f: out bit);end jbm;architecture a of jbm isbegin f1=a and b; f2=a or b; f=not a; f3=a nand b; f4=a nor b; f5=not(a xor b); end; (3)思考題根據(jù)上述實驗結(jié)果與現(xiàn)象,獨立完成2位二進制數(shù)的“與、或非、異或、同或”邏輯運算,要求數(shù)據(jù)類型為標準邏輯矢量類型。(4)實驗報告寫出實驗的源程序,給出相應(yīng)表達式完成的邏輯關(guān)系,并給出波形

7、仿真結(jié)果。獨立完成思考題,給出源程序。實驗三 Quartus混合設(shè)計輸入(1)實驗?zāi)康模菏煜uartus軟件的使用及仿真過程;熟悉VHDL混合輸入法,并完成一位全加器的設(shè)計。(2)實驗原理表3-1 半加器真值表absoco0000011010101101建立一位半加器half_adder工程:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HALF_ADDER ISPORT(A,B: IN STD_LOGIC;S,Co: OUT STD_LOGIC);END ENTITY HALF_ADDER;ARCHITECTURE RTL OF HALF_

8、ADDER ISBEGINS = NOT(A XOR(NOT B);Co 【Create/Update】-【Create symbol file for current file】;新建原理圖文件,并添加剛生成新元件;連接電路圖根據(jù)文本輸入的半加器,結(jié)合所給原理圖,進行合理的電路圖連接。注意:原理圖保存名稱不要與半加器實體名重合。指定頂層文件(4)實驗報告給出半加器的原理,寫出一位半加器的文本源程序;畫出一位全加器的原理圖,對一位全加器進行功能仿真,給出波形仿真結(jié)果,并舉例驗證結(jié)果是否正確。 實驗四 D、T觸發(fā)器(1)實驗?zāi)康模菏煜uartusII的VHDL文本設(shè)計過程,學(xué)習(xí)簡單時序電路的設(shè)

9、計、仿真。(2)實驗原理時序邏輯電路是現(xiàn)代復(fù)雜數(shù)字電路的重要組成部分,往往占到整個設(shè)計的90以上。觸發(fā)器是時序電路的基本單元,本實驗將涉及到D觸發(fā)器與T觸發(fā)器,采用的是邊沿觸發(fā),邊沿觸發(fā)是實際電路實現(xiàn)的主要方式。D觸發(fā)器:在時鐘上升沿時,輸出q=d,qb=;T觸發(fā)器:在時鐘上升沿的作用下,T=0輸出不變,T=1輸出翻轉(zhuǎn)。(3)實驗內(nèi)容:設(shè)計上升沿觸發(fā)的同步復(fù)位的D觸發(fā)器及上升沿觸發(fā)的T觸發(fā)器,分別利用Quartus對程序進行編輯輸入、編譯及仿真。上升沿觸發(fā)的同步復(fù)位的D觸發(fā)器library ieee; use ieee.std_logic_1164.all; use ieee.std_logi

10、c_signed.all; entity syndff is port(d,clk,reset:in std_logic; q,qb:out std_logic); end syndff; architecture dff_art of syndff is begin process(clk) begin if (clkevent and clk=1) then if (reset=0) then q=0; qb=1; else q=d; qb=not d; end if; end if; end process; end dff_art; T觸發(fā)器源程序代碼:library ieee; us

11、e ieee.std_logic_1164.all; use ieee.std_logic_signed.all; entity tff is port(t,clk: in std_logic; q: out std_logic); end; architecture tff_art of tff is signal q_temp: std_logic; begin p1:process(clk,q_temp) begin if rising_edge(clk) then if t=1 then q_temp=not q_temp; else q_temp=q_temp; end if; en

12、d if; q=q_temp; end process; q=q_temp; end tff_art;(4)實驗報告寫出D觸發(fā)器及T觸發(fā)器的程序代碼及原理,找出D觸發(fā)器的錯誤及T觸發(fā)器的警告,說明其錯誤原因并改正,最后給出兩個觸發(fā)器的波形仿真結(jié)果。實驗五 十六進制數(shù)碼管顯示(1)實驗?zāi)康膶W(xué)習(xí)7段數(shù)碼顯示譯碼器設(shè)計,學(xué)習(xí)VHDL的case設(shè)計方法。(2)實驗儀器計算機一臺,EL教學(xué)實驗箱(EDA-VI),QUARTUS II(3)實驗原理七段數(shù)碼管由8個(a,b,c,d,e,f,g,dp)按照一定位置排列的發(fā)光二極管構(gòu)成,通常采取共陰極或者共陽極的設(shè)計,將8個二極管的同一極接在一起,通過分別控制

13、另外的8個電極的電平,使二極管導(dǎo)通(發(fā)光)或截止(不發(fā)光)。本實驗采用共陰極設(shè)計,高電平點亮。七段數(shù)碼顯示譯碼器的功能就是根據(jù)需要顯示的字符,輸出能夠控制七段數(shù)碼管顯示出該字符的編碼。(4)實驗內(nèi)容用VHDL設(shè)計7段數(shù)碼管顯示電路設(shè)計,利用case語句實現(xiàn)數(shù)碼管上顯示字符的電路。十六進制數(shù)碼管顯示源代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY shuma ISPORT (clk:IN STD_LOGIC;vga:out std_logic_vector (3 downto 0

14、);sel:out std_logic_vector(7 downto 0);seg_led: out std_logic_vector (7 downto 0) ) ;END;ARCHITECTURE one OF shuma ISsignal cq:std_logic_vector(3 downto 0);BEGINvga=0010;sel=11111110;PROCESS(clk,cq)BEGINIF (clk=1 AND clkEVENT) THENcqseg_ledseg_ledseg_ledseg_ledseg_ledseg_ledseg_ledseg_ledseg_ledseg_

15、ledseg_ledseg_ledseg_ledseg_ledseg_ledseg_led NULL;END CASE;end process;END;用QuartusII對中的設(shè)計進行編譯、綜合、仿真,驗證其功能是否與預(yù)期一致。管腳配置: seg_led0:PIN_105seg_led1:PIN_104seg_led2:PIN_101seg_led3:PIN_100seg_led4:PIN_85seg_led5:PIN_84seg_led6:PIN_83seg_led7:PIN_82sel0:PIN_86sel1:PIN_87sel2:PIN_88sel3:PIN_93sel4:PIN_94

16、sel5:PIN_95sel6:PIN_98sel7:PIN_99vga0:PIN_162vga1:PIN_161vga2:PIN_164vga3:PIN_163clk:PIN_28注意:未分配管腳:Assignments-device.-device&pin options -unused pins-Reserve all unused pins:As input tri-stated。通過QuartusII的usb-blaster,將設(shè)計下載到實驗電路上進行硬件測試。(4)實驗連線clk的頻率由SW17-SW20控制,用導(dǎo)線將IO3與IOCLK相連;SW17-SW20控制時鐘的頻率,011

17、1表示頻率為5Hz,1111表示時鐘頻率為1Hz,本實驗選用這兩個頻率進行測試,觀察數(shù)碼管顯示字符的變化。(5)實驗報告給出十六進制的數(shù)碼管的程序代碼、原理,自己改寫程序選擇不同的數(shù)碼管顯示字符,并提供實驗過程中的拍攝圖片。 實驗六 3-8譯碼器設(shè)計(1)實驗?zāi)康耐ㄟ^3-8譯碼器的設(shè)計,掌握組合邏輯電路的設(shè)計方法,熟悉軟件的使用,并利用實驗箱對程序進行硬件測試。(2)實驗儀器計算機一臺,EL教學(xué)實驗箱(EDA-VI),QUARTUS II(3)實驗原理輸入輸出g1 g2ag2bC B A Y0 Y1Y2Y3Y4Y5Y6Y70 X X X X X 1 1 1 1 1 1 1 1 1 0 0 0

18、0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 利用case語句設(shè)計3-8譯碼器,譯碼器的輸出接LED燈,為低電平點亮。(4)實驗內(nèi)容3-8譯碼器源程序代碼:LIBRARY ieee;USE ieee.std_log

19、ic_1164.ALL;ENTITY decoder3_8 ISPORT(a,b,c,g1,g2a,g2b:IN STD_LOGIC;VGA:out std_logic_vector(3 downto 0);Y: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END decoder3_8;ARCHITECTURE fun OF decoder3_8 ISSIGNAL indata: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINVGA=“0001”; indata YYYYYYYYY=XXXXXXXX;END CASE;ELSEYdevice.-devi

20、ce&pin options -unused pins-Reserve all unused pins:As input tri-stated。(5)實驗連線C、B、A、G1、G2A、G2B分別對應(yīng)EDA-VI實驗箱底板SW1-SW6;Y0-Y7分別對應(yīng)EDA-VI實驗箱底板IO9-IO16;用導(dǎo)線將IO9-IO16與8位LED L1-L8相連,LED為低電平點亮;功能選擇位VGA3.0狀態(tài)為0001,即16位撥碼開關(guān)SW1-SW6被選中輸出到總線D15.0;控制撥碼開關(guān)SW1-SW6,觀察L1-L8顯示狀態(tài)是否與預(yù)期輸出結(jié)果一致。(6)實驗報告簡述3-8譯碼器原理,并根據(jù)提供的程序代碼改用i

21、f語句描述,并給出其波形仿真結(jié)果;根據(jù)撥碼開關(guān)的控制位置,簡述實驗箱變化情況。實驗七 計數(shù)器的設(shè)計(1)實驗?zāi)康倪M一步學(xué)習(xí)并掌握Quartus II 開發(fā)系統(tǒng)的基本操作,熟悉設(shè)計計數(shù)器電路與仿真的方法,掌握CPLD/FPGA的開發(fā)流程。(2)實驗原理:計數(shù)器是邏輯電路中使用最廣泛的電路,并且在復(fù)雜電路的設(shè)計中幾乎離不開計數(shù)器。計數(shù)器的計數(shù)功能是在時鐘信號的控制下進行的,當(dāng)時鐘出現(xiàn)上升沿,則計數(shù)一次,以此類推,直至計數(shù)到最大值,在時鐘上升沿時,返回到起點。(3)實驗內(nèi)容設(shè)計一個簡單的4位二進制計數(shù)器,相當(dāng)于16進制計數(shù)器。library ieee; use ieee.std_logic_1164

22、.all;use ieee.std_logic_unsigned.all;entity cnt4 ISport( clk: in std_logic; q: out std_logic_vector(3 downto 0);end cnt4;architecture behave of cnt4 issignal q1: std_logic_vector(3 downto 0);begin process(clk) begin if (clkevent and clk = 1) then q1=q1+1; end if;end process; q=q1;end behave;利用Quartu

23、s II軟件進行編譯、仿真,驗證該計數(shù)器的功能。根據(jù)之前所學(xué)內(nèi)容,設(shè)計一個可以在實驗箱上顯示的計數(shù)器。(4)實驗報告給出計數(shù)器的程序代碼,提供波形仿真結(jié)果。實驗八 數(shù)控分頻器的設(shè)計(1)實驗?zāi)康膶W(xué)習(xí)數(shù)控分頻器的設(shè)計、分析和測試方法。(2)實驗原理分頻器電路的實質(zhì)其實就是計數(shù)器的設(shè)計。對于二進制計數(shù)器,每一個輸出端都是對前一個輸出端的二分頻。數(shù)控分頻器是利用計數(shù)器可并行預(yù)置的加法計數(shù)器完成的。方法是將計數(shù)器溢出位與預(yù)置數(shù)加載輸入信號加減即可。這種方法類似于單片機的定時器工作模式。(3)實驗內(nèi)容設(shè)計數(shù)控分頻器library ieee;use std_logic_1164.all;use std_l

24、ogic_unsigned.all;entity freq1 is port(clk: in std_logic; d: in std_logic_vector(7 downto 0);fout: out std_logic);end;architecture one of dvf issignal full: std_logic;beginp_reg:process(clk)variable cnt8: std_logic_vector(7 downto 0); begin if clkevent and clk=1 then if cnt8=“11111111” then- CNT8計數(shù)計

25、滿時 cnt8:=d; -輸入數(shù)據(jù)D被同步預(yù)置給CNT8 full=1; -溢出標志信號FULL輸出高電平elsecnt8:=cnt8+1; -否則繼續(xù)作加1計數(shù)full=0; -輸出溢出標志信號FULL為低電平 end if; end if;end process p_reg;p_div:process(full)variable cnt2: std_logic;beginif fullevent and full=1 thencnt2:=not cnt2; -如果溢出標志信號FULL為高電平,T觸發(fā)器輸出取反if cnt2=1thenfout=1;elsefout=0;end if;end

26、 if;end process p_div;end;利用Quartus II軟件進行編譯、仿真,驗證該數(shù)控分頻器的功能。(4)思考題根據(jù)上述數(shù)控分頻器源程序,對程序進行修改,可以完成任意分頻功能。具體實現(xiàn)的分頻數(shù)根據(jù)課堂隨機設(shè)置,每小組均不同。(5)實驗報告給出數(shù)控分頻器的程序代碼,實驗步驟并提供波形仿真結(jié)果。寫出課堂隨機分頻器的源程序代碼。實驗九 鎖存器的設(shè)計(1)實驗?zāi)康恼莆丈烧Z句的設(shè)計方法,熟悉Quartus II軟件的操作及仿真過程。(2)實驗原理鎖存器是一種用來暫時保存數(shù)據(jù)的邏輯器件,當(dāng)使能輸入端ena為高電平時,鎖存器處于工作狀態(tài),輸出q3.0=d3.0;當(dāng)輸入端ena為低電平,

27、鎖存器的狀態(tài)保持不變。本實驗利用生成語句來完成一個4位鎖存器的設(shè)計。(3)實驗內(nèi)容設(shè)計1位鎖存器library ieee;use ieee.std_logic_1164.all;entity latch1b isport(d: in std_logic; ena: in std_logic; -使能端 q: out std_logic);end latch1b;architecture art of latch1b is begin process(d,ena) begin if ena=1 thenq=d; end if;end process;end art;利用Quartus II軟件進

28、行編譯、仿真,驗證一位鎖存器的功能。將元件聲明裝入my_package程序包中,便于生成語句的元件例化。library ieee;use ieee.std_logic_1164.all;package my_package iscomponent latch1b port(d:in std_logic; ena:in std_logic; q: out std_logic);end component;end;利用生成語句重復(fù)調(diào)用4個latch1b來完成頂層文件的設(shè)計。library ieee;use ieee.std_logic_1164.all;use work.my_package.al

29、l; -用戶自定義程序包entity latch4d isport(d: in std_logic_vector(3 downto 0); oen: in bit; q:out std_logic_vector(3 downto 0);end latch4d;architecture one of latch4d is signal sig_save:std_logic_vector(3 downto 0);begin getlatch:for n in 0 to 3 generate-循環(huán)例化4個1位鎖存器lat : latch1b port map(d(n),g,sig_save(n);

30、-關(guān)聯(lián) end generate; q=sig_save when oen=0else ZZZZ;end one;利用Quartus II軟件進行編譯、仿真,并驗證4位鎖存器的功能。(3)思考題根據(jù)上述生成語句描述的鎖存器,用元件例化語句完成上述鎖存器的設(shè)計。(4)實驗報告寫出鎖存器的兩種描述語句的源程序,給出波形仿真結(jié)果,分析比較其結(jié)果。實驗十 4選1多路選擇器(1)實驗?zāi)康耐ㄟ^4選1多路選擇器的設(shè)計,掌握if語句、case語句、when.else語句及with.select語句的使用及相互轉(zhuǎn)換,熟悉軟件的使用。(2)實驗原理4選1多路選擇器關(guān)系表輸入輸出XS1S0Ya00ab01bc10c

31、d11d其中輸入數(shù)據(jù)端口為a、b、c、d,s1、s0為控制信號,Y為輸出。令S1S0=“00”時,輸出Y=a;令S1S0=“01”時,輸出Y=b;令S1S0=“10”時,輸出Y=c; 令S1S0=“11時,輸出Y=d;(3)實驗內(nèi)容4選1多路選擇器參考代碼:LIBRARY ieee;USE ieee.std_logic_1164.all;entity mux4 is port( input: in std_logic_vector(3 downto 0); a,b: in std_logic; y: out std_logic); end mux4; architecture be_mux4

32、OF mux4 is signal sel: std_logic_vector(1 downto 0); begin sel=b&a; process(input,sel) begin if(sel=00) then y=input(0);elsif (sel=01) then y=input(1);elsif (sel=10) then y=input(2);else y=input(3);end if;end process;end be_mux4;(4)思考題根據(jù)上述if語句4選1多路選擇器的程序,完成case語句、when.else語句及with.select語句的描述。(5)實驗報告要求寫出四種語句的4選1多路選擇器的程序、原理及波形仿真結(jié)果。實驗十一 循環(huán)彩燈控制器的設(shè)計(1)實驗?zāi)康恼莆諣顟B(tài)機的設(shè)計方法,鞏固case語句及Quartus II軟件的操作與仿真。(2)實驗原理設(shè)計一個循環(huán)彩燈控制器,該控制器控制LED 8個發(fā)光管循環(huán)發(fā)亮。要求:LED等按照一定的變化規(guī)律進

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論