verilog中是否有一种方法可以从特定地址开始读取ROM数据?

时间:2019-06-21 03:23:30

标签: verilog

我设计了一个用于系数的ROM和一个上下计数器来逐一读取这些系数,但是对于起点,有两种情况,其中类型1的系数特定,类型2的系数另一组。 ..例如,对于类型1,我想从地址0开始,对于类型2,我想从地址30开始...我记得有人告诉我可以使用一些#或某些东西,但我不记得实际是什么方式

这是我的验证码

module UDcounter(input clk,rst,up,GItype,
                 output reg [5:0]addr); 

always @(posedge clk,posedge rst)
if (rst)
      addr<=6'b0;
 else   
    begin
      if (GItype)  //assume 1 is a long GI type
        begin
         // addr=6'b000000;
           if (up)
             addr=addr+1;
           else addr=addr-1;
         end
      else   //for short GI
        begin
          //addr=6'b100000;
          if (up)
          addr=addr+1;
          else addr=addr-1; 
        end
    end

endmodule

这里的错误是,例如,每个时钟周期都从addr = 0开始寻址,并且输出地址始终为1(对于+1)行

1 个答案:

答案 0 :(得分:0)

因此我从您的问题中了解到,您想设计一个可存储系数的ROM。 根据您的问题,我假设您在ROM中存储了两种系数,即类型a和类型b,例如类型a的起始地址为0,类型b的起始地址为30。要访问ROM,您需要两个计数器即将用作地址指针的addr_ptr_a和addr_ptr_b,假设ROM具有约60个地址位置,然后addr_ptr_a将从0计数到29,addr_ptr_b则从30计数到60。 GItype信号可用于确定启用哪个计数器。 我假设是顺序读取操作,对于随机读取操作,您将需要一个单独的逻辑来生成读取地址。