Verilog 变量中位的数值类型

Verilog变量中每个位(bit)的数值类型有四种,分别为1,0,Z,X。其中1,0比较明确就是高、低电平。而x, z在逻辑设计中也经常用到来建模。X,Z既可以大写,也可以使用小写字母。

  • 0:逻辑 0 或 “假”
  • 1:逻辑 1 或 “真”
  • x 或 X:未知
  • z 或 Z:高阻
  • X表示其值不确定,可能为0,也可能为1;
  • 从高低电平的角度看,四值含义如下表所示:
Verilog中4个逻辑值
逻辑 0 表示低电平,对应电路 为GND,或逻辑电路输出为低电平。  
逻辑 1 表示高电平,对应电路的 VCC,或逻辑电路输出为高电平  
逻辑 X 表示未知,有可能是高电平,也有可能是低电平。  
逻辑 Z 表示高阻态,是一个悬浮状态,如三态门,OC门,OD门等。  

关于X和Z的用法,可以参见 Verilog中X的用法,Verilog中 Z的用法。

数值表示方法

数字声明时,合法的基数格式有 4 中,包括:十进制(‘d 或 ‘D),十六进制(‘h 或 ‘H),二进制(’b 或 ‘B),八进制(’o 或 ‘O)。数值可指明位宽,也可不指明位宽。位宽就是在进制符号前加一个数字表示该数字对应的二进制的位数。如 8’d11,表示数字的大小是十进制的11,但位的宽度为8位的二进制数。也就是8’b0000_1011;

下划线”_”用来起到隔离的作用,不影响数值的大小,目的是提高代码的可读性。

二进制:

二进制数可以用0,1 ,Z,X;如果使用二进制,必须使用’b 或’B引导。

例:

wire a = 1’b0;

reg   b = 1’b1;

wire c;

assign c = 1’bZ;

wire [7:0] tmp_a = 8’b100Z_XX01;

十进制:

十进制的基数是0,1,2,3,4,5,6,7,8,9。即0~9十个数字。

其中十进制整数可以直接使用,如果没有指定基数格式的整数,默认为十进制。十进制中不能包含X或Z的值。如 wire [7:0] a=7;没有指定位宽,编译器会实现自动匹配,匹配方式为右对齐。 即 a[7:0] = 8’b0000_0111;左边以0补齐。

wire [7:0] a = 7;//等效为 wire [7:0] a = 8’d7;

其中8’表示位宽,是8位二进制位宽,d表示十进制数。

16进制:

十六进制的基数除了0~9十个数字外,还包含a,b,c,d,e,f六个字符,每个16进制字符可以等效4位2进制数。如:4’h6与4’b0110等效。如果使用X或Z,则表示4位二进制的值都是X或Z。如4’hZ 等效为4’bZZZZ,4’hX 等效为4’bXXXX。16‘H12Z0等效于16’b0001_0010_ZZZZ_0000。

8进制:

8进制的基数只有0~7,没有8,9 两个数字,逢8进1.

8进制的用法与16进制的用法类似,每个八进制符号表示3位二进制数。wire [7:0] a=8’o367;等效的2进制表达方式 wire [7:0] a=8’b11_110_111;由于受位宽的限制,该八进制数的最左边的只有两位,因此最大只能是3,

例:

1
2
3
4
5
6
7
wire         a = 1’b1;
wire [3:0]   b = 4’HZ;
 
reg  [7:0]   c = 8’d24;
reg  [15:0]  d = 16’H5ZX3;
reg  [9:0]   count = 10;       //10默认为十进制数
reg  [7:0]   ma = ’b1010_0011; //没有指定位宽,编译器自动推断

Verilog 变量中位的数值类型的更多相关文章

  1. C++11中string与数值类型的转换

    C++中string与数值类型的相互转换记录 string转int.double.long string s = "123.456"; // string -> int co ...

  2. C# 中的基本数值类型

    在之前的文章中(地址:https://www.vinanysoft.com/c-sharp-basics/introducing/),以 HelloWorld 程序为基础,介绍 C# 语言.它的结构. ...

  3. 在javaScript中把非数值类型的数据自动转换为数值类型的两种方式

    一.使用Number()函数. 二.使用parseInt()/parseFloat()函数. 详情: 一.使用Number()函数将非数值类型的数据自动的转化为数组类型 Number()函数可以将任何 ...

  4. php变量中两种特殊类型

    第一种----资源 资源(resource):资源是由专门的函数来建立和使用的,例如打开文件.数据连接.图形画布.我们可以对资源进行操作(创建.使用和释放).任何资源,在不需要的时候应该被及时释放.如 ...

  5. Java中初级数值类型的大小, volatile和包装类wrapped type的比较

    Java中的初级数值类型 Java是静态类型语言, 所有的变量必须先声明再使用. 其初级类型一共8种: boolean: 数据只包含1bit信息, 但是占空间为8-bit, 默认值为false byt ...

  6. verilog中wire与reg类型的区别

    每次写verilog代码时都会考虑把一个变量是设置为wire类型还是reg类型,因此把网上找到的一些关于这方面的资料整理了一下,方便以后查找. wire表示直通,即只要输入有变化,输出马上无条件地反映 ...

  7. Python中的数值类型总结

    本文参考书:<Learning Python>中文版--<Python 学习手册>第四版 Python中包含大量的数值类型,他们中的大部分与其他编程语言保持一致,因此学习他们就 ...

  8. 微软BI 之SSIS 系列 - 2008 版本中变量 Int64 无法保存 bigint 类型数据的BUG

    开篇介绍 这是今天在帮别人看一个 2008R2 版本的项目时发现的一个 Bug,这个 Bug 在 SQL SERVER 2012 有的版本中可能已经解决,但在论坛上看到有的仍然存在. 在 SQL SE ...

  9. 当向计算机中存入一个float类型的数值2.2 后,在从计算机中读出输出,这时2.2 的值已经发生了变化(转)

    problom : 'f1' value hava been changed when output. reason : the binary repersentation of 2.2f is : ...

  10. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断

    C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...

随机推荐

  1. 第14周 预习、实验与作业:Java数据库编程

    回想"流与文件"章节,如何将一组对象存储到文件中?主要步骤是什么. 把数据抽象为流,用字节输入输出流(InputStream,OutputStream)进行读写. 主要步骤为:创建 ...

  2. GPT-3介绍

    参考:https://en.wikipedia.org/wiki/GPT-3 Generative Pre-trained Transformer 3(GPT-3)是一个自回归语言模型,于2020年发 ...

  3. JavaScript常用的8个数组去重实战源码

      JavaScript常用的8个数组去重实战源码 在我们学习和使用JavaScript的中,会经常使用到数组的去重,接下来的内容,来给大家分享一下,我们在开发过程中,常用到的数组去重方法,这些方法都 ...

  4. fastapi四:uvicorn.run支持的参数

    `app:指定应用app,'脚本名:FastAPI实例对象'.FastAPI实例对象 host: 字符串,允许被访问的形式 locahost.127.0.0.1.当前IP.0.0.0.0,默认为127 ...

  5. MySQL之中文数据问题

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  6. (转).Net Web开发技术栈

    作者:小曾出处:http://www.cnblogs.com/1996V/p/7700087.html 有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什 ...

  7. K8s网络策略

    Network Policy(网络策略) 默认情况下,k8s集群网络是没有任何限制的,Pod可以和任何其他Pod通信,在某些场景下需要做网络控制,减少网络面的攻击,提高安全性,就会用到网络策略(Net ...

  8. Python3之并发(五)---线程条件(Condition)和事件(Event)

    一.线程条件Condition(条件变量) 依赖锁对象(Lock,RLock),锁对象可以通过参数传入获得,或者使用自动创建的默认锁对象当多个条件变量需要共享同一个锁时,建议传入锁对象 除了带有获取到 ...

  9. cmd执行程序时容易卡住阻塞以及解决方式

    遇到问题: cmd执行程序时总是卡住,敲回车后继续执行程序. 我司公众号需要去内网获取数据,cmd执行了内网穿透程序,期间cmd两次卡住,公众号无法获取内网数据导致无法运行. 解决方案: cmd默认开 ...

  10. 055_Lightning Lightning 组件基础知识

    Lightning框架简介 Lightning框架是Salesforce提供的一套基于用户界面的开发框架,对于开发单页面应用(Single Page Application)有很大的帮助.它和Visu ...