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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6400|回复: 17

[求助] 可综合模块中的for循环

[复制链接]
发表于 2009-12-29 16:54:09 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ruiruio4 于 2009-12-29 17:08 编辑

之前看到资料说,可综合代码中最好别用for循环。
今天看到王金明资料里的examples,【例12.11】(74)循环码编码器,
module cycle(c,u,clk);
output[6:0] c;
input[3:0] u;
input clk;
reg[2:0] i;
reg d0,d1,d2,temp;
reg[6:0] c;
always @(posedge clk)
begin
d0=0; d1=0; d2=0; //
初始化
for (i=0;i<4;i=i+1) //for 循环计算码组的前4 个码元
begin
temp = d2 ^ c;

d2 = d1;
d1 = d0 ^ temp;
d0 = temp;
c = u;
end
for (i=4;i<7;i=i+1) //
for 循环计算码组的后3 个码元
begin
temp = d2;
d2 = d1;
d1 = d0 ^ temp;
d0 = temp;
c = temp;
end
end
endmodule


想看看里面for 是如何工作实现的,就Modelsim 了一把,发现:
1.里面的i 第一个上升沿就是‘b111
2.代码一开始对d0,d1,d2的初始化 赋值0,根本就没有用?
3.代码里面有2for,一个周期执行一个for,即,上面的2for 要两个周期才有d0,d1,d2 的值输出。不是对“2for 需要2个周期执行完的疑问,只是对 一个周期执行一个for 里面的多次循环( i 03)有些疑问,之前一直认为,执行循环里面的一次吧,发现我错了。
大家自己可以去仿真一下。
为什么我发现的问题1.  2. 让我如何也想不通。大家支支招吧,谢谢


TMD,发帖编辑不了,发现部分字体还自动斜体。
有错也改不了。

应该是:
temp = d2 ^ c;

c = u;
c = temp; 3句中的c  和  u 后都带【i】




发表于 2009-12-29 17:50:09 | 显示全部楼层
将for循环展开替换掉你的for你会容易理解的
always里面的for循环在一个周期内完成
发表于 2009-12-29 20:11:11 | 显示全部楼层
综合器会自动把你的for循环展开成n段的
不是不推荐吧
应该和电路映射上不容易理解
 楼主| 发表于 2009-12-29 21:24:39 | 显示全部楼层
3# rr253
我记得 EDN 网站上有个CPLD\FPGA设计学习视频,里面的解说人就提到,在可综合代码中其实不提倡用for 的。
的确,就算用起来,还真是不好理解。总以为一周期执行一次循环呢。
发表于 2009-12-30 10:01:04 | 显示全部楼层
for循环还是很有用的,用的清楚的话很便利
比如多个电路的复制,流水线,参数化设计等
但一定要清楚最后的综合结果。
发表于 2009-12-30 16:19:44 | 显示全部楼层
公司的话应该有规定怎么写吧
反正我挺看不顺眼RTL里面的for,呵呵
主要是不确定给我综合出来什么东西
发表于 2009-12-30 17:16:33 | 显示全部楼层
通党for,用在示例化器件时,是可以综合的,我试过了.
用在它处时,我试的不多.
在了解综合工具时,我了解到了,逻辑等价类,更是了解到了一些逻辑等价类变换,这种变换会带来一些时序上的改进.

但我也明白了,综合工具通党对锁存器,触发器,都有一定的准则.
1,如果一个HDL语言,用于综合,不同的综合工具综合出的锁存器,触发器可能不同.这体现在锁存器与触发器的互换,block语句与non-block语句的曲别等地方.
2.综合优化时,通常不会优为锁存器,触发器,只会优化组合逻辑.(当然这与我的代码风格也有关系,我通常是不会有一些会产生异义的语句的.触发器在在我写文档时基本确定的,但我还是认为对现在的HDL语言说,综合工具通常只优化组合逻辑.
所以,在HDL语言的语言集中,我只写的是它的一个子集.
呵呵,真想和高手交流啊.
 楼主| 发表于 2009-12-31 10:22:34 | 显示全部楼层
7# qushaobo
哈哈, 说的挺好呀,三人行必有我师焉
其实强大的综合软件工具,其他的大公司也会借用的。
的确,在时序逻辑和综合实现方面需要高手指点。
发表于 2009-12-31 12:19:37 | 显示全部楼层
1# ruiruio4

syntax "for":

All inside codes will be extended according to your loop index number.

If you are creating rtl code, you should be careful about this, because most
of people often put "behavior" statements inside loop body.
发表于 2009-12-31 13:39:29 | 显示全部楼层
For还是要经常用的,方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-25 23:37 , Processed in 0.024313 second(s), 9 queries , Gzip On, MemCached On.

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