2016年北航FPGA實驗報告_第1頁
2016年北航FPGA實驗報告_第2頁
2016年北航FPGA實驗報告_第3頁
2016年北航FPGA實驗報告_第4頁
2016年北航FPGA實驗報告_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電氣技術(shù)實踐 可編程邏輯器件fpga應(yīng)用開發(fā)實驗報告姓 名 班 級 學(xué) 號 2016年12月目 錄一、實驗?zāi)康?二、實驗要求1三、實驗內(nèi)容1四、實驗代碼及實驗結(jié)果11、4位二進(jìn)制加法計數(shù)器12、半加器33、rs觸發(fā)器34、數(shù)碼管十六進(jìn)制計數(shù)器55、跑馬燈76、鍵盤電路97、led點陣顯示128、多人搶答器18五、實驗感想18一、實驗?zāi)康?、熟悉使用可編程邏輯器件(altera公司fpga cyclone系列ep1c6q)。2、熟悉使用硬件描述語言vhdl。3、掌握fpga集成環(huán)境(altera公司fpga quartusii 9.0)開發(fā)流程。4、熟悉使用核心目標(biāo)系統(tǒng)板與接口電路等工作原理及其

2、功能模塊綁定信息。5、熟悉并掌握下載線方式和下載文件的選擇。二、實驗要求1、學(xué)習(xí)并掌握文本、圖形等輸入和時序、功能仿真方法。2、學(xué)習(xí)并熟悉門電路、組合電路、時序電路等單一模塊功能。3、學(xué)習(xí)并設(shè)計各種不同狀態(tài)機(jī)邏輯功能。4、學(xué)習(xí)并設(shè)計由單一模塊較多功能模塊集成系統(tǒng)集成方法。5、學(xué)習(xí)并選擇多種模式顯示(發(fā)光二極管顯示、米字型數(shù)碼管顯示、七段數(shù)碼管動態(tài)掃描或靜態(tài)掃描顯示、led點陣顯示各種字符和圖形或靜止或移動等方式、lcd液晶顯示各種字符和圖形或靜止或移動等方式)。6、根據(jù)自已的興趣和愿望,可從以下給定的實驗?zāi)夸浿羞x取或自已設(shè)定功能題目。7、實驗數(shù)目沒有要求,關(guān)鍵是看質(zhì)量,是否是自已編寫、調(diào)試、實

3、現(xiàn)。三、實驗內(nèi)容1、按指導(dǎo)書集成開發(fā)環(huán)境章節(jié)操作實現(xiàn)文本編程實例1和圖形編程實例2全過程。2、任選門電路、組合電路、時序電路實驗各完成一個其邏輯功能,其實現(xiàn)方案自已規(guī)定。在進(jìn)行fpga目標(biāo)器件輸入和輸出引腳綁定時,輸入引腳綁定高/低電平、單脈沖、各種分頻連續(xù)脈沖等多種信號,輸出引腳可綁定發(fā)光二極管、七段數(shù)碼管、led點陣等顯示模式。3、在完成1位十進(jìn)制計數(shù)器的基礎(chǔ)上,可增加完成2或3等多位十進(jìn)制計數(shù)器邏輯功能并用多位七段數(shù)碼管來顯示。4、用led點陣顯示任意字符、圖形等信息。四、實驗代碼及實驗結(jié)果1、4位二進(jìn)制加法計數(shù)器(1)實驗代碼library ieee;use ieee.std_logi

4、c_1164.all;use ieee.std_logic_unsigned.all;entity erjinzhi isport(clk,rst:in std_logic;q:out std_logic_vector(3 downto 0);end entity erjinzhi;architecture bhv of erjinzhi issignal q1:std_logic_vector(3 downto 0);beginprocess(rst,clk)beginif(rst=0)thenq1=0000;elsif(clkevent and clk = 1)thenq1=q1+1;en

5、d if;end process;q=q1;end architecture bhv;(2)管腳分配(3)實驗操作 輸入信號clk時鐘把fpga_ea2_p6(pin_p20)用導(dǎo)線與(frq_q21 1hz)連接、rst清零n18(sw-1)、輸出信號q3u12(led1)、q2v12(led2);q1v15(led3);q0w13(led4)。 把輸入信號rst設(shè)為“1”、clk時鐘(frq_q21 1hz) 用導(dǎo)線與(frq_q21 1hz)連接。(4)實驗現(xiàn)象輸出結(jié)果信息為第一、二、三、四個發(fā)光二極管按照000000011111循環(huán)顯示,符合實驗要求。(該實驗板上低電平為“1”)2、半

6、加器(1)實驗原理圖(2)管腳分配(3)實驗操作邏輯分析:輸入信號a、b;輸出信號分別為sum(和)、carry(進(jìn)位)。邏輯方程:sum=ab;carry=a * b。輸入信號an18(sw-1)、bm20(sw-2)、輸出信號sum(和)u12(led1)、carry(進(jìn)位)v12(led2)(4)實驗現(xiàn)象輸入信號a、b都為“0”,輸出結(jié)果信息為兩個發(fā)光二極管均為“滅”,說明和和進(jìn)位都為0;輸入信號a為“1”,b為“0”,輸出結(jié)果信息為第一個發(fā)光二極管“滅”,第二個發(fā)光二極管“亮”,說明和為“1”,進(jìn)位為0;輸入信號a為“0”,b為“1”,輸出結(jié)果信息為第一個發(fā)光二極管“滅”,第二個發(fā)光二

7、極管“亮” 。說明和為“1”,進(jìn)位為“0”;輸入信號a、b都為“1”,輸出結(jié)果信息為第一個發(fā)光二極管“亮” 第二個發(fā)光二極管“滅”,說明和為“0”,進(jìn)位為“1”.均符合設(shè)計要求3、rs觸發(fā)器(1)實驗代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity rs_clk isport( s,r,res :in std_logic;q,not_q:out std_logic);end rs_clk;architecture behav of rs_clk issignal sel1,sel2

8、: std_logic;beginprocess(res,sel1,sel2)beginif res=0 then sel1=0;sel2=1;elsif (s=1 and r=0) then sel1=1;sel2=0;elsif (s=0 and r=1) then sel1=0;sel2=1;elsif (s=0 and r=0) then sel1=sel1; sel2=sel2;end if;q=sel1;not_q=sel2;end process;end behav;(2)管腳分配(3)實驗操作(3)實驗現(xiàn)象將實驗現(xiàn)象總結(jié)為rs觸發(fā)器特性表,其中x指0或1均可;輸入為”1”指sw

9、輸入為高,輸入為”0”指sw輸入為低;輸出為”1”指對應(yīng)led燈滅(實驗臺的led燈為高電平滅),輸出為”0”指對應(yīng)led燈亮。clk觸發(fā)輸入s輸入r原來的q新的輸出q*100x保持原狀11011110011011010100111x不定狀態(tài)0xxx保持原狀4、數(shù)碼管十六進(jìn)制計數(shù)器(1)實驗代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity motor isport(clk:in std_logic;rst:in std_logic;sel:out std_logic;q:out s

10、td_logic_vector(3 downto 0); d: out std_logic_vector(7 downto 0);end entity;architecture b1 of motor is signal q1,q2:std_logic_vector(3 downto 0);beginprocess(clk,rst)beginif clkevent and clk=1 thenq1=q1+1;q2=0010;end if ;end process;q=q2;process(q1)beginif(rst=1) then seldddddddddddddddd=10001110;e

11、nd case;end if;end process;end;(2)管腳分配(3)實驗現(xiàn)象將clk接入較低頻率,這樣可以清晰地觀察數(shù)碼管從0f(16進(jìn)制數(shù))的轉(zhuǎn)變,完成一個循環(huán)之后,自動重新從0開始顯示,進(jìn)入下一個循環(huán)5、跑馬燈(1)實驗代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led isport(clk:in std_logic;rst:in std_logic;q :out std_logic_vector(7 downto 0);end;architecture l

12、ed of led isconstant s0:std_logic_vector(1 downto 0):=00; constant s1:std_logic_vector(1 downto 0):=01;constant s2:std_logic_vector(1 downto 0):=10;constant s3:std_logic_vector(1 downto 0):=11;signal present:std_logic_vector(1 downto 0); signal q1:std_logic_vector(7 downto 0);signal count:std_logic_

13、vector(3 downto 0);beginprocess(rst,clk)beginif(rst=0)then present=s0;q10);elsif(clkevent and clk=1)thencase present iswhen s0 = if(q1=00000000)then q1=10000000;else if(count=0111)thencount0);q1=00000001;present=s1;else q1=q1(0) & q1(7 downto 1);count=count+1;present if(count=0111)then count0);q1=10

14、000001;present=s2;else q1=q1(6 downto 0) & q1(7);count=count+1;present if(count=0011)thencount0);q1=00011000;present=s3;else q1(7 downto 4)=q1(4) & q1(7 downto 5);q1(3 downto 0)=q1(2 downto 0) & q1(3);count=count+1;present if(count=0011)then count0);q1=10000000;present=s0;else q1(7 downto 4)=q1(6 do

15、wnto 4) & q1(7);q1(3 downto 0)=q1(0) & q1(3 downto 1);count=count+1;present=s3;end if;end case;end if;end process;q=q1;end;(2)管腳分配(3)實驗現(xiàn)象實驗開始,除了最左邊的led燈,其余實驗箱上一排led顯示器全都點亮;然后隨著接入clk觸發(fā)信號的頻率,每一個觸發(fā)脈沖,滅的燈往右移動一位(原來滅的燈的右邊一位燈滅),而原來滅的燈重新點亮;當(dāng)最右邊一個燈滅了之后,下一個觸發(fā)脈沖會重置循環(huán),即又開始最左邊的燈滅,其余的燈亮。這樣從視覺上就是一個黑點從左側(cè)往右側(cè)不斷平移,一次移

16、動一位,到達(dá)右側(cè)終端后,黑點再次回到左側(cè),進(jìn)入下一個周期。6、鍵盤電路(1)實驗代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity keyboard isport(clk: in std_logic; start:in std_logic; kbcol: in std_logic_vector(3 downto 0); kbrow: out std_logic_vector(3 downto 0); seg7: out std

17、_logic_vector(6 downto 0); scan: out std_logic_vector(7 downto 0) );end keyboard;architecture bev of keyboard issignal count: std_logic_vector(1 downto 0);signal sta: std_logic_vector(1 downto 0);beginscan= 00000001; a:process(clk)beginif(clk event and clk=1) thencount kbrow=0111;sta kbrow=1011;sta

18、kbrow=1101;stakbrow=1110; stakbrow=1111;end case;end if; end process b;process(clk,start) beginif start=0 thenseg7 case kbcol is when 1110=seg7seg7seg7seg7seg7case kbcol iswhen 1110= seg7 seg7 seg7 seg7 seg7case kbcol iswhen 1110= seg7 seg7 seg7 seg7 seg7case kbcol iswhen 1110= seg7 seg7 seg7 seg7 s

19、eg7 seg7=0000000;end case;end if; end if; end process c;end bev;(2)管腳分配(3)實驗操作將sw1撥到1,按下鍵盤上相應(yīng)的按鍵,如按下5(4)實驗現(xiàn)象led顯示按下鍵位對應(yīng)的數(shù)字7、led點陣顯示(1)實驗代碼library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity dianzhen is port(clk:in std_logic; en:in std_logi

20、c; hang:out std_logic_vector(15 downto 0);count: out std_logic_vector(3 downto 0);end dianzhen; architecture dianzhen of dianzhen is signal osc:std_logic; signal x:std_logic_vector(0 downto 0);signal y:std_logic_vector(1 downto 0);signal count1:std_logic_vector(3 downto 0);signal count2:std_logic_ve

21、ctor(25 downto 0);signal data:std_logic_vector(15 downto 0); signal d0,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15:std_logic_vector(15 downto 0); signal a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15:std_logic_vector(15 downto 0);signal c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14

22、,c15:std_logic_vector(15 downto 0); signal b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15:std_logic_vector(15 downto 0);begin hang=data; a0=0000000000000000; a1=0000000000000000; a2=0000011111110000; a3=0000010000010000; a4=0000010000010000; a5=0000010000010000; a6=0000010000010000; a7=011111

23、1111111110; a8=0000010000010000; a9=0000010000010000;a10=0000010000010000;a11=0000010000010000;a12=0000011111110000;a13=0000000000000000;a14=0000000000000000;a15=0000000000000000; c0=0000000000000000; c1=0000000000000000; c2=0111111111111110; c3=0100000000000010; c4=0101000000000010; c5=010100000000

24、1010; c6=0101000010001010; c7=0101000010001010; c8=0101111111111010; c9=0101000010001010;c10=0101001010001010;c11=0101010000001010;c12=0101000000000010;c13=0100000000000010;c14=0111111111111110;c15=0000000000000000;b0=0000000000000000; b1=0010000000000000; b2=0001000000000000; b3=0000100000000000; b

25、4=0000010000000000; b5=0000001000000000; b6=0000000110000000; b7=0000000011111110;b8=0000000110000000;b9=0000001000000000;b10=0000010000000000;b11=0000100000000000;b12=0001000000000000;b13=0010000000000000;b14=0000000000000000;a15=0000000000000000;process(osc,en,clk,x,y,count2) begin osc=not clk;x=1

26、; if(osc=1 and oscevent) then count2=count2+1;if (count2=100000) theny=y+1;count20);if(y=10)theny=00;end if;end if;if(x=0)then if(en=1)then if count1=0000 then data=d0; count1=0001; elsif count1=0001then data=d1; count1=0010; elsif count1=0010then data=d2; count1=0011; elsif count1=0011then data=d3;

27、 count1=0100; elsif count1=0100then data=d4; count1=0101; elsif count1=0101then data=d5; count1=0110; elsif count1=0110then data=d6; count1=0111; elsif count1=0111then data=d7; count1=1000;elsif count1=1000then data=d8; count1=1001;elsif count1=1001then data=d9; count1=1010;elsif count1=1010then dat

28、a=d10; count1=1011;elsif count1=1011then data=d11; count1=1100;elsif count1=1100then data=d12; count1=1101;elsif count1=1101then data=d13; count1=1110;elsif count1=1110then data=d14; count1=1111;elsif count1=1111then data=d15; count1=0000; end if; end if; elsif (x=1)then if(en=1)then if (y=01) then

29、if count1=0000 then data=c0; count1=0001; elsif count1=0001then data=c1; count1=0010; elsif count1=0010then data=c2; count1=0011; elsif count1=0011then data=c3; count1=0100; elsif count1=0100then data=c4; count1=0101; elsif count1=0101then data=c5; count1=0110; elsif count1=0110then data=c6; count1=

30、0111; elsif count1=0111then data=c7; count1=1000;elsif count1=1000then data=c8; count1=1001;elsif count1=1001then data=c9; count1=1010;elsif count1=1010then data=c10; count1=1011;elsif count1=1011then data=c11; count1=1100;elsif count1=1100then data=c12; count1=1101;elsif count1=1101then data=c13; c

31、ount1=1110;elsif count1=1110then data=c14; count1=1111;elsif count1=1111then data=c15; count1=0000;end if;elsif (y=00) then if count1=0000 then data=b0; count1=0001; elsif count1=0001then data=b1; count1=0010; elsif count1=0010then data=b2; count1=0011; elsif count1=0011then data=b3; count1=0100; el

32、sif count1=0100then data=b4; count1=0101; elsif count1=0101then data=b5; count1=0110; elsif count1=0110then data=b6; count1=0111; elsif count1=0111then data=b7; count1=1000;elsif count1=1000then data=b8; count1=1001;elsif count1=1001then data=b9; count1=1010;elsif count1=1010then data=b10; count1=10

33、11;elsif count1=1011then data=b11; count1=1100;elsif count1=1100then data=b12; count1=1101;elsif count1=1101then data=b13; count1=1110;elsif count1=1110then data=b14; count1=1111;elsif count1=1111then data=b15; count1=0000; end if;elsif (y=10) then if count1=0000 then data=a0; count1=0001; elsif cou

34、nt1=0001then data=a1; count1=0010; elsif count1=0010then data=a2; count1=0011; elsif count1=0011then data=a3; count1=0100; elsif count1=0100then data=a4; count1=0101; elsif count1=0101then data=a5; count1=0110; elsif count1=0110then data=a6; count1=0111; elsif count1=0111then data=a7; count1=1000;el

35、sif count1=1000then data=a8; count1=1001;elsif count1=1001then data=a9; count1=1010;elsif count1=1010then data=a10; count1=1011;elsif count1=1011then data=a11; count1=1100;elsif count1=1100then data=a12; count1=1101;elsif count1=1101then data=a13; count1=1110;elsif count1=1110then data=a14; count1=1

36、111;elsif count1=1111then data=a15; count1=0000; end if; end if; end if; end if;end if;end process;count=count1; end;(2)管腳分配(3)實驗操作把fpga_ea2_p6(pin_p20)用導(dǎo)線與(frq_q6 32768hz)連接(4)實驗現(xiàn)象可看到點陣依次清晰顯示 “中國人”三個漢字8、多人搶答器(1)實驗代碼搶答模塊:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity

37、 xuanshou is port(rst,clk2:in std_logic; s0,s1,s2,s3:in std_logic; states:buffer std_logic_vector(3 downto 0); light:buffer std_logic_vector(3 downto 0);warm:out std_logic);end xuanshou ;architecture one of xuanshou issignal st:std_logic_vector(3 downto 0);beginp1:process(s0,rst,s1,s2,s3,clk2) begin

38、 if rst=0 then warm=0;st=0000; elsif clk2event and clk2=1 then if (s0=1 or st(0)=1)and not( st(1)=1 or st(2)=1 or st(3)=1 ) then st(0)=1; end if ; if (s1=1 or st(1)=1)and not( st(0)=1 or st(2)=1 or st(3)=1 ) then st(1)=1; end if ; if (s2=1 or st(2)=1)and not( st(0)=1 or st(1)=1 or st(3)=1 ) then st(

39、2)=1; end if ; if (s3=1 or st(3)=1)and not( st(0)=1 or st(1)=1 or st(2)=1 ) then st(3)=1; end if ;warm=st(0) or st(1) or st(2) or st(3);end if ;end process p1;p2:process(states(0),states(1),states(2),states(3),light) begin if (st=0000) then states=0000; elsif (st=0001) then states=0001;elsif (st=0010) then states=0010; elsif (st=0100) then states=0011;elsif (st=1000) then states=0100; end if; light=st;end process p2;end one;倒計時模塊:library ieee;use ieee

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論