那么有了上面的卡诺图,我们来看看应用,同时把卡诺图的如何圈1的方法用两节的时间让大家掌握并能够灵活运用。
1.准备知识:
b。首先说数码管,就是有7个LED组成,能显示0-9 10个数字。例如我要显示1,那么点亮b,c;若想显示0点亮a,b,c,d,e,f。见下示意图。
(这里注意上图中字母的标注顺序,如果自己买到的数码管其顺序定义和这里的不一样,那么显示就会出错哦。)
c。图上面的解码器就是我们要设计的东西。定义输入为D,输出为S。自然,下面的显示也是输出,所以我们标记发光二极管为Sa-Sg。输入线上画一个斜杠的代表多输入(multi-input),上面的数字代表确切的输入数,这里就是4或者表示为D3:0;同理输出可 以表示为S7:0等同于Sa,Sb,。。。Sg
2.现在需求就是,我要用这个解码器来使数码管能显示0-9个数字。这里所谓 解码器,就是要把输入以某种方式编码,然后通过 解码器 的输出得到我们编码之前的东西。那么我们现在还没有编码,怎么能解码呢。所以,现在开始编码。
既然我要显示0-9个数,那么用2进制来表达10个数, 我用4bits足够,并且要求也是4位输入嘛~。编码方式采用 Gray Code(格雷码,还记得定义不)。
3.有了以上准备,我们当然要画真值表咯,自己先动手试着画一下:
。如果不太熟悉Gray Code,看表里第一列:只要保证上下相邻的两个数每次只改变一位就是Gray Code的定义。这里我们定义(也就是编码 encode)输出显示0的输入是0000,输出1的输入时0001,。。。以此类推。最后一行的others就是出了上面的输入情况以外,数码管不亮。
4.进入到求布尔表达式的阶段了
现在如果用之前的定理化简是很麻烦的。所以我们就用K图咯。先画出上面真值表对应的K图,注意只给出Sa,Sb的两张图,一共有7张图(Sa-Sg),限于篇幅剩下的做练习:
。注意输入和上一节讲的相对比复杂了一点,毕竟是4位输入嘛。其中D1:0所对应的一列左边是第一位,右边是第0位;同理D3:2代表上面输入的序列中,左边为第3位,右边为第2位。呵呵,估计学过的人知道这里有个Endian(字节序)是大端还是小端的问题,不过我们先不在这里做讨论,因为影响不是很大。
5.最重要的步骤,对以上两(七)张表画圈圈!!!
规则:
a。用最少的圈圈来覆盖所有的1,但是只有相邻的1才能被圈在一起
b。1可以重复被圈
c。如果1在表的水平或竖直边缘上,可以进行包裹(例如:见右下图~D2~D1所指的圈圈(包含0001和1001)并没有封闭而是回过头来要0包含000和1000)就是相当于把这个表复制一份拼接一下然后用规则a和b即可
6.给出小项的表达式,如上图底端和图中的表达式。这样我们就得到了Sa和Sb的布尔表达式。
7.最后就是画出线路图咯。画出逻辑图就好咯。
那么又到了大家做任务的时间:
1.画出所有7个K图
2.实现逻辑级别回路
我会在下一节给出答案~。
文章评论(0条评论)
登录后参与讨论