文章转自微信公众号,花蚂蚁
原文链接:Verilog语法之九:循环语句
在Verilog HDL中存在着四种类型的循环语句,用来控制执行语句的执行次数。
forever 连续的执行语句。
repeat 连续执行一条语句 n 次。
while 执行一条语句直到某个条件不满足。如果一开始条件即不满足(为假),则语句一次也不能被执行。
for 通过以下三个步骤来决定语句的循环执行。
1.先给控制循环次数的变量赋初值。
2.判定控制循环的表达式的值,如为假则跳出循环语句,如为真则执行指定的语句后,转到第三步。
3.执行一条赋值语句来修正控制循环变量次数的变量的值,然后返回第二步。
下面对各种循环语句详细的进行介绍。
1 forever语句
forever语句的格式如下:
或
forever循环语句常用于产生周期性的波形,用来作为仿真测试信号。
它与always语句不同处在于不能独立写在程序中,而必须写在initial块中。
2 repeat语句
repeat语句的格式如下:
或
在repeat语句中,其表达式通常为常量表达式。
下面的例子中使用repeat循环语句及加法和移位操作来实现一个乘法器(乘法器具体说明和实现代码见文章顶部绑定的资源)。
3 while语句
while语句的格式如下:
或用如下格式
下面举一个while语句的例子,该例子用while循环语句对rega这个八位二进制数中值为1的位进行计数。
4 for语句
for语句的一般形式为:
它的执行过程如下:
先求解表达式1;
求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后执行下面的第3步。若为假(0),则结束循环,转到第5步。
若表达式为真,在执行指定的语句后,求解表达式3。
转回上面的第2步骤继续执行。
执行for语句下面的语句。
for语句最简单的应用形式是很易理解的,其形式如下:
for循环语句实际上相当于采用while循环语句建立以下的循环结构:
这样对于需要8条语句才能完成的一个循环控制,for循环语句只需两条即可。
下面分别举两个使用for循环语句的例子。
例1用for语句来初始化memory。
例2则用for循环语句来实现前面用repeat语句实现的乘法器。
[例1]:
[例2]:
在for语句中,循环变量增值表达式可以不必是一般的常规加法或减法表达式。
下面是对rega这个八位二进制数中值为1的位进行计数的另一种方法。见下例:
目前:四种循环语句中,综合工具只支持for循环语句
我将Verilog的语法进行了总结,写了13篇文章,让小白“快速见识猪如何跑”,每一篇讲解一类语法,结合正确的示例代码和错误的示例代码,有的章节对个别语法进行了归纳总结,帮助初学者加深理解。详情点击
Verilog语法之〇:Verilog HDL简介/Verilog语法介绍-CSDN博客
Verilog语法之一:简单的Verilog HDL模块-CSDN博客
Verilog语法之四:运算符_verilog异或运算符-CSDN博客
Verilog语法之七:顺序块与并行快(begin...end与fork...join)-CSDN博客
。。。。。。
对语法知识有了初步的了解之后,下一步就应该“模仿”了。
我给小白们准备了一份礼物,下面是我精心整理的n多verilog代码。帮助小白们由浅至深的“模仿”。在模仿的过程中能够进一步的巩固之前了解的语法知识。
这些Verilog例程基本涵盖了以后可能遇到的所有用法,参考这些代码,可以做出你想要的任何设计。
当你想要用Verilog编写一段代码实现某个功能时,如果你能够想到参考哪段代码能够实现你的设计,那么恭喜你,你已经入门了!!!
所有示例代码,点击链接获取。
01-锁存器、触发器、寄存器、移位寄存器等
【免费】VerilogHDL示例代码之01-锁存器、触发器、寄存器、移位寄存器等资源-CSDN文库
02-逻辑门、三态门、mux等
【免费】VerilogHDL示例代码之02-逻辑门、三态门、mux等资源-CSDN文库
03-各种计数器
【免费】VerilogHDL示例代码之03-各种计数器资源-CSDN文库
04-各类加法器
【免费】VerilogHDL示例代码之04-各类加法器资源-CSDN文库
05-乘法器
【免费】VerilogHDL示例代码之05-乘法器资源-CSDN文库
06-异步复位同步释放
【免费】VerilogHDL示例代码之06-异步复位同步释放资源-CSDN文库
07-分频
【免费】VerilogHDL示例代码之07-分频资源-CSDN文库
08-语法语句
【免费】VerilogHDL示例代码之08-语法语句资源-CSDN文库
09-串并转换
【免费】VerilogHDL示例代码之09-串并转换资源-CSDN文库
10-状态机设计
【免费】VerilogHDL示例代码之10-状态机设计资源-CSDN文库
11-编解码应用
【免费】VerilogHDL示例代码之11-编解码应用资源-CSDN文库
12-仿真语法举例
【免费】VerilogHDL示例代码之12-仿真语法举例资源-CSDN文库
13-进阶设计