当前位置:网站首页>Verilog中for语句的使用
Verilog中for语句的使用
2022-07-29 05:25:00 【qq_46475176】
在C语言中,经常用到for循环语句,但在硬件描述语言中for语句的使用较C语言等软件描述语言有较大的区别。
在Verilog中除了在Testbench(仿测试激励)中使用for循环语句外,在Testbench中for语句在生成激励信号等方面使用较普遍,但在RTL级编码中却很少使用for循环语句。主要原因就是for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,每条执行语句并不能有效地复用硬件逻辑资源,造成巨大的资源浪费。简单的说就是;for语句循环几次,就是将相同的电路复制几次,因此循环次数越多,占用面积越大,综合就越慢。
在RTL硬件描述中,遇到类似的算法,推荐的方法是先搞清楚设计的时序要求,做一个rea型计数器。在每个时钟沿累加,并在每个时钟沿判断计数器情况,做相应的处理,能复用的处理模块尽量复用,即使所有的操作不能复用,也采用case语句展开处理。
对于下面的for循环语句:
1 for(i=0;i<16;i++)
2 DoSomething();
可以采用如下代码实现:
reg [3:0] counter;
always @(posedge clk)
if(syn_rst)
counter<=4'b0;
else
counter<=counter+1:
always @(posedge clk)
begin
case(counter)
4'b0000:
4'b0001:
......
default:
endcase
end
另外,有几个语法的细节需要注意一下。for(i&#
边栏推荐
- Official tutorial redshift 04 rendering parameters
- Plugin location in mavan
- day06_类与对象
- UE4 天光和反射球的原理和区别
- 多路IO用法
- Oracle10g出现Enterprise Manager 无法连接到数据库实例解决办法
- [leetcode skimming] array 2 - binary search
- 虹科分享 | 如何测试与验证复杂的FPGA设计(1)——面向实体或块的仿真
- Leetcode 557. reverse word III in string
- Leetcode 14. longest public prefix
猜你喜欢

Redshift restore SP effect - SP map export settings and map import configuration

六、 网络互联与互联网

Vivado IP核之浮点数加减法 Floating-point

day06_类与对象

官方教程 Redshift 03 各种GI的参数和常规使用说明

Vivado IP核之RAM Block Memery Generator

官方教程 Redshift 05 AOVs

What is the lifecycle of automated testing?

浅谈缺陷描写样式

Leetcode 83. delete duplicate elements in the sorting linked list
随机推荐
通过os-shell引发的mysql拿shell的思考
c语言问题
APP受到的那些漏洞攻击
Official tutorial redshift 09 camera
钓鱼邮件处置
Vivado IP核之复数浮点数乘法 Floating-point
TCP套接口通信实验
Scanbasepackages scanning range configuration
七、 下一代互联网IPV6
练习:存放部门信息
虹科为您分享EtherCAT demo,教您如何从其他协议快速过渡到EtherCAT工业总线
SQL Developer图形化窗口创建数据库(表空间和用户)
Single chain surface test questions
Official tutorial redshift 05 AOVs
虹科分享 | 带你全面了解“CAN总线错误”(四)——在实践中生产和记录CAN错误
基于TCP的在线词典
Leetcode 167. sum of two numbers II - input ordered array
7110 digital trend 2 solution
Leetcode 189. rotation array
waf防护是什么