verilog可否综合的问题
但是最近在FIR数字滤波器的设计,发现有些资料和教材上的程序示例是有for循环的,所以现在比较困惑,到底for循环可不可综合?
for不是不能被综合,而是被展开,
如for(i = 0; i<8 ; i = i + 1)
din[i]<= ...
那相当于din[1], din[2], din[3]...等8个寄存器都被赋值,
主要多的用于重复的结构,比如FIR,
楼上正解。不过个人还是从来不用for。结构不好控制。
二楼正解, 用于展开没有任何问题
还是不用for循环的好
2楼正解,for可以综合
综合工具综合时会把它展开
一般不推荐用
2# eaglelsb
嗯,明白了,多谢了
看情形,有些时候使用for会使代码结构更清晰
而且大大减小代码量
8# jeery_lee 嗯,同意你的说法....
大量完全重复性的信号赋值或模块声明用for没问题
学习了啊,,,
感謝樓主!
for不是不能被综合,而是被展开
这样结构上就很不好控制
也不是很好理解,所以一般不建议使用
但是在给RAM或ROM赋初始值时可以使用的
TB的里用过 但是设计里边从没用过
学习了
我是从来不用的。
岁月流th
我知道用for语句描述的移位寄存器是可以综合的,例如:
always @ (posedge clk)
begin: A
integer i;
for(i=0;i<15;i=i+1)
out[i+1]<=out[i];
end
对的 就是一个个都被展开的 很浪费资源 不推荐这样使用
2# eaglelsb
#2正解。
Can try to use
generate
for (i=0; i<N; i=i+1 )
always ( )
end
endgenerate
for可以综合,
除非你for后面的代码是不可综合的
可以综合, 但受到一定的限制.
可以先写成展开的形式, 再用for改写.
可不可以综合的问题不要死扣语法,想想你要实现的电路的大致物理结构就OK了
具体情况具体分析吧
牢记你写的每句代码都是要用电路实现的
有些地方用for可以让代码看起来更简洁
FOR只要用确定的数来控制好像就能综合
for循环可综合成重复的硬件结构!
这个可以综合
学习了
