Verilog的基本表示法(详解)

 一、前言

    欢迎小伙伴们光临寒舍!!如果本文有帮助还请小伙伴们点个小小的赞和关注,谢谢!!
其实,C语言和Verilog两个就像哥哥和弟弟一样,所以Verilog继承了哥哥很大一部分的优点,这也就意味着,它与C哥相同点颇多,像数据类型和运算符等等。

 (运算符:Verilog中的运算符(包含介绍 对比 易错点)-CSDN博客


     在Verilog中,我们的数据类型有19种之多,最常用的有四种(reg型;wire型;interger型;parameter型),其中包含从语言中出现的常量和变量。
今天我们主要讲述,常量中的整数。

 它有与C语言一模一样的进制,有与C语言一模一样的进制转换,所以在这不多赘述,

( 详见:C语言 和 数字电路设计 中的整数的进制转换-CSDN博客。)
     我们主要讲述一下两者的不同,verilog的特殊点:


   二、不同点:x & z

       除了在C语言和数字电路中用的0(低电平)和1(高电平)以外,verilog还多加了两个状态,x和z : 因为Verilog是一种硬件描述语言,它与电路的结构和测试有关,所以需要这两种输入的状态可能情况。

x:不定状态,可为0,同时也可为1;
z:高阻状态,相当与电路中的电阻无限大,呈现断路状态。
(为了方便与字母z进行区分,也可表示成“?”,常见与各种有关仿真软件上)

 三、基数表示法

    格式:[size]'base value
size为位宽,表示其整数位数的大小长度;'base为进制,表示为进制的字母如b,0等(注意:一定要有”'"这个符号在进制字母前);value就是整数化成相应进制的数字大小。

 8'b10101100      //位宽为8的数的二进制表示,'b表示二进制
 7'ha2                //位宽为7的数的十六进制表示,'h表示十六进制
 4'b10x0            //位宽为4的二进制数,从低位数起第2位为不定值
 4'b101z            //位宽为4的二进制数,从低位数起第1位为高阻值
 12'dz               //位宽为12的十进制数,其值为高阻值(第1种表达方式)
 12'b?              //位宽为12的十进制数,其值为高阻值(第2种表达方式)
 8'h4x             //位宽为8的十六进制数,其低4位值为不定值(见下说明)

  注释: Verilog中没有表明位长,其位长都默认为32位,并且在字母用8位ASCII表示;

   

I..补位

   1.   如果定义的长度比为常量指定的长度长,通常在左边填0补位。但是如果数最左边一位为×或z,则在左边补相应的 x 或者 z:

  • 10'b10  左边添0占位 ,为0000000010
  • 10'bx0x1 左边添x 占位 ,  为××x×××x0x

    2.  x 或 z 在十六进制值中代表4位 x 或 z,

在八进制中代表3位 x 或 z,在二达制中代表1位 x 或 z:

  • 7'Hx    (扩展的x),即xxxxxxx
  •  4'hZ   (扩展的z),即zzzz
  • 8'h4x   (扩展的x),即4xxxx

    3. 如果长度定义得更小,那么最左边的位相应地被截断:

  • 3'b1001_0011 = 3'b011
  • 5'H0fff  = 5'H1F

II..负数表示:

  通常在表示位宽的数字前面加一个减号来表示负数:

      -6'd15 = -15
  - 15在5位二进制中的形式为 5'b10001,在6位二进制中的形式为 6'b11_0001:


算法演示:

   口诀:先取正,在取反+1:

      -15,看15 = 5'b01111,取反+1得 = 11000+1= 11001

          同理,15 = 6'b001111,取反+1 = 110000+1 = 110001

 III..错误写法注意:


  • 1.  4' b32        '与b之间存在空格
  • 2.  4'b-13        数前有负数
  • 3.  4-'b34        4和'间有负数
  • 4.  (3+1)'b23   位长不能为表达式

 

  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值