EETOP 创芯网论坛

找回密码

  登录   注册  

搜帖子
汽车电子资料大全(下载奖励300信元)
查看: 3218|回复: 11

[求助] verilog for语句使用

[复制链接]
发表于 2013-8-14 12:42:08 | 显示全部楼层 |阅读模式

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

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

x
请教各位:
1、FPGA程序设计时,for语句什么情况下使用?
2、形如
always @(posedge clk)
begin
for(i = 0;i <= 1023;i = i + 1)
    mem[i] = i;
   end
形式的程序是怎么执行的?一个clk即可完成1024此循环?还是需要1024个clk?还有如果将 mem[i] = i;
改为 mem[i] <= i;会是什么样?对于for的使用一头雾水!
还请各位指点一下!
发表于 2013-8-14 13:31:59 | 显示全部楼层
for就是并行执行,一个clk即可完成。
回复 支持 反对

使用道具 举报

发表于 2013-8-14 13:33:32 | 显示全部楼层
<= 和=是阻塞赋值和非阻塞赋值的区别。
查查资料就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-14 13:52:48 | 显示全部楼层
回复 3# wls501


    感谢您的指点,刚才搞了个程序,综合一下看了RTL,发现<=和=占用资源区别很大。那通常什么时候用for?
我一直觉得FPGA设计不能用for(硬件电路怎么能实现循环啊),不知道这个想法是不是正确的?
回复 支持 反对

使用道具 举报

发表于 2013-8-14 15:32:05 | 显示全部楼层
同问 楼主搞明白了要及时分享哈
回复 支持 反对

使用道具 举报

发表于 2013-8-14 19:50:52 | 显示全部楼层
for在硬件上综合出来就是展开,并行电路。。。开销是巨大的。
回复 支持 反对

使用道具 举报

发表于 2013-8-14 23:41:19 | 显示全部楼层
回复 1# linyuanfei
    for语句是可以综合的,只是在RTL级代码中基本不用。一方面因为for语句占硬件资源(特别是循环次数不定的情况下),另一方面是因为设计中往往采用时序逻辑,用for地方不多。
    你所写的代码,不是你所理解的循环,这里只是并行展开,等同于
            mem[0] =0;  mem[1] =1;  mem[2] =2;……   mem[1023] =1023;
    或者说是 mem[0] <=0;  mem[1] <=1;  mem[2] <=2;……   mem[1023] <=1023;
    剩下的就只是阻塞与非阻塞的区别了。
    另外你这是时序逻辑,建议用<=。
    for循环结合非阻塞赋值,你若将<=左边设置为一reg,仿真就可以深刻体会其差别。比如 if( mem) sum <= sum + 1'b1;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 09:50:52 | 显示全部楼层
回复 6# chen.terry


    非常感谢,我综合了一下,确实是消耗资源!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-15 10:02:27 | 显示全部楼层
回复 7# lwukang


非常感谢您的指教!对于for的功能我已能理解,关于这里使用阻塞和非阻塞赋值的区别,前辈能否再讲解一下。
我自己理解的是使用非阻塞赋值的话一个clk完成了一次赋值操作,是不是不能实现1024个逻辑复制功能?使用阻塞的话一个clk就可以完成所有逻辑复制?
回复 支持 反对

使用道具 举报

发表于 2013-8-15 10:17:33 | 显示全部楼层
回复 9# linyuanfei

这里不管是阻塞还是非阻塞,都是完成1024个赋值,没有差别,因为从硬件上看,就是1024个并行单元。
但是若你赋值左边是同一个变量,则非阻塞只会有最后一次复制有效,因为非阻塞只会在always块结束后才更新左边的变量。
对不同变量阻塞和非阻塞赋值没有区别,对同一变量是有区别的,你可以自己写段代码试验看看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

关闭

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

GMT+8, 2020-1-27 12:54 , Processed in 0.084584 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表