Altera rom 的modelsim仿真过程

modelsim ,如果不会用,自己找教程多练习一下

1.仿真文件放在同一个文件夹里。

其中altera_mf.v可以到C:\altera\13.1\quartus\eda\sim_lib  (quartus安装的位置)

port1_rom_ipcore.v 这个是rom ipcore的文件。

rom_top_tb.v 是测试文件。

2.我用的是modelsim SE-64 10.4版本,新建一个工程,

3.添加文件

4.添加后,如下图所示:

5.编译所有文件

6.运行仿真tb文件

7.启动仿真如下图

8.添加变量,到仿真波形中

 

9.会跳出下面的界面

10.启动仿真,将rom_rd_data进制修改一下(unsigned),还有就是格式修改一下analog(Automatic)

11.

如果你的仿真结果一直为0,可以参考下面的博客:

https://blog.csdn.net/chuoshumi7080/article/details/99906866

 

测试文件代码:rom_top_ tb.v

`timescale  1ns/1ns                // 定义仿真时间单位1ns和仿真时间精度为1ns

module  rom_top_tb;               // 测试模块

parameter  T = 20;                 // 时钟周期䶿0ns

reg  sys_clk;                      // 时钟信号
reg  sys_rst_n;                    // 复位信号


initial begin
    sys_clk            = 1'b0;
    sys_rst_n          = 1'b0;     // 复位
    #(T+1)  sys_rst_n  = 1'b1;     // 在第21ns的时候复位信号信号䋊end


always #(T/2) sys_clk = ~sys_clk;

//例化led模块
rom_top  rom_top_uut (
    .sys_clk     (sys_clk  ),
    .sys_rst_n   (sys_rst_n)
);

endmodule

rom_top.v代码


module rom_top(
    input               sys_clk    ,  //时钟信号
    input               sys_rst_n     //复位信号,低电平有效 
    );	 

wire [7:0]  rom_rd_data;  //数据
wire [7:0] rom_addr ;     //地址
wire rom_rd_en;

//ROM读模块
rom_rw  u1_rom_rw(
    .clk            (sys_clk),
    .rst_n          (sys_rst_n),
    .rom_rd_en      (rom_rd_en ),
    .rom_addr       (rom_addr),
    .rom_rd_data    (rom_rd_data)
  );

 
//rom ip core 
port1_rom_ipcore rom_1port_ipcore_inst (
	.address ( rom_addr ),
	.clock   ( sys_clk ),
	.rden    ( rom_rd_en ),
	.q       ( rom_rd_data )
); 

  	
endmodule

rom_rw.v代码

//ROM读模块
module rom_rw(
    input               clk        ,  //时钟信号
    input               rst_n      ,  //复位信号,低电平有效
    output              rom_rd_en  ,  //rom读使能
    output  reg  [7:0]  rom_addr   ,  //rom读写地址    
    input        [7:0]  rom_rd_data   //rom读数据        
    );

assign  rom_rd_en =1'b1;

//读写地址信号 范围:0~31
always @(posedge clk or negedge rst_n) begin
    if(rst_n == 1'b0)
        rom_addr <= 8'd0;
    else  begin
        rom_addr <= rom_addr + 1'b1;
    end 
end

endmodule

其他的代码就不附上去了,mif文件如何生成,还有rom ipcore 如何使用,可以参考我之前的博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值