FPGA實訓(xùn)報告_第1頁
FPGA實訓(xùn)報告_第2頁
FPGA實訓(xùn)報告_第3頁
FPGA實訓(xùn)報告_第4頁
FPGA實訓(xùn)報告_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實 訓(xùn) 報 告專 業(yè) 計算機(jī)科學(xué)與技術(shù)(計算機(jī)網(wǎng)絡(luò)) 班 級 計科1001班 學(xué) 號 2010130176 姓 名 譚海波 實訓(xùn)課程 可編程邏輯器件設(shè)計 教師姓名 張建華 實訓(xùn)名稱 BCD計數(shù)器的設(shè)計 實訓(xùn)時間 2012.12.17實驗?zāi)康?1.用verilog語言設(shè)計一個60進(jìn)制的計數(shù)器,并仿真結(jié)果。 2.初步掌握verilog的運用和開發(fā)流程步驟。實驗步驟1、運行Quartus II軟件,按步驟新建工程,命名為COUNT60。2、建立文件Verilog HDL File,在文件中寫入程序,保存文件名為COUNT60.v。編譯,直到不再有錯誤為止。3、建立文件vertor Waveform

2、file,添加輸入輸出點,為輸入點賦值,保存文件名為COUNT60.vwf,仿真,得出波形圖。3、根據(jù)所給器件的管腳圖,分配管腳,保存,編譯。4、將開發(fā)板連接電腦,將生成的.sof文件,打開,并點擊start開始仿真,得出結(jié)果。 實訓(xùn)內(nèi)容 1.程序module COUNT60(qout,cout,data,load,cin,reset,clk);output7:0 qout;output cout;input7:0 data;input load,cin,clk,reset;reg7:0 qout;always (posedge clk) begin if(reset=1)qout<=8

3、'b000000000;else if (load=1)qout<=data;else if (cin=1)begin if(qout3:0=9) begin qout3:0<=0; if (qout7:4=5) qout7:4<=0;else qout7:4<=qout7:4+1; endelse qout3:0<=qout3:0+1;endendassign cout=(qout=8'h59)&cin)?1:0; endmodule2、 仿真波形圖結(jié)果及其分析 通過上面的仿真圖可以看出,仿真結(jié)果是我們所希望的,顯示為60進(jìn)制,但需要注意

4、的是qout的顯示需要用hexadecimal進(jìn)制格式顯示,不然結(jié)果不能正確的顯示。實訓(xùn)名稱 基數(shù)分頻器實訓(xùn)時間 2012.12.17實驗?zāi)康?1.運用verilog語言設(shè)計一個頻數(shù)為13的分頻器,并仿真結(jié)果。 2.熟練練習(xí)verilog語言的設(shè)計。實驗步驟1、運行Quartus II軟件,按步驟新建工程,命名為div13。2、建立文件Verilog HDL File,在文件中寫入程序,保存文件名為div13.v。編譯,直到不再有錯誤為止。3、建立文件vertor Waveform file,添加輸入輸出點,為輸入點賦值,保存文件名為div13.vwf,仿真,得出波形圖。3、根據(jù)所給器件的管腳

5、圖,分配管腳,保存,編譯。4、將開發(fā)板連接電腦,將生成的.sof文件,打開,并點擊start開始仿真,得出結(jié)果。 實訓(xùn)內(nèi)容 1.分頻器設(shè)計的程序module div13(clkdiv,clk);output clkdiv; input clk; reg3:0cnt1,cnt2;reg clk_temp1,clk_temp2; always (posedge clk)begin if(cnt1 = 12)begin cnt1 <=3'b000; endelsebegin cnt1 <= cnt1 +1'b1; endif(cnt1 =3'b000)begin

6、clk_temp1 =1'b1; endif(cnt1 =6)begin clk_temp1 =0; endend always (posedge clk)begin if(cnt2 = 12)begin cnt2 <=3'b000; endelsebegin cnt2 <=cnt2 +1'b1; endif(cnt2 =3'b000)begin clk_temp2 =1; endif(cnt2 =6)begin clk_temp2 =0; endend assign clkdiv = clk_temp1 |clk_temp2;endmodule2、

7、分頻器設(shè)計的仿真波形圖如下結(jié)果及其分析根據(jù)上面的仿真圖可以看出,本實驗結(jié)果達(dá)到了我們的要求,結(jié)果cnt1和cnt2都顯示為13的分頻器。因此得出的結(jié)果符合要求。 實訓(xùn)名稱 流水燈設(shè)計實訓(xùn)時間 2012.12.19實驗?zāi)康?1.用verilog語言設(shè)計一個流水燈,并仿真得出結(jié)果。實驗步驟 1、運行Quartus II軟件,按步驟新建工程,命名為ledstar。2、建立文件Verilog HDL File,在文件中寫入程序,保存文件名為cnt25.v、shift8.v和ledstar.v三個文件。每個文件都需要編譯,直到不再有錯誤為止。3、分別建立每個v文件對應(yīng)的vertor Waveform f

8、ile,添加輸入輸出點,為輸入點賦值,保存文件名為cnt25.vwf、shift8.vwf和ledstar.vwf,分別仿真,得出波形圖。3、根據(jù)所給器件的管腳圖,分配管腳,保存,編譯。4、將開發(fā)板連接電腦,將生成的.sof文件,打開,并點擊start開始仿真,得出結(jié)果。 實訓(xùn)內(nèi)容1.程序(1)module cnt25(clk,reset,cnt);input clk;input reset;output 5:0 cnt;reg 5:0 cnt;always(posedge clk or posedge reset)begin if(reset=1'b1) cnt<=5'

9、d0; else if(cnt=5'd50) cnt<=5'd0; else cnt<=cnt+1'b1;endendmodule(2)module shift8(clk,reset,cnt,led);input clk;input reset;input5:0 cnt;output 7:0 led;reg 7:0 led;always(posedge clk or posedge reset)begin if(reset=1'b1) led<=8'b00000001; else if(cnt=5'd50) begin led7

10、:1<=led6:0; led0<=led7; endendendmodule(3)module ledstar(clk,reset,led);input clk;input reset;output7:0 led;wire7:0 led;wire5:0 cnt;cnt25u_cnt25(.clk(clk),.reset(reset),.cnt(cnt);shift8 u_shift8(.clk(clk),.reset(reset),.cnt(cnt),.led(led);endmodule2、仿真波形圖結(jié)果及其分析 通過以上三個程序的關(guān)系,可以得出流水燈顯示的正確結(jié)果,如上圖的仿

11、真圖,但要注意ledstar中必須正確的運用前面兩個程序,否則不能正確得出結(jié)果。 實訓(xùn)名稱 七段數(shù)碼管的設(shè)計實訓(xùn)時間 2012.12.19實驗?zāi)康?1.用verilog語言設(shè)計七段數(shù)碼管的動態(tài)顯示,并仿真結(jié)果。 2.為自動售貨機(jī)的和數(shù)字時鐘顯示基礎(chǔ)模塊。實驗步驟1、運行Quartus II軟件,按步驟新建工程,命名為seg7x8。2、分別建立文件Verilog HDL File,在文件中寫入程序,保存文件名為seg7x8.v和seg7x8_drive.v。編譯,直到不再有錯誤為止。3、分別為對應(yīng)的v文件建立文件vertor Waveform file,添加輸入輸出點,為輸入點賦值,保存文件名為

12、seg7x8.vwf和seg7x8_drive.vwf,仿真,得出波形圖。3、根據(jù)所給器件的管腳圖,分配管腳,保存,編譯。4、將開發(fā)板連接電腦,將生成的.sof文件,打開,并點擊start開始仿真,得出結(jié)果。 實訓(xùn)內(nèi)容 1.程序(1)module seg7x8(clk_div,data_out,rst);input clk_div,rst;output6:0 data_out;reg6:0 data_out;reg1:0 state; reg3:0 scan;always(posedge clk_div or posedge rst)beginif(rst)state<=0;elsest

13、ate<=state+1'b1;endalways (state)case (state)2'b00 : scan<=4'b0001;2'b01 : scan<=4'b0010;2'b10 : scan<=4'b0100;2'b11 : scan<=4'b1000;default: scan<=4'b0000;endcasereg3:0 bin;always(state)case (state)2'b00 : bin<=4'd9;2'b01 : bi

14、n<=4'd5;2'b10 : bin<=4'd2;2'b11 : bin<=4'd7;default: bin<=4'd0;endcasealways(bin)begin case(bin) 4'b0000: data_out = 7'b0111111; 4'b0001: data_out = 7'b0000110; 4'b0010: data_out = 7'b1011011; 4'b0011: data_out = 7'b1001111; 4'b

15、0100: data_out = 7'b1100110; 4'b0101: data_out = 7'b1101101; 4'b0110: data_out = 7'b1111100; 4'b0111: data_out = 7'b0000111; 4'b1000: data_out = 7'b1111111; 4'b1001: data_out = 7'b1100111; default: data_out = 7'b0000000; endcaseendendmodule(2)module se

16、g7x8_drive( input i_clk, input i_rst_n, input 31:0 i_data, output 7:0 o_seg, output 2:0 o_sel )reg 16:0 cnt; always (posedge i_clk, posedge i_rst_n) if (!i_rst_n) cnt <= 0; else cnt <= cnt + 1'b1;wire seg7_clk = cnt16; reg 2:0 seg7_addr; always (posedge seg7_clk,posedge i_rst_n) if (!i_rst

17、_n) seg7_addr <= 0; else seg7_addr <= seg7_addr + 1'b1; reg 2:0 o_sel_r; always case (seg7_addr) 0 : o_sel_r = 3'b111; 1 : o_sel_r = 3'b110; 2 : o_sel_r = 3'b101; 3 : o_sel_r = 3'b100; 4 : o_sel_r = 3'b011; 5 : o_sel_r = 3'b010; 6 : o_sel_r = 3'b001; 7 : o_sel_r

18、 = 3'b000; endcasereg 3:0 seg_data_r; always case (seg7_addr) 0 : seg_data_r = i_data3:0; 1 : seg_data_r = i_data7:4; 2 : seg_data_r = i_data11:8; 3 : seg_data_r = i_data15:12; 4 : seg_data_r = i_data19:16; 5 : seg_data_r = i_data23:20; 6 : seg_data_r = i_data27:24; 7 : seg_data_r = i_data31:28;

19、 endcasereg 7:0 o_seg_r; always (posedge i_clk or posedge i_rst_n) if (!i_rst_n) o_seg_r <= 8'hFF; else case(seg_data_r) 4'h0 : o_seg_r <= 8'hC0; 4'h1 : o_seg_r <= 8'hF9; 4'h2 : o_seg_r <= 8'hA4; 4'h3 : o_seg_r <= 8'hB0; 4'h4 : o_seg_r <= 8&#

20、39;h99; 4'h5 : o_seg_r <= 8'h92; 4'h6 : o_seg_r <= 8'h82; 4'h7 : o_seg_r <= 8'hF8; 4'h8 : o_seg_r <= 8'h80; 4'h9 : o_seg_r <= 8'h90; 4'hA : o_seg_r <= 8'h88; 4'hB : o_seg_r <= 8'h83; 4'hC : o_seg_r <= 8'hC6; 4

21、9;hD : o_seg_r <= 8'hA1; 4'hE : o_seg_r <= 8'h86; 4'hF : o_seg_r <= 8'h8E; endcaseassign o_sel = o_sel_r; assign o_seg = o_seg_r; endmodule2、仿真波形圖結(jié)果及其分析由上面的仿真圖可以看出結(jié)果為數(shù)碼管的動態(tài)顯示為正確的。實訓(xùn)名稱 自動售貨機(jī)實訓(xùn)時間 2012.12.20實驗?zāi)康?用verilog語言設(shè)計自動售貨機(jī),有5塊,10塊,20塊三種面值,現(xiàn)在賣15元的貨物,寫出程序,實現(xiàn)功能,并仿真結(jié)果。實驗

22、步驟1、運行Quartus II軟件,按步驟新建工程,命名為shj。2、建立文件Verilog HDL File,在文件中寫入程序,保存文件名為shj.v。編譯,直到不再有錯誤為止。3、建立文件vertor Waveform file,添加輸入輸出點,為輸入點賦值,保存文件名為shj.vwf,仿真,得出波形圖。3、根據(jù)所給器件的管腳圖,分配管腳,保存,編譯。4、將開發(fā)板連接電腦,將生成的.sof文件,打開,并點擊start開始仿真,得出結(jié)果。 實訓(xùn)內(nèi)容 1.程序module shj(clk,rst,dis_mony,dis_price,btn_ok,btn_mon,btn_sell,led_w

23、arn,led,beep);input clk,rst,btn_ok;input 2:0 btn_mon;input 3:0 btn_sell;output 3:0 led;output led_warn;output 11:0 dis_mony;output 11:0 dis_price;output beep;reg clk_500Hz;reg 3:0 led;reg led_warn;reg 11:0 dis_mony;reg 11:0 dis_price; reg 31:0 counter;reg 9:0 price,price_all;reg 1:0 flag = 2'b00

24、;reg beep=0;parameter COUNT1 = 25'd10000;always (posedge clk) begin if(counter= 0) begin counter <= COUNT1; clk_500Hz <= clk_500Hz; end else counter <= counter-1; end always (posedge rst or posedge clk) begin if(!rst) begin led = 4'b0000; price_all = 0; led_warn = 0; price = 0; beep

25、 = 0; end else begin case(btn_mon) 3'b00:begin price_all = 5;end 3'b01:begin price_all = 10;end 3'b10:begin price_all = 15;end 3'b11:begin price_all = 20;end default:begin price_all = 0;end endcase case(btn_sell) 4'b0001:begin price = 5; end 4'b0010:begin price = 10; end 4

26、9;b0100:begin price = 15; end 4'b1000:begin price = 20; end default:begin price = 0; end endcase if(btn_ok = 1) begin if(price_all < price) begin led_warn = 1; price = 0; end else begin price_all = price_all-price; beep = 1; case(price) 5: begin led = 4'b0001;end 10:begin led = 4'b001

27、0;end 15:begin led = 4'b0100;end 20:begin led = 4'b1000;end endcase end end else beep = 0; end endalways (posedge clk_500Hz)begin case(flag) 2'b00: begin dis_mony <= 4'b1110,led7(price_all%10),1'b1; dis_price <= 4'b1110,led7(price%10),1'b1; flag = 2'b01; end 2&#

28、39;b01: begin dis_mony <= 4'b1101,led7(price_all/10),1'b0; dis_price <= 4'b1101,led7(price/10),1'b0; flag = 2'b00; end endcaseendfunction 6:0 led7; input 3:0 dis_input; begin case (dis_input) 0 : led7 = 7'b111_1110; 1 : led7 = 7'b011_0000; 2 : led7 = 7'b110_1101

29、; 3 : led7 = 7'b111_1001; 4 : led7 = 7'b011_0011; 5 : led7 = 7'b101_1011; 6 : led7 = 7'b101_1111; 7 : led7 = 7'b111_0000; 8 : led7 = 7'b111_1111; 9 : led7 = 7'b111_0011; default: led7 = 7'b111_1111; endcase endendfunctionendmodule2、仿真波形圖結(jié)果及其分析 根據(jù)上圖可以得出我們需要的結(jié)果,所以程序?qū)崿F(xiàn)了我

30、們需求的功能,當(dāng)15元的貨物賣出時,當(dāng)各個狀態(tài)的輸入可以看到不同的狀態(tài)結(jié)果。實訓(xùn)名稱 數(shù)字時鐘的設(shè)計實訓(xùn)時間 2012.12.20實驗?zāi)康?用verilog語言設(shè)計數(shù)字時鐘,并仿真結(jié)果。實驗步驟1、運行Quartus II軟件,按步驟新建工程,命名為div13。2、建立文件Verilog HDL File,在文件中寫入程序,保存文件名為div13.v。編譯,直到不再有錯誤為止。3、建立文件vertor Waveform file,添加輸入輸出點,為輸入點賦值,保存文件名為div13.vwf,仿真,得出波形圖。3、根據(jù)所給器件的管腳圖,分配管腳,保存,編譯。4、將開發(fā)板連接電腦,將生成的.sof

31、文件,打開,并點擊start開始仿真,得出結(jié)果。 實訓(xùn)內(nèi)容 1.程序(1)module clk_count(clk_1,hor,min,sec);input clk_1;output 4:0 hor;output 5:0 min,sec;reg scarry,mcarry;reg 4:0 hor;reg 5:0 min,sec;always(posedge clk_1)begin if(sec=6'b111011) begin sec<=6'b000000; scarry<=1'b1; end else begin sec<=sec+1'b1;

32、 scarry<=1'b0; endendalways(posedge scarry)begin if(min=6'b111011) begin min<=6'b000000; mcarry<=1'b1; end else begin min<=min+1'b1; mcarry<=1'b0; endendalways(posedge mcarry)begin if(hor=5'b10111) hor<=5'b00000; else hor<=hor+1'b1;endendmodul

33、e (2)module clk_div(clk,clk_1);input clk;output clk_1;reg 24:0 counter;reg clk_1;always(posedge clk)begin if(counter=25'h17D7840) begin counter<=25'b1; clk_1<=clk_1; end else counter<=counter+1'b1;endendmodule(3)module dis_ctl(hor,min,sec,horh,horl,minh,minl,sech,secl);input 4:0

34、 hor;input 5:0 min,sec;output 1:0 horh;output 2:0 minh,sech;output 3:0 horl,minl,secl;reg 1:0 horh;reg 2:0 minh,sech;reg 3:0 horl,minl ,secl;reg 4:0 htemp;reg 5:0 mtemp,stemp;always(hor)beginhorh=(hor>5'b10111)?2'bzz:(hor>=5'b10100)?2'b10:(hor>=5'b01010)?2'b01:(hor&g

35、t;=5'b00000)?2'b00:2'bzz; htemp=(hor>=5'b10111)?5'bzzzzz:(hor>=5'b10100)?hor-5'b10100:(hor>=5'b01010)?hor-5'b01010:hor; horl=htemp3:0;endalways(min)beginminh=(min>6'b111011)?3'bzzz:(min>=6'b110010)?3'b101:(min>=6'b101000)?3

36、9;b100:(min>=6'b011110)?3'b011:(min>=6'b010100)?3'b010:(min>=6'b001010)?3'b001:(min>=6'b000000)?3'b000:3'bzzz; mtemp=(min>=6'b111011)?6'bzzzzzz:(min>=6'b110010)?min-6'b110010:(min>=6'b101000)?min-6'b101000:(min>=6

37、9;b011110)?min-6'b011110:(min>=6'b010100)?min-6'b010100:(min>=6'b001010)?min-6'b001010:(min>=6'b000000)?min:6'bzzzzzz; minl=mtemp3:0;endalways(sec)begin sech=(sec>6'b111011)?3'bzzz:(sec>=6'b110010)?3'b101:(sec>=6'b101000)?3'b100:(sec>=6'b011110)?3

溫馨提示

  • 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

提交評論