近期阅读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. 吴裕雄--天生自然python学习笔记:python 用 Open CV抓取摄像头视频图像

    Open CV 除了可以读取.显示静态图片外 , 还可 以加载及播放动态影片, 以 及 读取内置或外接摄像头的图像信息 . 很多笔记本电脑都具有摄像头 , OpenCV 可通过 VideoC aptu ...

  2. C/C++预处理指令#include,#define,#undef,#if,#ifdef,#ifndef,#elif,#endif,#error......

    本文主要记录了C/C++预处理指令,常见的预处理指令如下: #空指令,无任何效果 #include包含一个源代码文件 #define定义宏 #undef取消已定义的宏 #if如果给定条件为真,则编译下 ...

  3. Web Service概述 及 应用案例

    Web Service的定义  W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用 ...

  4. 82)PHP,基本框架类步骤

    framework.class.php 基本代码展示: <?php /** * 框架初始化功能类 */ class Framework { /** * 入口 * 里面的static和self是一 ...

  5. sqlserver 命令执行sql脚本

    osql -S 主机名 -U 用户名 -P 密码 -i E:\20190723.sql

  6. cs231n spring 2017 lecture3 Loss Functions and Optimization

    1. Loss function是用来量化评估当前预测的好坏,loss function越小表明预测越好. 几种典型的loss function: 1)Multiclass SVM loss:一般的S ...

  7. 关于unicode汉字范围正则表达式的写法

    \u2E80-\u2EFF:CJK部首补充: \u2F00-\u2FDF:康熙部首: \u3000-\u303F:CJK标点符号: \u31C0-\u31EF:CJK笔划: \u3200-\u32FF ...

  8. Java IO: 异常处理

    原文链接 作者:Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 流与Reader和Writer在结束使用的时候,需要正确地关闭它们.通过调用close()方法 ...

  9. (七)spring+druid多数据源配置

    druid多数据源配置 一.druid简介 Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. ...

  10. idea maven 项目可以运行但依赖包一直是红色

    一句话!!!重启一下idea 红红的一片很烦!!!!!重启