微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog新手请教一个问题

verilog新手请教一个问题

时间:10-02 整理:3721RD 点击:
for(counter=0;counter<4;counter=counter+1,a=a>>1,b=b<<1)
这条语句单从语法上来看有没有错误啊,就是第三个表达式上出现了三个式子,可以这样写吗?
还有如果是纯组合逻辑,那么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

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

网站地图

Top