
簡 介: 生活本來就不容易,就不如將原本的枯燥的事情做得更加有趣一點點,在下面的博文中就介紹了在微信朋友圈里看到的一張趣圖,認認真真求解的程序,也許驚喜就在最后出現了,
關鍵詞: 組合邏輯,乘法器, Python
01 朋友圈里的一張組合邏輯圖
下面是在朋友區獲得的一張組合邏輯圖,詢問它的二值邏輯功能是什么呢?

▲ 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
#============================================================
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/283026.html
標籤:AI
