近期阅读Verilog HDL高级数字设计(第二版)中,遇到了串行比特流BCD码转余3码转换器的设计,比较独特的是:

  (1)该转换器的输入为1位串行比特流,输出也为1位串行比特流。

  BCD码与余三码的转换关系如下:

                  8421BCD码=余3码+0011

表1 8421BCD码-余3码转换关系(4位无符号数)
10进制 8421BCD码 余3码 10进制 8421BCD码 余3码
0 0000 0011 8 1000 1011
1 0001 0100 9 1001 1100
2 0010 0101 10 1010 1101
3 0011 0110 11 1011 1110
4 0100 0111 12 1100 1111
5 0101 1000 13 1101 10000
6 0110 1001 14 1110 10001
7 0111 1010 15 1111 10010

由表1可知,当8421BCD码为13、14、15时候,余三码已经超出了4位二进制能表示的范围(无符号数0~15),因此本次中暂不考虑。

转换器的输入为1位串行比特流,输出为1位相应余三码的串行比特流,设计思路如下:

                        图1 状态转换示意图

  设BCD码输入比特流Bin在t0,t1,t2,t3的输入分别为t0t1t2t3,设余三码输出比特流Bout在t0,t1,t2,t3时刻的输出分别为T0T1T2T3

假设转换器的初始状态为状态A:

  (1)在状态A下,t0时刻Bin输入的值可能为0或者1:当bin输入0时,进入B状态;当bin输入1时,进入C状态

比特流Bin二进制为t3t2t1t0的可能性如下:

A状态(t0时刻,Bin=0),Bout=1

A状态(t0时刻,Bin=1),Bout=0

t3t2t1t0

T3T2T1T0 下一个状态:B t3t2t1t0 T3T2T1T0 下一个状态:C
0000 0011 0001 0010
0010 0101 0011 0110
0100 0111 0101 1000
0110 1001 0111 1010
1000 1011 1001 1100
1010 1101 1011 1110
1100 1111 1101 (1)0000

  (2)在B状态,t1时刻Bin输入的值可能为0或者1:当bin输入0时,进入D状态;当bin输入1时,进入E状态

比特流Bin二进制为t3t2t1t0的可能性如下:

B状态(t1时刻,Bin=0),Bout=1

B状态(t1时刻,Bin=1),Bout=0

t3t2t1t0

T3T2T1T0 下一个状态:D t3t2t1t0 T3T2T1T0 下一个状态:E
0000 0011 0010 0101
0100 0111 0110 1001
1000 1011 1010 1101
1100 1111 1110 (1)0001

  (3)在D状态,t2时刻Bin输入的值可能为0或者1:当bin输入0时,进入H状态;当bin输入1时,进入I状态

比特流Bin二进制为t3t2t1t0的可能性如下:

D状态(t2时刻,Bin=0),Bout=0

E状态(t2时刻,Bin=1),Bout=1

t3t2t1t0

T3T2T1T0 下一个状态:H t3t2t1t0 T3T2T1T0 下一个状态:I
0000 0011 0100 0111
1000 1011 1100 1111

  (4)在H状态,t3时刻Bin输入的值可能为0或者1:当bin输入0时,进入A状态;当bin输入1时,进入A状态

比特流Bin二进制为t3t2t1t0的可能性如下:

H状态(t3时刻,Bin=0),Bout=0

H状态(t3时刻,Bin=1),Bout=1

t3t2t1t0

T3T2T1T0 下一个状态:A  t3t2t1t0 T3T2T1T0 下一个状态:A
0000 0011 1000 1011

    (5)在I状态,t3时刻Bin输入的值可能为0或者1:当bin输入0时,进入A状态;当bin输入1时,进入A状态

比特流Bin二进制为t3t2t1t0的可能性如下:

I状态(t3时刻,Bin=0),Bout=0

I状态(t3时刻,Bin=1),Bout=1

t3t2t1t0

T3T2T1T0 下一个状态:A t3t2t1t0 T3T2T1T0 下一个状态:A
0100 0111 1100 1111

  (6)在E状态,t2时刻Bin输入的值可能为0或者1:当bin输入0时,进入J状态;当bin输入1时,进入K状态

比特流Bin二进制为t3t2t1t0的可能性如下:

E状态(t2时刻,Bin=0),Bout=1

E状态(t2时刻,Bin=1),Bout=0

t3t2t1t0

T3T2T1T0 下一个状态:J t3t2t1t0 T3T2T1T0 下一个状态:K
0010 0101 0110 1001
1010 1101 1110 (1)0001

  (7)在J状态,t3时刻Bin输入的值可能为0或者1:当bin输入0时,进入A状态;当bin输入1时,进入A状态

比特流Bin二进制为t3t2t1t0的可能性如下:

J状态(t3时刻,Bin=0),Bout=0

J状态(t3时刻,Bin=1),Bout=1

t3t2t1t0

T3T2T1T0 下一个状态:A t3t2t1t0 T3T2T1T0 下一个状态:A
0010 0101 1010 1101

  (8)在K状态,t3时刻Bin输入的值可能为0或者1:当bin输入0时,进入A状态;当bin输入1时,进入A状态

比特流Bin二进制为t3t2t1t0的可能性如下:

K状态(t3时刻,Bin=0),Bout=1

K状态(t3时刻,Bin=1),Bout=0

t3t2t1t0

T3T2T1T0 下一个状态:A t3t2t1t0 T3T2T1T0 下一个状态:A
0110 1001 1110 (1)0001

未完待续。。。

8421BCD转余3码Verilog HDL的设计(1)的更多相关文章

  1. 基于Verilog HDL 的数字电压表设计

    本次实验是在“基于Verilog HDL的ADC0809CCN数据采样”实验上进一步改进,利用ADC0809采集到的8位数据,进行BCD编码,以供查表方式相加进行显示,本次实验用三位数码管. ADC0 ...

  2. 浅谈Verilog HDL代码编写风格

    消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次 ...

  3. 如何高效的编写Verilog HDL——进阶版

    博主之前写过一篇文章来谈论如何高效的编写Verlog HDL——菜鸟版,在其中主要强调了使用Notepad++来编写Verilog HDL语言的便捷性,为什么说是菜鸟版呢,因为对于新手来说,在还没有熟 ...

  4. 你知道Verilog HDL程序是如何构成的吗

    本节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点. 二十进制编码器及Verilog HDL描述 二十进制编码器是数字电路中常用的电路单元 ...

  5. 基于Verilog HDL整数乘法器设计与仿真验证

    基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为 ...

  6. 关于初次使用Verilog HDL语言需要懂的基本语法

    关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制 ...

  7. FPGA Verilog HDL 系列实例--------步进电机驱动控制

    [连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...

  8. Verilog HDL基础语法讲解之模块代码基本结构

    Verilog HDL基础语法讲解之模块代码基本结构   本章主要讲解Verilog基础语法的内容,文章以一个最简单的例子"二选一多路器"来引入一个最简单的Verilog设计文件的 ...

  9. Verilog HDL模块的结构

    一个设计是由一个个模块(module)构成的.一个模块的设计如下: 1.模块内容是嵌在module 和endmodule两个语句之间.每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字 ...

随机推荐

  1. 新年在家学java之基础篇--循环&数组

    因为“野味肺炎”的肆虐,过年被迫宅家只能吃了睡.睡了吃.这么下次只能长膘脑子空空,不如趁此机会重新学习java基础,为日后做铺垫~ 循环结构: 几种循环:for(::),while(){},do{}w ...

  2. redis数据库写入数据时提示redis.exceptions.ResponseError错误

    今天运行Django项目在redis数据库写入数据时提示如下错误: ERROR log 228 Internal Server Error: /image_code/cf9ccd75-d274-45c ...

  3. yum安装与卸载软件常见命令

    1.使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的. 安装的命令是,yuminstall ~,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突 ...

  4. python之接口自动化测试框架

    梳理python+unittest接口自动化测试框架的思路: 1.确定目录: cases:存放测试用例的py文件:config:存放一些数据库,环境地址等固定不变的信息: core:核心的文件, ca ...

  5. ArcGIS自定义坐标变换中的方法说明

    在10.1里面,一共提供了12种转换的方法,如下: Ø  Geocentric_Translation Ø  Molodensky Ø  Molodensky_Abridged Ø  Position ...

  6. 基础_1:RCP基本框架

    Display: Display是一个SWT对象,代表底层图形系统的实现.一个RCP应用程序只需要一个Display对象. Display的主要任务是从操作系统队列中读取事件,传递给RCP的事件监听器 ...

  7. Linux文件与目录管理,常用命令总结

    绝对路径:  以根目录 / 开始的相对路径:  相对于当前路径的写法 $PATH:  可执行文件路径的变量(出现在该变量下的文件可以在系统的任何目录下都可以执行) 获取路径的文件名:    basen ...

  8. be accustomed to doing|actual |acute|adapt |

    Sometimes you've got to play a position that you're not accustomedto for 90 minutes, " he said. ...

  9. FPGA 浮点定点数的处理

    大纲: 1浮点数的格式指定 2浮点数的运算(加法) 3浮点数加减法器的实现(难于乘除法器的实现)  1. 在FPGA的设计中,浮点数的概念不同于C语言中的定义,这里的浮点数指的是小数点位置会发生变化的 ...

  10. android apk 文件反编译

    最近,自己坑逼的把一个android 项目修改版本的代码删除了.这个项目居然还没上传到源代码管理器.幸好还有apk文件,修改的代码也不多可以反编译一下. 1.下载 dex2jar  获取源码工具  地 ...