原创 再辨For...Loop语句

2009-9-4 16:05 3587 8 8 分类: FPGA/CPLD
今日,在Modelsim仿真工程中有如下一段代码(注意:原先代码中使用的是注释部分代码,而不是For…Generate)。

点击开大图
改进后代码

点击开大图
原始代码

当使用注释代码进行仿真时,始终无法得到正确的信号延时链,得到的一堆不确定值(如下图),于是,使出浑身,从源头至结尾地地毯式搜索才把问题确定到上述代码(惭愧啊!!)。

点击开大图
使用修改后的代码:

点击开大图
以前写过一篇文章,For…Loop的可综合化分析,里面描述了For…Loop在组合逻辑上的应用,也有写到“注意:FOR ...GENERATE 和FOR...LOOP的语句不同,在FOR ...GENERATE语句中所列举的是并行处理语句。因此,内部语句不是按书写顺序执行的,而是并行执行的,这样的语句中就不能使用EXIT语句和NEXT语句。”

也就是说:fvh_chain(0)~fvh_chain(5)相当于是同一个信号,没有产生所想的延时,而最终fvh_chain(5)也没有综合成寄存器,所以造成Modelsim仿真错误。

最后,在这里感谢一下coyoo,是他的留言让我一下子明白过来!
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条