Verilog期末實驗報告—波形發(fā)生器_第1頁
Verilog期末實驗報告—波形發(fā)生器_第2頁
Verilog期末實驗報告—波形發(fā)生器_第3頁
Verilog期末實驗報告—波形發(fā)生器_第4頁
Verilog期末實驗報告—波形發(fā)生器_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、實驗目的使用Verilog軟件編寫四種波形任意發(fā)生器的源代碼,用 modelsim軟件進 行仿真測試,進一步強化Verilog , modelsim軟件的編程能力為進一步的編程學 習打下良好的基礎。二、實驗原理該任意波形發(fā)生器要實現(xiàn)三個功能:(1)通過計數(shù)器并結(jié)合拼接操作產(chǎn)生四種波形正弦波,方波,三角波 1,三角波形的5位數(shù)據(jù)地址。(2) .設定ROMfr對應波形地址地址的8位數(shù)值,將所有波形數(shù)值存儲到 ROM1(3) .設定2位的波形選擇開關端口。圖1整體設計方案四種波形要在一個周期內(nèi)等間隔取 8個點,定義對應的數(shù)據(jù),下圖為示意圖, 由于編程序需要,數(shù)據(jù)會進行相應的修改。圖2四種波形一個

2、周期內(nèi)的取樣示意圖四種波形數(shù)據(jù)地址對應的數(shù)據(jù)的存儲器 ROM根據(jù)示意圖,由于實際情況需要,將正弦波平移至x軸以上,并將所有波形的峰 峰值取大100倍。下表1是RO附儲器波形選擇地址取樣點的地址ROM數(shù)據(jù)00000171正弦波0000120000010171000111000010029001010001102900111100010000方波01001001010001011001100100011011000111010001111100100000三角波1100010100103310011671010010010101671011033101110110000三角波21100150110

3、101001101115011100200111011331111067111110表1 ROM存儲器三、實驗內(nèi)容任意波形發(fā)生器verilog 程序代碼:module wave(data,clk,add1 , reset);/ 頂層模塊端口定義output7:0data;input clk,reset;input1:0 addr1;Wire1:0 addr1;wire clk,reset;/ 輸入輸出變量定義ADDR 4(addr,clk,addr1,reset);/ 地址發(fā)生器模塊調(diào)用rom 1(addr,data);/ROM 存儲器模塊調(diào)用endmodulemodule ADDR(addr

4、,clk,addr1,reset);output4:0 addr;input clk,reset;wire clk,reset;reg2:0 addr2;wire1:0 addr1;reg4:0 addr;initial addr2=3'b000; / 定義計數(shù)初值always (posedge clk or posedge reset)/ 每當有 clk, 或 reset 信號開啟程 序beginif(reset)beginaddr2<=0;/ 同步復位addr<=0;endelse if(addr2>=7)/addr2 計數(shù)至 7 時, addr2 復位begin

5、addr2<=0;endelsebeginaddr2<=addr2+1;/addr2 由 0 至 7 計數(shù)addr<=addr1,addr2;/addr1 與 addr2 地址拼接為 addr 的最終地址endendendmodulemodule rom(addr,data);/ 數(shù)據(jù)存儲器模塊input4:0 addr;output7:0 data;function6:0 romout;/ 定義函數(shù),存儲32 個波形取樣點地址的數(shù)據(jù)input4:0 addr;reg4:0 addr;wire7:0 data;case(addr)/ 根據(jù)不同地址,得到不同數(shù)據(jù)。0 : rom

6、out =171 ;1 : romout =200 ;2 : romout =171 ;3 : romout =100 ;4 : romout =29 ;5 : romout =0 ;6 : romout =29 ;7 : romout =100 ;8 : romout =0 ;9 : romout =0 ;10 : romout =0 ;11 : romout =0 ;12 : romout =100 ;13 : romout =100 ;14 : romout =100 ;15 : romout =100 ;16 : romout =0 ;17 : romout =0 ;18 : romo

7、ut =33 ;19 : romout =67 ;20 : romout =100 ;21 : romout =67 ;22 : romout =33 ;23 : romout =0 ;24 : romout =0 ;25 : romout =50 ;26 : romout =100 ;27 : romout =150 ;28 : romout =200 ;29 : romout =133 ;30 : romout =67 ;31 : romout =0 ;default : romout = 8'hxx;endcaseendfunctionassign data = romout(a

8、ddr);endmodule verilog 在quartus軟件仿真截圖將代碼輸入后,建立波形文件,定義輸入輸出端口后進行仿真正弦波示意圖:將兩位波形選擇端設置為00,得出正弦波示意圖2圖2方波示意圖:三角波1示意圖:將兩位波形選擇端設置為10,得出三角波1示意圖4那 力 iip a*w c ii?q p ni幽9 »eo® ,u kmo p m尹BL:n 卻址,_ij i_i ii ii itj ij-1r ii11u rf f=5r印'刀工K33."-1圖4三角波2示意圖:將兩位波形選擇端設置為11,得出三角波2示意圖5圖5結(jié)論:由上面的四個波形截圖

9、可知,在一個周期內(nèi),通過不同的波形選擇端控制,該程 序?qū)崿F(xiàn)了基本的任意波形產(chǎn)生的功能, 產(chǎn)生了正確的波形數(shù)據(jù),說明代碼編寫正 確。modelsim任意波形發(fā)生器測試程序仿真 任意波形發(fā)生器測試程序代碼。'timescale 1ns/1ns'include ""module wave_tp;測試模塊的名字reg reset,clk;reg1:0 addri;測試輸入信號 addri定義為reg型wire7:0 data;測試輸出信號 data定義為 wire型parameter dely=100;wave fourwave(data,clk,reset,add

10、r1);調(diào)用測試對象always #(dely/2) clk=clk;initialbeginreset=1;clk=0;addr1=0;#(dely*200) reset=0; 延遲 200dely 后先進行復位#(dely*200) addr1=2'b00;/ 延遲 200dely 后測試出正弦波#(dely*200) addr1=2'b01;/ 延遲 200dely 后測試出方波#(dely*200) addr1=2'b10; 延遲 200dely 后測試出三角波 1#(dely*200) addr1=2'b11; 延遲 200dely 后測試出三角波2#

11、(dely*200) $finish;/ endendmodulemodelsim測試程序仿真截圖將測試程序代碼與源程序代碼一起輸入后進行編譯,顯示波形如下:正弦波測試圖6:將波形輸出格式設為模擬形式,可以看出正弦波的測試圖方波測試圖7:將波形輸出格式設為離散輸出形式,可以看出方波的測試圖圖7三角波1測試圖8:將波形輸出格式設為模擬形式,可以看出三角波 1的測試圖8圖8三角波2測試圖9:將波形輸出格式設為模擬形式,可以看出三角波 2的測試圖9圖9總結(jié)由上面的四個測試波形截圖可知,在一個周期內(nèi),通過不同的波形選擇端控制, 該程序?qū)崿F(xiàn)了基本的任意波形產(chǎn)生的功能, 產(chǎn)生了正確的實驗波形,說明代碼編

12、寫正確。四、實驗總結(jié)遇到的問題和對應的解決措施: 1) 1) 編程過程中沒有注意端口定義過程, 沒有正確理解wire 與 reg 類型的區(qū)別。導致出錯(解決辦法:輸出端口應設為可變的 wire 類型) 。 2) 一開始拼接操作用錯了地方,用在了ROMJ部,導致錯誤。(解決辦法:應用在加法計數(shù)操作后) 。( 3)波形數(shù)據(jù)初值有負數(shù),無法正確顯示數(shù)字。 (解決辦法:將波形數(shù)據(jù)平移至x 軸以上即可顯示正確的波形數(shù)據(jù))( 4)一開始我是用拼接操作,有錯誤,無法正確顯示波形數(shù)據(jù)(解決辦法:通過 case 語句輸入波形選擇 addr1 端口,成功顯示了波形) 。收獲:通過這次期末實驗, 雖然花了較多時間, 遇到了許多的難題, 但讓我進一步認識了 Verilog 語言的使用, 詳細了解了整個程序的設計和仿真過程, 獨立思考并通過很多的調(diào)

溫馨提示

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

評論

0/150

提交評論