順次 always ブロックの例 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: 合成 (UG901)

Document ID
UG901
Release Date
2023-11-01
Version
2023.2 日本語

次のコード例では、立ち上がりエッジ クロックを使用した 8 ビットレジスタを記述しています。その他の制御信号はありません。

module seq1 (DI, CLK, DO);
input [7:0] DI;
input CLK;
output [7:0] DO;
reg [7:0] DO;

always @(posedge CLK) DO <= DI ;
endmodule

次のコード例では、アクティブ High の非同期リセットを追加しています。

module EXAMPLE (DI, CLK, ARST, DO);
input [7:0] DI;
input CLK, ARST;
output [7:0] DO;
reg [7:0] DO;

always @(posedge CLK or posedge ARST)
if (ARST == 1'b1)
DO <= 8'b00000000;
else
DO <= DI;
endmodule

次のコード例では、アクティブ High の非同期リセットおよびアクティブ Low の非同期セットを記述しています。

module EXAMPLE (DI, CLK, ARST, ASET, DO);
input [7:0] DI;
input CLK, ARST, ASET;
output [7:0] DO;
reg [7:0] DO;

always @(posedge CLK or posedge ARST or negedge ASET)
if (ARST == 1'b1)
DO <= 8'b00000000;
elsif (ASET == 1'b1) DO <= 8'b11111111;
else

DO <= DI;
endmodule

次のコード例では、非同期セット/リセットはなく、同期リセットを持つレジスタを記述しています。

module EXAMPLE (DI, CLK, SRST, DO);
input [7:0] DI;
input CLK, SRST;
output [7:0] DO;
reg [7:0] DO;

always @(posedge CLK)
if (SRST == 1'b1)
DO <= 8'b00000000;
else
DO <= DI;
endmodule