微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教rom赋值的时候用阻塞还是非阻塞?

请教rom赋值的时候用阻塞还是非阻塞?

时间:10-02 整理:3721RD 点击:
假如
reg [18:0]  mem [0:44];
我进行赋值的时候
always @ (posedge i_clk)
begin
  mem[0] <= 19'h1;
  mem[1] <= 19'h2;
  .....
end

还是应该
always @ (*)
begin
  mem[0] = 19'h1;
  mem[1] = 19'h2;
  .....
end
有什么区别?

1. 你可以先去看看 blocking與non-blocking差別.
2. 我建議1&2 方法都不好. 用readmem比較好.



   不对啊,我只想做一个查找表而已,值是固定的,不需要readmem吧?

谢谢分享

阻塞和非阻塞的区别在于,阻塞是串行,第一条语句执行完了,再执行第二条;非阻塞是并行,always块内的语句同时进行。



   这个我理解,我是想问,rom的赋值,一般大家用的是阻塞还是非阻塞?

ROM是无法赋值的。
always @ (*)生成的应该是latch,也就是直接通过缓存接到高电平或低电平
always @ (posedge i_clk)生成的是D端接地或VCC的register。
如果只是FPGA上的查找表,可以用厂商IPcore来定义ROM,并指定初始化文件,这样可以使用片上RAM,同时省寄存器资源。



     ROM是无法赋值的。
always @ (*)生成的应该是latch,也就是直接通过缓存接到高电平或低电平
always @ (posedge i_clk)生成的是D端接地或VCC的register。
如果只是FPGA上的查找表,可以用厂商IPcore来定义ROM,并指定初始化文件,这样可以使用片上RAM,同时省寄存器资源。
看来我理解的很不透彻,哈,我想做个查找表,芯片内部的数据查找模块,应该要申请一个reg [N:0] table[M:0]的寄存器组是吧,
另外应该要用到上面两种赋值吧,不可以声明一个rom,然后用readmem吧,哪种更常用一点?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top