看板 Electronics 關於我們 聯絡資訊
(代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://www.ptt.cc/bbs/Electronics/M.1626861278.A.C48.html
r901042004: 2-3=-1不會overflow 07/21 21:23
r901042004: 減法是加二補數的意思 A-B=A+(~B+1) 07/21 21:24
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
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
r901042004: 其實問題是 你想要的電路架構是signed還是unsigned 07/23 09:54
r901042004: 如果你想要4bit表達數字,你的加法器就要5bit 07/23 09:56
r901042004: Verilog的behavior減法,result都會多出一個bit 07/23 09:58
HenryLin123: 4bit是-8~+7 07/23 11:02
mmonkeyboyy: 黑白寫orz 07/23 15:08
mmonkeyboyy: Verilog op 是unsigned 07/23 15:09
mmonkeyboyy: 先sign extension 再做就好了 07/23 15:11