今天做DDS用到ROM,但用ModelSim仿真的时候总是结果不正确,就好好研究了一下ROM的时序:
在Quartus II里面建立一个BDF电路图文件
1、NEW 一个ROM初始数据文件MIF

Number of words 设定数据深度
Word size 设定数据宽度
点击Edit/ Custom Fill Cells

将0到4096的地址里面写入增加的整数
2、在里面添加ROM,如下图:

设定数据位数为12bits,数据深度为16383,即地址为14bits , 2^14 = 16383

添加ROM初始数据MIF文件

3、在BDF文件里面加入ROM,并增加引脚

4、ModelSim testbench文件为:
`timescale 10 ns/ 10 ns
module dds_tb();
reg [13:0] address;
reg clock;
wire [11:0] q;
dds i1 (
.address(address),
.clock(clock),
.q(q)
);
initial
begin
clock=0;
#1 address = 1;
repeat(4096) #12 address = address + 1;
#50000 $stop;
end
always #2 clock=~clock;
endmodule
5、ModelSim仿真图

和ROM的时序相比

浙公网安备 33010602011771号