[問題] verilog 進位問題
各位前輩好,初學Verilog,有一問題想請教大家
我在進行verilog的加法與減法運算時,要觀察他們的進位值
於是寫下了以下程式碼(部分內容)
reg [3:0] A;
reg [3:0] B;
reg [3:0] S;
reg carry;
A = 4'b0111;
B = 4'b1001;
========加法部分========
{carry,S} = A + B;
verilog模擬出來的結果為:
S = 0000
carry = 1 (這是OK的,和用手算的結果一樣)
========減法部分========
{carry,S} = A + ~B + 1'b1; (也就是A-B)
S = 1110 (結果和用手算的一樣)
但是進位卻是...
carry = 1 (為什麼?不是應該為零的嗎?)
我用手算的結果也是carry = 0,請問是什麼地方出問題了呢?
(代表說進位的檢察不能用這種寫法嗎?)
謝謝各位前輩指點迷津 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.214.89
→
12/28 21:28, , 1F
12/28 21:28, 1F
→
12/28 21:33, , 2F
12/28 21:33, 2F
→
12/28 21:35, , 3F
12/28 21:35, 3F
推
12/28 22:00, , 4F
12/28 22:00, 4F
→
12/28 22:04, , 5F
12/28 22:04, 5F
→
12/28 22:05, , 6F
12/28 22:05, 6F
→
12/28 22:10, , 7F
12/28 22:10, 7F
推
12/30 12:39, , 8F
12/30 12:39, 8F