从ROM中读取数据时序分析

本文详细探讨了在使用outputregister时,如何影响从ROM中数据的读取时序,通过比较不使用outputregister的情况,并结合代码实例,解释了为何读取延迟一个时钟周期。适合理解ROMIPI核工作原理和时序设计的工程师参考。
摘要由CSDN通过智能技术生成

output register对输出时序的影响

rom ip核可选择是否使用输出寄存器(output register),这会影响从rom读取数据的时序。

  • 不使用output register
    在这里插入图片描述
    在不使用output register时,在时钟第一个上升沿,在ADDRA上采样得到数据地址为AA。在时钟第二个上升沿处,对读出数据douta采样,得到数据为Data(AA)。
  • 使用output register
    在这里插入图片描述
    在使用output register时,在时钟的第一个上升沿,在ADDRA上采样得到数据地址为AA,在时钟的第三个上升沿处,对读出数据douta采样,得到数据为Data(AA)。
    因此,使用output register时,读数据会比不使用output register晚一个时钟。

举例

  • 设计文件代码(使用output register)
`timescale 1ns / 1ps


module bit(
    input  rst      ,
    input  bit_clk  ,
    output bit      ,
    output bit_valid
);

reg  [7:0] addra;
reg  bit_valid0;
reg  bit_valid1;
  
bit_rom u_bit_rom(
    .clka(bit_clk), // input wire clka
    .ena(1'b1),     // input wire ena
    .addra(addra),  // input wire [7 : 0] addra
    .douta(bit)     // output wire [0 : 0] douta
);    
    
always@(posedge bit_clk)begin
    if(rst)begin
        addra<=8'b0;
        bit_valid0<=1'b0;
        bit_valid1<=1'b0;
    end
    else begin
        addra<=addra+1'b1;
        bit_valid0<=1'b1;
        bit_valid1<=bit_valid0;
    end
end   

assign bit_valid=bit_valid1;

endmodule

  • 仿真文件代码
`timescale 1ns / 1ps


module tb_bit();
   
reg  rst;
reg  bit_clk;
wire bit;
wire bit_valid;    


initial begin
    rst=1;
    bit_clk=0;
    #200
    rst=0;
end

always #10 bit_clk=~bit_clk;  
    
bit u_bit(
    .rst      (rst      ),
    .bit_clk  (bit_clk  ),
    .bit      (bit      ),
    .bit_valid(bit_valid)
);   

 
integer bit_file;

initial begin
    bit_file=$fopen("G:/graduation_project/verilog/project_bpsk/bpsk_dsss/bpsk_dsss.srcs/txt/bit.txt");
end

always@(posedge bit_clk)begin
    if(bit_valid)
    $fdisplay(bit_file,"%d",bit);
end   
    
// 注意斜杠方向,每次仿真都会清空txt然后重新写入   
    
    
endmodule

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值