当前位置:网站首页>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&#
边栏推荐
猜你喜欢

Leetcode 35. search insertion location

虹科Automation softPLC | MoDK运行环境与搭建步骤(1)——运行环境简介

虹科分享 | 带你全面了解“CAN总线错误”(三)——CAN节点状态与错误计数器

官方教程 Redshift 07 Instances and Proxy

虹科 | 使用JESD204串行接口高速桥接模拟和数字世界

day09_static&final&代码块&抽象类&接口&内部类

虹科分享 | 测试与验证复杂的FPGA设计(2)——如何在IP核中执行面向全局的仿真

Unity初学3——敌人的移动控制和掉血区域的设置(2d)

Ue5 light shadow basic shadow full resolution sawtooth shadow solution lumen

虹科分享 | 为什么说EtherCAT是提高控制系统性能的最佳解决方案?
随机推荐
虹科Automation softPLC | 虹科KPA MoDK运行环境与搭建步骤(3)——MoDK例程测试
Ue5 landscape conversion Nanite conversion method and it does not support the use method of starting dynamic mesh with lumen and lumen
Idea installing Scala
Vivado IP核之复数浮点数乘法 Floating-point
官方教程 Redshift 03 各种GI的参数和常规使用说明
Scanbasepackages scanning range configuration
钓鱼邮件处置
官方教程 Redshift 01 基础理论知识和基础特性学习
FPGA—奇偶数分频和小数分频代码例程
虹科Automation softPLC | MoDK运行环境与搭建步骤(1)——运行环境简介
关于DDoS的几个误区
MerkleTree 构建QT实现UI
Leetcode 557. reverse word III in string
day06_类与对象
9196 tumor area solution
服务器常见故障及其解决方法
用神经网络实现手写数字识别
虹科分享 | 为什么说EtherCAT是提高控制系统性能的最佳解决方案?
虹科分享 | 带你全面了解“CAN总线错误”(三)——CAN节点状态与错误计数器
unsigned right shift