全备注: 正弦波型(简单易懂)

使用软件: Vivado   (需要使用.coe文件)

1  :(1)  生成.coe文件  

      新建一个txt文档,后缀名改成.coe. (注意文件名一定要英文开头,不能出现中文和中文的字母和特殊符号)

        全备注:  正弦波型(简单易懂)

     (2)    文档格式如下:

         全备注:  正弦波型(简单易懂)

 

        建完直接保存即可使用。

 

 2   : (1)   添加rom核

           全备注:  正弦波型(简单易懂)

 

        (2)    调试rom IP核    (我们写的正弦波是 8位宽 256个深度的)

          全备注:  正弦波型(简单易懂)

 

   (3)    选择寄存数据 (这样可以让输入或输出的数据更加稳定,但是需要延迟一个时钟周期)

                       全备注:  正弦波型(简单易懂)

 

          (4)   现在就来添加我们生成的 .coe文件 。

      全备注:  正弦波型(简单易懂)

 

     3     :     (1)    编写代码程序部分   

     

module rom(                     
input clk,                          //50M时钟
input rst,                          //复位
output [7:0] data             //rom 输出的数据
);

 

reg [7:0] addr;               //rom 数据地址
always@ (posedge clk or negedge rst) begin 
if (!rst)
addr <= 0;                         //复位地址清零
else 
addr <= addr + 1;             //地址自增
end 

dist_mem_gen_0 your_instance_name (         //例化的ROM
.a(addr), // input wire [7 : 0] a
.clk(clk), // input wire clk
.qspo(data) // output wire [7 : 0] qspo
);

 

endmodule

       (2)    编写tb仿真文件

`timescale 1ns / 1ps           // 时间单位1ns,时间精度1ps

 

module tb();
reg clk;                    //50M时钟
reg rst;                    //复位
wire [7:0] data;       //rom数据

initial begin            //初始化
clk = 0;
rst = 0;
#10 rst = 1; 
end

always #10 clk = ~clk;      //每10ps 反转一次.     因为我们上面定义的仿真精度就是1ps

rom inst_rom(                  //例化底层文件
.clk (clk) ,
.rst (rst) ,
.data (data) 
);
endmodule

    (3) :   看仿真图,验证程序.

全备注:  正弦波型(简单易懂)

 

 

  (简单程序:编程完成)

 

上一篇:交通信号灯


下一篇:数据发送模块---基于地址的检测(verilog代码)