




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于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:0sum,output regcarry_out /溢出位);always(posedge clk or negedge rst_n)beginif(!rst_n)carry_out, sum = 0;elsecarry_out, sum = x + y;endendmodule2) substractor_4bits.v減法器modulesubtractor_4bits(inputclk,inputrst_n,input3:0x,input3:0y,outputreg3:0sub,outputregborrow_out);always(posedge clk or negedge rst_n)beginif(!rst_n)borrow_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,outputreg6:0oSEG);always (iDIG)begincase(iDIG)4h1: oSEG = 7b1111001;/ -t-4h2: oSEG = 7b0100100; / | |4h3: oSEG = 7b0110000; / lt rt4h4: oSEG = 7b0011001; / | |4h5: oSEG = 7b0010010; / -m-4h6: oSEG = 7b0000010; / | |4h7: oSEG = 7b1111000; / lb rb4h8: 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;endcaseendendmodule1.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é)果。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)制乘法功能,最終可以在實驗板上觀察結(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(inputclk,inputrst_n,inputdin_en,/H vaildinputdin,outputregdout);/capture the posedge of din_en for data receiveregdin_en_r0,din_en_r1;always(posedge clk or negedge rst_n)beginif(!rst_n)begindin_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時,din_flag的值變?yōu)楦唠娖骄S持一個時鐘周期(脈沖邊沿檢測)/din_en作為數(shù)據(jù)輸入的標(biāo)志/-reg3:0sequence_data;/序列數(shù)據(jù)寄存器always(posedge clk or negedge rst_n)beginif(!rst_n)beginsequence_data = 0;/初始化時寄存器狀態(tài)dout = 0; /寄存器輸出為0endelse if(din_flag)/din_en上升沿,din_flag=1beginsequence_data = sequence_data2:0, din; /串行輸入dout = (sequence_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é)果。在文件variable_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ù)周期,保證肉眼可以看得到數(shù)據(jù)的變化。4.3 程序1) variable_counter.v 變模計數(shù)器頂層模塊modulevariable_counter(inputclk, /CLOCK_50inputrst_n, /SW17input 0:0 SW, /SW0控制變模output6:0HEX0, /ge_dataoutput6:0HEX1 /shi_data);wire7:0max_vaule = SW0 ? 8d64 : 8d16;reg23:0cnt;always(posedge clk or negedge rst_n)beginif(!rst_n)cnt = 0;elsecnt = (cnt = 24d12500000) ? 24d0 : cnt + 1b1;endwiredelay02_flag = (cnt = 24d12500000) ? 1b1 : 1b0;/-reg7: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_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:(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);Endmodule2)Seg7_lut.v 數(shù)碼管顯示模塊與Lab1中的相同4.3 結(jié)果SW0=0時,計數(shù)器的最大值為16SW0=1時,計數(shù)器的最大值為645、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ā)板的時鐘頻率為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文件moduleled_display(inputclk,inputrst_n,outputreg7:0led_data);/-reg27:0cnt;always(posedge clk or negedge rst_n)beginif(!rst_n)cnt = 0;elsecnt = (cnt = 28d50_000000) ? 28d0 : cnt + 1b1; /1sendwiredelay01_flag = (cnt = 28d50_000000) ? 1b1 : 1b0;always(posedge clk or negedge rst_n)beginif(!rst_n)led_data = 0;else if(delay01_flag)/計時1S led_data = led_data6:0,1b1;/每一秒左移一位endendmodule5.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時,所有計數(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文件為數(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) 加法、乘法電路 在前面的實驗中已經(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按鍵按下反饋信號,以及即時輸出的數(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=816.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_4bit
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國智能家電遠(yuǎn)程控制行業(yè)市場評估分析及投資發(fā)展盈利預(yù)測報告
- 生活用紙項目商業(yè)計劃書
- 嘉興高低壓配電柜項目可行性研究報告
- 針織紗庫行業(yè)深度研究分析報告(2024-2030版)
- 紙制板項目投資可行性研究分析報告(2024-2030版)
- 管理文員實習(xí)心得體會總結(jié)
- 企業(yè)三體系培訓(xùn)課件
- 2021-2026年中國人參飲料行業(yè)市場調(diào)研及投資戰(zhàn)略規(guī)劃報告
- 2025年汽車濾清器項目可行性研究報告
- 2025年中國露酒行業(yè)市場深度分析及投資潛力預(yù)測報告
- 住院患者跌倒、墜床、壓力性損傷的風(fēng)險評估及管理
- 東南大學(xué)版三基內(nèi)科
- 《餐廳服務(wù)禮儀培訓(xùn)》課件
- 精神科藏藥安全警示教育
- 2025年中國電信云網(wǎng)資源管理技能認(rèn)證考試題及答案
- 高中數(shù)學(xué)集合練習(xí)題160題-包含所有題型-附答案
- 《駱駝祥子》名著閱讀課件
- 能源行業(yè)能源管理體系建設(shè)方案
- 《學(xué)科教學(xué)與德育及心理健康教育有機(jī)融合的研究》課題結(jié)題報告
- 中考英語高頻詞匯大綱表(人教版)
- SMP-04-013-00 藥品受托企業(yè)審計評估管理規(guī)程
評論
0/150
提交評論