0

Verilog で D フリップフロップを使用して 4 ビット カウンターを作成しようとしています。この図http://i.imgur.com/VR5593a.pngに従っています。個々の D フリップフロップのコードを取得しました。私が抱えている問題は、最初のクロック サイクルの D0 にあります。最初は Q0 を 1、Q1、Q2、Q3 を 0 と仮定する必要があると思います。コード内で D0 の初期値を 1 回だけ渡す方法がわかりません。

module DFlipFlop(CLK, D, Q);
  input CLK, D;
  output Q;
  reg Q;
  always @(posedge CLK) begin
    Q <= D;
      end
endmodule

module RippleMod(CLK, q0, q1, q2, q3);
  input CLK;
  output q0, q1, q2, q3;

  DFlipFlop d1 (CLK,q3,q0);//not sure about q3 there, think I will get X if i do this.
  DFlipFlop d2 (CLK,q0,q1);
  DFlipFlop d3 (CLK,q1,q2);
  DFlipFlop d4 (CLK,q2,q4);
endmodule
4

3 に答える 3

0

初期状態を設定するには、何かを行う必要があります。

シミュレーションでは、通常、「初期」ブロックを使用してレジスタの初期状態を設定できます。一部の合成ツール、特に FPGA/CPLD をターゲットとする合成ツールは、この方法による初期状態の設定もサポートしています。初期ブロックをサポートしない一部の合成ツールは、初期条件を設定するツール固有の方法をサポートする場合があります。

もう 1 つのオプションは、フリップフロップにリセット ラインを組み込むことです。もちろん、これの欠点は、リセット ラインをトリガーする何か (シミュレーションのテストベンチか、実際の実装のある種のハードウェア) が必要になることです。

于 2017-06-21T02:12:30.970 に答える