2016-11-25 11 views
0

私はSystemVerilogを学習しています。今日、私の講師は、誤って組み合わせシステムにメモリを導入しないよう警告しました。彼はこの例として次のコードを使用しています:このステートメントはなぜメモリを導入しますか?

module gate(output logic y, input logic a); 
     always_comb 
      if(a) 
      y = '1; 
endmodule 

しかし、これはなぜ問題があるのか​​分かりません。私が見る限り、これは単なるバッファーです。このコードはどのようにしてシステムにメモリを導入しますか?

答えて

3

a == 0の場合、yの値は'0になります。後でa == 1'b1の場合、y'1になります。後でa == 0になると、どんな価値がありますかy

この質問に対する回答は、以前の値:'1を保持するということです。つまり、ではなく、の組み合わせ論理の出力は、定義による出力は入力の現在の状態にのみ依存し、ではなく、以前の状態ではです。記述した動作を実装するには、の状態がの記憶装置がのメモリがのコンポーネントが必要です。これは、ラッチを使用してこれを実行します。

+0

if文の後に 'else y = '0;'を追加することでこれを修正できますか? – imulsion

+3

はい............ –

+0

助けを借りて、お互いに感謝しています。 – imulsion

関連する問題