verilog中的数据类型
Verilog中的数据格式
1、基本概念
verilog中写一个数据的通用格式是 n'b000_000_···_000,表示一个n位的二进制数。基于这个通用式,可以将其分为三个部分:位数、加权数和实际数。改变位数自然可以改变该数的存储宽度。改变加权数则是改变数制。如使用b(二进制),d(十进制),h(十六进制)。八进制的表示没有注意过,用的也比较少,感兴趣可以去了解一下。改变实际数则是改变了数值的大小。这里可以推出申明常数的流程。先在内存确认空间。注意这里的长度都是基于二进制的。也好理解,毕竟存储在寄存器中的数据都是二进制的。而后确定描述形式。这个形式配合后面的实际数构成了这个数据的值。下面是几个例子:
1'b1;
2'd10;
3'hf;
4'b0001;
5'd32;
6'h3f;
在上面的几个数中,第一个是正确的。表示一位二进制1,第二个超出内存限制,实际值为2’d3。但是现在的编辑器会报错。编辑器可以将高位补0,但是不会承认溢出数据。其他几个也是采取同样的方法阅读。
接下来是几种简写的方式:
'b0001;
'd1000;
'hffee;
1;
2;
6;
前面三个数据省略内存申明,由具体的编译器补充。后面的则是默认32位十进制的数据。如果超出编译器则会拓展。
当然一般来说,只有十进制数一般不用于verilog中的数据赋值,而是用于判断语句或者位宽等值的使用。这样可以有效地分辨赋值数据的所在。至于第二种的缩写则是对于一些数据变化较大不好确认空间的数据。为什么会有常数数据变化呢?
这里常见的就是手动修改对应的数据大小。还有参数传递过程中也是有数据大小的变化的。
2、实际应用
在实际的运用中,有许多为了适应电路特性的编码方式。比较有名的是ASCII编码,BCD编码等方式。
其中ASCII码是8位宽的编码,也就是一个字节。在verilog可以直接使用" M "的方式表示M的ASCII码。
而BCD码则是一种无权码。其中常见的就是8421BCD码,就是使用四位表示0~9这10个十进制的数中的一个,然后拼接。简单理解,BCD,就是将一个十进制的每个权上的数取下来,由四位二进制表示,然后直接按照顺序拼接。感觉像将一列火车拆成一节一节,放在不同的轨道运行。
这也体现了BCD的优势所在,由于数字电路是支持位操作的,所以可以通过操作BCD码直接得到十进制数的高位的加减。这样可以避开不需要处理的低位数据。而缺点就是不能和十进制数据直接转化,需要经过二进制。具体举个例子:
8'd10+8'd20=8'd30;
{4'd1 , 4'd0} + {4'd2 , 4'd0 }={4'd3,4'd0}
上面的是十进制的加法,下面是BCD加法的示意图。对于我们来说,判断逻辑是一样的,就是从低到高开始加,依次判断本位值和进位值。这是全加器的思路。而对于BCD码而言,可以直接对应到需要操作的位数。比如这里是十位直接相加,个位保持不变。这就将8位全加器的工作转化为4位全加器。当然,BCD码并不是用于计算的,从这里也可以看到计算结果并不能直接使用,计算反而麻烦。这个例子只是说明BCD码的模型。
那BCD的优势在具体应用中的有何体现呢。
BCD的主要特点是无权。所以在设计中可以直接拼接,所以对于那些只需要表示而不需要大量计算的十进制转化为BCD可以有效地提高电路处理速度。
3、总结
了解BCD是比较重要的,可以提高设计的效率和可读性。
verilog中的数据类型的更多相关文章
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...
- js中的数据类型
JS中的数据类型: ——数字 (number)NaN ——字符串(string) ——布尔 (boolean)——函数 (function) 也是对象的一种 ——对象 (object) ...
- 如何判断js中的数据类型?
js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number: ...
- system verilog中的跳转操作
在verilog中,使用disable声明来从执行流程中的某一点跳转到另一点.特别地,disable声明使执行流程跳转到标注名字的声明组末尾,或者一个任务的末尾. verilog中的disable命令 ...
- system verilog中的类型转换(type casting)、位宽转换(size casting)和符号转换(sign casting)
类型转换 verilog中,任何类型的任何数值都用来给任何类型赋值.verilog使用赋值语句自动将一种类型的数值转换为另一种类型. 例如,当一个wire类型赋值给一个reg类型的变量时,wire类型 ...
- 一段比较有意思的代码——介绍system verilog中的新增幅值语句
system verilog中新加了很多幅值语句,虽然都只适用于阻塞幅值,但是在某些场合中非常实用. 下面是一段有意思的代码,覆盖了一些用法. package definitions; typedef ...
- 如何判断js中的数据类型
如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...
- c中的数据类型、常量、变量
一. 数据 1. 什么是数据 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文 ...
- [转]如何判断js中的数据类型
原文地址:http://blog.sina.com.cn/s/blog_51048da70101grz6.html 如何判断js中的数据类型:typeof.instanceof. constructo ...
随机推荐
- 【OpenGL ES】基于ValueAnimator的旋转、平移、缩放动效
1 前言 ValueAnimator 基于 Choreographer 的 frame callback 机制,周期性(约16.7ms,与屏幕帧率相关)执行其 doAnimationFrame() ...
- Optional 详解
1 前言 Optional 是 Java 8 的新特性,专治空指针异常(NullPointerException, 简称 NPE)问题,它是一个容器类,里面只存储一个元素(这点不同于 Conllect ...
- Vuex中的核心方法
Vuex中的核心方法 Vuex是一个专为Vue.js应用程序开发的状态管理模式,其采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.每一个Vuex应用的核心就是 ...
- 解决:Not found the kernel library or the kernel library is invalid
问题说明: 今天运行一个E语言写的程序报错, 看样子是缺少核心依赖库. 解决方法 去下载个易语言安装包安装一下即可.比如我安装的是: 易语言5.6完美破解版(精简版).exe 下载地址:https:/ ...
- 在Android开发中如何使用OpenSL ES库播放解码后的pcm音频文件?
一.认识OpenSL ES OpenSL ES的全称是Open Sound Library For Embedded Systems,即应用于嵌入式系统的开源音频库.Android从2.3版本起就开始 ...
- 树莓派/Linux ubuntu 开机自动改网络mac地址(主要适用于拷贝内存卡的情况/不同树莓派mac地址不同)
树莓派/Linux ubuntu 开机自动改网络mac地址(主要适用于拷贝内存卡的情况/不同树莓派mac地址不同) yaml文件名根据自己原卡中名字更改 address=$(cat /sys/clas ...
- 硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
前言 有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的.为了更好的表述封装设计过程,本文描述了CH340G和MAX232芯片封装 ...
- 微服务程序运行步骤及nameko入门案例
首先一个微服务应用程序需要有服务的生产者和服务的消费者,另外还需要一个注册中心来管理和调度服务 1.服务提供方,即生产者启动服务,并将服务提交到注册中心注册服务 2.服务需求方,即消费者连接到注册中心 ...
- 【Java复健指南10】OOP高级01-类变量、类方法和main
类变量 什么是类变量 类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量. 如何定义类变 ...
- 矩池云产品最新动态 All in One
AI/ML 的不断革新,让我们看到了更多激动人心的应用方向,也迸发了更多的训练&应用场景. 在用户的反馈和建议下,矩池云持续丰富和优化在 AI+Science 链路上的相关产品,为了帮助研究人 ...