もともとMIPS互換のCPUコアを書き始めたのがきっかけですが、現状ではFPGAでSoCを実現する為のプラットフォームになりつつあります。 主に Xilinx のFPGAをターゲットにした、様々なコードを蓄積しており、主に Verilog 2001 と SystemVerilog で開発しております。
最近は、作者の発案したFPGA用のバイナリニューラルネットである LUT-Network の実行にも一部コードを流用しており、作者の中でも重要性が高まっております。
基本的には色々なものをごった煮で含んでいる状況ですが、参考になる部分だけ活用いただければと思います。
なお、現在少し詳細なドキュメントをこちらに準備中です。
/rtl/v1/mipsi/
以下にあります。
Verilogの勉強を始めた頃に Spartan-3 向けに試しに書いてみたプロセッサです。
ブロック図などはWebサイトの方にあります。
/rtl/jfive
以下にあります。
サンプルは
- Ultra96V2 で 自作RISC-V(4段パイプライン)を試すサンプル
- Kria KV260 で 自作RISC-V(4段パイプライン)を試すサンプル
- Kria KV260 で 自作RISC-V(6段パイプライン)を試すサンプル
などになります。
/rtl/rtos 以下にあります。
FPGAで作成したRealTime-OSアクセラレータです。
今のところ ZynqMP の RPU(Cortex-R5) のアクセラレートのみですが、ITRON風味のRTOSスケジューリング補助回路となっています。
現状 Rust での開発を想定してサンプルを準備しております。
/rtl/v1/gpu 以下にあります。
フレームメモリを使わないフィルタ型の低遅延なリアルタイム描画を目指したものです。
動画はこちらです。
もはやこれが Jelly のメインかもです
- rtl/v2/library FIFOとかRAMとか様々なRTLのパーツ
- rtl/v2/bus AXIとかWISHBONEとかのバスブリッジ等のパーツ
- rtl/v2/math GPUとかで使うような算術パーツ
- rtl/v2/peripheral UARTとかI2CとかTIMERとかののパーツ
- rtl/v2/video DVIとかHDMIとかのビデオ処理
- rtl/v2/image 画像処理用パーツ(ニューラルネットの畳み込みでも利用)
- rtl/v2/model シミュレーション用の便利モデルいろいろ
以下、Jelly 内のサンプルプログラムの紹介です。
-
projects/zynqmp/zynqmp_rpu/zynqmp_rpu_rust
-
projects/kv260/kv260_udmabuf_sample
-
projects/kv260/kv260_imx219
-
projects/kv260/kv260_rtos_sample
-
projects/kv260/kv260_jfive_simple_controller
-
projects/kv260/kv260_jfive_micro_controller
-
projects/ultra96v2/ultra96v2_udmabuf_sample
-
projects/ultra96v2/ultra96v2_display_port
-
projects/ultra96v2/ultra96v2_imx219_display_port
-
projects/ultra96v2/ultra96v2_rtos
-
projects/ultra96v2/ultra96v2_jfive_sample
-
projects/ultra96v2/ultra96v2_hls_test
-
projects/ultra96v2/ultra96v2_imx219_hls_sample
-
projects/zybo_z7/zybo_z7_udmabuf_sample
-
projects/zybo_z7/zybo_z7_imx219
-
projects/zybo_z7/zybo_z7_imx219_hdmi
あまりに ZynqMP ネタが増えてきたのでZynqMPを理解しようという記事を書いてみました。
license.txt にある通り、MIT ライセンスとして置いておきます。