8421BCD转余3码Verilog HDL的设计(2)

接着上节8421BCD转余3码Verilog HDL的设计(1),分析另一条路径A-C分支

(1)在C状态,t1时刻Bin输入的值可能为0或者1:当bin输入0时,进入F状态;当bin输入1时,进入G状态,比特流Bin二进制为t3t2t1t0的可能性如下:


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


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


t3t2t1t0

T3T2T1T0 下一状态为F状态 t3t2t1t0 T3T2T1T0 下一状态为G状态
0001 0100 0011 0110
0101 1000 0111 1010
1001 1100 1011 1110
1101 (1)0000 1111 (1)010

(2)在F状态,t2时刻Bin输入的值可能为0或者1:当bin输入0时,进入L状态;当bin输入1时,进入M状态,比特流Bin二进制为t3t2t1t0的可能性如下:


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


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


t3t2t1t0

T3T2T1T0 下一状态为L状态 t3t2t1t0 T3T2T1T0 下一状态为M状态
0001 0100 0101 1000
1001 1100 1101 (1)0000

(3)在L状态,t3时刻Bin输入的值可能为0或者1:当bin输入0时,进入A状态;当bin输入1时,进入A状态,比特流Bin二进制为t3t2t1t0的可能性如下:


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


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


t3t2t1t0

T3T2T1T0 下一状态为A状态 t3t2t1t0 T3T2T1T0 下一状态为A状态
0001 0100 1001 1100

(4)在M状态,t3时刻Bin输入的值可能为0或者1:当bin输入0时,进入A状态;当bin输入1时,进入A状态,比特流Bin二进制为t3t2t1t0的可能性如下:


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


M状态(t1时刻,Bin=3),Bout=0


t3t2t1t0

T3T2T1T0 下一状态为A状态 t3t2t1t0 T3T2T1T0 下一状态为A状态
0101 1000 1101 (1)0000

(5)在G状态,t2时刻Bin输入的值可能为0或者1:当bin输入0时,进入N状态;当bin输入1时,进入P状态,比特流Bin二进制为t3t2t1t0的可能性如下:


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


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


t3t2t1t0

T3T2T1T0 下一状态为N状态 t3t2t1t0 T3T2T1T0 下一状态为P状态
0011 0110 0111 1010
1011 1110 1111 (1)0010

(6)在N状态,t3时刻Bin输入的值可能为0或者1:当bin输入0时,进入A状态;当bin输入1时,进入A状态,比特流Bin二进制为t3t2t1t0的可能性如下:


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


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


t3t2t1t0

T3T2T1T0 下一状态为A状态 t3t2t1t0 T3T2T1T0 下一状态为A状态
0011 0110 1011 1110

(7)在P状态,t3时刻Bin输入的值可能为0或者1:当bin输入0时,进入A状态;当bin输入1时,进入A状态,比特流Bin二进制为t3t2t1t0的可能性如下:


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


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


t3t2t1t0

T3T2T1T0 下一状态为A状态 t3t2t1t0 T3T2T1T0 下一状态为A状态
0111 1010 1111 (1)0010

综上,整理得到状态转换表如下:

状态转移 输入0 输入1 输入0 输入1
当前状态 下一个状态 输出Bout
A B C 1 0
B D E 1 0
C F G 0 1
D H I 0 1
E J K 1 0
F L M 1 0
G N P 1 0
H A A 0 1
I A A 0 1
J A A 0 1
K A A 1 0
L A A 0  1 
M A A 1 0
N A A 0  1
P A A 1  0 

(1)H、I、J、L完全等价,保留H,合并I、J、L状态

状态转移 输入0 输入1 输入0 输入1
当前状态 下一个状态 输出Bout
A B C 1 0
B D E 1 0
C F G 0 1
D H H 0 1
E H K 1 0
F H M 1 0
G N P 1 0
H A A 0 1
K A A 1 0
M A A 1 0
N A A 0  1
P A A 1  0 

(2)K\M\P状态完全一样,合并M\P,保留K状态

状态转移 输入0 输入1 输入0 输入1
当前状态 下一个状态 输出Bout
A B C 1 0
B D E 1 0
C F G 0 1
D H H 0 1
E H K 1 0
F H K 1 0
G N K 1 0
H A A 0 1
K A A 1 0
N A A 0  1

(3)H\N完全一样,合并N,保留H;

状态转移 输入0 输入1 输入0 输入1
当前状态 下一个状态 输出Bout
A B C 1 0
B D E 1 0
C F G 0 1
D H H 0 1
E H K 1 0
F H K 1 0
G H K 1 0
H A A 0 1
K A A 1 0

(4)E/F/G完全一样,合并EFG,保留E

状态转移表 输入0 输入1 输入0 输入1
当前状态 下一个状态 输出Bout
A B C 1 0
B D E 1 0
C E E 0 1
D H H 0 1
E H K 1 0
H A A 0 1
K A A 1 0

得到最终的状态转移表。

原文地址:https://www.cnblogs.com/leejiac/p/12432461.html

时间: 2024-10-31 13:50:40

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

自己动手写处理器之第二阶段(2)——Verilog HDL简介

将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇,我尽量每周四篇 2.3 Verilog HDL简介 本书实现的OpenMIPS处理器是使用Verilog HDL编写的,所以本章接下来的几节将介绍Verilog HDL的一些基本知识,包括语法.结构等.因为本书并不是一本讲授Verilog HDL的专门书籍,所以此处介绍的内容并不是Verilog HDL的全部,只是一些基础知识,以及在OpenMIPS处理器实现过程中会使用到的知识.读者如果对Verilog HDL有进一步了解

MiS603开发板 2.1 Verilog HDL 代码规范

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ 2.1 Verilog HDL 代码规范 规范的代码风格,可以让程序更容易阅读和维护. u 文档管理 合理的文档管理也是程序代码规范的重

Verilog HDL设计进阶:有限状态机的设计原理及其代码风格_zt

http://www.21ic.com/app/eda/201308/189781_1.htm 由于Verilog HDL和 VHDL 行为描述用于综合的历史还只有短短的几年,可综合风格的Verilog HDL 和VHDL的语法只是它们各自语言的一个子集.又由于HDL的可综合性研究近年来非常活跃,可综合子集的国际标准目前尚未最后形成,因此各厂商的综合器所支持的HDL子集也略有所不同. 本书中有关可综合风格的Verilog HDL的内容,我们只着重介绍RTL级.算法级和门级逻辑结构的描述,而系统级

浅谈Verilog HDL代码编写风格

消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次的问题,对于这个行业来说可能我才是一直脚踩在门外面.所以这篇文章是写给一些刚开始学习FPGA.Verilog HDL的同学,我看过一些大神写的代码,然后尽量模仿大神写法,经过好几个大神的影响和自己的习惯摸索,最终算是总结出了一套自己的代码书写风格,当然我的代码风格还是一直在进化中.现在将自己的一些经

3_8译码器Verilog HDL语言的简单实现

最近在学Verilog HDL语言,觉得learn in doing是比较好的学习方式,所以我们来直接分析分析代码好了. 先来一波代码: 1 module q_decode_38(data_in,data_out); 2 3 input[2:0] data_in; //端口声明 4 output[7:0] data_out; 5 reg[7:0] data_out; 6 7 always@(data_in) 8 begin 9 case(data_in) 10 3'd0:data_out = 8

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

基于Verilog HDL整数乘法器设计与仿真验证 1.预备知识 整数分为短整数,中整数,长整数,本文只涉及到短整数.短整数:占用一个字节空间,8位,其中最高位为符号位(最高位为1表示为负数,最高位为0表示为正数),取值范围为-127~127. 负数的表示方法为正值的求反又加1.例如: 8’b0000_0100; //表示值:4,正值求反为:8’b1111_1011:再加1表示为:8’b1111_1100,这样便得到了-4的表示方法为:8’b1111_1100. 同理,负值变成正值的方法为:负值

&lt;转&gt;Verilog HDL宏定义define

宏定义 `define 用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为: `define 标识符(宏名) 字符串(宏内容) 如:`define signal string 它的作用是指定用标识符signal来代替string这个字符串,在编译预处理时,把程序中在该命令以后所有的signal都替换成string.这种方法使用户能以一个简单的名字代替一个长的字符串,也可以用一个有含义的名字来代替没有含义的数字和符号,因此把这个标识符(名字)称为“宏名”,在编译预处理时将宏名替换成字符串

自己动手写处理器之第二阶段(3)——Verilog HDL行为语句

将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第七篇,我尽量每周四篇 2.6 Verilog HDL行为语句 2.6.1 过程语句 Verilog定义的模块一般包括有过程语句,过程语句有两种:initial.always.其中initial常用于仿真中的初始化,其中的语句只执行一次,而always中语句则是不断重复执行的.此外,always过程语句是可综合的,initial过程语句是不可综合的.       1.always过程语句 always过程语句的格式如图2-10所示.

verilog HDL 编码风格

1.有意义且有效的名字. 2.同一信号在不同层次应该保持一致. 3.添加有意义的后缀,使信号的有效性更加明确. 4.模块输出寄存器化,使得输出的驱动强度和输入延时是可以预测的. 5.使用括号表明优先级. 6.每一个if都应该有一个else.如果esle没有任何相应的动作,则用一条空语句.(if..esle可能有优先级) 7.case 语句最好有一个default分支,如果default不要执行动作就使用空语句. 8.在每个 模块的开始做模块级的注释,在模块端口列表中出现的信号做简要的功能描述.