




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一、實驗?zāi)康氖褂肰erilog軟件編寫四種波形任意發(fā)生器的源代碼,用modelsim軟件進(jìn)行仿真測試,進(jìn)一步強化Verilog,modelsim軟件的編程能力為進(jìn)一步的編程學(xué)習(xí)打下良好的基礎(chǔ)。二、實驗原理2.1該任意波形發(fā)生器要實現(xiàn)三個功能:(1)通過計數(shù)器并結(jié)合拼接操作產(chǎn)生四種波形正弦波,方波,三角波1,三角波形的5位數(shù)據(jù)地址。(2).設(shè)定ROM中對應(yīng)波形地址地址的8位數(shù)值,將所有波形數(shù)值存儲到ROM中。(3).設(shè)定2位的波形選擇開關(guān)端口。波形選擇 正弦波 方波三角波1三角波2 2bit地址發(fā)生器(0-7) 0000000111clk 01000011113bit data7:0reset
2、1000010111 1100011111圖 1整體設(shè)計方案2.2 四種波形要在一個周期內(nèi)等間隔取8個點,定義對應(yīng)的數(shù)據(jù),下圖為示意圖,由于編程序需要,數(shù)據(jù)會進(jìn)行相應(yīng)的修改。8881 三角波1 三角波2xy00yyx1x1 方波 正弦波1-1 圖2 四種波形一個周期內(nèi)的取樣示意圖2.3 四種波形數(shù)據(jù)地址對應(yīng)的數(shù)據(jù)的存儲器ROM根據(jù)示意圖,由于實際情況需要,將正弦波平移至x軸以上,并將所有波形的峰峰值取大100倍。下表1是ROM存儲器 正弦波波形選擇地址 取樣點的地址 ROM數(shù)據(jù) 000001710000120000010171000111000010029001010001102900111
3、方波1000100000100100101000101100110010001101100011101000111110010000 三角波1010001010010331001167101001001010167101103310111 三角波201100001100150110101001101115011100200111011331111067111110 表1 ROM存儲器3、 實驗內(nèi)容3.1 任意波形發(fā)生器verilog程序代碼:module wave(data,clk,add1,reset);/頂層模塊端口定義output7:0data;input clk,reset;input
4、1: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,clk,addr1,reset);output4:0 addr;input clk,reset;wire clk,reset;reg2:0 addr2;wire1:0 addr1;reg4:0 addr;initial addr2=3b000; /定義計數(shù)初值always (posedge clk or posedg
5、e reset)/每當(dāng)有clk,或reset信號開啟程序beginif(reset) beginaddr2=0;/同步復(fù)位addr=7)/addr2計數(shù)至7時,addr2復(fù)位beginaddr2=0;endelse beginaddr2=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ù)inpu
6、t4:0 addr;reg4:0 addr;wire7:0 data;case(addr)/根據(jù)不同地址,得到不同數(shù)據(jù)。0 : romout =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 : romou
7、t =100 ;15 : romout =100 ;16 : romout =0 ;17 : romout =0 ;18 : romout =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 ;de
8、fault : romout = 8hxx;endcaseendfunctionassign data = romout(addr);endmodule3.2 verilog在quartus軟件仿真截圖將代碼輸入后,建立波形文件,定義輸入輸出端口后進(jìn)行仿真。3.2.1正弦波示意圖:將兩位波形選擇端設(shè)置為00,得出正弦波示意圖2圖23.2.2.方波示意圖:將兩位波形選擇端設(shè)置為01,得出方波示意圖3圖33.2.3 三角波1示意圖:將兩位波形選擇端設(shè)置為10,得出三角波1示意圖4圖43.2.4.三角波2示意圖:將兩位波形選擇端設(shè)置為11,得出三角波2示意圖5圖53.2.5結(jié)論:由上面的四個波形截圖
9、可知,在一個周期內(nèi),通過不同的波形選擇端控制,該程序?qū)崿F(xiàn)了基本的任意波形產(chǎn)生的功能,產(chǎn)生了正確的波形數(shù)據(jù),說明代碼編寫正確。3.3 modelsim任意波形發(fā)生器測試程序仿真3.3.1 任意波形發(fā)生器測試程序代碼。timescale 1ns/1nsinclude wave.vmodule wave_tp; /測試模塊的名字reg reset,clk;reg1:0 addr1; /測試輸入信號addr1定義為reg 型wire7:0 data; /測試輸出信號data定義為wire 型parameter dely=100;wave fourwave(data,clk,reset,addr1);
10、/調(diào)用測試對象always #(dely/2) clk=clk;initial beginreset=1;clk=0;addr1=0;#(dely*200) reset=0;/延遲200dely后先進(jìn)行復(fù)位#(dely*200) addr1=2b00;/延遲200dely后測試出正弦波#(dely*200) addr1=2b01;/延遲200dely后測試出方波#(dely*200) addr1=2b10;/延遲200dely后測試出三角波1#(dely*200) addr1=2b11;/延遲200dely后測試出三角波2#(dely*200) $finish;/endendmodule 3.
11、3.2 modelsim測試程序仿真截圖將測試程序代碼與源程序代碼一起輸入后進(jìn)行編譯,顯示波形如下:3.3.2.1正弦波測試圖6:將波形輸出格式設(shè)為模擬形式,可以看出正弦波的測試圖圖63.3.2.2方波測試圖7:將波形輸出格式設(shè)為離散輸出形式,可以看出方波的測試圖7圖73.2.2.3三角波1測試圖8:將波形輸出格式設(shè)為模擬形式,可以看出三角波1的測試圖8圖83.2.2.4三角波2測試圖9:將波形輸出格式設(shè)為模擬形式,可以看出三角波2的測試圖9圖93.3.3.總結(jié)由上面的四個測試波形截圖可知,在一個周期內(nèi),通過不同的波形選擇端控制,該程序?qū)崿F(xiàn)了基本的任意波形產(chǎn)生的功能,產(chǎn)生了正確的實驗波形,說明
12、代碼編寫正確。4、 實驗總結(jié)4.1遇到的問題和對應(yīng)的解決措施:(1)編程過程中沒有注意端口定義過程,沒有正確理解wire與reg類型的區(qū)別。導(dǎo)致出錯(解決辦法:輸出端口應(yīng)設(shè)為可變的wire類型)。(2)一開始拼接操作用錯了地方,用在了ROM內(nèi)部,導(dǎo)致錯誤。(解決辦法:應(yīng)用在加法計數(shù)操作后)。(3)波形數(shù)據(jù)初值有負(fù)數(shù),無法正確顯示數(shù)字。(解決辦法:將波形數(shù)據(jù)平移至x軸以上即可顯示正確的波形數(shù)據(jù))(4)一開始我是用拼接操作,有錯誤,無法正確顯示波形數(shù)據(jù)(解決辦法:通過case語句輸入波形選擇addr1端口,成功顯示了波形)。4.2收獲: 通過這次期末實驗,雖然花了較多時間,遇到了許多的難題,但讓我進(jìn)一步認(rèn)識了Verilog語言的使用,詳細(xì)了解了整個程序的設(shè)計和仿真過程,
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市橋梁施工承包合同示例
- 機械設(shè)備吊裝安全技術(shù)措施
- 國有企業(yè)中青年干部團(tuán)隊協(xié)作培訓(xùn)心得體會
- 砂石料供應(yīng)合同范例
- 電子產(chǎn)品購銷合同(四)
- 合伙企業(yè)投資合同范例
- 林地承包權(quán)交易合同
- 經(jīng)濟(jì)性裁員合同解除流程及勞動合同范本
- 醫(yī)療事故補償合同協(xié)議之五
- 企業(yè)勞動合同范本解析與應(yīng)用
- 09J202-1 坡屋面建筑構(gòu)造(一)-2
- 光伏電站土建工程施工技術(shù)方案
- 2024年上海英語高考卷及答案完整版
- 物業(yè)公司客戶服務(wù)課件
- 腦卒中患者的康復(fù)護(hù)理查房
- 酶工程技術(shù)在茶葉深加工中的應(yīng)用
- 人教版英語八年級下冊全冊教案教學(xué)設(shè)計及教學(xué)反思
- 02J401 鋼梯【含03年修改】圖集
- 烹飪概論教學(xué)大綱
- Android移動應(yīng)用開發(fā)基礎(chǔ)教程-教案
- 腦梗合并心衰護(hù)理查房
評論
0/150
提交評論