FPGA
FPGAをはじめてみたい 「FPGAという何やら面白いものがあるらしくて、使うとすごい計算やいろいろなデバイス制御ができるらしい。」 と、興味を持って頂ける方はそれなりにいらっしゃるのではないでしょうか? 早速なんらかのHDLなる言語を勉強し、例えば Sy…
はじめに BinaryBrain の最初のコミット日を調べてみると 2018年8月1日でした。 github.com LUT-Network という名前のネットワークとその学習環境である BinaryBrain の開発を始めてから 6 年以上が経ったことになります。 世の中の AI が LLMなどで盛り上が…
はじめに 今更と言うところはあるのですが、FPGAプログラミングを知らない人に説明する機会も増えてきたので少し記事にしておきます。 FPGA とは 昔電子工作したときに撮影した写真が出てきたので張っておきますが、いわゆるこんなやつです。 こんなやつです…
はじめに FPGAなどでデータ処理をする場合、その並列性を活かして高性能な処理をするという事はしばし求められることです。 その際にしばし使われるデータ並列とパイプライン並列を整理しておきたいと思います。 データ並列と言うと、AVX-2 のような SIMD(Si…
はじめに 今日は、最近のプロセッサをウォッチしている中での素人の妄想を書いてみます。 プロセッサの性能と規模の法則としてポラックの法則というものがあります。 これは簡単に言うとプロセッサの性能を2倍、3倍、4倍にするには、プロセッサに適用する…
はじめに だいぶ前に、RISC-V もどきの最小セットを作って遊んでいましたが、今回はその延長でもう少し遊んでみました。 動機としては レジスタファイルの構成に LUTRAM や BlockRAM を使うのだから、レジスタ32個だけじゃもったいない 複数スレッド動かすな…
はじめに KV260 には K26 SoMが搭載されています。実際には KV260 にはコネクタが片方しかついてないとかいろいろあるのですが、一旦そこは置いておいて、K26 SoM モジュールをデータ帯域観点で見てみたいと思います。 以前にリアルタイムコンピューティング…
はじめに 過去に PS-PL間の通信帯域やレイテンシを実測して実験していましたが、少しドキュメントから読み取れる仕様についても整理しておきたいと思います。 独自の調査であり、正しく読み取れていない可能性はあるので、誤りはあるかもしれないことを予め…
はじめに 筆者は過去に幾つかこの手のパフォーマンス検証を行い、下記のブログを書きました。 Ultra96V2(ZynqMP) のPS⇔PL間性能計測 - Ryuz's tech blog KV260 で PS から PL へのシングルアクセス速度を測ってみる 基本的には MPU を自由に弄りやすい、RPU(…
はじめに 私が FPGA に興味を持ち Verilog を勉強し始めたころこんなブログを書いていました。 遥か昔、「モジュールは全部FF出ししないとだめよ」という事を言っていた先輩の言葉を真に受けて、何とかして ready も FF 出ししようと、無い知恵を絞って作っ…
はじめに FPGA は各社しばし同期リセット推奨だったと記憶していますが、FF周にはいろいろ機能がついてます。 KV260 (Zynq UltraScale+ MPSoC) 用の合成結果の中身を覗いてみたのでメモです。 普通に書いてみる 私が普段よく書く書き方が下記のような感じで…
なにが起きたのか 下記のようなシーンで何やら Verilator が Operator NOT expects 5 bits on the LHS, but LHS's VARREF 'b' generates 4 bits. というワーニングを出してきた。 logic [3:0] a; logic [3:0] b; logic [4:0] c; assign c = a + ~b; 4bit同士…
はじめに 少し前に、X(Twitter) にこんな絵を張り付けた。 ちょうど BitNet(b1.58) が盛り上がっていて、パラメータ効率の議論が起こっていたときだと思う。 忘れる前にもう少し書いておこうと思う。 上の図では少なくとも DRAM などの外部メモリや、そこへ…
はじめに だいぶ以前、最小限の RISC-V 命令だけ実装して遊んだときに下記のようなレジスタファイルを作りました。 後でいろいろパラメータ変えて計測しようと思いつつ完全に忘れていたので思い出したように実験です。 https://github.com/ryuz/jelly/blob/m…
はじめに 毎度おなじみ当方の LUT-Netは、ネットワークのパラメータをLUTのテーブル値として学習して回路にしてしまう為、外部SDRAMなどのメモリからパラメータをロードしながら演算する必要がありません。 今回はLUT-Net は置いておいて、「もし普通の積和…
はじめに 以前、ZynqMPでリアルタイムOSをFPGA化してみた というRTOSのスケジューリング部分をフルロジックで実装してみましたという記事を書きました。 今度は、それを複数ボード拡張することを目論んで、RTOSらしくリアルタイム保証や時計合わせを行うべく…
はじめに Verilog などの RTL 記述言語の多くは、文法上 0/1 以外に X(不定値) や Z(high-Z) を含めた4値を扱えます。 不定値の取り扱いにはおそらく「これが正解」といった絶対的なものはなく、ケースバイケースな気がしております。 コーディングルールを…
下記、「実践的!FPGA開発セミナー vol.18」にて Lightning Talk 枠で発表させて頂きました。 fixstars.connpass.com 発表資料を以下に置いております。 speakerdeck.com なお、今回を機に、以前 SlideShare に置いていたものを一部 SpeakerDeck にも置きま…
データプロセッシングのアクセラレータ―としてではなく、IoTデバイスとしてFPGAを使ったことのある方は Excel でピン配置表を作って VLOOKUP 関数で頑張った経験がある方も多いのではないでしょうか?(古い人だけかもしれんないですが)。 FPGAはマイコンと違…
はじめに 個人的には Zynq UltraScale+ MPSoC (以下、ZynqMP) は 現時点では最強の IoT プロセッサなのではないかと思っています。 そして多分、「自分はわりとマニアックな偏った使い方をしている方なのではなかろうか」とも思っています。 一方巷で、 FPGA…
はじめに 先ほど BinaryBrain 4.2.4 をリリースしましたので少しだけ時事ネタ的にプログを書こうと思います。 github.com もともと FPGA の基本構成要素である LUT を LUT 構成のまま誤差逆伝搬で学習させてしまおうというのが、以前発表したLUT-Netの趣旨で…
はじめに FPGAに限らずCPUやGPUなどすべての計算機に言えることなのですが、ハードマクロの演算リソースは使ってなくてもそこに居座り続ける(要するに無駄)という問題があります。 筆者は普段主に ZynqMP を使っておりますので、APUやRPUやOCM、PL内部のLUT…
概要 以前、[こんな記事]https://ryuz.hatenablog.com/entry/2022/04/30/213444を書きましたが、その際、実 SD カードにイメージを作ってから dd コマンドでイメージを保存していました。 もちろんもっといいやり方はあるだろうなとは思っていたのですが、「…
SystemC を WSL2 の Ubuntu 20.04 に入れてみたのでメモ。 git clone -b 2.3.3 https://github.com/accellera-official/systemc.git cd systemc export CXX=g++ autoreconf . mkdir objdir cd objdir ../configure --prefix=$HOME/.opt/systemc-2.3.3 make -…
はじめに タイトルそのままの内容です。 以前、Ultra96V2のDebianイメージで Cortex-R5 を認識させる - Qiita という記事を書きましたが、その Kria K260 版です。 今回は 認定Ubuntu の iot-kria-classic-desktop-2004-x03-20211110-98.img を使っておりま…
はじめに 表題の通りの自分用備忘録です。 最近 Windows11 にアップグレードして、ほとんどのことがWSL2 でできるようになりました。 必要な作業 usbipd-win のインストール 下記の通り、実施すればOKです。 docs.microsoft.com カーネルビルド CONFIG_USB_S…
はじめに ikwzam 氏のZynqMP 用の Debianイメージにはいつもお世話になっております。 一方で、古い Windows 環境しかないときにSDカードイメージを新規に作ろうとすると何気に苦労するので、Win32DiskImagerなどで書き込めるイメージにできないかと思ってい…
はじめに 最近いろんなところで Docker の活用を聞きますし、私自身も多少は使ったことはあったのですが、Raspberry PI4 のおかげで aarch64 での利用も増えてきているようですので、Ultra96 でも動かないか挑戦してみました。 例によって、ikwzm氏のDebain…
概要 前々からやろうやろうと思って全然手が出せてなかった RISC-V ですが、本格的にやると 深みにはまりそうだったので、最小セット(rv32i)をコンパクトに SystemVerilog + Rust で 動くコアが書けることを目標にちょっとやってみました。 感想としては、…
ほぼ自分用のメモですが、いつも忘れるのでここに tcl 張っておきます。 set f [open "file_list.txt" w] foreach fname [get_files] { puts $f $fname } close $f なかなか tcl 慣れない...