2016-03-20 8 views
0

以下のモジュールの下にDFFがあります。Verilog Dフリップフロップの2つのカウンタで除算を行う

d_flip_flop_edge_triggered DFFT(Q, Qn, C, D); 

しかし、私は「Qnの」に「D」の入力を切り替えると、 - devideバイ2カウンタを作るために - テストベンチ出力はQ又はQnのいずれかを示していません。エラーがあるかのように赤色になります。

はここで完全なコードです:

module divBy2UsingDFF(Q, Qn, C, D 
    ); 
    output Q; 
    output Qn; 
    input C; 
    input D; 
    wire Qn; 
    d_flip_flop_edge_triggered DFFT(Q, Qn, C, Qn); 

endmodule 

私はVerilogのために新たなんだと私はその構文の問題を推測しています。

答えて

0

シミュレータのQ値を確認してください。赤色はおそらくXを意味します。これは、フリップフロップのデータ値が通常はリセット後に不定であることを示します。

  • をリセット非同期でフリップフロップを使用して、データフリップフロップところで

のための同期ロードを追加します。

は、これに対処するには、いくつかの方法があります。 DFFTをインスタンス化する代わりに、alwaysでフリップフロップの分周器を書くことができます。また、wire Qn;は必要ありません。

+0

はいQ値はXです。私はシミュレータで入力Cを定義したので、その理由をわかりません。また、リセットもありません。問題は私が出力と入力の両方としてQnを使用している可能性があると思いますか?私はあなたがいつもそれを書いて何を意味するか分からないのですか? – Serg

+0

いいえ、Qn出力を使用して入力をフィードするのは問題ありませんが、内部フリップフロップのストレージが最初は定義されていないため、起動後に0または1として定義する必要があります。あなた自身を考えてください。電源投入後のフリップフロップの初期値は? –

+0

初期値は未定義です!ああ、私はあなたが言っていることを見ます。コード内から変数を開始する方法はありますか? – Serg

関連する問題