Verilog期末实验报告—波形发生器..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、实验目的 使用Verilog软件编写四种波形任意发生器的源代码,用modelsim软件进行仿真测试,进一步强化Verilog,modelsim软件的编程能力为进一步的编程学习打下良好的基础。 二、实验原理 2.1该任意波形发生器要实现三个功能: (1)通过计数器并结合拼接操作产生四种波形正弦波,方波,三角波1,三角波形的5位数据地址。 (2).设定ROM中对应波形地址地址的8位数值,将所有波形数值存储到ROM中。 (3).设定2位的波形选择开关端口。 2bit 00000~00111 01000~01111 3bit data[7:0] 10000~10111 11000~11111 图 1整体设计方案 2.2 四种波形要在一个周期内等间隔取8个点,定义对应的数据,下图为示意图,由于编程序需要,数据会进行相应的修改。 图2 四种波形一个周期内的取样示意图 2.3 四种波形数据地址对应的数据的存储器ROM 根据示意图,由于实际情况需要,将正弦波平移至x轴以上,并将所有波形的峰峰值取大100倍。 下表1是ROM存储器 波形选择地址 取样点的地址 ROM数据 00 000 171 00 001 200 00 010 171 00 011 100 00 100 29 00 101 0 00 110 29 00 111 100 01 000 0 01 001 0 01 010 0 01 011 0 01 100 100 01 101 100 01 110 100 01 111 100 10 000 0 10 001 0 10 010 33 10 011 67 10 100 100 10 101 67 10 110 33 10 111 0 11 000 0 11 001 50 11 010 100 11 011 150 11 100 200 11 101 133 11 110 67 11 111 0 表1 ROM存储器 实验内容 3.1 任意波形发生器verilog程序代码: module wave(data,clk,add1,reset);//顶层模块端口定义 output[7:0]data; input clk,reset; input[1:0] addr1; Wire[1:0] addr1; wire clk,reset;//输入输出变量定义 ADDR 4(addr,clk,addr1,reset);//地址发生器模块调用 rom 1(addr,data);//ROM存储器模块调用 endmodule module ADDR(addr,clk,addr1,reset); output[4:0] addr; input clk,reset; wire clk,reset; reg[2:0] addr2; wire[1:0] addr1; reg[4:0] addr; initial addr2=3b000; //定义计数初值 always @(posedge clk or posedge reset)//每当有clk,或reset信号开启程序 begin if(reset) begin addr2=0;//同步复位 addr=0; end else if(addr2=7)//addr2计数至7时,addr2复位 begin addr2=0; end else begin addr2=addr2+1;//addr2由0至7计数 addr={addr1,addr2};//addr1与addr2地址拼接为addr的最终地址 end end endmodule

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档