温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

RAM中的addra的bit数目

发布时间:2020-06-24 06:52:08 来源:网络 阅读:1382 作者:lihaichuan 栏目:开发技术

一个RAM例化形式如下

 

reg [7:0] addra_A;

reg [7:0] addrb_A;

A_RAM uut(                       //RAM 宽度:16  深度:480
  .clka(clk),
  .ena(ena_A),
  .wea(1'b1),
  .addra(addra_A),
  .dina(dina_mv),
  .douta(douta_A),
  .clkb(clk),
  .enb(enb_A),
  .web(1'b0),
  .addrb(addrb_A),
  .dinb(dinb_mv),
  .doutb(doutb_A)
 );
其中RAM中的addra为9bit 即 addra[8:0] ;

而连接RAM地址的addra_A和addrb_A为8bit

这样RAM会出现问题。

如上面的例子 若8bit的addra_A=8'b1010_1010,例化后,addra=9'bZ_1010_1010。前面一位变成Z。就无法识别addra的数值了。

但是addra_A位数可以大于addra的,赋值时,产生截断。其实就相当于addra_A把值按位赋值给addra。

总结:

1、addra和addra_A位数应该相同。同理,不仅仅是RAM例化时,两者位数要相同,普通模块也要相同。

2、在verilog代码里(不是模块例化)

reg [2:0] a;   reg [3:0] b;

b<=a;    

在verilog模块的代码里可以这样写。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI