aster_ismの工作室

FPGAとかマイコンとか

ZYBO-Z7を用いたLチカ(PythonからFPGAのLEDを叩く)

ZYBO-Z7上でUbuntuが走るようになり、もう少し高級な言語で制御したくなったので、 Pythonの勉強も兼ねて PYNQ のコードから必要そうなところだけ抜き出してLチカを行った。

基本的には mmio.py と同じことを、led.json の設定を読み込んで実行するだけです。

下記のように led.json では前回まで使用したGPIOのベースアドレス、サイズと pg144 のp.10に記載されているレジスタ名とアドレスを記載します。

{
    "baseaddr" : "0x41200000",
    "length": "0x8",
    "registars" : [
        {
            "offset" : "0x0",
            "name" : "gpio",
            "rwtype" : "RW"
        },
        {
            "offset" : "0x4",
            "name" : "tri",
            "rwtype" : "RW"
        }
    ]
}

led.json を元に生成したledには、レジスタtriレジスタgpio が作成されているので、 あとは、下記のように led.tri(0)led.gpio(1) を実行することで、LD0 が点灯する。

import fpga 

# LED GPIOの設定を読み込み
led = fpga.ip('led.json')
# 3-state を出力(0) に設定 
led.tri(0)
# LD0 を ON
led.gpio(1)

なお、PYNQのOverlayについては以前参加したPYNQ祭りのtodotaniさんの資料に記載されています。

www.slideshare.net

ソースコードは下記に置いています。 github.com