2017-04-24 8 views
2

Nand2Tetrisコースに基づいてDMuxのhdlコードを書いています。in = 1、sel = 0のときにDMux.hdlが失敗する

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またはnotSel 、out = aまたはb)。あなたが何かを誤って読むチャンスを減らすのに役立ちます。

0

コードに問題がないかどうかは不明です。それは私のものと同じように見えます。他のアンドゲートとノットゲートをテストしましたか?

マイコード:

Not(in=sel, out=notsel); 
And(a=notsel, b=in, out=a); 
And(a=in, b=sel, out=b); 
関連する問題