モジュールのアクティブなエッジを簡単に定義する方法があるかどうかは疑問でした。 Verilogのレジスタです。したがって、ifがインスタンス化されたときに、正または負のトリガを定義できます。例えば:posedge
変数に論理演算子を使用するようにしても合法である場合、私は知らない、けれどもレジスタのアクティブなエッジをパラメータ化する
Register #(.width(8), .active_edge(`POS_EDGE)) DUT();
これは、私の試みです:
module Register #(
parameter width=8,
parameter active_edge=1'b1) (
input [width-1:0] D,
input clk, rst, we,
output reg [width-1:0] Q);
always @(posedge active_edge^~clk, posedge rst) begin
if (rst)
Q <= 'b0;
else
if (we) Q <= D;
end
endmodule
通常のように書き込み、クロック入力を反転してアクティブエッジを切り替えるだけです。 – mkrieger1