水曜日, 7月 04, 2007

リセットの論理を切り替える方法

会社によって、またはプロジェクトによってリセットの論理は正論理か負論理に分かれます。

モジュールの再利用性を考えると不便ですよね。

そこで次のような方法をとりましょう。

`define RESET_EDGE posedge
`define RESET_ON 1'b1

always @(posedge clk or `RESET_EDGE reset) begin
if (reset==`RESET_ON)
Q <= 1'b0;
else
Q <= D;
end

これが正論理の場合。

負論理に変更したい場合は、

`define RESET_EDGE negedge
`define RESET_ON 1'b0


とする。

もちろん、プロジェクト内でリセットの論理が統一されていることが前提です。

0 件のコメント: