Kria-PYNQのbaseを元に,オリジナルIPを組み込んだbitファイルを作成してPYNQから叩いてみることにします.ここでは対象のIPをVitis HLSを使って作成し,Jupyter NotebookのPythonノートブックからアクセスしてみました.
続きを読む「Xilinx」カテゴリーアーカイブ
Kria-PYNQのビルド
GitHubで公開されてているKria-PYNQのbaseをビルドしてみる.ライセンスは https://github.com/Xilinx/Kria-PYNQ/blob/main/LICENSE によるとBSD 3-Clause License なので,オリジナル作るときはこれをベースにすすめればよさそう.というわけでビルドして生成されたVivadoプロジェクトなどを眺めてみました,という話.
続きを読むZYNQ MPSoC向けにxsdkとILAでのデバッグをする話
ZYNQ MPSoCでxsdkを使ったソフトウェア開発と、ILA使ったハードウェア開発を行う時の方法がわからないという話を聞いたので、普通にILAやVIOが使えますよ、というメモ。
開発環境はVivado 2019.1.3、ターゲットはTrenz TE0802-02です。
続きを読むPYNQでAlveo向けにVitisで作ったRTLカーネルを使ってみる
Vitisは、ホスト-FPGA間をOpenCL的に利用できるようにするXilinxの開発環境です。ホストとFPGAの間のデータ転送や制御の仕組みを自分で考えなくていいので楽なのですが、それでもちょっとした回路を動かす時にホスト側のC++コードを書くのがちょっと面倒。
と思っていたら、PYNQでAlveoにxclbinをロードして動かすのが簡単だということを知りました ( 高位合成で加速するアクセラレータ開発 (1) ~ ACRi ルームで体験してみよう )。で、RTLカーネルだったらどうなるのかな?とテストしてみたところ、同じようにRTLから作ったxclbinもPYNQから呼び出せることがわかりました。これは便利。
続きを読むEclypse Z7でUbuntu18.04を走らせる
ZYNQを使ったシステム開発ではPS上でUbuntuを実行すると何かとはかどります。というわけで、Eclypse Z7上でUbuntu 18.04を走らせるためにu-bootとLinuxをビルドしました。手順は、ikwzmさんの https://github.com/ikwzm/FPGA-SoC-U-Boot-ZYBO-Z7 を参考に(ほぼそのままトレース)しています。
リソースなど一式は https://github.com/miyo/build-eclypsez7-linux にコミットしてます。
続きを読むVitis/Vivado 2020.1でMicroBlazeを使う
Vitis/Vivado 2019.2ではVivado SDKがなくなり、ソフトウェア開発はVitisに統合されました。MicroBlazeを使う場合もVivadoでハードウェアモジュールを組み立ててVitisでソフトウェアの開発をします。
この記事は、Vivado 2020.1でArtyを対象にMicroBlazeを使った開発をする手順のメモです。同じ内容を,Vivado 2024.1を使ってMicroBlaze V向けに試した内容を Vivado/Vitis 2024.1 の MicroBalze Vを使う にメモしています.
続きを読むad-refkitでFPGAの再コンフィギュレーション
ad-refkit では githubにあるXilnxリポジトリのLinuxカーネルを利用しています。これは、ZYNQ PLのコンフィギュレーションに /sys/kernel/config/device-tree/overlays を使います。
ad-refkitの場合 init.sh の実行中にFPGAのコンフィギュレーション処理が含まれていますが、マニュアルで実行したい場合は次の手順で。
python3 fpga-bit2bin.py --flip design_1_wrapper.bit fpga.bin
cp /home/user/fpga.bin /lib/firmware/
rmdir /sys/kernel/config/device-tree/overlays/fpga # if exists
mkdir -p /sys/kernel/config/device-tree/overlays/fpga
dtc -I dts -O dtb -o fpga.dtb fpga.dts
cp fpga.dtb /sys/kernel/config/device-tree/overlays/fpga/dtbo
fpga-bit2bin.pyは github からダウンロードできます。
再コンフィギュレーションする場合には一度 rmdir
で overlays
の下の fpga
ディレクトリを削除するのが肝。rm -rf
ではないので注意。
Ultra96でPYNQを使う
ACRiブログ PYNQ を使って Python で手軽に FPGA を活用 (4) に寄稿した文章では、PYNQ-Z1を使ってPYNQの使い方を紹介しました。その記事に対して、Ultra96だとどうなの?というコメントがフォーラムに寄せられていたので、簡単にフォローです。
続きを読むGPU拡張ボックスでAlveo U50を使ってみる
PCIeタイプのFPGAを使おうと思うとどうしてもシステムがおおきくなりがちです.ちょっと持ち運んで使いたい場合を想定してGPU拡張ボックスに接続してみました.
フルレングス・フルハイトのGPUも入るボックスなだけあって,Alveo U50は余裕で入ります.なんか,上も結構あいてるから少し前のFPGA評価ボードを入れてもよいかも.
Alveo U50の場合,PCIe x16でデスクトップPCに接続した場合と比べて,転送性能が1/8程度しか出ないものの,とりあえず認識して使えることが確認できました.
続きを読むAlveo U50で100GbEを使ってみる
XilinxのFPGAボード Alveo U50には,100GbEのポートが用意されています.内蔵されている100GbEコアを使うと,結構簡単にでデータのやりとりができます.
というわけで,とりあえず,Alveo U50の100GbEを使ってみた手順の紹介です.
これは,およそ9000バイトのデータが233サイクル@322MHz(おそらく)で受信されてる様子.