Verilog期末实验报告-波形发生器_第1页
Verilog期末实验报告-波形发生器_第2页
Verilog期末实验报告-波形发生器_第3页
Verilog期末实验报告-波形发生器_第4页
Verilog期末实验报告-波形发生器_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

--.z..z.一、试验目的使用Verilog软件编写四种波形任意发生器的源代码,用modelsim软件进展仿真测试,进一步强化Verilog,modelsim软件的编程力量为进一步的编程学习打下良好的根底。二、试验原理该任意波形发生器要实现三个功能:〔1〕通过计数器并结合拼接操作产生四种波形正弦波,方波,三角波 角波形的5位数据地址。〔2〕ROM8ROM中。〔3〕.2位的波形选择开关端口。波形选择波形选择2bit正弦波00000~00111clk地址发生bi0-〕reset方波data[7:0]101000~011112图1整体设计方案10000~1011111000~111118由于编程序需要,数据会进展相应的修改。-y正弦波 方波11-1yy 111

*82* *0 8 0 8图2四种波形一个周期内的取样示意图四种波形数据地址对应的数据的存储器ROM依据示意图,由于实际状况需要,将正弦波平移至*轴以上,并将全部波形的峰100倍。1是ROM存储器波形选择地址取样点的地址ROM数据000001710000120000010171正弦波00011100001002900101000110290011110001000001001001010001010111000100方波0110110001110100.z.--.z..z.011111001000001000101001033100116710100100101016710110331011101100001100150110101001101115011100200111011331111067111ROM存储器1110112任意波形发生器verilog程序代码:modulewave(data,clk,add1,reset);//顶层模块端口定义output[7:0]data;inputclk,reset;input[1:0]addr1;Wire[1:0]addr1;wireclk,reset;//输入输出变量定义ADDR4(addr,clk,addr1,reset);//地址发生器模块调用rom1(addr,data);//ROM存储器模块调用endmodulemoduleADDR(addr,clk,addr1,reset);output[4:0]addr;inputclk,reset;wireclk,reset;reg[2:0]addr2;wire[1:0]addr1;reg[4:0]addr;initialaddr2=3”b000;//定义计数初值always(posedgeclkorposedgereset)//clkreset信号开启程序beginif(reset)beginaddr2<=0;//同步复位addr<=0;endelseif(addr2>=7)//addr27,addr2beginaddr2<=0;endelsebeginaddr2<=addr2+1;//addr20至7计数addr<={addr1,addr2};//addr1addr2addrendendendmodulemodulerom(addr,data);//数据存储器模块input[4:0]addr;output[7:0]data;function[6:0]romout;//32input[4:0]addr;reg[4:0]addr;wire[7:0]data;依据不同地址,得到不同数据。0:romout=171;:romout=200;:romout=171;:romout=100;:romout=29;:romout=0;:romout=29;:romout=100;:romout=0;:romout=0;:romout=0;:romout=0;12:romout=100;13:romout=100;14:romout=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;default:romout=8”h**;endcaseendfunctionassigndata=romout(addr);endmoduleverilog在quartus软件仿真截图将代码输入后,建立波形文件,定义输入输出端口后进展仿真。正弦波示意图:将两位波形选择端设置为00,得出正弦波示意图2图23.2.2.方波示意图:将两位波形选择端设置为01,得出方波示意图3图33.2.3三角波1示意图:将两位波形选择端设置为10,得出三角波1示意图4图43.2.4.三角波2示意图:将两位波形选择端设置为11,得出三角波2示意图5图53.2.5结论:确。-modelsim任意波形发生器测试程序仿真任意波形发生器测试程序代码。`timescale1ns/1ns`include“wave.v“modulewave_tp; //测试模块的名字regreset,clk;reg[1:0]addr1;//测试输入信号addr1定义为reg型wire[7:0]data;//测试输出信号data定义为wire型parameterdely=100;wavefourwave(data,clk,reset,addr1); //调用测试对象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#(dely*200)$finish;//endendmodulemodelsim测试程序仿真截图6:将波形输出格式设为模拟形式,可以看出正弦波的测试图图6. z.--.z..z.7:将波形输出格式设为离散输出形式,可以看出方波的测试图7图71测试图8:将波形输出格式设为模拟形式,可以看出三角波1的测试图8图82测试图9:将波形输出格式设为模拟形式,可以看出三角波2的测试图9图93.3.3.总结写正确。四、试验总结遇到的问题和对应的解决措施:编程过程中没有留意端口定义过程,没有正确理解wirereg导致出错〔解决方法:输出端口应设为可变的wire类型。ROM〔解决方法:应用在加法计数操作后。波形数据初值有负数,无法正确显示数字〔解决方法:将波形数据平移至*轴以上即可显示正确的波形数据〕一开头我是用拼接操作,有错误,无法正确显示波形数据〔解决方法:通case语句输入波形选择addr1端口,成功显示了波形。收获:了Verilog语言的使用,具体了解了整个程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论