0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog逻辑设计中的循环语句和运算符

FPGA之家 来源:时沿科技 作者:Nemo_Yxc 2022-03-15 11:41 次阅读

“本文主要分享了在Verilog设计过程中一些经验与知识点,主要包括循环语句(forever、repeat、while和for)、运算符。”

01

循环语句

在Verilog中存在着4种类型的循环语句(forever、repeat、while和for),其中“while”与“for”的使用方法与C语言中的基本类似。

“forever”语句

语句格式如下: forever begin //add codes end

forever语句经常用于仿真时产生周期性的波形,但是必须写在initial块中。示例代码如下
rega;  initial begin    a = 0;    forever      begin        #5 a = ~a;      end  end
仿真效果如下:

fb1b5090-9197-11ec-952b-dac502259ad0.png

可以看出,clk每5ns实现一次电平翻转。
  • “repeat”语句

语句格式如下: repeat(重复次数) begin // add codes end示意代码如下:
  parameter      times = 3;reg[7:0]b_1,b_2;  initial    begin      b_1 = 0;      #10;      b_1 = 8'b0000_0100;      #10;end  always@(b_1)    begin      b_2 = b_1;        repeat(times)        begin          b_2 = b_2 << 1;        end    end
仿真结果如下:

fb2e4cc2-9197-11ec-952b-dac502259ad0.png

在10ns的时候,b_1赋值为8’b0000_0100,这时候repeat语句触发,b_2变成了8’b0010_0000,可见b_2右移了三位,也就是repeat内的语句重复执行了3次。

  • “while”语句

语句格式如下: while(表达式) begin end while后面的表达式为真时,while将会一直执行,直到表达式为假时,才结束执行while语句。示例代码如下

reg[7:0]c_1,c_2;  initial    begin      c_1 = 0;      #10;      c_1 = 1;      c_2 = 8'b0000_0001;      while(c_1)        begin          c_2 = c_2 << 1;          #10;          if(c_2 == 8'b0001_0000)            c_1 = 0;          else            c_1 = 1;        end    end
仿真结果如下:

fb40361c-9197-11ec-952b-dac502259ad0.png

可以看出,当c_1==1的时候,while中的语句在不停的执行,当c_1==0时,程序跳出while,不在执行。
  • “for”语句

for语句的语句形式:for(表达式1;表达式2;表达式3)beginend 它的执行过程如下:
  1. 先求表达式1;

  2. 求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步;

  3. 求解表达式3;

  4. 转回上面第2步继续执行;

  5. 循环结束,执行 for 语句下面的语句。

    示例代码如下:

  reg    [7:0]    d_1,d_2;  initial    begin      d_2 = 10;      #10;      for(d_1=1;d_1<5;d_1=d_1+1)        begin          d_2 = d_2 + 3;          #5;        end    end

fb4fb506-9197-11ec-952b-dac502259ad0.png

02

运算符

  • 基本算术运算符

  1. + (加法运算符);

  2. - (减法运算符);

  3. * (加法运算符);

  4. / (除法运算符);

  5. % (模运算符或者求余运算符,要求%两侧均为整型数据,结果取第一个操作数的符号位,-10%3的结果是-1,11%-3的结果是2);

  • 赋值运算符

  1. =;

  2. <=;

  • 关系运算符

  1. > (大于);

  2. >= (大于等于);

  3. <        (小于);

  4. <=      (小于等于);

  5. == (等于);

  6. != (不等于);

  7. === (等于,可以比较含有X和Z的操作数,在仿真中用的比较多);

  8. !== (不等于,可以比较含有X和Z的操作数,在仿真中用的比较多)。

  • 逻辑运算符

  1. && (逻辑与);

  2. || (逻辑或);

  3. ! (逻辑非)。

  • 条件运算符

?:

例子:y=x?a:b(当x为真时,y=a,当x为假时,y=b)。

  • 位运算符

位运算符的操作数是几位,结果也是几位。

  1. ~ (取反);

  2. & (按位与);

  3. | (按位或);

  4. ^ (按位异或,XOR,相同为0,不同为1);

  5. ^~ (按位同或,相同为1,不同为0);

  6. ~& (与非,先按与的操作,然后结果取反);

  7. ~| (或非,先按或的操作,然后结果取反)。

  • 移位运算符

  1. <<     (左移,左移一位相当于乘2);

  2. >> (右移,右移一位相当于除以2)。

  • 拼接运算符

{s1,s2,s3,s4}:将两个或者多个信号拼接起来。

  • 缩减运算符(一元简约运算符)

缩减运算符对单个操作数进行与、或、非递推运算,最后的结果是1位的二进制数。具体过程如下:

  1. 先将操作数的第1位和第2位进行与、或、非运算;

  2. 运算的结果与第3位进行与、或、非运算;

  3. 一次类推,知道最后一位。

例子:
reg    [3:0]     a;reg              b;b = &a;   等同于   b = ((a[0]&a[1])&a[2])&a[3]。
审核编辑:郭婷


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109973
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136121

原文标题:Verilog基础知识学习笔记(三)

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    炼狱传奇-移位和位拼运算符之战

    运算符,就会使程序编写起来变得简单了。代码的意思就是,每次把最低位放到最高位,让前三位放到后面,这样逻辑“1”就实现了移位,形成了循环
    发表于 04-30 09:43

    求一道MATLAB编程题。要求: 使用循环语句编程,但不能使用数组运算符和sum

    求求求~~~要求: 使用循环语句编程,但不能使用数组运算符和sum; 使用数组运算符和sum编程,不能使用循环结构。
    发表于 06-03 17:22

    Java基础之Java运算符

    = 5.0f; long l = 5;f==l; 结果为true,浮点数与整数进行比较,只要值相等就返回true。关系运算符主要用于条件语句循环语句中的判断条件。而条件结构就是根据
    发表于 05-18 15:39

    逻辑运算符是什么

    逻辑运算符:与或非条件结构if -else及其嵌套循环结构whilefordo-while
    发表于 07-14 07:50

    Bitwise 逻辑运算符进行设计

    锁定。  AND Bitwise 运算符  摄像头滑块的主要位运算符是 AND。该运算器使用 C 语言编程的安培 (&) 符号,使用图 1
    发表于 04-02 17:39

    条件运算符是什么_条件运算符有哪些

    运算符优先级高于赋值、逗号运算符,低于其他运算符。关系运算实际上是逻辑比较运算,它是
    发表于 11-16 16:02 1.1w次阅读
    条件<b class='flag-5'>运算符</b>是什么_条件<b class='flag-5'>运算符</b>有哪些

    单目运算符是什么_单目运算符有哪些

    单目运算符是指运算所需变量为一个的运算符,又叫一元运算符,其中有逻辑运算符:!、按位取反
    的头像 发表于 02-24 15:42 6w次阅读
    单目<b class='flag-5'>运算符</b>是什么_单目<b class='flag-5'>运算符</b>有哪些

    浅析MySQL的各类运算符

    MySQL支持多种运算符,我们在写SQL脚本时经常会需要用到各种各样的运算符,这些运算符可以用来连接表达式,进而从数据库查询我们需要的结果集等。这些类型主要包括算术
    的头像 发表于 05-03 17:41 2028次阅读
    浅析MySQL<b class='flag-5'>中</b>的各类<b class='flag-5'>运算符</b>

    python运算符是什么

    python运算符 0. 什么是运算符? 本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子,4和5被称为操作数,“+”号为
    的头像 发表于 02-21 16:44 2352次阅读

    C语言总结_语句运算符

    当前文章复盘C语言的: 位运算运算符、基本运算符、数据类型、变量、for语句、while语句、goto
    的头像 发表于 08-14 09:39 975次阅读

    什么是逻辑运算符

    逻辑运算符对其操作数求值,并返回一个值,该值指示求值结果是真还是假(true or false)。例如,运算a && b测试a和b是否都为真,如果两个操作数都为真,则运算符返回真。否则,运算符
    的头像 发表于 02-09 15:55 1971次阅读
    什么是<b class='flag-5'>逻辑运算符</b>

    KUKA机器人的逻辑运算符

    逻辑运算符用于布尔变量、常数和简单的、借助比较运算符构成的逻辑表达式的逻辑运算
    发表于 07-21 10:06 2410次阅读
    KUKA机器人的<b class='flag-5'>逻辑运算符</b>

    verilog逻辑运算符

    写在前面 之前曾经整理过verilog的各类运算符的表达方式,但是在学习的过程并未深入研究关于逻辑运算符的相关知识,导致在实际使用过程
    的头像 发表于 09-21 10:07 2199次阅读
    <b class='flag-5'>verilog</b>的<b class='flag-5'>逻辑运算符</b>

    python运算符的优先级大小

    解。 Python运算符可以分为以下几类:算术运算符、比较运算符逻辑运算符、位运算符、赋值
    的头像 发表于 11-29 16:21 3210次阅读

    Verilog语法运算符的用法

    verilog语法中使用以下两个运算符可以简化我们的位选择代码。
    的头像 发表于 10-25 15:17 284次阅读
    <b class='flag-5'>Verilog</b>语法<b class='flag-5'>中</b><b class='flag-5'>运算符</b>的用法