每天一点Verilog,《高级FPGA设计》学习笔记:for 语句怎么用?

本文探讨了在Verilog中使用for循环进行硬件设计时的注意事项。与软件不同,硬件语言不支持隐含的寄存器,因此简单的for循环迭代在硬件中可能导致不可综合或效率低下的设计。通过示例,解释了如何正确和有效地使用for循环来避免潜在问题,并展示了如何优化代码以减少重复,提高设计效率。
摘要由CSDN通过智能技术生成

类似C的环路结构如for-loop可能对学过C语言的人存在陷阱。其原因是在硬件语言中并没有隐含的寄存器这个条件,所以一般这些环路不可以在可综合代码中用来做算法迭代。在Verilog中,for循环一般用作输入多次有一定规律的赋值语句,以提高设计效率。

 

软件设计者可能利用for循环获得X的N次幂,代码可能是这样写的:

PowerX = 1  ;

for( i=0; i<N; i++ ) PowerX = PowerX * X ;

 

这个算法环路利用迭代执行N次乘法操作,每次通过这个环路,更新运行的变量。在软件中,它工作很好,因为每次迭代都将更新一个内部寄存器。

 

而硬件语言并没有任何隐含的寄存器出现,相反,所有的寄存器操作都被清楚地定义。如果设计者仿造上面的方式用verilog写出来,那么有可能写成下面这样的代码:

module forloop(

output reg [7:0] powerx ,

input          [7:0] x,n

);

interger i ;

 

always @ (*)

begin

powerx = 1 ;

for( i=0; i<n; i++ )

powerx =powerx * x ; 

end

 

endmodule

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值