8421BCD转余3码Verilog HDL的设计(1)
近期阅读Verilog HDL高级数字设计(第二版)中,遇到了串行比特流BCD码转余3码转换器的设计,比较独特的是:
(1)该转换器的输入为1位串行比特流,输出也为1位串行比特流。

BCD码与余三码的转换关系如下:
8421BCD码=余3码+0011
| 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)的更多相关文章
- 基于Verilog HDL 的数字电压表设计
本次实验是在“基于Verilog HDL的ADC0809CCN数据采样”实验上进一步改进,利用ADC0809采集到的8位数据,进行BCD编码,以供查表方式相加进行显示,本次实验用三位数码管. ADC0 ...
- 浅谈Verilog HDL代码编写风格
消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次 ...
- 如何高效的编写Verilog HDL——进阶版
博主之前写过一篇文章来谈论如何高效的编写Verlog HDL——菜鸟版,在其中主要强调了使用Notepad++来编写Verilog HDL语言的便捷性,为什么说是菜鸟版呢,因为对于新手来说,在还没有熟 ...
- 你知道Verilog HDL程序是如何构成的吗
本节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点. 二十进制编码器及Verilog HDL描述 二十进制编码器是数字电路中常用的电路单元 ...
- 基于Verilog HDL整数乘法器设计与仿真验证
基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为 ...
- 关于初次使用Verilog HDL语言需要懂的基本语法
关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制 ...
- FPGA Verilog HDL 系列实例--------步进电机驱动控制
[连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...
- Verilog HDL基础语法讲解之模块代码基本结构
Verilog HDL基础语法讲解之模块代码基本结构 本章主要讲解Verilog基础语法的内容,文章以一个最简单的例子"二选一多路器"来引入一个最简单的Verilog设计文件的 ...
- Verilog HDL模块的结构
一个设计是由一个个模块(module)构成的.一个模块的设计如下: 1.模块内容是嵌在module 和endmodule两个语句之间.每个模块实现特定的功能,模块可进行层次的嵌套,因此可以将大型的数字 ...
随机推荐
- MySQL安装教程及Navicat连接MySQL报错:1251-Client does not support authentication protocol requested by server
MySQL安装可参考: MySql 8.0.18安装 此参考文章后面涉及到的密码修改,对本标题碰到的错误同样适用. 本文先讲如何安装,在讲碰到的1251问题.要直接看解决方案的朋友可以直接通过目录链接 ...
- druid+mybaits简单集成
在前面的文章中,我们对springboot开发中一些常用的框架进行了集成,但是发现还是存在一些问题,比如druid还需要比较长的固有配置,实际上druid官方是提供了相关的starters包的,内部采 ...
- [NOIP 2002普及组]产生数(floyd+高精度)
https://www.luogu.org/problem/P1037 题目描述 给出一个整数 n(n<1030) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: ...
- 0x06 - Nginx 负载均衡会话保持
Nginx 负载均衡会话保持 背景 负载均衡时,如果APP需要保持特定状态的时候,就要保证同一用户的 session 会被分配到同一台服务器上. 实现方案 使用cookie 将用户的 session ...
- 吴裕雄--天生自然python Google深度学习框架:MNIST数字识别问题
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE = 784 ...
- VS编译release版本的出现的LNK1104 无法打开文件“libboost_filesystem-vc140-mt-1_58.lib
最近在用restbed和vs2015做一个项目,debug编译的没问题,但是编译release就有问题,困扰了一天,说下我的出坑过程. 1.我用到了外部的库 restbed ,首先要想正确编译过,你的 ...
- 03-Java的基础语法
一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的 ...
- [LC] 77. Combinations
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. Example: I ...
- Office Lens:口袋中的扫描仪
Lens:口袋中的扫描仪" title="Office Lens:口袋中的扫描仪"> 编者按:开会时,你是否觉得白板上天马行空的讨论记录誊抄起来费时费事又难以共享- ...
- IntelliJ IDEA 的便捷操作性
快捷键 说明 IntelliJ IDEA 的便捷操作性,快捷键的功劳占了一大半,对于各个快捷键组合请认真对待.IntelliJ IDEA 本身的设计思维是提倡键盘优先于鼠标的,所以各种快捷键组合层出不 ...