17,verilog之for循环
本篇介绍目前在verilog语言中,唯一可以被综合成电路的循环:常数循环次数的for循环。for循环的一般形式是:
for(variable = start_value;continue_condition; circle_express)
beginoperations……
end
其中,varible是一个变量名;start_value是变量的初始值;continue_condition是循环的继续条件;circle_express是每个循环的步进操作;operations是每次循环的操作。要想for循环能够被综合,循环的次数必须为确定值。
下面举例说明for循环的可综合特性:
for(loop=0; loop<10; loop=loop+1)//可综合,循环次数为10
for(loop=0; loop<10; loop=loop+2)//可综合,循环次数为5
for(loop=variable; loop<10;loop=loop+1)//初始值为变量不可综合
for(loop=0; loop<variable;loop=loop+1)//结束条件为变量不可综合
for(loop=0; loop<10; loop=loop+ variable)//步长为变量不可综合
下面给出for循环实际应用于多级寄存器链的关键代码:
module DFF_link(input clk,input rst,input [7:0] data_i,output [7:0] data_o
);localparam Number_reg = 16; //定义需要循环的寄存器数量reg[7:0] dff[Number_reg-1:0];//本例为16个寄存器integer loop;//循环变量最好定义成integer//当定义成reg型时要注意loop位宽 always@(posedge clk or negedge rst)if(!rst)beginfor(loop= 0; loop <= Number_reg-1; loop = loop+1)dff[loop]<= 8'd0endelsebegindff[0]<=data_i;for(loop= 1; loop <= Number_reg-1; loop = loop+1)dff[loop]<= dff[loop-1]end assigndata_o = dff[15];
endmodule
我们需要明白,在实际电路中并没有loop这个变量,它只在综合里起作用,告诉综合器软件要重复几遍for操作。
for循环在实际的工程中,有非常大的实用价值,可以极大的简化代码,提高工作效率,我们可以认为就如同c语言中for循环功能一样,但在verilog中使用时要注意它的使用规则与c语言不同。
参考文献:
1,verilog传奇——从电路出发的HDL代码设计
2,verilog编程艺术
17,verilog之for循环相关推荐
- Verilog HDL常用循环语句类型
1.1 Verilog HDL常用循环语句类型 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog HDL常用循环语句类型: 5)结束语. 1.1.2 本节引 ...
- 【 Verilog HDL 】循环语句总结
目录 综述 forever语句 repeat语句 while语句 for语句 综述 在Verilog HDL中存在四种类型的循环语句,用来控制执行语句的执行次数. 1) forever 连续的执行语 ...
- 8.Verilog的for循环语句使用
FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...
- [转]verilog语法学习心得
verilog语法学习心得 1.数字电路基础知识: 布尔代数.门级电路的内部晶体管结构.组合逻辑电路分析与设计.触发器.时序逻辑电路分析与设计 2.数字系统的构成: 传感器 AD 数字处理器 D ...
- java for循环迭代_JAVA中的for-each循环与迭代
在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable接口(位于java.lang包中),实现这个接口允许对象成为 "fo ...
- FPGA的设计艺术(15)逻辑设计及仿真利器之各式各样的循环
前言 Verilog中的循环各式各样,例如,for循环,while循环,forever循环和repeat循环,有的可以综合有的不可用综合,就凭这一条特点,就能在逻辑设计中排除很多种循环语句,对于设计来 ...
- FPGA之道(74)Verilog生成语句
文章目录 前言 Verilog生成语句 循环生成 条件生成 generate-if语句 generate-case语句 前言 为什么要把这一节单独拎出来,因为个人原因,平时觉得用的Verilog生成语 ...
- FPGA之道(38)VHDL与Verilog的比较
文章目录 前言 VHDL与Verilog的比较 语法比较 基本程序框架比较 端口定义比较 范围表示方法比较 元件调用与实例化比较 Process与always比较 标准逻辑类型比较 逻辑常量赋值比较 ...
- FPGA之道(35)Verilog中的并行与串行语句
文章目录 前言 Verilog的并行语句 Verilog连续赋值语句 普通连续赋值语句 条件连续赋值语句 Verilog程序块语句 沿事件 纯组合always 纯时序always 具有同步复位的alw ...
- java增强型for报错_Java基础——增强for循环
java1.5版本引入了一个增强for循环,基本原理和for循环类似. 语法声明:for(表达式:条件表达式) 举例:for (String str : set) 解释:set代表set集合,str代 ...
最新文章
- Dynamics CRM2016 Web API之创建记录
- Python 来分析,堪比“唐探系列”!B站9.5分好评如潮!
- linux+sed+-i替换路径,sed替换与别名配置
- gprof 使用例程(转)
- [转贴]Ultimate List of Free Windows Software from Microsoft
- RabbitMQ的missingQueuesFatal参数
- 论文浅尝 - AAAI2020 | 多轮对话系统中的历史自适应知识融合机制
- python from __future__ import division
- db2导入发生错误显示不是绝对路径_python编程常见错误总结
- android5.1移植记录
- 中兴V889D刷机变砖不用怕 V889D救砖教程发布【转载】
- python_类装饰器
- Linux中常用的正则表达式
- python实现遗传算法实例_vn.py发布v2.0.3 - 遗传算法
- MATLAB六自由度机械臂正逆运动
- CSS 内联样式 外联样式 嵌套样式
- 怎么用wps抽签_如何使用wps表格进行分班
- 如果你用过这些电子产品 证明你老了
- cnblogs!I'm comeing!
- TP-LINK路由器与pfSense建立IPsec连接
热门文章
- 耦合式是什么意思_在电路中,耦合是什么意思?
- 安卓虚拟机_【Android】安卓虚拟机 VMOS
- UVA 1449 Dominating Patterns(AC自动机)
- 基于C#(Visual Studio 2013)的AutoCAD2016二次开发(二)创建直线
- 阿里云香港服务器怎么样?稳定不稳定?站长现身说法
- 倒水问题python实现
- 解决IntelliJ IDEA中打开JSP文件(使用快捷键Alt+F2)时,弹出的浏览器网页只显示JSP源码
- svd在matlab中的使用,matlab - 使用SVD在MATLAB中压缩图像 - 堆栈内存溢出
- 海盗湾(The Pirate Bay)的战争——每一名技术人员都应该思考的问题
- Python爬虫-bug处理办法(持续更新)