modelsim仿真ROM IP数据输出为0的解决办法

Posted 只是有点小怂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了modelsim仿真ROM IP数据输出为0的解决办法相关的知识,希望对你有一定的参考价值。


module ROM(clk, rst_n, q);
	input clk;
	input rst_n;
	
	output [7:0] q;
	wire [7:0]addr;
	
	//控制地址变化
	addr_ctrl addr_ctrl_dut(
	.clk(clk), 
	.rst_n(rst_n), 
	.addr(addr)
	);

	//IP核:ROM 
	rom_8x256 my_rom_dut(
	.address(addr),
	.clock(clk),
	.q(q)
	);
	
	endmodule
  • 地址模块
module addr_ctrl(clk, rst_n, addr);

	input clk;
	input rst_n;
	
	output reg [7:0] addr;		//控制ROM的地址变化(0~255)

	always@ (posedge clk,negedge rst_n)begin
		if(rst_n == 1'b0)
			addr <= 8'd0;
		else if(addr <= 8'd255)
			addr <= addr + 8'd1;
		else
			addr <= 8'd0;
	end
endmodule

  • 添加仿真文件tb_ROM.v进行测试
`timescale 1ns/1ns

module tb_ROM();

reg clk;
reg rst_n;

wire [7:0] q;

initial 
	begin
		clk = 1'b1;
		rst_n <= 1'b0;
		#10
		rst_n <= 1'b1;
	end
	
always #10 clk = ~clk;

ROM ROM_inst
(
	.clk(clk),
	.rst_n(rst_n),
	.q(q)
);

endmodule
  • 存在两个触发器,数据出现比地址出现晚了 2 个时钟周期


  • 踩坑记录点

  • 没有altera_mf文件仿真库,在modelsim中确实没看见这个仿真库,但有alter_mf_ver应该就行了

  • 我在这个安装目录下看到是有这个文件的 \\17.1\\quartus\\eda\\sim_lib\\altera_mf.v

  • 看mif文件是否加载进来可以直接点击Memory List选项卡,双击查看是否有数据

  • 我试了这个改路径方法不太行 modelsim仿真ROM IP核遇到无法读取mif文件的解决方法 https://blog.csdn.net/huhangf362/article/details/86539478

  • 查看rom_8x256文件可以看出mif文件在project文件夹中

  • 另外修改IP核的方法,把选项卡切到IP Components双击IP核即可

以上是关于modelsim仿真ROM IP数据输出为0的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

modelsim仿真ROM IP数据输出为0的解决办法

[转]Quartus和Modelsim仿真ROM模块

用Verilog写的ROM存储器里面有memory类型变量在Modelsim里面仿真时看不见是怎么回事?求高手指点。谢谢

quartus ii中仿真rom时遇到的问题

Quartus II 与ModelSim-Altera联合仿真FFT IP核之FFT IP调用与例程数据验证-lab1

基于FPGA的DDS波形发生器可以用modelsim进行功能仿真吗?