Verilog常用的循环语句及用途

描述

本文主要介绍verilog常用的循环语句,循环语句的用途,主要是可以多次执行相同的代码或逻辑。

verilog的循环语句主要有:for循环、while循环、foever循环和repeat循环。

注意注意,for循环在正式FPGA设计中部分情况下可综合,其余几个循环语句均不可综合,主要用于testbench。

一、For循环

for 循环会将一段代码执行固定次数。

虽然它通常用于testbench,但也可以在可综合的 verilog 代码中使用,比如 for 循环处理verilog数组。

1、语法

for (

说明:

更新循环变量,注意只能用类似i=i+1或i=i-1。

2、代码示例

for 循环实现移位寄存器

reg [5:0] shift [0:3];
wire [5:0] init_data = 'd10;
wire [6*4-1] shift_com_w;

//将输入赋值给数组的第一个数
shift[0] <= init_data;
 
//使用for循环语句来将数组整体向左移动
for (i = 1; i < 4; i = i + 1) begin
  shift[i] <= shift[i-1];
end

//合并数组,易于输出模块
for (i = 0; i < 4; i = i + 1) begin
  assign shift_com_w[i*6+:6] = shift[i];
end

二、Forever循环

verilog 中的forever循环会创建一个连续执行的代码块,并无限循环。

forever循环只能在testbench中使用,常用于生成激励时钟信号。 注意forever循环无法被综合。

1、语法

forever begin    
// 循环执行的语句
end

3、代码示例

创建一个10Mhz的时钟

initial begin
   clk = 1'b0;
   forever begin
     #5 clk = ~clk;
   end
end

三、Repeat循环

repeat循环执行指定次数的循环代码块。 注意该语句不可综合。

1、语法

repeat (

说明: 用来确定重复循环的次数

2、代码示例

检测到上升沿,信号翻转一次。

repeat (6) begin      //重复6次
  @(posedge sig_a)    //上升沿
      sig_b = ~sig_b; //翻转
end

四、While 循环

while循环的每次迭代之前都会判断指定条件是否满足,如果为真,就执行条件内的循环代码块; 否则,就不会执行。 注意该语句不可综合。

1、语法

while

说明: 循环执行条件。

2、代码示例

创建一个从 0 到 3 的integer型变量,然后在循环的每次迭代中打印这个变量的值。

integer i;

while (i < 4) begin
  $display("i = %0d", i);
  i = i + 1;
end
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分