EBAZ4205を使ってZYNQとFPGAの勉強をしています。
備忘録を記載します
演習2-2 LED点滅回路にプッシュスイッチを追加
全ての機能がEBAZに無いので、改造や機能の縮小が必要です。
■LED
RJ45の横に赤と緑のLEDがついています。教本にはさらに青色LEDがありますがあきらめます。
GRN_LEDがW13、RED_LEDがW14に接続されています。
■スイッチ
一見S2,S3といった使えそうなSWが実装されていますがPS部からしか認識できないらしいです。
下記のサイトでも紹介されていますが、FANのPWM用のフォトカプラが不要なのでスイッチをつけます。
https://qiita.com/kan573/items/c4dac8908e1a86d8fce6
2つのフォトカプラを外して、V13とV15に2つのスイッチを接続します。
V13がリセット、V15をスピードチェンジ のスイッチとします。
制約ファイルの意味
制約ファイルの意味を少し解説します。
# Clock signal
set_property PACKAGE_PIN N18 [get_ports { CLK }]
set_property IOSTANDARD LVCMOS33 [get_ports { CLK }]
create_clock -add -name sys_clk_pin -period 20.000 \
-waveform {0 10} [get_ports { CLK }]
この行は、CLK ポートに入力されるクロック信号の特性を表しています。
-period 20.000 は、クロックの周期が20.000ナノ秒(ns)という意味です。
これはクロックソースのX5の発信周波数が50MHz(1 / 20ns)だからです。
-waveform {0 10} は、クロックのデューティサイクル(HighレベルとLowレベルの時間比率)を設定しています。
{0 10} は、Highレベルが0nsから10ns、Lowレベルが10nsから20nsであることを意味し、50%のデューティになります。
set_property IOSTANDARD LVCMOS33 [get_ports { CLK }]
このような記述はポートの入出力規格(IOSTANDARD)を意味します。
LVCMOS33 は、3.3VのLVCMOS(Low-Voltage CMOS)規格で使うことを宣言しています。
# RGB LED
set_property -dict { PACKAGE_PIN W14 IOSTANDARD LVCMOS33 } \
[get_ports { LED_RGB[1] }]; # Red
set_property -dict { PACKAGE_PIN W13 IOSTANDARD LVCMOS33 } \
[get_ports { LED_RGB[0] }]; # Green
LEDは2つしかないので、制約ファイルも2bitに変更します。本当は名前LED_RGのほうがよかった
HDLファイル変更点
module blinkspeed (
input CLK,
input RST,
input [0:0] BTN,
output reg [1:0] LED_RGB
);
LEDが2bitしかないので、そこだけ変更しています。
/* LED Decoder */
always @* begin
case ( cnt3 )
3'd0: LED_RGB = ~2'b01;//G
3'd1: LED_RGB = ~2'b10;//R
3'd2: LED_RGB = ~2'b01;//G
3'd3: LED_RGB = ~2'b10;//R
3'd4: LED_RGB = ~2'b11;//GR
3'd5: LED_RGB = ~2'b00;//off
default:LED_RGB = ~2'b00;
endcase
end
あとLEDは0の時にONするので、ビット反転(~)させています。
今日はここまで