信号の立ち上がり遷移と立ち下がり遷移の回数を測定したい。私はクロックとして信号を使用しており、2つのカウンタを実装しています。 1つのカウンタはすべての立ち上がりエッジでインクリメントし、もう1つのカウンタはすべての立ち下がりエッジでインクリメントします。私はこれらの2つのカウンタの結果を加算して最終的なカウント値を取得しています。信号の立ち上がりと立ち下がりをカウントできる合成可能なRTLを書き込む方法
このロジックを実装するより良い方法はありますか?最も堅牢な方法は何ですか?
module clock_edge_counter (
clock_edge_count, // Output of the counter ,
clk , // clock Input
stop ,
reset
);
parameter CNTR_WIDTH = 16;
input clk ;
input stop ;
input reset ;
output [CNTR_WIDTH:0] clock_edge_count;
wire [CNTR_WIDTH:0] clock_edge_count;
reg [CNTR_WIDTH-1:0] clock_negedge_edge_count;
reg [CNTR_WIDTH-1:0] clock_posedge_edge_count;
always @(posedge clk or posedge reset)
if (reset) begin
clock_posedge_edge_count <= 0;
end
else if (!stop) begin
clock_posedge_edge_count <= clock_posedge_edge_count + 1;
end
always @(negedge clk or posedge reset)
if (reset) begin
clock_negedge_edge_count <= 0;
end
else if (!stop) begin
clock_negedge_edge_count <= clock_negedge_edge_count + 1;
end
assign clock_edge_count = clock_negedge_edge_count + clock_posedge_edge_count;
endmodule
説明Rahulに感謝します。 –
あなたは歓迎です:) –