我正在参加「掘金·启航计划」
写在前面
本篇主要对循环语句进行简要描述,举例带大家了解Verilog语言,列举的例子与前面内容没有相关性。
笔者才疏学浅,本篇如有缺点和疏漏在所难免,恳请广大读者批评指正。
循环语句
在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数。
- forever语句:连续的执行语句。
- repeat语句:连续执行一条语句n次。
- while语句:执行一条语句直到某个条件不满足。如果一开始条件即不满足(为假),则语句一次也不能被执行。
- for语句:通过以下三个步骤来决定语句的循环执行:
- 先给控制循环次数的变量赋初值。
- 判定控制循环的表达式的值,如为假,则跳出循环语句;如为真,则执行指定的语句后,转到第三步。
- 执行一条赋值语句来修正控制循环变量次数的变量的值,然后饭后判断。
forever语句
forever语句的格式如下:
forever 语句; 或 forever begin 多条语句; end
forever语句常用于产生周期性的波形,用来作为仿真测试信号。它与always语句不同之处在于不能独立写在程序中,而必须写在initial块中。
repeat语句
repeat语句的格式如下:
repeat(表达式) 语句; 或 repeat(表达式) begin 多条语句; end
在repeat语句中,其表达式通常为常量表达式。
while语句
while语句的格式如下:
while(表达式) 语句; 或 while(表达式) begin 多条语句; end
for语句
for语句的一般形式为:
for(表达式1;表达式2;表达式3) 语句;
它的执行过程如下:
- 先求解表达式1.
- 求解表达式2,若其值为真,则执行for语句中指定的内嵌语句,然后执行下面的步骤。若为假,则结束循环,转到最后一步。
- 若表达式为真,在执行指定的语句后,求解表达式3.
- 转回第二步继续执行。
- 执行for语句下面的语句。
四选一多路选择器
使用case循环语句对输出信号out进行赋值,控制信号为s1和s0拼接的信号。
RTL代码
RTL视图
四位计数器
使用if...else...语句对输出信号Q进行赋值,实现Q的连续加和。当Q加到15时,由于Q是4位宽的,再次进行相加求和后就会溢出变为0值、