/***************************************

本文首發於公眾號【FPGA探索者】轉載需保留此宣告

***************************************/

遇到半加器和全加器比較多,第一次遇到半減器和全減器。

先來看看半加器和全加器,再類似分析半減器和全減器。

思路:列真值表,畫卡諾圖,化簡。

先看個全加器的題目(2021屆華為校招,FPGA邏輯崗位):

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

輸入 A/B,輸出和 S,輸出 C 為進位。

輸入 A = 0,B = 0,0+0 = 0,所以 S = 0,C = 0;

輸入 A = 0,B = 1,0+1 = 1,所以 S = 1,C = 0;

輸入 A = 1,B = 0,1+0 = 1,所以 S = 1,C = 0;

輸入 A = 1,B = 1,1+1 = 10(二進位制加法,進 1),

所以 S = 0,C = 1;

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

(1)根據真值表編寫

按照半加器和全加器的真值表寫出輸出端的邏輯表示式,對半加器,輸出的進位端是量輸入的“與”,輸出的計算結果是量輸入的異或;對全加器,也按照邏輯表示式做。

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

當多位數相加時,半加器可用於最低位求和,並給出進位數。第二位的相加有兩個待加數和,還有一個來自前面低位送來的進位數。這三個數相加,得出本位和數(全加和數)和進位數,這種就是“全加”。

真值表:

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

使用與門、或門和異或門搭建電路:

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

根據真值表程式設計,門級描述:

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

直接描述功能,加法直接得到低位的和、高位的進位。【FPGA探索者】

這種方式描述簡單,易於擴充套件,但是底層具體的實現方式比較抽象。

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

擴充套件,4 位全加器,運算不需要改變,只需要更改位寬:

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

輸入:被減數 A,減數 B

輸出:差 S,借位 Cout

(1)0 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(2)0 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(3)1 - 1 = 0,不需要借位,所以 S = 0,Cout = 0;

(4)1 - 0 = 0,不需要借位,所以 S = 1,Cout = 0;

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

透過觀察(或者卡諾圖化簡),可以得出

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

輸入:被減數 A,減數 B,低位向高位的借位 Cin

輸出:差 S,借位 Cout

這裡需要注意:需要計算的是 A - B - Cin

(1) 0 - 0 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(2) 0 - 1 - 0 = 1,需要借位,所以 S = 1,Cout = 1;

(3) 1 - 1 - 0 = 0,不需要借位,所以 S = 0,Cout = 0;

(4) 1 - 0 - 0 = 1,不需要借位,所以 S = 1,Cout = 0;

(5) 0 - 0 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(6) 0 - 1 - 1 = 0,需要借位,所以 S = 0,Cout = 1;

(7) 1 - 1 - 1 = 1,需要借位,所以 S = 1,Cout = 1;

(8) 1 - 0 - 1 = 0,不需要借位,所以 S = 0,Cout = 0;

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

對 Cout,不容易觀察其表示式,使用卡諾圖化簡:

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

FPGA數字IC秋招筆試面試025——【全加器】【全減器】【2022屆秋招】

【華為2021秋招】FPGA邏輯筆試解析【獨家】【數字IC】【FPGA邏輯】

【華為2021秋招】FPGA邏輯筆試解析-2【修改】

Xilinx FPGA AXI4匯流排(四)——自定義 AXI-Lite 介面的 IP 及原始碼分析

Xilinx FPGA AXI4匯流排(三)——握手機制、通道依賴性及AXI-Lite握手例項

Xilinx FPGA AXI4匯流排(二)用例項介紹 5 個讀寫通道

Xilinx FPGA AXI4匯流排(一)介紹【AXI4】【AXI4-Lite】【AXI-Stream】