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中的数据类型的更多相关文章

  1. JavaScript 中的数据类型

    Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...

  2. hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化

    hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...

  3. js中的数据类型

    JS中的数据类型: ——数字  (number)NaN ——字符串(string) ——布尔  (boolean)——函数  (function)     也是对象的一种 ——对象  (object) ...

  4. 如何判断js中的数据类型?

    js六大数据类型:number.string.object.Boolean.null.undefined string: 由单引号或双引号来说明,如"string" number: ...

  5. system verilog中的跳转操作

    在verilog中,使用disable声明来从执行流程中的某一点跳转到另一点.特别地,disable声明使执行流程跳转到标注名字的声明组末尾,或者一个任务的末尾. verilog中的disable命令 ...

  6. system verilog中的类型转换(type casting)、位宽转换(size casting)和符号转换(sign casting)

    类型转换 verilog中,任何类型的任何数值都用来给任何类型赋值.verilog使用赋值语句自动将一种类型的数值转换为另一种类型. 例如,当一个wire类型赋值给一个reg类型的变量时,wire类型 ...

  7. 一段比较有意思的代码——介绍system verilog中的新增幅值语句

    system verilog中新加了很多幅值语句,虽然都只适用于阻塞幅值,但是在某些场合中非常实用. 下面是一段有意思的代码,覆盖了一些用法. package definitions; typedef ...

  8. 如何判断js中的数据类型

    如何判断js中的数据类型:typeof.instanceof. constructor. prototype方法比较 如何判断js中的类型呢,先举几个例子: var a = "iamstri ...

  9. c中的数据类型、常量、变量

    一. 数据 1. 什么是数据 生活中时时刻刻都在跟数据打交道,比如体重数据.血压数据.股价数据等.在我们使用计算机的过程中,会接触到各种各样的数据,有文档数据.图片数据.视频数据,还有聊QQ时产生的文 ...

  10. [转]如何判断js中的数据类型

    原文地址:http://blog.sina.com.cn/s/blog_51048da70101grz6.html 如何判断js中的数据类型:typeof.instanceof. constructo ...

随机推荐

  1. 【分布式】load balance 03-一致性哈希算法 java 实现

    负载均衡系列专题 01-负载均衡基础知识 02-一致性 hash 原理 03-一致性哈希算法 java 实现 04-负载均衡算法 java 实现 本节我们来看一下如何实现一个一致性 hash 框架. ...

  2. 在PWM控制下的直流有刷电机性能优化

    结论 为了避免各位浪费时间, 先说结论: 选择合适的电机驱动模式和PWM频率, 能大幅提升直流电机的性能和可控性, 在常见的48:1减速电机上, 使用慢衰减模式和低于100Hz的PWM频率, 能达到最 ...

  3. Spring异步任务async介绍与案例实战

    关于spring异步任务 简单地说,用@Async注释bean的方法将使其在单独的线程中执行.换句话说,调用者不会等待被调用方法的完成.利用spring提供的注解即可简单轻松的实现异步任务处理. 默认 ...

  4. Oracle 表压缩(Table Compression)技术介绍

    Oracle 表压缩(Table Compression)介绍 1.官方文档说法: As your database grows in size, consider using table compr ...

  5. 解决主机ssh虚拟机linux慢的问题

    1.编辑sshd配置文件: vi /etc/ssh/sshd_config 找到行:#UseDNS yes 将注释去掉,把yes改为no 2.重启sshd服务: service sshd restar ...

  6. 《系列二》-- 8、单例bean的创建

    目录 1 源码入口概述 2 getSingleton(beanName, ObjectFactory) 的行为 总结 阅读之前要注意的东西:本文就是主打流水账式的源码阅读,主导的是一个参考,主要内容需 ...

  7. UTF-8 的理解

    举个简单的例子: Unicode 只是一个业界标准,具体一个字符占多少字节,取决于编码方式,包括 UTF-8 UTF-16 GB2312 等 "汉" 在 UTF-8 中占到 3 个 ...

  8. DVWA XSS

    XSS Store hign level <?php if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_P ...

  9. 机器学习策略篇:详解正交化(Orthogonalization)

    正交化 这是一张老式电视图片,有很多旋钮可以用来调整图像的各种性质,所以对于这些旧式电视,可能有一个旋钮用来调图像垂直方向的高度,另外有一个旋钮用来调图像宽度,也许还有一个旋钮用来调梯形角度,还有一个 ...

  10. 教你如何判断Java代码中异步操作是否完成

    本文分享自华为云社区<java代码实现异步返回结果如何判断异步执行完成>,作者: 皮牙子抓饭. 在许多应用程序中,我们经常使用异步操作来提高性能和响应度.在Java中,我们可以使用多线程或 ...