設計では、クロックの立ち上がりエッジの特定の状況で信号をアクティブにし、クロックの立ち下がりエッジの別の状況で非アクティブにする必要があります。これが私が思うことです:
always@(posedge CLK) begin
signal1 <= 1'b0; // reset flag
if(circumstance1) signal1 <=1'b1; // raise flag if circumstance occurs
end
always@(negedge CLK) begin
signal2 <= 1'b1; // reset flag (actually set alternate to signal1)
if(circumstance2) signal2 <=1'b0; // raise flag if circumstance occurs
end
always@(posedge signal1 or negedge signal2) begin
if(signal1) outsignal <= 1'b0; // activate outsignal
else outsignal <= 1'n1; // deactivate outsignal
end
それはうまくいきますか?より良い代替手段はありますか (クロックを 2 倍にしてシングル エッジをキャッチすることは、ここではオプションではありません)。
ラッセルの返信後に編集します。ラッセル、あなたは次の提案をしていると思います:
wire nCLK = ~CLK;
always@(posedge CLK or posedge nCLK or negedge nRESET) begin
if(!nRESET) outsignal <= 1'b0;
else if(nCLK) outsignal <= 1'b1;
else outsignal <= 1'b0;
end
私はあなたを正しく理解しましたか?