---
# System prepended metadata

title: 第四篇 用加法器來理解基本語法架構

---

一位元加法器
![](https://hackmd.io/_uploads/r1AcIwn_n.png)
* ==關鍵字介紹==  
module(宣告)  
adder1(名字)  
input(輸入腳位)-> a, b, cin 三個輸入  
output(輸出)-> cout(進位), s(和)  
assign(只要打公式都需要在前面加)  
endmodule(結束)  
^ ->(xor), & ->(and), | ->(or)  

用真值表化簡卡諾圖來解釋加法器原理  
![](https://hackmd.io/_uploads/Bk_70P2uh.png)(圖片來源:網路)
化簡後就是程式裡面的公式
![](https://hackmd.io/_uploads/SJDlhP3O2.png)
![](https://hackmd.io/_uploads/BySqhDnuh.png)
上面兩張圖是兩個公式分別的卡諾圖  
S的部分因為是取兩兩不同所以都是用xor  
cout的部分經過化簡可以得出上面的公式  
  
再來用一位元加法器去延伸到八位元加法器
![](https://hackmd.io/_uploads/Syz7-dnO2.png)
* ==關鍵字介紹==  
輸入[7:0] a 和 [7:0] b代表的是腳位總共8個 0~7總共八個位元輸入  
輸出[7:0] sum也是共八個位元輸出  
wire(接線) c0~6總共六個去做延伸到下一個位元  

而下面用到的公式則是套用了一位元加法器的公式  
adder1後面的a0~7則是每個一位元加法器的名字  
adder1裡面的東西需要與一位元加法器內每個宣告的東西對應上  
從a[0], b[0]開始加上cin 並輸出c0(進位)與[0]  
裡面的cin則是用c0~6一一個個延續到下一個加法器  
加到a[7], b[7]並最後得出cout 和sum[0~7]就完成了八位元加法器