始めに
同期セットリセットを用いたD-FFをVerilog-HDLを学んだので説明していきます。
同期したセットとリセットを有するD-FFの回路シンボル
同期セットリセットのD-FFの回路シンボルを以下に示します。

同期セットリセットD-FFの真理値表
以下に同期セットリセットD-FFの真理値表を示します。

注意
RBは、リセットが0の時にQが0になるというような意味があり、SBは、セットが0の時にQが1になるという意味があるので意味を考えて作る必要があります。
タイミングチャートの例
以下にタイミングチャートの例を示します。

上の真理値表を参考にして、タイミングチャートを作成しました。
D-FF のシミュレーション用 VerilogHDL メインのソースコード
以下に、同期セットリセットのD-FFのメインソースコードを示します。
© 2017, Xilinx, Inc. All rights reserved. Vivado 2021.1 メイン ソースコード -------------------------------------------------------------- `timescale 1ns / 1ps module study_1(CLK,D,Q,SB,RB,QB); input CLK,D,SB,RB; output Q,QB; reg Q,QB; always @(posedge CLK )begin //CKが↑に上がった時 //Qの時 if(RB==1'b0&&SB==1'b1) Q <= 1'b0; //RBが0ならば、Qに0代入 else if(SB==1'b0&&RB==1'b1) Q<= 1'b1; //SBが0ならば、Qに1代入 else if(SB==1'b1==RB) Q <= D; //CKがうえにあがったら、QにD代入 //QBの時 if(RB==1'b0&&SB==1'b1) QB<=1'b1; //RBが0ならば、QBに1代入 else if(SB==1'b0&&RB==1'b1) QB<=1'b0; //SBが0ならば、QBに0代入 else if(SB==1'b1==RB) QB<=~D; //QBにDの反転代入 end endmodule
D-FF のシミュレーション用 VerilogHDL テストベンチのソースコード
以下に、同期セットリセットのD-FFのテストベンチソースコードを示します。
© 2017, Xilinx, Inc. All rights reserved. Vivado 2021.1 テストベンチ ソースコード -------------------------------------------------------------- `timescale 1ns / 1ps module study_1_test( ); //inputs reg CLK; reg SB; reg RB; reg D; //output wire Q; wire QB; //回路とテストフィクスチャの接続 study_1 uut( .CLK(CLK), .SB(SB), .RB(RB), .D(D), .Q(Q), .QB(QB) ); //Sb,Rb,D,CLK時間間隔 initial begin #100 SB <= 1'b1; RB <= 1'b1; D <= 1'b0; CLK =1; #7 SB<=1'b0; #10 SB<=1'b1; #10 RB<=1'b0; #10 RB<=1'b1; #15 D<=1'b1; #20 RB<=1'b0; #6 D<=1'b0; #4 RB<=1'b1; end //クロック間隔 always #5 CLK=~CLK; endmodule
シュミレーション結果

上記のシュミレーション結果が、タイミングチャートと同じになっていれば大丈夫です。
終わりに
この説明が、参考になれば幸いです。
コメント