BCD码与“余1码”的相互转换

懵懂时期作品之数字电路与逻辑设计

Posted by Birdie on May 20, 2022

1 实验目的

​ 回顾一学期所学的知识,尤其是逻辑表达式的化简、组合逻辑设计以及移位寄存器芯片的使用。

2 实验要求

​ (1)BCD码与“余1码”的相互转换。

​ (2)输入不合法码要报错。

​ (3)四位代码由拨号开官输入,BCD码送7段数码管显示,余1码送发光二极管显示。

3 实验思路

(1)转换部分逻辑表达式的设计

​ 不妨假设$A$、$B$、$C$、$D$为四位BCD码,$1$、$2$、$3$、$4$为四位余1码。

​ 它们间的转换关系用真值表的形式表现如下:

A B C D 1 2 3 4
0 0 0 0 0 0 0 1
0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 1
0 0 1 1 0 1 0 0
0 1 0 0 0 1 0 1
0 1 0 1 0 1 1 0
0 1 1 0 0 1 1 1
0 1 1 1 1 0 0 0
1 0 0 0 1 0 0 1
1 0 0 1 1 0 1 0

​ 根据真值表的对应关系,可以画出卡诺图。有一点技巧,在BCD码转换余1码的卡诺图中,由于输入$10$到$15$是不合法的,因此可以将它们作为冗余项加入卡诺图中;同样的,在余1码转换BCD码的时候,输入$11$到$15$以及$0$,也是不合法的,同样可以作为冗余项,以达到化简的目的。在以下卡诺图中,用$1$表示原本的$SOP$表达式,$x$作为添加的冗余项。

对$1$:

AB\CD 00 01 11 10
00        
01     1  
11 x x x  
10 1 1    

对$2$:

AB\CD 00 01 11 10
00     1  
01 1 1   1
11 x x   x
10     x  

对$3$:

AB\CD 00 01 11 10
00   1   1
01   1   1
11   x x  
10   1 x  

对$4$:

AB\CD 00 01 11 10
00 1     1
01 1     1
11 x     x
10 1     x

对$A$:

01\23 00 01 11 10
00        
01        
11   x x x
10   1 x 1

对$B$:

01\23 00 01 11 10
00 x      
01   1 1 1
11   x x x
10 1      

对$C$:

01\23 00 01 11 10
00     1  
01 1   1  
11        
10 1      

对$D$:

01\23 00 01 11 10
00   1   1
01   1   1
11   x   x
10   1   x

​ 因此得出结论:

$1=A\bar{C}+BCD$

$2=B(\bar{C}+\bar{D})+\bar{B}CD$

$3=\bar{A}(C\oplus D)+AD$

$4=\bar{D}$

$A=13+14$

$B=23+24+\bar{2}\bar{3}\bar{4}$

$C=\bar{1}34+\bar{3}\bar{4}(1\oplus 2)$

$D=\bar{4}$

(2)输入检测

(2).1 BCD码检测

​ 对于BCD码,$10$到$15$是不合法的输入,画出卡诺图如下:

AB\CD 00 01 11 10
00        
01        
11 1 1 1 1
10     1 1

​ 即$X=AC+AB$

(2).2 余1码检测

​ 对于余1码,$11$到$15$以及$0$是不合法的输入,画出卡诺图如下:

01\23 00 01 11 10
00 1      
01        
11 1 1 1 1
10     1  

​ 即$X=12+134+\bar{1}\bar{2}\bar{3}\bar{4}$

(3)串行输入

​ 使用74LS194芯片,即移位寄存器作为串行输入。在SL端加入串行输入,S0和S1置为0和1表示右移。使用方法为在每个时钟上升沿到来前更改SL的输入。

4 实验步骤

(1)BCD码转余1码电路

1

(2)余1码转BCD码

2

(3)串行输入

3

5 实验结果

5.1 BCD码转换测试

​ 输入5,输出6,显示输入合法。

4

​ 输入12,显示不合法。

5

5.2 余1码转换

​ 输入7,输出6,显示合法。

6

​ 输入0,显示不合法。

7

​ 注:由于并行输入仅需要将输入上述的输入部分更改成并行输入模块(上一部分已实现),其他电路均一致,故没有展示。

6 实验感想

​ 其实在实验过程中,我还实现了另外一个电路。

​ BCD码转余1码其实就是实现加1的过程,反之也是差不多的。因此,对整个电路只需要实现四个半加器即可完成电路转换。

image-20220520173215145

image-20220520173259741

​ 但本着严谨的学习态度,以及领悟老师想考核的内容,还是将其更改为更加复杂和繁琐的逻辑门和组合电路设计。

​ 通过本学期数字电路实验课的学习,我学习到了很多知识,我掌握了proteus以及vivado相关软件的使用,对很多元器件的引脚和特性都已经非常熟悉,我还学会了如何把子电路封装成一个元器件,我学会了如何把8*8点阵做成16*16点阵,我学会了做多谐振荡器、节拍发射器等等。刚接触这门课的实验的时候,总是怕自己做不好实验,怕自己做的实验得不到想象中的效果,在不断的学习过程中,随着助教和老师的讲解,我学会的越来越多,做的实验也越来越得心应手,自己出错搞不懂的问题也会在群里询问,和亲切友好的大佬同学和助教老师进行讨论和交流,同一种实验每次都能学习到很多种不同的思想,自己学会的也越来越多。每次做实验都是对理论知识的一种复习和掌握,随着实验做得越来越得心应手和擅长,我对于理论知识的理解也是越来越深刻,不管是化简卡诺图还是列表达式,我的能力都大大加强,虽然我还有着粗心大意的毛病,做实验经常连错线,化简表达式也时不时简化错,但是每一次的错误都让我下一次更加的仔细认真。把自己的实验电路一点点完善,一点点做完,就像是看着自己的孩子渐渐长大一样,有趣又欣慰,看着自己设计的电路实现了它应有的功能,哪怕不是最好最简便的设计,但是过程中的满足感不言而喻。