verilog新手请教一个问题
这条语句单从语法上来看有没有错误啊,就是第三个表达式上出现了三个式子,可以这样写吗?
还有如果是纯组合逻辑,那么for语句的控制语句中如果有赋值语句是不是必须用assign赋值啊?
RTL代吗尽量不要使用for循环。
assign是连续驱动语句,不能用在过程块中
谢谢楼上的建议,,语法还待加强。
同感,rtl中用for循环,会非常郁闷的
综合的时候会出现麻烦?那可以用while吗?
以RTL的觀點來看, for語法其實就是電路的複製. 例如
reg [511:0] a;
reg [7:0] b;
integer i;
always @(*)
begin
for (i = 0; i < 512/8; i = i + 8)
begin
a[i+7:i] = b;
end
end
其實就等同於
always @(*)
begin
a[7:0] = b;
a[15:8] = b;
a[23:16] = b;
a[31:24] = b;
....
end
我想在實現一些algorithm相關的電路上會很實用
还是有点迷糊,我想应该在实践的基础上多理解,,它总有好与不好的地方
for语句会将描述综合成组合逻辑,而非时序逻辑,repeat while forever这些就更不靠谱了,如果你要驱动计数器,仍然需要时钟驱动触发器完成功能而不是用个for就搞定的。语法上没有错误,只是不清楚你打算用这块逻辑干什么,难不成是仿真什么东西?
1# shxr
貌似C语言啊,一般不用for循环!除非用作验证、仿真!
学习。
个人觉得硬件描述语言不同于软件c语言,如果写出来的代码是要可综合的,要有硬件思想,最好清楚代码写出来是实现什么样的电路,并不像软件上的怎么写都可以,像for,while,repeat等这些一般不用在可综合代码中,对综合,时序分析等都不利。
可以用,但不提倡
谢谢大家的解答与建议
C语言学的太好了
FOR语句在硬件实现时会生成并行电路结构的。
感觉在接触verilog时总逃不开C的思维
学习一下
学习了
for要慎用
tongwen
