もっかい Lチカおさらい
これが「Lチカだ」でLチカをつくりました。main ルーチンはごく簡単でした。
def main(self):
led_bit:bit = 1
while is_worker_running():
self.led(led_bit)
led_bit= 1 - led_bit
self._wait()
ぐるぐるまわって led_bit を 0/1 でひっくり返すだけです。
Polyphony でコンパイル
gist に python のソースを置いておきます。
このソースを polyphony でコンパイルします。
$ polyphony blink.py
$ ls *.v
Blink_blink.v polyphony_out.v test.v
出来たソースは?
Verilog のソースの冒頭部分はこんな感じ
> head Blink_blink.v
module Blink_blink
(
input wire clk,
input wire rst,
output reg led = 0
);
Vivado 2018.1 に入れてみる
XADC でつくったプロジェクトに無理やり入れてみます。
Create Block Design
まずはお絵かき回路図で作業をしたいので、左の選択肢から IP INTEGRATOR -> Create Block Design を選択します。空のデザインができます。
Blink_blink.v を Vivado のデザインに追加
Design Sources を右クリックして Add Sources... を選択し Blink_blink.v を追加します。
Blink_blink.v をトップモジュールに
Blink_blink.v を選択して右クリックから Set as TOP を選択します。
blink.xdc の中身
Verilog のトップモジュールの各ピンをどこにアサインするか指定します。
set_property -dict { PACKAGE_PIN K17 IOSTANDARD LVCMOS33 } [get_ports { clk }]; #IO_L12P_T1_MRCC_35 Sch=sysclk
create_clock -add -name sys_clk_pin -period 8.00 -waveform {0 4} [get_ports { clk }];
#LED
set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led }]; #IO_L23P_T3_35
set_property -dict { PACKAGE_PIN K18 IOSTANDARD LVCMOS33 } [get_ports { rst }]; #IO_L12N_T1_MRCC_35
合成とダウンロード
Generate Bitstream をクリックして合成してください。
実行
Zybo Z7 を JTAG モードにして USB 経由で PC とつなぎ、bit stream をダウンロードします。うまくいけば LED チカチカが始まるはず、、、といいたいところですが、LED はひかりぱなしです。rst にアサインしたボタンを押すと LED は消えます。プログラムは動いていますが、clk が早すぎてチカチカに見えません。改良の余地がありそうです。