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