当前位置:首页 » 《资源分享》 » 正文

朋友圈里的一张组合逻辑图_TsinghuaJoking

11 人参与  2021年05月08日 08:42  分类 : 《资源分享》  评论

点击全文阅读


简 介: 生活本来就不容易,就不如将原本的枯燥的事情做得更加有趣一点点。在下面的博文中就介绍了在微信朋友圈里看到的一张趣图,认认真真求解的过程。也许惊喜就在最后出现了。

关键词 组合逻辑乘法器, Python

 

01 友圈里的一张组合逻辑图


下面是在朋友区获得的一张组合逻辑图,询问它的二值逻辑功能是什么呢?

▲ Lucky Resistor的逻辑关系

▲ Lucky Resistor的逻辑关系

1.逻辑分析

这个逻辑图输入变量由四个: A 0 , A 1 , B 0 , B 1 A_0 ,A_1 ,B_0 ,B_1 A0,A1,B0,B1;输出变量有四个: X 0 , X 1 , X 2 , X 3 X_0 ,X_1 ,X_2 ,X_3 X0,X1,X2,X3。由于该电路没有逻辑传输过程中没有反馈回路,所以它本质上应该是一个组合逻辑。

(1)逻辑表达式

可以根据逻辑中区间以及信号连接的关系,注意写出输出变量 X n ,    n = 0 , 1 , 2 , 3 X_n ,\,\,n = 0,1,2,3 Xn,n=0,1,2,3 输入变量 A 0 , 1 , B 0 , 1 A_{0,1} ,B_{0,1} A0,1,B0,1之间的逻辑关系。




(2)化简逻辑

可以将上述表达式化简成标准 最小项表达式 之和的形式:

首先, X 0 , X 3 X_0 ,X_3 X0,X3的最小项表达式比较容易获得:


X 1 , X 2 X_1 ,X_2 X1,X2的最小项表达式比起现在的形式更加的复杂,这里也就不再将其列些出来了。因此,通过化简逻辑好像还无法解释这个电路的基本功能。

2.真值表

可以通过Python程序给出输入输出之间的真值表:

(1)真值表

b1,b0,a1,a0 --> x3,x2,x1,x0
---------------------------
  0 0 , 0 0 --> 0 0 0 0
  1 0 , 0 0 --> 0 0 0 0
  0 1 , 0 0 --> 0 0 0 0
  1 1 , 0 0 --> 0 0 0 0
  0 0 , 1 0 --> 0 0 0 0
  1 0 , 1 0 --> 0 1 0 0
  0 1 , 1 0 --> 0 0 1 0
  1 1 , 1 0 --> 0 1 1 0
  0 0 , 0 1 --> 0 0 0 0
  1 0 , 0 1 --> 0 0 1 0
  0 1 , 0 1 --> 0 0 0 1
  1 1 , 0 1 --> 0 0 1 1
  0 0 , 1 1 --> 0 0 0 0
  1 0 , 1 1 --> 0 1 1 0
  0 1 , 1 1 --> 0 0 1 1
  1 1 , 1 1 --> 1 0 0 1

(2)求解程序

printf('b1,b0,a1,a0 --> x3,x2,x1,x0\n---------------------')

for i in range(16):
    b1,b0,a1,a0 = [int(s) for s in format(i, '04b')]
    x0 = b0 & a0
    x1 = (a1&b0)^(a0&b1)
    x2 = (a1&b1)^((a0&b1)&(a1&b0))
    x3 = (a0&b1)&(a1&b0)

    printff(' ', b1,b0,',',a1,a0, '-->', x3, x2, x1, x0)

 

02 辑图背后的故事


那么问题来了,到现在为止我们是否可以说,知道了这个电路的功能了吗? 这张逻辑图背后的故事究竟是什么呢?

 


■ 相关文献链接:

  • 最小项表达式
  • 本博文对应的TSINGHUAZHUOQING公众号推文链接
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2021-05-03
#
# Note:
#============================================================

from head import *

#------------------------------------------------------------
def ab2x(b1,b0,a1,a0):
    x0 = b0 & a0
    x1 = (a1&b0)^(a0&b1)
    x2 = (a1&b1)^((a0&b1)&(a1&b0))
    x3 = (a0&b1)&(a1&b0)

    return x0,x1,x2,x3

#------------------------------------------------------------
printf('b1,b0,a1,a0 --> x3,x2,x1,x0\n---------------------')
for i in range(16):
    ab = [int(s) for s in format(i, '04b')]
    x0,x1,x2,x3 = ab2x(ab[3],ab[2],ab[1],ab[0])

    printff(ab[3], ab[2], ',', ab[1], ab[0], '-->', x3, x2, x1, x0)

#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

点击全文阅读


本文链接:http://zhangshiyu.com/post/18579.html

逻辑  表达式  小项  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1