作者kingfsg7326 (認 同 請 按 2 )
看板Electronics
標題[問題] 關於 4-bits的加減法器
時間Wed Jul 21 17:54:35 2021
(代po)
最近在讀一些數位邏輯的東西,並用verilog模擬
目前遇到一個加減法器的問題,是關於overflow
假設A=4'b0010 B=4'b0011 要做相減A-B
正常來說應該是sum=4'b1111,overflow=1
https://imgur.com/ISSguYn.jpg
但是如果用網路上的電路圖Adder_Substractor看也沒辦法算出overflow(輸出v)=1
想請問一下加減法器的overflow還有別種接法嗎?
我也有用verilog 做四個Full_Adder照著接但結果一樣
感恩
--
補上simulation圖:
https://imgur.com/tEXo0J6.jpg (上面電路圖的verilog)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.218.40.13 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1626861278.A.C48.html
1F:→ r901042004: 2-3=-1不會overflow 07/21 21:23
2F:→ r901042004: 減法是加二補數的意思 A-B=A+(~B+1) 07/21 21:24
3F:→ r901042004: 以你的例子就會變成 0010+1101=1111 07/21 21:25
了解,感激不盡
還有個問題是,3+5應該overflow=0,但是卻出現=1,感覺怪怪的
https://imgur.com/0Frjepj
此外還有個問題是,我如果verilog改寫法
https://imgur.com/28J98L7
overflow就會是1
是因為直接用behavior減法,會導致跟第五個bits borrow所以才是1嗎?
附上simulation圖
https://imgur.com/GmWNrhj
4F:推 Max112358: 3+5肯定overflow啊,4bit有號數上限是7欸 07/21 23:58
大概了解了目前上面這個電路圖應該是有號2補數
加法大於7就會有overflow=1;
減法的話如果沒有超出-8就是正常的2補數,所以2-3 overflow=0 sum=1111即可表示
※ 編輯: kingfsg7326 (61.218.40.13 臺灣), 07/22/2021 01:09:26
5F:推 r901042004: 其實問題是 你想要的電路架構是signed還是unsigned 07/23 09:54
6F:→ r901042004: 如果你想要4bit表達數字,你的加法器就要5bit 07/23 09:56
7F:→ r901042004: Verilog的behavior減法,result都會多出一個bit 07/23 09:58
8F:→ HenryLin123: 4bit是-8~+7 07/23 11:02
9F:推 mmonkeyboyy: 黑白寫orz 07/23 15:08
10F:→ mmonkeyboyy: Verilog op 是unsigned 07/23 15:09
11F:→ mmonkeyboyy: 先sign extension 再做就好了 07/23 15:11