2023年5月5日金曜日

ZynqBerryで遊ぶ

ZynqBerryで遊んでみることにした。

ZynqBerry (TE0726)はTrenz electronic社が販売しているFPGAボードで、Raspberry Pi Model 2と互換製があるそうだが、本物のRaspberry Piを所有していないのでどの程度互換性があるのかは分からない。 このボードは2019年の12月にDigi-Keyで購入したのだが、忙しくて殆ど動かさずにいた。

搭載しているFPGAはZynq 7010、DRAMは512MByte DDR3L SDRAM、 Configuration 用 Flash memoryは16MByte、 I/Fは type-AのUSBが4、 10M/100M Ethernetが1、 μSDカードI/Fが1、JTAGとUSB-UART用にtype-BのUSB I/Fを1つ持っている。 EthernetはZYNQのGEMではなくSMSCのLAN9514というLSIを使っている。 LAN9514は4ポートのUSB 2.0 hubとしての機能と10/100Mbit Etnernetの機能を搭載しているLSIでZynqとはUSB 2.0で接続されている。

    (TRM-TE0726-02より引用)

この他にHDMI I/F、CSI(Camera Serial I/F)-2、 DSI (Display Serial I/F)用のコネクタ、Line-out用Audio ouputがZynqのPL部につながっているがPL部なので別の用途に使うことも可能だろう。


注意点としては、使用しているZynqのパッケージの制約から、SDカードからダイレクトにブート出来ない。 SDカードからブートさせる場合はSPI ROMのFSBLからu-bootを起動してそこから改めてSDカードからブートさせる必要があるそうだ。  また、残念な点が2つある。まず一つは、このボードの電源はtype-BのUSBコネクタから供給するが、type-AのUSB I/Fを4つ持っているのでこれらをフルに使う場合を想定すると、type-Bコネクタからの給電はちょっと不安だ。 もう一つはFPGAの再コンフィグやリセットをするためのスイッチを搭載していない。ただし、開発者もその点は判っているようで、+5V給電用とリセット用のランドがそれぞれ設けられている。 そこで、ジャンク箱から適当な部品を探し出して給電用コネクタとリセットスイッチを取り付けた。

これでボードの準備は出来た。
次にTrenzのサイトからReference DesignをダウンロードしてVivadoでインプリしてみた。
Reference Designの最も最新バージョンは2020.2用のもので、TE0726-zynqberrydemo1とTE0726-test_boardの2種類あった。最初にTE0726-zynqberrydemo1を試してみた。このデザインにはCSI-2、DSI、HDMI、Audioとボードのほぼ全ての機能を動かす回路が入っているようだ。 vivadoでインプリしてみたところ、何とタイミングエラーが出てしまった。どこかデザインをイジったわけでもなく、そのまんまの状態でインプリしたのだが。。
細かくは見ていないが、タイミングエラーになっている箇所はAudio部分のクロック載せ替え部分とCSI-2 I/F部で起きているようだ。 別にこのデザインで遊びたい訳ではないので深追いはしないことにして、この状態でbitstream生成とハードウェアのエクスポート(xsaファイル生成)だけした。

また、もう一つのTE0726-test_boardの方も見てみたが、こちらはPL部には何もないデザインだった。
生成したTE0726-zynqberrydemo1のxsaを使ってpetalinuxのビルドをしてみた。このReference Designにはpetalinux用のテンプレートも入っているのでこれを利用した。実はこのボードのEthernetの実装の仕方はZYBO等の他のFPGAボードには見られない手法なのでデバイスツリーの書き方に興味があったのだが、特別な記述は無かった。ZynqからはUSBの先に繋がっているのでUSB-Ethernetコンバータとして見えるのだろう。 HDMIはsimple framebufferを使っている。起動直後HDMIの画面出力は全面黄色だったが、/dev/fb0に/dev/zeroをddでコピーしたら書換えできたので正常に動作しているようだった。

ということで、このボードでちょっと遊んでみようと思う。具体的には以前、ZYBOでLinaro linux + simple frame bufferでX Windowを動かしたが、今回はZynqBerry + petalinuxで同様のことをしてみようという訳だ。 

0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...