zybo 割り込み① PS,PL設定編

zyboというFPGAの入ったARMコアのSocが乗っかっている評価基板を買った。
CPUとFPGAを組み合わせた動作のために、
まずは、FPGAからARM側への割り込みを試してみる。
その過程で知ったこと、使ったサイトのメモ。

全体を通して参考になるページ
http://yuki-sato.com/wordpress/fpga/?q=%2Fcategory%2F%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C%2Ffpga%2F

必要なもの

Vivado
Zybo

PSの設定

VivadoでFPGA側の回路をつくる。
いろいろなチュートリアルを見ると、基本的にはBlock Design上でHDLのブロックなりIPなりを追加、接続していく。
IP Catelogからzynqを追加して必要設定を行う。
PS-PL Configuration

  • S AXI GP0 Interface

Peripheral I/O Phins

 (SD0でCard Detectをチェックして47番pinに設定しないとLinuxがブートしない。)

  • UART1
  • I2C 0


Interrupts
IRQ_F2P

Clock Configurationで周辺の回路に沿うように設定する。
ZyboだとPSの入力周波数は50MHzになっている。
Zybo Reference Manual [Reference.Digilentinc]
12 Clock Source

Processor/Memory/Clocksで、CPUの周波数を650MHzとDDRを525MHzにする。
IO Peripheral ClocksでSDIOを50MHzにする。
PL Fabric ClocksFLCK_CLK0を有効にして100MHzを出力するようにする。

DDR ConfigurationでMemory TypeはMT41K128M16 JT-125にする。
(実装されているDDR3の名前は違っているがコレでいいらしい)

(これは個人的な備忘録なのでバージョンが変わったりなどしたらDigilentのプロジェクトを真似したほうが確実かもしれない)

PLの構成

画像内のようにスイッチやLEDを接続するAXI LiteのIPコアを作った。
f:id:katakanan:20170409010345p:plain
LEDの一つはスイッチの割り込み出力へつなげた。

xlconcatで幾つかの割り込みを束ねてIRQ_F2Pへつなげる。
(今回は一つ)
これで適切にスイッチとLEDのポートを設定した後、bitstreamを出す。

次はSDK