2017-04-24 77 views
2

我正在爲基於Nand2Tetris課程的DMux編寫hdl代碼。DMux.hdl在in = 1時失敗,sel = 0

CHIP DMux { 
IN in, sel; 
OUT a, b; 

PARTS: 
And(a = sel, b = in, out = b); 
Not(in = sel, out = selNot); 
And(a = in, b = selNot, out = a); 
} 

由於某種原因,此代碼在測試腳本值in = 1 and sel = 0上失敗。在這種情況下,它評估ab均爲0。

我已經寫了大門多次,我想不通,爲什麼結果不是a = 1 and b = 0

能有人向我解釋發生了什麼?

回答

0

我有一種感覺,你的不執行可能有問題。

嘗試用一種NAND取代不:

Nand(a=sel,b=sel,out=notSel); // notSel = ! sel 

如果一切正常,那麼你的Not.hdl不正確。在樣式點上,如果你在最終輸出之前定義你的中間體(例如:把Nand放在第一位),並且在你的輸入順序中是一致的(例如:a = in,b = sel or notSel ,out = a或b)。有助於減少你會誤讀某些東西的機會。

0

不確定你的代碼有什麼問題。它看起來和我的一樣,它工作。你有沒有測試過你的其他And和Not的門?

我的代碼:

Not(in=sel, out=notsel); 
And(a=notsel, b=in, out=a); 
And(a=in, b=sel, out=b); 
相關問題