1.在設計BCD加法器的部份我們可以知道

當10的時候就要顯示出0並且十位部份要進位

而如何進位 依照學裡來看就是進行加6的動作

為何要加6 以下分為兩個來解釋
 
a.以16進位來看 當10+6的時候 就會回到0 (16:0~15)
所以+6會讓個位回到0

b.以2進位來看 1010 + 110 = 1  0000
所以個位一樣是0 (而且4bit 2進位 =16進位)

2.以上是+6的概念 但在設計部份比較快速設計的方法
是用真值表去判斷 首先我先講解+6進位的部份


a.看到橘色的部份 從橘色部份開始 就是顯示 10 ->0 ,11->1 ......
c_d表示十位進位
由這裡我們直接做卡諾圖 可以很快就推出  x4x2 + x4x3
到這裡十位部份我們只做到一半 因為 我們只有考慮到15
若是值是16的話 十位就會變成0 主要是因為我們忘記考慮2進制進位問題
所以我們最後還要再加上c(進位)  而最後的十位設計就會變成 c+x4x2+x4x3

b.十位部份解決之後 我們就來解決顯示個位的 4個bit x4 x3 x2 x1
從上面可以發現x1 和最後要顯示出來的 sx1值都是一模一樣
所以我們知道這部份不用處理可以直接輸出
(其實從+6的想法就可以知道這裡本來就不用處理)

c.而 sx2的部份(淺藍色部份)我們可以發現他從有進位之後
就根原本的輸入是顛倒的0->1 1->0
要解決這問題很簡單 只要+1就可以 而又剛好是因為進位才會發生
所以很自然的就會把進位的c1加過來 變成 sx2=c_d+x2

d.sx3部份考慮就會比sx2來的多一點 因為 當你sx2 有進行+c1的動作的時候
你就必須要考慮到(2進制)進位的問題 所以看上面藍色的部份
fx3 為 sx2進位後和x3做運算過後的結果
所以從c2我們又可以發現 sx3 和 fx3 一樣是顛倒 一樣是在十位進位所產生的結果
所以我們就可以推出 sx3 = fx3+c_d

而透過 2bit的加法器 就可以得出上面的結果 x2,x3 + c_d,c_d

 e.根據 sx3的經驗 我們來分析sx4要如何設計
一樣會有進位的考慮 所以我們可以先寫出x2 x3 經過 + c_d ,c_d 後的進位 c3
(其實就是經過2bit加法器之後的cout)
這時候可以發現 c3 和 x4 以及 sx4 的關係
(注意再分析時不要忘了誰是由誰產生的 因為很多人都會稿錯而造成分析錯誤)
推出 sx4 = c3 xor x4

電路圖如下

BCD設計

2bit加法器

所以設計上就是這樣而已 如果有問題 還是不了解 或者是我寫錯在來找我討論囉!
祝各位學弟妹allpass囉~
 
以上電路圖由 珊羽 提供~

文章標籤
全站熱搜
創作者介紹
創作者 junwinson 的頭像
junwinson

junwinson

junwinson 發表在 痞客邦 留言(2) 人氣(7,486)