書籍を参考に、LED点滅回路のRTLを作成します。コードはVerilogからSystemVerilogに変更しました。
module blink (
input logic CLK,
input logic RST,
output logic [2:0] LED_RGB
);
logic [25:0] cnt26;
logic ledcnten;
logic [2:0] cnt3;
always_ff @(posedge CLK) begin
if (RST)
cnt26 <= 26'h0;
else
cnt26 <= cnt26 + 26'h1;
end
assign ledcnten = (cnt26 == 26'h3ffffff);
always_ff @(posedge CLK) begin
if (RST)
cnt3 <= 3'h0;
else if (ledcnten)
if (cnt3 == 3'd4)
cnt3 <= 3'h0;
else
cnt3 <= cnt3 + 3'h1;
end
always_comb begin
case (cnt3)
3'd0: LED_RGB = 3'b100;
3'd1: LED_RGB = 3'b010;
3'd2: LED_RGB = 3'b001;
3'd3: LED_RGB = 3'b111;
default: LED_RGB = 3'b000;
endcase
end
endmodule制約ファイルはほぼそのまま。
# Zybo Z7 constraints file
# chapter: 2
# project: blink
# Clock
set_property -dict {PACKAGE_PIN K17 IOSTANDARD LVCMOS33} [get_ports {CLK}]
create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports {CLK}]
# Reset
set_property -dict {PACKAGE_PIN Y16 IOSTANDARD LVCMOS33} [get_ports {RST}]
# LED_RGB
set_property -dict {PACKAGE_PIN V16 IOSTANDARD LVCMOS33} [get_ports {LED_RGB[2]}]
set_property -dict {PACKAGE_PIN F17 IOSTANDARD LVCMOS33} [get_ports {LED_RGB[1]}]
set_property -dict {PACKAGE_PIN M17 IOSTANDARD LVCMOS33} [get_ports {LED_RGB[0]}]コンパイル、FPGAボードのジャンパー設定、コンフィギュレーションすると、LEDが点滅することを確認できました。








