2

設計したパイプラインのいくつかの制御信号を、パイプラインのステージ数だけ遅らせる必要があります。これは明らかに非常に簡単です。入力信号と出力信号の間に N 個のフリップフロップを配置するだけです。N をパラメーター化する方法があるかどうか疑問に思っています。パイプラインのステージ数を変更した場合は、戻ってフリップフロップを追加/削除する必要がありますが、これはちょっと面倒です。どこかで定義を読み取ってモジュールを生成するスクリプトを書くことだけを考えましたが、それはやり過ぎのようです。genvar ループはここに行く正しい方法ですか?

4

2 に答える 2

2

以下は、生成ブロックと DFF モジュールを使用してパラメーター化されたシフト レジスタを作成する方法です。DEPTH=0 および DEPTH=1でも機能します。

module shift
(
  input clk,
  input reset,
  input data_in,
  output data_out
);

parameter DEPTH = 3;
wire [DEPTH:0] connect_wire;

assign data_out = connect_wire[DEPTH];
assign connect_wire[0] = data_in;

genvar i;
generate
   for (i=1; i <= DEPTH; i=i+1) begin
      dff DFF(clk, reset,
        connect_wire[i-1], connect_wire[i]);
   end
endgenerate

endmodule

EDA Playground: http://www.edaplayground.com/s/4/50でテストを行い、動作するコードを完成させます。

于 2013-08-09T20:20:57.833 に答える