微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 为啥FOR循环不能综合?

为啥FOR循环不能综合?

时间:10-02 整理:3721RD 点击:
应该不难吧?也不是死循环。

应该可以综合的,但是老师说对于几次循环综合就很费硬件了,不符合实际的,再说循环并不是并行的

一般用状态机描述把,要看看具体程序,我有时候写的也发现硬件使用异常的少

简单的for语句还是可以综合的,复杂一点的就会有问题,另外建议尽量少用for,以免再出现类似的问题。

那种需要并行例化的,比如32根数据线,采用FOR,相当于例化32次,
还有打拍的,也相当于打N拍,在资源上就同时占用了例化的那么多。

学习学习学习学习学习学习学习学习学习学习学习学习

学习了学习了学习了学习了学习了学习了学习了学习了学习了学习了学习了学习了

谁说FOR不能综合了? 可以 只是说一般可综合语法里不推荐用for
除非是为了简化代码而不影响逻辑功能的for

8#正解、、。

可以综合滴
只是比较浪费资源
综合器会对每次循环展开,作为一个独立的变量,没有复用资源

如果你想通过for循环来延迟的话,估计不能够综合了

for 循环可综合,while 循环不可综合,对吗?

是硬件,不是软件
for能综合
几乎不用

学习了……

如果循环的结束条件如i<t;则不能综合。此处t必须是一个确定的数字,即便在此之前定义了t的值,也不能综合

这是做软件的习惯,我觉得要做FPGA设计,必须对你要设计的电路结构足够清楚,不要把什么都让综合工具去做,这样做即使可以实现电路功能,但这样是做不了系统的,因为这样的系统肯定不可靠。

顶一个!

想不明白为什么要用for

FOR循环可以合成,但是你没有办法预期合出来的电路是什么样子的,是不是会满足你的要求啊,所以一般情况下都不用FOR循环

建议初学者忘掉 verilog的所有看上去很牛的语法
所谓的硬件描述语言 就是描述硬件的
硬件里面只有 组合逻辑 时序逻辑 和连线

学习!

用for循环在代码中的人有两种
1:verilog初学者
2:有很强的verilog编码经验的高手
两者的差别在于前者不知道最后的综合结果,后者则很熟悉

学习了,长见识了~

while不能用
for不建议用 。那遇到需要循环的咋办呢?

for文,一般不用再代码中。


顶20L

http://fpgaw.com/home/space.php?uid=2634
格雷码与二进制码的互相转换

尽量不要用FOR ,浪费资源啊。

for可以综合,举个例子 :
always @ (posedge clk)
if (rst) for(i=0;i<7;i=i+1)dis[i]<=0;else
if (sft)
begin
dis[0]<=cntr_base;
for(i=0;i<7;i=i+1)dis[i+1]<=dis[i];
end
这里面有两个for第一个实现清零,第个实现移动。是完全可以综合并且运行正确的。
我认为只要是能等效拆解成若干可综合语句的for循环是可以综合的。其实这就相当于以for的形式告诉编译器你要做的事情,事情本身是可综合的。
for(i=0;i<7;i=i+1)dis[i+1]<=dis[i];
这句 完全可以改成:
dis[1]<=dis[0];
dis[2]<=dis[1];
...
dis[7]<=dis[6];
这7条句子,用了for表达只是等效告诉编译器,我就要实现这个可综合的功能。编译器会知了,也就给你综合了。
不知道说明白了没有。
另外task也存在是否可综合的说法,其实原理和刚才说的for一样,就是透过性质看内容,看你表达的内容是否可综合。

for循环循环体内可综合成组合电路吧。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top