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

  • 29
  • 0
  • 约4.88千字
  • 约 8页
  • 2016-10-23 发布于湖北
  • 举报

Verilog期末实验报告—波形发生器及答案.doc

一、实验目的 使用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)

1亿VIP精品文档

相关文档