はじめに
個人的には Zynq UltraScale+ MPSoC (以下、ZynqMP) は 現時点では最強の IoT プロセッサなのではないかと思っています。
そして多分、「自分はわりとマニアックな偏った使い方をしている方なのではなかろうか」とも思っています。
一方巷で、
- FPGA 興味あるけど何から始めたらいいかわからない
- ZynqMP やることになったけど機能が膨大すぎてどこから手を付けていいかわからない
などの声も聞くことがあります。
ここでよいアドバイスができれば(偏った)仲間増やすチャンスなのですが、なかなか良い回答を思いつけない事が多いです。
そこで、少し真面目に考えてみよう、というのが今回の記事となります。
過去に書いた L チカ記事など
やはり IoT の Hello World といえば LED チカチカ だと考えます。
過去に Lチカまでの環境構築や、手順を書いてみた記事を掘り返してみます。
Ultra96用のLチカ
振り返ってみるとUltra96用には結構記事書いてました。
- Ultra96V2のPLでLEDチカを行う(Vivadoでのbitstream作成編)
- Ultra96V2のPLでLEDチカを行う(VitisのHello worldから起動編)
- Ultra96V2のPLでLEDチカを行う(Debianブートイメージ利用編)
- udmabuf を試してみる (Ultra96V2編)
- Docker を使える Ultra96V2 用 Debian 環境構築
KV260用のLチカ
最近 KV260 向けにいくつか書いています。
ZynqMP とか RTL の話
最近はこんな記事も書いています。
考えてみたチュートリアルの流れ
既にFPGA以外のマイコンでなら C/C++ などで Lチカやったことあるような人々をターゲットに Lチカから順にステップしながら ZynqMP を覚えてもらえる流れを考えてみました。
- ボード買ってきて Linux(Ubuntu/Debianなど) を SDカードに書く
- とりあえず起動して Linux で遊んでみる
- PLのみでLチカするbitstream作って Linux から動かしてみる
- LinuxアプリからPLにアクセスしてLチカしてみる
- このへんで、シミュレータとILAデバッグもやってみる
- 外部SDRAM経由でPLとPSのデータやり取りをやってみる
- 非同期クロック間のデータ交換とかPLLとかを理解する
- IP Catalog とか DSPとか BRAM とかPLをいろいろやる
- MIOとか、RPUとか、割り込みとかPSもいろいろやる
- ZynqMP エキスパートのできあがり
みたいな感じはどうでしょうか?
案外、 1~6 ぐらいまでは過去にいろいろ書いていたものを再整理していけばよいような気もします。
おわりに
ここまで書いて、Vitis 使ってないことに気が付いたりもしています。
他:「Xilinx の開発は Vitis というツールを使うと聞いたんだけど、どう使えばいいの?」 私:「使ったことないのでわかりません」
というやり取りも過去に何度かあったような...
とはいえ、IoT を Lチカ を軸足に話を進めるとどうしても Vivado が中心のフローになっちゃうのですよね。 IPコア 作るのに Vitis HLS は使うにしても、どうしてもデザインフローの中心が Vivado になってしまう。
HLS は使うにしても IoT な人には Vitis 要らないんじゃないかとも思い始めていたりいなかったり。