verilog里的for循环使用 菜鸟求助
时间:10-02
整理:3721RD
点击:
看到了下面2种写法,请问有什么区别啊?
1》 for循环在always模块外面,例如:
for(i=0;i<8;i=i+1)
always(......)
2>for循环再always模块里面,例如:
always @( posedge clk or negedge rst)
if (~rst_n)
for(i=0;i<8;i=i+1)
......
1》 for循环在always模块外面,例如:
for(i=0;i<8;i=i+1)
always(......)
2>for循环再always模块里面,例如:
always @( posedge clk or negedge rst)
if (~rst_n)
for(i=0;i<8;i=i+1)
......
2比1好。
但从可综合的角度看, 都不推荐。 最好改用计数器来做。 可以多看看别人写的代码。
个人觉得for循环相当于是一个重复的 自己体验一下
第二个可综合,第一个没试过是否可综合
【1】第一种里面,最能让tool看明白,并且精确mapping的做法是用 generate,而不是for。可以看verilog的标准
【2】用for,说明coder的潜意识还是试图建立一种“data structure” 且相信tool可以精确识别,所以还是在写自顶向下的software,而不是自底向上的hardware