(EDA、FPGA)Verilog實(shí)驗(yàn)報(bào)告_第1頁(yè)
(EDA、FPGA)Verilog實(shí)驗(yàn)報(bào)告_第2頁(yè)
(EDA、FPGA)Verilog實(shí)驗(yàn)報(bào)告_第3頁(yè)
(EDA、FPGA)Verilog實(shí)驗(yàn)報(bào)告_第4頁(yè)
(EDA、FPGA)Verilog實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、fpga實(shí)驗(yàn)報(bào)告(學(xué)號(hào):2840710631)fpga實(shí)驗(yàn)報(bào)告學(xué) 號(hào): 姓 名: 院 系:微電子技術(shù)系專 業(yè):集成電路設(shè)計(jì)指 導(dǎo) 教 師:李 海2010年 12月實(shí)驗(yàn)一 一位全加器一、實(shí)驗(yàn)?zāi)康模?、通過此實(shí)驗(yàn)進(jìn)一步熟悉和掌握cpld/fpga開發(fā)軟件的使用方法。2、掌握verilog hdl語(yǔ)言的書寫格式及編程方法。3、學(xué)會(huì)對(duì)verilog hdl 代碼進(jìn)行編譯,檢查,改錯(cuò)。4、學(xué)會(huì)編寫代碼,驗(yàn)證1位全加器。5、學(xué)習(xí)簡(jiǎn)單時(shí)序電路的設(shè)計(jì)和硬件測(cè)試。二、實(shí)驗(yàn)內(nèi)容和原理:(一)實(shí)驗(yàn)內(nèi)容:本實(shí)驗(yàn)的內(nèi)容是建立一個(gè)1位全加器。具體內(nèi)容包括:(1)使用quartus ii建立工程、編寫程序;(2)進(jìn)行波形仿

2、真驗(yàn)證;(3)進(jìn)行硬件測(cè)試(二)實(shí)驗(yàn)原理:1、一位全加器包括輸入端a、b,進(jìn)位cin,和輸出count,sum,下圖是真值表: abcinsumcout00000100100101011001001101010101101111112、全加器的電路原理圖:三、實(shí)驗(yàn)步驟:1、啟動(dòng)quartus ii 軟件,新建空白的工程,名為:full_add.qdf。2、新建verilog hdl源文件full_add.v如下full.v:module full_add (a,b,cin,sum,count);input a,b,cin;output sum,count;assign count,sum=a+

3、b+cin;endmodule3、編譯完成,找出錯(cuò)誤,并改正,直到編譯無(wú)誤為止。4、新建測(cè)試文件如下:module full_add _test;reg a,b,cin;wire count,sum;full_add (a,b,cin,sum,count);initial begin a=0;b=0;cin=0;#1000 a=1;#1000 a=0;b=1;#1000 a=1;#1000 a=0;b=0;cin=1;#1000 a=1;#1000 a=0;b=1;#1000 a=1;#1000 $finish;endendmodule5、編譯測(cè)試文件,結(jié)合full_add.v,使用model

4、sim進(jìn)行時(shí)序仿真,觀察結(jié)果。四、實(shí)驗(yàn)數(shù)據(jù)和結(jié)果:比對(duì)該波形圖的電平與真值表的大小發(fā)現(xiàn)其一一對(duì)應(yīng)。五:實(shí)驗(yàn)總結(jié):通過本實(shí)驗(yàn),了解了quartus ii的基本使用方法,學(xué)會(huì)了對(duì)verilog hdl 代碼的調(diào)試,并能通過編譯、波形仿真和驗(yàn)證,最終得到了預(yù)想的結(jié)果。實(shí)驗(yàn)二 花樣流水燈一、實(shí)驗(yàn)?zāi)康模?、通過此實(shí)驗(yàn)進(jìn)一步熟悉和掌握cpld/fpga開發(fā)軟件的使用方法2、熟悉led燈的工作原理。3、掌握控制led燈的開關(guān)。4、編寫代碼實(shí)現(xiàn)led燈的花樣流水閃爍。5、學(xué)習(xí)簡(jiǎn)單時(shí)序電路的設(shè)計(jì)和硬件測(cè)試。二、實(shí)驗(yàn)內(nèi)容和原理:(一)實(shí)驗(yàn)內(nèi)容:本實(shí)驗(yàn)的內(nèi)容是建立可用與控制led流水燈的簡(jiǎn)單硬件電路,要求在smar

5、tsopc實(shí)驗(yàn)箱上實(shí)現(xiàn)led1led8發(fā)光二極管流水燈顯示。(二)實(shí)驗(yàn)原理:50mhz 的時(shí)鐘源,假如我們直接把它輸入。led燈的點(diǎn)亮和熄滅,主要是控制發(fā)光二極管的陰極置低電平到發(fā)光二極管led,由于人眼的延遲性,我們將無(wú)法看到led 閃爍,認(rèn)為它一直亮著。如果我們期望看到閃爍燈,就需要將時(shí)鐘源的頻率降低后再輸出。本實(shí)驗(yàn)采用計(jì)數(shù)與判段的方式來(lái)實(shí)現(xiàn)降低時(shí)鐘源的頻率。計(jì)數(shù)電路可用計(jì)數(shù)器實(shí)現(xiàn),每來(lái)一個(gè)時(shí)鐘脈沖clk,計(jì)數(shù)器就加1,而每當(dāng)判斷出計(jì)數(shù)器達(dá)到某個(gè)數(shù)值時(shí),把輸出狀態(tài)求反。三、實(shí)驗(yàn)步驟:1、打開quartus ii 軟件建立一個(gè)空白工程,然后命名為led_water.qpf.2、點(diǎn)擊filen

6、ew.,在該項(xiàng)目下新建verilog hdl 源程序文件led_water.v,輸入試驗(yàn)程序中的源程序代碼保存后選擇工具欄中啟動(dòng)編譯,若在編譯中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤,直到編譯成功為止。moduleled_water (sys_clk,led);input sys_clk;output 7:0 led;reg 7:0 led;reg 24:0 count;reg 4:0 state;wire clk;always (posedge sys_clk)count=count+1b1;assign clk=count23;always (posedge clk)begincase(state)5

7、b00000:led=8b11111111;5b00001:led=8b00000000;5b00010:led=8b10000000;5b00011:led=8b11000000;5b00100:led=8b11100000;5b00101:led=8b11110000;5b00110:led=8b11111000;5b00111:led=8b11111100;5b01000:led=8b11111110;5b01001:led=8b11111111;5b01010:led=8b00000000;5b01011:led=8b11111111;5b01100:led=8b00000001;5b

8、01101:led=8b00000010;5b01110:led=8b00000100;5b01111:led=8b00001000;5b10000:led=8b00010000;5b10001:led=8b00100000;5b10010:led=8b01000000;5b10011:led=8b10000000;5b10100:led=8b11111111;5b10101:led=8b00000000;5b10110:led=8b11111111;5b10111:led=8b10000001;5b11000:led=8b11000011;5b11001:led=8b11100111;5b1

9、1010:led=8b11111111;5b11011:led=8b00011000;5b11100:led=8b00111100;5b11101:led=8b01111110;5b11110:led=8b11111111;5b11111:led=8b00000000;endcasestate=state+1;endendmodule3、配置fpga引腳:在quartus ii 軟件主頁(yè)面下,選擇assignmentspins 或選擇工具欄上,配置led0-led7以及clk 的引腳。信號(hào)引腳信號(hào)引腳612eda612edaled0505050led5474747led1535353led64

10、84848led2545454led7494949led3555555clock282828led41761761764、更改分頻模塊(int_div)的分頻系數(shù),并重新編譯下載,觀察流水燈的變化。四、實(shí)驗(yàn)結(jié)果:led7-led0依次點(diǎn)亮,全部8燈閃爍兩次,之后led0-led7依次點(diǎn)亮。全部8燈閃爍兩次,之后led7&led0,led6&led1,led5&led2,led6&led3,依次點(diǎn)亮,再返回按順序熄滅。五、實(shí)驗(yàn)總結(jié):通過使用賦值語(yǔ)句,熟練掌握了7個(gè)led燈的控制,并進(jìn)行花樣閃爍。熟悉了對(duì)io口的控制操作。掌握了verilog語(yǔ)言的case語(yǔ)句的書寫和調(diào)試。實(shí)驗(yàn)三 分頻器的設(shè)計(jì)(偶

11、數(shù)分頻)一、實(shí)驗(yàn)?zāi)康模?、通過此實(shí)驗(yàn)進(jìn)一步熟悉和掌握cpld/fpga開發(fā)軟件的使用方法。2、掌握verilog hdl語(yǔ)言的書寫格式及編程方法。3、學(xué)會(huì)對(duì)verilog hdl 代碼進(jìn)行編譯,檢查,改錯(cuò)。4、學(xué)會(huì)數(shù)控分頻器的設(shè)計(jì)、分析和測(cè)試方法。5、學(xué)習(xí)簡(jiǎn)單電路的設(shè)計(jì)和硬件測(cè)試。二、實(shí)驗(yàn)內(nèi)容和原理:(一)實(shí)驗(yàn)內(nèi)容:在smartsopc試驗(yàn)箱上的實(shí)現(xiàn)數(shù)控分頻器的設(shè)計(jì)。在clk輸入64khz或更高(要確保分頻后落在音頻范圍)的頻率信號(hào)(由int_div模塊分頻得到);輸出fout接蜂鳴器buzz-er,由key1/key2控制輸入8位預(yù)置數(shù),并在數(shù)碼管12上顯示(調(diào)用key_led模塊)。(二)

12、實(shí)驗(yàn)原理:數(shù)控分頻器的功能就是輸入端輸入不同的數(shù)據(jù)時(shí),產(chǎn)生不同的分頻比,從而產(chǎn)生不同的頻率值。本例是用計(jì)數(shù)值可并行預(yù)置的加法計(jì)數(shù)器設(shè)計(jì)完成的,方法是將計(jì)數(shù)溢出位與預(yù)置數(shù)加載輸入信號(hào)相接即可。三、實(shí)驗(yàn)步驟:1、啟動(dòng)quartus ii建立一個(gè)空白工程,然后命名為dvf16.qpf。 2、建立波形仿真文件(dvf.vwf)并進(jìn)行功能仿真驗(yàn)證。3、分別新建veriloghdl源程序文件pulse.v、key_led.v、int_div.v,輸入程序代碼并保存(完整的veriloghdl程序參考程序清單五.1、五.2和二.2),然后進(jìn)行綜合編譯.若在編譯過程中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤,直到編譯成功為

13、止。4、從設(shè)計(jì)文件創(chuàng)建模塊,由pulse.v、key_led.v、int_div.v分別生成名為pulse.bsf 、key_led.bsf、int_div.bsf的模塊符號(hào)文件。5、新建圖形設(shè)計(jì)文件(頂層模塊)命名為dvf16.bdf并保存。其模塊原理圖如圖五.1所示。圖五.1 8位全加器頂層模塊6、選擇目標(biāo)器件并對(duì)相應(yīng)的引腳進(jìn)行鎖定,在這里縮選擇的器件為altera公司cyclone系列的ep1c6q240c8芯片。引腳鎖定方法如表五.1所列。將未使用的引腳設(shè)置為三態(tài)輸入。表五.1 引腳鎖定方法信號(hào)引腳信號(hào)引腳信號(hào)引腳ic6ic12edaic6ic12edaic6ic12edaseg(0)

14、169169169seg(7)164164164dig(6)198238213seg(1)170170170dig(0)160160160dig(7)205239214seg(2)167167167dig(1)159159159key(0)121121121seg(3)168168168dig(2)162162162key(1)122122122seg(4)165165165dig(3)161161161fout175175175seg(5)166166166dig(4)204236215clock282828seg(6)163163163dig(5)1992372167、將dvf.bdf設(shè)置

15、為頂層實(shí)體。對(duì)該工程文件進(jìn)行全程編譯處理,若在編譯過程中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤直至編譯成功為止。8、連接硬件、下載程序。如果核心板是quicksopc-1c12,則須執(zhí)行此步驟;否則跳過此步。將實(shí)驗(yàn)箱配置的連線將核心板上pack區(qū)的引腳236、237、238和239分別與數(shù)碼管顯示區(qū)的com3(dig_com)的dig4dig7相對(duì)應(yīng)連接。將跳線短接帽跳接到j(luò)p7和jp6的key1、key2和beep。將altera byteblasterii下載電纜的兩端分別接到pc機(jī)的打印機(jī)并口和quicksopc核芯板上的jtag下載口上,打開電源,執(zhí)行下載命令,把程序下載到fpga器件中。按下ke

16、y1、key2鍵改變分頻預(yù)置數(shù),觀察蜂鳴器發(fā)出的聲音有何變化。9、實(shí)驗(yàn)程序:module div16(clk_in,clk_out,rst); parameter width=3;input clk_in;input rst;output clk_out;regwidth-1:0 cnt;reg tmp_clk; always(posedge clk_in) begin if(!rst) begin cnt=0; tmp_clk=0; end else if(cnt=3b111) begin cnt=0; tmp_clk=tmp_clk; end else cnt=cnt+1; end ass

17、ign clk_out=tmp_clk; endmodule四、實(shí)驗(yàn)結(jié)果:五、實(shí)驗(yàn)總結(jié):通過本實(shí)驗(yàn),熟練掌握了分頻器的工作原理及設(shè)計(jì),并進(jìn)行偶數(shù)分頻器的波形仿真。熟悉了對(duì)io口的控制操作。掌握了verilog語(yǔ)言的語(yǔ)言的書寫和調(diào)試。實(shí)驗(yàn)四 按鍵控制數(shù)碼管的顯示一、實(shí)驗(yàn)?zāi)康模?、進(jìn)一步了解、熟悉和掌握f(shuō)pga開發(fā)軟件quartusii的使用方法及verilog hdl的編程方法。2、學(xué)習(xí)數(shù)碼管的工作原理和電路設(shè)計(jì)。3、熟悉對(duì)按鍵功能的操作。4、學(xué)會(huì)按鍵控制數(shù)碼管的顯示,并通過顯示數(shù)值,區(qū)分是安格按鍵被按下。二、實(shí)驗(yàn)內(nèi)容和原理:(一)實(shí)驗(yàn)內(nèi)容:要求當(dāng)按下key1是數(shù)碼管顯示1;當(dāng)按下key2是數(shù)碼

18、管顯示2依次類推,直到當(dāng)按下key8是數(shù)碼管顯示8。(二)實(shí)驗(yàn)原理:1、數(shù)碼管的顯示原理:led的結(jié)構(gòu)led數(shù)碼管里面有8只發(fā)光二極管,分別做a,b,c,d,e,f,g,dp斷,其中dp為小數(shù)點(diǎn)斷,每個(gè)段都有兩個(gè)外部引腳,其中一個(gè)接外部電路,另外一個(gè)8段共用一個(gè)極,或陰極,或陽(yáng)極。在非共用端加入并行數(shù)據(jù)就可以控制數(shù)碼管各段led的亮和滅,來(lái)顯示不同的數(shù)字。下面是0-9需要再并行一端配置的數(shù)據(jù) 0xc0,0xf9,x0a4,x0b0,x099,x092,x082,x0f8,0x80,0x982、實(shí)驗(yàn)設(shè)計(jì):當(dāng)key按下時(shí),我們對(duì)key_in的取值進(jìn)行讀取,根據(jù)讀取的信號(hào),對(duì)數(shù)碼管位選信號(hào)進(jìn)行控制,

19、使其顯示對(duì)應(yīng)的數(shù)值。例如當(dāng)?shù)谝粋€(gè)按鍵按下時(shí),有key_in=8b11111110,則賦值seg=8hf9,數(shù)碼管顯示1。三、實(shí)驗(yàn)步驟:1、啟動(dòng) quartus建立一個(gè)空白工程,然后命名為key_led。2、點(diǎn)擊filenew.,在該項(xiàng)目下新建verilog hdl 源程序文件key_led.v,輸入試驗(yàn)程序中的源程序代碼保存后選擇工具欄中啟動(dòng)編譯,若在編譯中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤,直到編譯成功為止。module key_led(key_in,seg);input7:0key_in;output7:0seg;reg7:0seg;reg7:0buffer;always(key_in)begin

20、 buffer=key_in; case(buffer) 8b11111110:seg=8hf9; 8b11111101:seg=8ha4; 8b11111011:seg=8hb0; 8b11110111:seg=8h99; 8b11101111:seg=8h92; 8b11011111:seg=8h82; 8b10111111:seg=8hf8; 8b01111111:seg=8h80; default: seg=8hc0; endcaseendendmodule3、引腳設(shè)置:key0key1key2key2key4key5key6key7121122123124125126127128se

21、g0seg1seg2seg3seg4seg5seg6seg71691701671681651661631644、下載sof文件到試驗(yàn)箱里,觀察試驗(yàn)箱上的實(shí)驗(yàn)結(jié)果。四、實(shí)驗(yàn)數(shù)據(jù)和結(jié)果當(dāng)按下key1時(shí)數(shù)碼管顯示為1;當(dāng)按下key2時(shí)數(shù)碼管顯示為2;當(dāng)按下key3時(shí)數(shù)碼管顯示為3;當(dāng)按下key4時(shí)數(shù)碼管顯示為4;當(dāng)按下key5時(shí)數(shù)碼管顯示為5;當(dāng)按下key6時(shí)數(shù)碼管顯示為6;當(dāng)按下key7時(shí)數(shù)碼管顯示為7;當(dāng)按下key8時(shí)數(shù)碼管顯示為8;五、實(shí)驗(yàn)總結(jié)通過本實(shí)驗(yàn),學(xué)會(huì)了按鍵對(duì)數(shù)碼管的控制,并且掌握了數(shù)碼管數(shù)值顯示的控制方法,還能通過按鍵控制數(shù)碼管顯示相應(yīng)的數(shù)值。實(shí)驗(yàn)五 學(xué)號(hào)的顯示一、實(shí)驗(yàn)?zāi)康模?、熟練

22、掌握f(shuō)pga開發(fā)軟件quartusii的使用方法及verilog hdl的編程方法。2、熟悉數(shù)碼管段選和位選的操作。3、掌握分頻程序的使用。4、實(shí)驗(yàn)設(shè)計(jì)實(shí)現(xiàn)8個(gè)數(shù)碼管顯示學(xué)號(hào)后8位。二、實(shí)驗(yàn)原理和內(nèi)容。(一)實(shí)驗(yàn)內(nèi)容:要求調(diào)試好實(shí)驗(yàn)以后實(shí)驗(yàn)箱上的第一個(gè)數(shù)碼管顯示4,一秒后熄滅,此時(shí)第二個(gè)數(shù)碼管顯示0,然后依次類推直到第八個(gè)數(shù)碼管依次顯示數(shù)字 4、0、7、1、0、6、3、1。(二)實(shí)驗(yàn)原理:在實(shí)驗(yàn)箱上,在非共用端加入并行數(shù)據(jù)就可以控制數(shù)碼管各段led的亮和滅,來(lái)顯示不同的數(shù)字。由于實(shí)驗(yàn)使用的時(shí)鐘引腳頻率比較高,在掃描數(shù)值的時(shí)候比較快,肉眼無(wú)法識(shí)別顯示的數(shù)字,故先做預(yù)分頻處理。實(shí)驗(yàn)用的原理圖: 三

23、、實(shí)驗(yàn)步驟:1、啟動(dòng) quartus建立一個(gè)空白工程,然后命名為scan_led。2、點(diǎn)擊filenew.,在該項(xiàng)目下新建verilog hdl 源程序文件scan_led.v,輸入試驗(yàn)程序中的源程序代碼保存后選擇工具欄中啟動(dòng)編譯,若在編譯中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤,直到編譯成功為止。module scan_led(clk,dig,seg);input clk;output7:0dig;output7:0seg;reg7:0seg_r;reg7:0dig_r;reg3:0disp_dat;reg2:0count;assign dig=dig_r;assign seg=seg_r;always

24、 (posedge clk)begin count=count+1b1;endalways (posedge clk)begin case(count) 3d0:disp_dat=4; 3d1:disp_dat=0; 3d2:disp_dat=7; 3d3:disp_dat=1; 3d4:disp_dat=0; 3d5:disp_dat=6; 3d6:disp_dat=3; 3d7:disp_dat=1;endcase case(count) 3d0:dig_r=8b11111110; 3d1:dig_r=8b11111101; 3d2:dig_r=8b11111011; 3d3:dig_r=

25、8b11110111; 3d4:dig_r=8b11101111; 3d5:dig_r=8b11011111; 3d6:dig_r=8b10111111; 3d7:dig_r=8b01111111; endcaseendalways(disp_dat)begin case(disp_dat) 4h0:seg_r=8hc0; 4h1:seg_r=8hf9; 4h2:seg_r=8ha4; 4h3:seg_r=8hb0; 4h4:seg_r=8h99; 4h5:seg_r=8h92; 4h6:seg_r=8h82; 4h7:seg_r=8hf8; 4h8:seg_r=8h80; 4h9:seg_r

26、=8h90; endcaseendendmodule3、點(diǎn)擊filenew.,在該項(xiàng)目下新建verilog hdl 源程序文件int_div.v,輸入試驗(yàn)程序中的源程序代碼保存后選擇工具欄中啟動(dòng)編譯,若在編譯中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤,直到編譯成功為止。module int_div(clock,clk_out);input clock; output clk_out; reg clk_p_r; reg clk_n_r; regf_div_width - 1:0 count_p; regf_div_width - 1:0 count_n; parameter f_div = 48000000;

27、 parameter f_div_width = 32; wire full_div_p; wire half_div_p; wire full_div_n; wire half_div_n; assign full_div_p = (count_p f_div - 1);assign half_div_p = (count_p 1) - 1);assign full_div_n = (count_n f_div - 1);assign half_div_n = (count_n 1) - 1);assign clk_out = (f_div = 1) ? clock : (f_div0 ?

28、(clk_p_r & clk_n_r) : clk_p_r);always (posedge clock)begin if(full_div_p) begin count_p = count_p + 1b1; if(half_div_p) clk_p_r = 1b0; else clk_p_r = 1b1; end else begin count_p = 0; clk_p_r = 1b0; endendalways (negedge clock)begin if(full_div_n) begin count_n = count_n + 1b1; if(half_div_n) clk_n_r

29、 = 1b0; else clk_n_r = 1b1; end else begin count_n = 0; clk_n_r = 1b0; endendendmodule4、新建原理圖文件block.bdf,連接各個(gè)模塊,并設(shè)置為頂層文件。5、設(shè)置引腳下載sof文件到試驗(yàn)箱。時(shí)鐘引腳:pin_28dig0dig1dig2dig3dig4dig5dig6dig7160159162161215216213214seg0seg1seg2seg3seg4seg5seg6seg7169170167168165166163164四、實(shí)驗(yàn)結(jié)果:實(shí)驗(yàn)箱上的第一個(gè)數(shù)碼管顯示4,一秒后熄滅,此時(shí)第二個(gè)數(shù)碼管顯示

30、0,然后依次類推直到第八個(gè)數(shù)碼管依次顯示數(shù)字 4、0、7、1、0、6、3、1。五、實(shí)驗(yàn)總結(jié):通過熟練掌握f(shuō)pga開發(fā)軟件quartusii的使用方法及verilog hdl的編程方法。通過實(shí)驗(yàn)進(jìn)一步熟練了數(shù)碼管的顯示原理,和顯示過程。并學(xué)會(huì)了分頻程序的使用。實(shí)驗(yàn)六 數(shù)碼管顯示計(jì)數(shù) 一、實(shí)驗(yàn)?zāi)康模?、熟練掌握f(shuō)pga開發(fā)軟件quartusii的使用方法及verilog hdl的編程方法。2、學(xué)會(huì)了數(shù)字時(shí)鐘的硬件設(shè)計(jì)2、學(xué)會(huì)對(duì)數(shù)碼管個(gè)位和十位的控制及數(shù)值的顯示。二、實(shí)驗(yàn)內(nèi)容和原理:(一)實(shí)驗(yàn)內(nèi)容:在smartsopc實(shí)驗(yàn)箱上完成一個(gè)類似數(shù)字時(shí)鐘的可以計(jì)時(shí)學(xué)號(hào)后兩位顯示器,要求使用電腦軟件及實(shí)驗(yàn)箱學(xué)

31、習(xí)使用數(shù)碼管中的個(gè)位和十位來(lái)顯示計(jì)數(shù)學(xué)號(hào)從0開始顯示直到顯示到31,再返回0重新計(jì)數(shù)。就像數(shù)字時(shí)鐘一樣。(二)實(shí)驗(yàn)原理:計(jì)數(shù)程序包括三個(gè)部分:脈沖發(fā)生電路,計(jì)數(shù)顯示部分。由于系統(tǒng)時(shí)鐘為50mhz,為了能夠找到一個(gè)合適的數(shù)字跳變時(shí)間,我對(duì)時(shí)鐘做50m分頻,使得每次數(shù)字增加間隔在1 秒。計(jì)數(shù)顯示部分包括led段選的掃描和顯示。復(fù)位和暫停包括兩個(gè)按鍵控制。實(shí)現(xiàn)復(fù)位,暫停和開始。 三、實(shí)驗(yàn)步驟:1、動(dòng) quartus建立一個(gè)空白工程,然后命名為xuehaoxs。2、點(diǎn)擊filenew.,在該項(xiàng)目下新建verilog hdl 源程序文件scan_led.v,輸入試驗(yàn)程序中的源程序代碼保存后選擇工具欄中啟

32、動(dòng)編譯,若在編譯中發(fā)現(xiàn)錯(cuò)誤,則找出并更正錯(cuò)誤,直到編譯成功為止。module xuehaoxs(clk,key,dig,seg);input clk;input1:0key;output7:0 dig;output7:0 seg;reg7:0 seg_r;reg7:0 dig_r;reg3:0 disp_dat;reg24:0 count;reg7:0 num;reg sec,keyen;reg1:0dout1,dout2,dout3;wire1:0key_done;assign dig=dig_r;assign seg=seg_r;always (posedge clk) /時(shí)鐘產(chǎn)生部分be

33、gin count=count+1b1; if(count=25d4000000) begin count=25d0; sec=sec; endendassign key_done=(dout1|dout2|dout3);always (posedge count17) /消抖動(dòng)部分begin dout1=key; dout2=dout1; dout3=dout2;endalways (negedge key_done0)begin keyen=keyen;endalways (posedge clk) /數(shù)碼管的位選,這里選通兩個(gè)數(shù)碼管。begin case(count17:15) 3d0:

34、disp_dat=num3:0; 3d1:disp_dat=num7:4;endcasecase(count17:15) 3d0:dig_r=8b11111110; 3d1:dig_r=8b11111101;endcaseendalways (posedge clk) /數(shù)碼管顯示部分begin case(disp_dat) 4h0:seg_r=8hc0; 4h1:seg_r=8hf9; 4h2:seg_r=8ha4; 4h3:seg_r=8hb0; 4h4:seg_r=8h99; 4h5:seg_r=8h92; 4h6:seg_r=8h82; 4h7:seg_r=8hf8; 4h8:seg_

35、r=8h80; 4h9:seg_r=8h90; default:seg_r=8hff;endcaseif(count17:15=3d2)&sec) seg_r=8hff;endalways (negedge sec or negedge key_done1) /數(shù)碼管復(fù)位,掃描部分begin if(!key_done1)begin num=8h1; endelse if(!keyen)begin num3:0=num3:0+1b1; if (num3:0=4ha) beginnum3:0=4h0;num7:4=num7:4+1b1;endif (num7:4=4h3&num3:0=4h1)nu

36、m7:0=8h1;endendendmodule3、編譯完成,找出錯(cuò)誤,并改正,到無(wú)錯(cuò)誤。4、引腳設(shè)置:時(shí)鐘引腳:pin_28;dig0dig1dig2dig3dig4dig5dig6dig7160159162161215216213214seg0seg1seg2seg3seg4seg5seg6seg71691701671681651661631645、通過jtag接口下載sof文件到實(shí)驗(yàn)箱,觀察結(jié)果。四、實(shí)驗(yàn)數(shù)據(jù)和結(jié)果:學(xué)習(xí)使用數(shù)碼管中的個(gè)位和十位來(lái)顯示計(jì)數(shù)學(xué)號(hào)從0開始顯示直到顯示到31,再返回0重新計(jì)數(shù),依次類推來(lái)回循環(huán)。就像數(shù)字時(shí)鐘一樣。五、實(shí)驗(yàn)總結(jié):通過本實(shí)驗(yàn)又進(jìn)一步的熟練掌握了fpg

37、a開發(fā)軟件quartusii的使用方法及verilog hdl的編程方法。并復(fù)習(xí)了以前學(xué)過的知識(shí) 學(xué)會(huì)可用一個(gè)數(shù)字時(shí)鐘的模式,和對(duì)數(shù)碼管個(gè)個(gè)位的控制。最后還熟悉了分頻流程及消抖程序在不同程序中的使用方法。實(shí)驗(yàn)七 序列檢測(cè)器一:實(shí)驗(yàn)?zāi)康模?、熟練掌握f(shuō)pga開發(fā)軟件quartusii的使用方法及verilog hdl的編程方法。2、掌握有限狀態(tài)機(jī)的工作原理。3、熟悉串行信號(hào)的輸入和掃描。4、了解在多狀態(tài)情況下的狀態(tài)選擇和控制。5、實(shí)現(xiàn)用有限狀態(tài)機(jī)對(duì)輸入串行信號(hào)01100的讀取和判斷。二、實(shí)驗(yàn)內(nèi)容和原理:(一)實(shí)驗(yàn)內(nèi)容:要求當(dāng)檢測(cè)器檢測(cè)到01100 時(shí)cout=1。(二)實(shí)驗(yàn)原理:有限狀態(tài)機(jī):在數(shù)字電路系統(tǒng)中,有限狀態(tài)機(jī)是一種十分重要的時(shí)序邏輯電路模塊。有限狀態(tài)機(jī)是指輸出取決于過去輸入部分和當(dāng)前輸入部分的時(shí)序邏輯電路。一般來(lái)說(shuō),除了輸入部分和輸出部分外,有限狀態(tài)機(jī)還含有一組具有“記憶”功能的寄存器,這些寄存器的功能是記憶有限狀態(tài)機(jī)的內(nèi)部狀態(tài),它們常被稱為狀態(tài)寄存器。在有限狀態(tài)機(jī)中,狀態(tài)寄存器的的下一個(gè)狀態(tài)不僅與輸入信號(hào)有關(guān),而且還與該寄存器的當(dāng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論