使用软件: 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) : 看仿真图,验证程序.
(简单程序:编程完成)