本篇介绍目前在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循环相关推荐

  1. Verilog HDL常用循环语句类型

    1.1 Verilog HDL常用循环语句类型 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Verilog HDL常用循环语句类型: 5)结束语. 1.1.2 本节引 ...

  2. 【 Verilog HDL 】循环语句总结

    目录 综述 forever语句 repeat语句 while语句 for语句 综述 在Verilog HDL中存在四种类型的循环语句,用来控制执行语句的执行次数. 1) forever  连续的执行语 ...

  3. 8.Verilog的for循环语句使用

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  4. [转]verilog语法学习心得

    verilog语法学习心得 1.数字电路基础知识: 布尔代数.门级电路的内部晶体管结构.组合逻辑电路分析与设计.触发器.时序逻辑电路分析与设计 2.数字系统的构成: 传感器  AD  数字处理器  D ...

  5. java for循环迭代_JAVA中的for-each循环与迭代

    在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable接口(位于java.lang包中),实现这个接口允许对象成为 "fo ...

  6. FPGA的设计艺术(15)逻辑设计及仿真利器之各式各样的循环

    前言 Verilog中的循环各式各样,例如,for循环,while循环,forever循环和repeat循环,有的可以综合有的不可用综合,就凭这一条特点,就能在逻辑设计中排除很多种循环语句,对于设计来 ...

  7. FPGA之道(74)Verilog生成语句

    文章目录 前言 Verilog生成语句 循环生成 条件生成 generate-if语句 generate-case语句 前言 为什么要把这一节单独拎出来,因为个人原因,平时觉得用的Verilog生成语 ...

  8. FPGA之道(38)VHDL与Verilog的比较

    文章目录 前言 VHDL与Verilog的比较 语法比较 基本程序框架比较 端口定义比较 范围表示方法比较 元件调用与实例化比较 Process与always比较 标准逻辑类型比较 逻辑常量赋值比较 ...

  9. FPGA之道(35)Verilog中的并行与串行语句

    文章目录 前言 Verilog的并行语句 Verilog连续赋值语句 普通连续赋值语句 条件连续赋值语句 Verilog程序块语句 沿事件 纯组合always 纯时序always 具有同步复位的alw ...

  10. java增强型for报错_Java基础——增强for循环

    java1.5版本引入了一个增强for循环,基本原理和for循环类似. 语法声明:for(表达式:条件表达式) 举例:for (String str : set) 解释:set代表set集合,str代 ...

最新文章

  1. Dynamics CRM2016 Web API之创建记录
  2. Python 来分析,堪比“唐探系列”!B站9.5分好评如潮!
  3. linux+sed+-i替换路径,sed替换与别名配置
  4. gprof 使用例程(转)
  5. [转贴]Ultimate List of Free Windows Software from Microsoft
  6. RabbitMQ的missingQueuesFatal参数
  7. 论文浅尝 - AAAI2020 | 多轮对话系统中的历史自适应知识融合机制
  8. python from __future__ import division
  9. db2导入发生错误显示不是绝对路径_python编程常见错误总结
  10. android5.1移植记录
  11. 中兴V889D刷机变砖不用怕 V889D救砖教程发布【转载】
  12. python_类装饰器
  13. Linux中常用的正则表达式
  14. python实现遗传算法实例_vn.py发布v2.0.3 - 遗传算法
  15. MATLAB六自由度机械臂正逆运动
  16. CSS 内联样式 外联样式 嵌套样式
  17. 怎么用wps抽签_如何使用wps表格进行分班
  18. 如果你用过这些电子产品 证明你老了
  19. cnblogs!I'm comeing!
  20. TP-LINK路由器与pfSense建立IPsec连接

热门文章

  1. 耦合式是什么意思_在电路中,耦合是什么意思?
  2. 安卓虚拟机_【Android】安卓虚拟机 VMOS
  3. UVA 1449 Dominating Patterns(AC自动机)
  4. 基于C#(Visual Studio 2013)的AutoCAD2016二次开发(二)创建直线
  5. 阿里云香港服务器怎么样?稳定不稳定?站长现身说法
  6. 倒水问题python实现
  7. 解决IntelliJ IDEA中打开JSP文件(使用快捷键Alt+F2)时,弹出的浏览器网页只显示JSP源码
  8. svd在matlab中的使用,matlab - 使用SVD在MATLAB中压缩图像 - 堆栈内存溢出
  9. 海盗湾(The Pirate Bay)的战争——每一名技术人员都应该思考的问题
  10. Python爬虫-bug处理办法(持续更新)