在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2636|回复: 7

[原创] 请教rom赋值的时候用阻塞还是非阻塞?

[复制链接]
发表于 2012-4-27 09:43:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
假如

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

有什么区别?
发表于 2012-4-27 11:50:45 | 显示全部楼层
1. 你可以先去看看 blocking與non-blocking差別.
2. 我建議1&2 方法都不好. 用readmem比較好.
 楼主| 发表于 2012-4-27 13:26:45 | 显示全部楼层
回复 2# blackAJ


   不对啊,我只想做一个查找表而已,值是固定的,不需要readmem吧?
发表于 2012-4-27 14:31:03 | 显示全部楼层
谢谢分享
发表于 2012-4-27 21:40:13 | 显示全部楼层
阻塞和非阻塞的区别在于,阻塞是串行,第一条语句执行完了,再执行第二条;非阻塞是并行,always块内的语句同时进行。
 楼主| 发表于 2012-4-28 00:26:05 | 显示全部楼层
回复 5# ninghao23


   这个我理解,我是想问,rom的赋值,一般大家用的是阻塞还是非阻塞?
发表于 2012-4-28 09:04:05 | 显示全部楼层
ROM是无法赋值的。
always @ (*)生成的应该是latch,也就是直接通过缓存接到高电平或低电平
always @ (posedge i_clk)生成的是D端接地或VCC的register。

如果只是FPGA上的查找表,可以用厂商IPcore来定义ROM,并指定初始化文件,这样可以使用片上RAM,同时省寄存器资源。
 楼主| 发表于 2012-4-28 10:31:53 | 显示全部楼层
回复 7# everhappy


     
ROM是无法赋值的。
always @ (*)生成的应该是latch,也就是直接通过缓存接到高电平或低电平
always @ (posedge i_clk)生成的是D端接地或VCC的register。

如果只是FPGA上的查找表,可以用厂商IPcore来定义ROM,并指定初始化文件,这样可以使用片上RAM,同时省寄存器资源。

看来我理解的很不透彻,哈,我想做个查找表,芯片内部的数据查找模块,应该要申请一个reg [N:0] table[M:0]的寄存器组是吧,
另外应该要用到上面两种赋值吧,不可以声明一个rom,然后用readmem吧,哪种更常用一点?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 11:21 , Processed in 0.022649 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表