Overview

はじめに

Jelly とは、FPGA上にてリアルタイムコンピューティングを行う為のプラットフォームを目指している、各種モジュール群です。

もともとはFPGA向けの MIPS-I ライクな命令セットのコアを有したソフトコアプロセッシングシステムで、Real-time OS を動かすことからスタートしたプロジェクトですが、昨今ではXILINXのZynqシリーズのようにCPU部とロジック部を合わせもあったSoCも 台頭してきたため、より柔軟にRTLロジック資産(Verilog)と、CPU資産(C/C++/Pythonなど)を組み合わせて、エッジでのリアルタイムコンピューティングを目指しつつIoT連携できるプラットフォームとして進化を続けています。

FPGAと言いつつかなり Xilinx 専用になっている点はご容赦ください。RTL自体は汎用なものも多いです。

構成

トップディレクトリ

ディレクトリ 説明
docs 各種ドキュメント
projects 各種プロジェクト
rtl 各種RTLソース
include C/C++用インクルードファイル
python Python関連
testbench 各種テストベンチ
tools 各種ツール類

rtl ディレクトリ

ディレクトリ 説明
library 各種ライブラリ的モジュール
bus バス変換などのモジュール
math 算術計算関連
video ビデオ信号処理各種
image 画像処理各種
gpu Real-time GPU
peripheral マイコン周辺モジュール
primitive デバイスプリミティブなモジュール
misc その他コア
model シミュレーション用モデル
cpu CPUコア(MIPS-I互換) Real-time OS 対応
cache キャッシュメモリ
legacy 過去の遺物(新コアに移行前の旧RTL置き場)

project ディレクトリ

ディレクトリ 説明
ultra96v2_udmabuf_sample Ultra96V2 ボード用 udmabufサンプル
zybo_z7_udmabuf_sample ZYBO-Z7 ボード用 udmabufサンプル
zybo_z7_imx219 ZYBO-Z7 ボード用 IMX219サンプル
zybo_z7_imx219_hdmi ZYBO-Z7 ボード用 IMX219+HDMIサンプル
spartan3e_starter Spartan-3E Starter Kit 用プロジェクト
spartan3_starter Spartan-3 Starter Kit 用プロジェクト

その他未整備のプロジェクト各種

Real-time OS について

拙作の HOS-V4a にて、上記の MPIS互換コア、MicroBlaze、Cortex-R5 などに対応中です。

Real-time Neural Network について

微分可能回路記述に基づくLUT 直接学習による深層学習モデル(LUT-Network)用の学習環境として開発中のBinaryBrainもJellyの画像処理コンポーネントを用いてCNNを構成しており、そのまま当プラットフォームに組み込むことが可能です(NN部の入出力自体は AXI4-Stream なので汎用的です)。

メモリを介さずにリアルタイムに推論結果が出力可能であり、本プラットフォーム上で効果的に利用することが可能です。

Jellyを使ったシステムのデモ動画