版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、.基于 DE2-115 開發(fā)板的 FPGA 入門設(shè)計實驗1、 Lab1: 4 位加法器、減法器的設(shè)計1.1 摘要在文件 add_sub 里面的工程文件operation_4.v 為頂層文件,該頂層文件包含了三個子模塊,分別為數(shù)碼管顯示模塊,4 位帶進(jìn)位的二進(jìn)制加法器模塊和4 位帶借位的二進(jìn)制減法器模塊,最后通過DE2-115 開發(fā)板顯示實驗結(jié)果。1.2 程序1) add_4bits.v 加法器moduleadder_4bits(inputclk,inputrst_n,input3:0x,input3:0y,output reg3:0 sum,outputregcarry_out/溢出位);al
2、ways(posedge clk or negedge rst_n)beginif(!rst_n);.carry_out, sum = 0;elsecarry_out, sum = x + y;endendmodule2) substractor_4bits.v 減法器modulesubtractor_4bits(input clk,input rst_n,input 3:0x,input 3:0y,output reg 3:0sub,output regborrow_out);always(posedge clk or negedge rst_n)beginif(!rst_n)borrow_
3、out, sub = y)borrow_out, sub = 1b0, x - y;elseborrow_out, sub = 1b1, x - y;endendendmodule3)seg7_lut.v 數(shù)碼管顯示譯碼模塊module Seg7_lut(input3:0iDIG ,output reg 6:0oSEG);always (iDIG)begincase(iDIG)4h1: oSEG = 7b1111001;/ -t-4h2: oSEG = 7b0100100;/ |4h3: oSEG = 7b0110000;/ ltrt4h4: oSEG = 7b0011001;/ |4h5:
4、oSEG = 7b0010010;/ -m-4h6: oSEG = 7b0000010;/ |;.4h7: oSEG = 7b1111000;/ lbrb4h8: oSEG = 7b0000000;/ |4h9: oSEG = 7b0011000;/ -b-4ha: oSEG = 7b0001000;4hb: oSEG = 7b0000011;4hc: oSEG = 7b1000110;4hd: oSEG = 7b0100001;4he: oSEG = 7b0000110;4hf: oSEG = 7b0001110;4h0: oSEG = 7b1000000;endcaseendendmodu
5、le1.3 結(jié)果本設(shè)計通過Verilog HDL硬件描述語言。描述加法、減法算法,包括了進(jìn)位以及借位,最終可以在實驗板上觀察結(jié)果,驗證了算法的正確性。撥碼開關(guān) SW7:0 輸入兩位計算值, SW17 為復(fù)位按鍵,如下圖所示:該實驗結(jié)果顯示的是7+b=02 ,進(jìn)位位在LEDG0 顯示,;.7-b=12, 借位位在 LEDR0 顯示。計算過程如下:;.2、 Lab2:三位二進(jìn)制乘法器的設(shè)計2.1 摘要在文件 mult_3bits 里面的工程文件operation_4.v 為頂層文件,該頂層文件包含了兩個子模塊,分別為數(shù)碼管顯示模塊和三位二進(jìn)制乘法器模塊,最后通過 DE2-115 開發(fā)板顯示實驗結(jié)果
6、。2.2 程序1) mult_3bits.v乘法器modulemult_3bits(input2:0x,input2:0y,output5:0 mult_out);wire2:0temp0 = y0 ? x : 3d0;wire2:0temp1 = y1 ? x : 3d0;wire2:0temp2 = y2 ? x : 3d0;assign mult_out = temp0 + (temp1 1) + (temp2 2); endmodule2)seg7_lut.v 文件與 Lab1 中的相同2.3 結(jié)果本設(shè)計通過Verilog HDL硬件描述語言,通過移位以及;.加法,實現(xiàn)三位二進(jìn)制乘法功
7、能,最終可以在實驗板上觀察結(jié)果,驗證了算法的正確性。撥碼開關(guān)SW6:0 輸入兩位計算值, SW17 為復(fù)位按鍵,如下圖所示:;.3、 Lab3:序列檢測器的設(shè)計3.1 摘要通過 Verilog HDL硬件描述語言,按照要求,設(shè)計一個序列檢測器,在檢測到4b1111 序列后輸出高電平標(biāo)志位,反之輸出低電平。電路在Quartus II 中設(shè)計,最后通過波形圖仿真和開發(fā)板得出實驗結(jié)果。3.2 程序sequence_detect.v 序列檢測器modulesequence_detect(input clk,input rst_n,input din_en,/H vaildinput din,outpu
8、t reg dout);/capture the posedge of din_en for data receive reg din_en_r0,din_en_r1; always(posedge clk or negedge rst_n) beginif(!rst_n)begin;.din_en_r0 = 0;din_en_r1 = 0;endelsebegindin_en_r0 = din_en;din_en_r1 = din_en_r0;endendwiredin_flag = (din_en_r1 & din_en_r0) ? 1b1 : 1b0;/din_en 的值由 0 變 1
9、時,din_flag 的值變?yōu)楦唠娖骄S持一個時鐘周期(脈沖邊沿檢測)/din_en 作為數(shù)據(jù)輸入的標(biāo)志/-reg 3:0 sequence_data;/序列數(shù)據(jù)寄存器 always(posedge clk or negedge rst_n) beginif(!rst_n)beginsequence_data = 0;/初始化時寄存器狀態(tài)dout = 0;/寄存器輸出為0end;.else if(din_flag)/din_en 上升沿, din_flag=1 beginsequence_data = sequence_data2:0, din; / 串行輸入 dout = (sequence_
10、data = 4b1111) ? 1b1 : 1b0;endendendmodule3.3 結(jié)果該程序中定義可串行輸入接口:din ,串行輸出接口dout,同時添加了數(shù)據(jù)輸入標(biāo)志信號din_en,以指示數(shù)據(jù)的輸入。串行數(shù)據(jù)輸入序列通過移位操作,存入與sequence_data中,同時檢測 sequence_data,當(dāng)出現(xiàn) 4b1111 時, dout 輸出 1 表示檢測到了要求的序列。其中仿真結(jié)果如下:;.4、 Lab4:變模計數(shù)器的設(shè)計4.1 摘要在設(shè)計一個計數(shù)器的前提下,要求模值可變,即計算器最大值可變。因此,這要求能動態(tài)改變計數(shù)器的模值,同時在數(shù)碼管上實時顯示輸出結(jié)果。在文件 vari
11、able_counter 里面的工程文件variable_counter.v 為頂層文件,該頂層文件包含了一個數(shù)碼管顯示子模塊,最后通過 DE2-115 開發(fā)板顯示實驗結(jié)果。4.2 內(nèi)容1)變模的實現(xiàn)模值可以通過選擇,也可以通過輸入,來動態(tài)改變。在該實驗中,通過一個撥碼開關(guān)SW0 來選擇模值“ 16”或者“64”,實現(xiàn)選擇通過一個選擇語句即可實現(xiàn)。如下語句:wire7:0max_vaule = SW0 ? 8d64 : 8d16;2) 輸出顯示本實驗通過2 個 7 段數(shù)碼管來顯示數(shù)據(jù)。同時為了肉眼能看到數(shù)據(jù)的變化,通過計數(shù),實現(xiàn)0.25S 的使能標(biāo)志定點時間,以此標(biāo)志位來作為計數(shù)器的計數(shù)周期,
12、保證肉眼可以看得到數(shù)據(jù)的變化。4.3程序1) variable_counter.v 變模計數(shù)器頂層模塊modulevariable_counter;.(input clk,/CLOCK_50input rst_n,/SW17input0:0 SW,/SW0 控制變模output 6:0HEX0,/ge_dataoutput 6:0HEX1/shi_data);wire 7:0 max_vaule = SW0 ? 8d64 : 8d16; reg 23:0 cnt;always(posedge clk or negedge rst_n)beginif(!rst_n)cnt = 0;elsecnt
13、 = (cnt = 24d12500000) ? 24d0 : cnt + 1b1;endwire delay02_flag = (cnt = 24d12500000) ? 1b1 : 1b0; /-reg 7:0counter;/8 位最大計數(shù)127always(posedge clk or negedge rst_n)beginif(!rst_n);.counter = 0;else if(delay02_flag)/ 計數(shù) 0.25scounter = max_vaule) ? 8d0 : counter +1b1;end/-/hex2decimal convertwire3:0shi_
14、data = (counter 10)? 4d0:(counter 20)?4d1:(counter 30)?4d2:(counter 40)? 4d3:(counter 50)? 4d4:(counter 60)? 4d5:(counter 70)? 4d6:(counter 80)? 4d7:(counter 90)? 4d8:4d9;wire3:0ge_data = (counter 10)? counter - 8d0:(counter 20)?counter - 8d10:(counter 30)?counter - 8d20:(counter 40)? counter - 8d30
15、:(counter 50)? counter - 8d40:;.(counter 60)? counter - 8d50:(counter 70)? counter - 8d60:(counter 80)? counter - 8d70:(counter 90)? counter - 8d80:counter - 8d90;/shi_data displaySeg7_lut u_Seg7_lut1(.iDIG (shi_data),.oSEG(HEX1);/ge_data displaySeg7_lut u_Seg7_lut2(.iDIG (ge_data),.oSEG(HEX0);Endmo
16、dule2) Seg7_lut.v 數(shù)碼管顯示模塊與Lab1 中的相同4.3結(jié)果SW0=0 時,計數(shù)器的最大值為16;.SW0=1 時,計數(shù)器的最大值為64;.5、 Lab5:流水燈和簡易電子時鐘的設(shè)計在文件 time_counter 里面的工程文件Labtest.v 為頂層文件,該頂層文件包含了三個子模塊,分別為數(shù)碼管顯示模塊,流水燈模塊和計數(shù)器模塊,實現(xiàn)數(shù)碼管顯示分、秒、毫秒計時的簡易電子鐘和流水燈顯示。5.1 流水燈設(shè)計5.1.1 摘要通過 verilog HDL硬件描述語言, 實現(xiàn) 8 個 LED 每隔 1s點亮一個的功能。5.1.2 內(nèi)容1) 1S 延時實現(xiàn)D2-115 開發(fā)板的時鐘
17、頻率為50Mhz ,通過計數(shù)器計數(shù)50000000 次,到點即輸出使能標(biāo)志,即可實現(xiàn)延時。2)挨個點亮LED本設(shè)計通過移位操作來實現(xiàn)8 個 LED 的挨個點亮功能,led_data = led_data6:0,1b1;/ 每一秒左移一位最后通過引腳配置,全局編譯,下載到DE2-115 中,觀察現(xiàn)象,驗證正確,如下圖所示:;.5.1.3 程序Time_Counter 文件夾下的 led_display.v 文件 module led_display(inputclk,inputrst_n,output reg 7:0led_data);/-reg 27:0 cnt;always(posedge
18、clk or negedge rst_n)beginif(!rst_n)cnt = 0;elsecnt = (cnt = 28d50_000000) ? 28d0 : cnt + 1b1; /1s;.endwire delay01_flag = (cnt = 28d50_000000) ? 1b1 : 1b0; always(posedge clk or negedge rst_n) beginif(!rst_n)led_data = 0;elseif(delay01_flag)/ 計時 1Sled_data = led_data6:0,1b1;/每一秒左移一位endendmodule;.5.
19、2 簡易電子時鐘的設(shè)計5.2.1 摘要在 DE2-115 開發(fā)板上,通過 Verilog HDL 硬件描述語言,實現(xiàn)分、秒、毫秒計時的簡易電子時鐘,并且通過數(shù)碼管顯示出來。5.2.2 內(nèi)容和結(jié)果本實驗主要內(nèi)容是計數(shù),其次,描述出分秒毫秒之間的計時關(guān)系,即可實現(xiàn)功能。1)分秒毫秒計時根據(jù)晶振時鐘的輸入,通過計數(shù)實現(xiàn)1ms 的 delay,然后通過此標(biāo)志位,進(jìn)行“毫秒”(0999 )計數(shù),當(dāng)“毫秒”到達(dá) 999 的時候,自動清零并且給秒進(jìn)位,當(dāng)“秒”到達(dá)59的時候,自動清零并且給分進(jìn)位,當(dāng)“分”到達(dá)59 的時候,自動清零,重新計數(shù),本實驗通過一位撥碼開關(guān)SW7 控制復(fù)位,當(dāng) SW7=0 時,所有計
20、數(shù)清零。2)數(shù)碼管顯示根據(jù)要顯示的數(shù)據(jù),通過不同的段的點亮,來實現(xiàn)0-9的顯示。本實驗分秒毫秒需要7 位數(shù)碼管,通過例化7 個數(shù)碼管顯示電路,通過參數(shù)的傳遞,實現(xiàn)“分”高位、“分”低位、“秒”高位、“秒”低位、“毫秒”高位、“毫秒”中位、“毫秒”低位的實時顯示。最后通過引腳配置,全局編譯,下載到DE2-115 中,觀;.察現(xiàn)象,驗證正確,如下圖所示,下面實驗現(xiàn)象顯示07 分43 秒 388 毫秒, 7 位 7 段數(shù)碼管,時刻很準(zhǔn)確。5.2.3 程序Time_Counter 文件夾下的time_counter.v 文件為分秒計時器模塊。Time_Counter 文件夾下的seg7_lut.v 文
21、件為數(shù)碼管顯示模塊。Time_Counter 文件夾下的Labtest.v 文件為頂層模塊, 通過調(diào)用分秒計時器模塊和數(shù)碼管顯示模塊實現(xiàn)該分秒計時器的顯示。;.6、 Lab6:簡易計算器的設(shè)計文件 Calculator_Design 里面的工程文件Calculator_Design.v 為頂層文件,該頂層文件包含了四個子模塊,分別為按鍵消抖掃描模塊,四位二進(jìn)制乘法器模塊,四位二進(jìn)制加法器模塊,數(shù)碼管顯示模塊,實現(xiàn)計算乘法和加法的簡易計算器的設(shè)計。6.1 摘要通過 Verilog HDL硬件描述語言, 設(shè)計一個簡易計數(shù)器,實現(xiàn) 09 的加法算法,以及乘法算法。6.2 內(nèi)容和結(jié)果1)加法、乘法電路
22、在前面的實驗中已經(jīng)設(shè)計過加減法器電路和乘法電路2)按鍵掃描程序通常用戶按鍵,在按下去之后,會有 20ms 左右的抖動,同時,在按鍵放開之后會有 20ms 左右的抖動。在這時候若采集信號,勢必導(dǎo)致誤操作,甚至系統(tǒng)崩潰。因此,在模擬或者數(shù)字電路中,我們要避免在最不穩(wěn)定的時候采集信號,進(jìn)行操作。對此一般產(chǎn)用消抖動的原理。一般可分為以下幾種:( 1)延時( 2)N 次低電平計數(shù)( 3)低通濾波;.在數(shù)字電路中, 可以掩飾, 當(dāng)然更方便的是直接N 次采樣,來判斷是否改變,以及改變的時間。因此做以下處理,進(jìn)行 N 次計數(shù),有效去噪聲,抖動,以及干擾。按鍵掃描模塊將輸出 key_flag 按鍵按下反饋信號,
23、以及即時輸出的數(shù)據(jù):3)數(shù)值輸入與計算數(shù)值采用撥碼開關(guān)輸入,同時為了確保數(shù)值在用戶撥動撥碼開關(guān)后輸入,更容易改變x 或者 y,由于硬件的局限,只能通過輕觸按鍵的觸發(fā)來實現(xiàn)數(shù)值的輸入。每個撥碼開關(guān)代表一個值( 0-9),同時,第一個輕觸按鍵表示x 的輸入觸發(fā),第二個輕觸按鍵表示y 的輸入觸發(fā), 第三個表示輸出x+y的結(jié)果,第四個表示輸出x*y 的結(jié)果。4)數(shù)碼管顯示數(shù)碼管譯碼電路跟之前的實驗一樣,通過點亮不同的段,來實現(xiàn)0-F 的顯示,簡易計算x,y 的值,以及結(jié)果剛好通過 4 位數(shù)碼管顯示出來,如下圖所示,9+9=18 , 9*9=81;.6.3 程序Calculator_Design 文件夾下的Calculator_Design.v 為該設(shè)計的頂層模塊Time_Counter 文件夾下的seg7_lut.v 文件為數(shù)碼管顯示模塊。Time_Counter 文件夾下的key_scan.v 文件為按鍵消抖掃描程序。Time_Counter 文件夾下的mult_4bits.v 文件為四位二進(jìn)制乘法器模塊。Time_Counter 文件夾下的adder_4bits.v 文件為四位二進(jìn)制加
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- jdg鋼管施工方案(3篇)
- 普外科-應(yīng)急預(yù)案(3篇)
- (新)教研組長會議上的校長講話稿(2篇)
- 2026年學(xué)校生產(chǎn)安全事故報告和調(diào)查處理制度范本
- 人員實名制管理制度
- 應(yīng)急預(yù)案演練計劃3篇
- 技能人員安全生產(chǎn)責(zé)任制管理制度(2篇)
- 南京市實名制管理制度
- 2025年企業(yè)知識產(chǎn)權(quán)保護(hù)與風(fēng)險防范策略手冊
- 會議報告與總結(jié)撰寫制度
- 水產(chǎn)總堿度總硬度課件
- 小學(xué)數(shù)學(xué)課堂教學(xué)方法和技巧
- 五年級上冊英語閱讀每日一練
- 農(nóng)業(yè)生態(tài)種植技術(shù)標(biāo)準(zhǔn)操作規(guī)程
- 儀器設(shè)備的清潔消毒課件
- 多項目管理標(biāo)準(zhǔn)化框架
- 急性胃炎課件
- 市場監(jiān)管局投訴舉報課件
- 智慧教育生態(tài)的協(xié)同發(fā)展機(jī)制及其實踐案例研究
- DBJ∕T 15-182-2020 既有建筑混凝土結(jié)構(gòu)改造設(shè)計規(guī)范
- 2.3.2 我國第一大河-長江(課件)2025-2026學(xué)年度人教版地理八年級上冊
評論
0/150
提交評論