非同期クリアを使用したポジティブエッジトリガーTフリップフロップのモデリング
Aug 19 2020
非同期クリアを使用して、ポジティブエッジでトリガーされるTフリップフロップをモデリングしています。コードは次のとおりです。
module t_flip_flop_exam (q,clk,clear,t);
input t ;
input clk;
input clear;
output reg q ;
reg internal_t;
always @ (clear)begin
if (clear==1)
q=0;
else
q=q;
end
always @ (posedge clk)begin
if (t==1)
q=~q;
else
q=q;
end
endmodule
これは効率的なコードですか?always
ブロックを分離する必要があるのは問題ありませんか、それとも単一のブロックにclear
とclk
シグナルの動作コードの両方を含める方法はありalways
ますか?
回答
1 toolic Aug 19 2020 at 17:33
これは、always
ブロックを組み合わせる一般的な方法です。
module t_flip_flop_exam (q,clk,clear,t);
input t;
input clk;
input clear;
output reg q;
always @(posedge clk or posedge clear) begin
if (clear)
q <= 0;
else if (t)
q <= ~q;
end
endmodule
単一のalways
ブロックからの信号に割り当てを行うことをお勧めします。
トリガーalways
上のブロックposedge
のclear
合成は、所望のロジック(非同期クリア、同期トグル)を推測することができるように。
<=
シーケンシャルロジックにはノンブロッキング割り当て()を使用します。
q=q
暗黙的に示されているため、明示的に行う必要はありません。