Verilog_循环语句和举例

212 阅读2分钟

我正在参加「掘金·启航计划」

写在前面

本篇主要对循环语句进行简要描述,举例带大家了解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代码

20221017215430.png

RTL视图

20221017215444.png

四位计数器

使用if...else...语句对输出信号Q进行赋值,实现Q的连续加和。当Q加到15时,由于Q是4位宽的,再次进行相加求和后就会溢出变为0值、

RTL代码

20221017220437.png

RTL视图

20221017220448.png