PYNQ のデザインを合成してみた

f:id:ryos36:20161013171056p:plain

2016.1 ようだったが、無理やり 2016.2 に変えて合成してみた。結構時間がかかると思ったら、単純なデザインではなかった。その上、なぜかタイミングエラーですが。気にせず、先に進みます。

f:id:ryos36:20161013172658p:plain

右下には audio や iop1 iop2 io3 というブロックがあります。iop は IO Processor のようです。pmod と arudino の sheild に対応しています。

f:id:ryos36:20161013172954p:plain

tracer buffer というのがあって、これは各ピンのログをとれるようです。(AXI Stream として)

大きそうな iop3 をのぞいてみます。
f:id:ryos36:20161013173114p:plain

MicroBlaze がはいっていることがわかりました。iop ごとに入っているので全部で3つです。

mb3_timers_subsystem というのがあります。

f:id:ryos36:20161013173438p:plain

pwm などのためのタイマーが5つあり、AXI でつながっています。MB からコントロールするようです。ほかに MB の interrupt controller があるので、おそらくこれらの割り込み処理を MB が担当するのでしょう。プログラムは BRAM に置くようです。

また、そのほか GPIO, SPI, IIC などのサブシステムがあります。shield で規定されている IO に対応しているようです。

全部入りのシステムにしたかったのでしょう。pmod も spi だったり iic, gpio, timer があります。switch というブロックで切り替えるようで、それも MB がやっているようです。

f:id:ryos36:20161013174305p:plain

かなり重そうな大規模システムです。FPGA の拡張性を考えるともうすこしシンプルなものも用意してくれるといい気がします。