UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Participant zhangqingsong
Participant

关于for循环

我用的是vivado17.4,问一下,可以综合for语句吗

0 项奖励
4 条回复
Xilinx Employee
Xilinx Employee

回复: 关于for循环

For循环是可综合的,但也要看for循环在代码里是怎么用的。

 

generate语句里的for循环是支持的,例如:

 

genvar <var>;
generate
for (<var>=0; <var> < <limit>; <var>=<var>+1)
begin: <label>
<instantiation>
end
endgenerate

 

-vivian

0 项奖励
Highlighted
Xilinx Employee
Xilinx Employee

回复: 关于for循环

这个跟vivado的版本关系不大,主要看HDL语言标准

 

-vivian

Participant zhangqingsong
Participant

回复: 关于for循环

always @(wTHERMOMETERSTART)
begin
rBINSTART = 0;
for(i=0;i<20; i = i + 1'b1)
begin
if(wTHERMOMETERSTART[i] & ~wTHERMOMETERSTART[i+1] & ~wTHERMOMETERSTART[i+2] & ~wTHERMOMETERSTART[i+3] & ~wTHERMOMETERSTART[i+4])
begin
rBINSTART = i + 1;
end
end
end

generate这个我知道,就是用的这个,一直综合,很久也完不成,就觉得是不是有问题。
0 项奖励
Xilinx Employee
Xilinx Employee

回复: 关于for循环

你这段代码想要实现一个什么功能呢?

这段代码首先有一个问题,就是会综合出latch,因为你没有对指定if语句的else情况下rBINSTART的值是多少。没有指定的话,默认在else时,rBINSTART是值不变,这就会是一个latch。

如果你能把你的代码,跟综合完以后的门级结构对应起来,也就是知道代码综合后会对应产生一个什么样的门级电路,那么你可以想办法用更优化的一种方法来描述这个功能,而不是单纯的用逻辑运算符和条件语句来描述出信号之间的关系。太接近行为级的代码描述,给综合器的难度就会增大,运行时间和内存占用都会增大,甚至得到的结果很差。

-vivian

0 项奖励