Ryuz's tech blog

FPGAなどの技術ブログ

FPGA

FPGAユーザは少ないのか?

はじめに 今回はかなり憶測交じりの駄文回です。 当ブログでは FPGA の話を取り上げることが多いわけですが、それは筆者がプログラミングデバイスとして FPGA がとても面白い対象だと思っているに他ならないです。 もちろん私は Python でデータ処理すること…

なぜFPGAがフィジカルAIで有利なのか

はじめに 似たような話は過去にも何度も書いた気がしますが、改めて少し以前に描いた絵を引っ張り出してきて整理しておきます。 身も蓋もない話、GPU向けに作られたAIモデルを持ってきた場合、しばし、性能/コスト/電力すべての項目で FPGA は GPU/NPU に…

OPS(Operations per second)とは何なのか?

はじめに 今日は OPS(Operations per second) って何だろうという個人的疑問からの駄文です。 スーパーコンピューターやパソコンなどの性能を示す指標として FLOPS(Floating-point Operations Per Second) は昔からよく使われていたかと思いますし、多くの場…

リアルタイムAIで考える事

はじめに 当サイトでは、応答時間がミリ秒以下になるような、高リアルタイム性のコンピューターシステムを検討対象としており、AI(というか機械学習)もその対象範囲です。 このようなリアルタイム性の条件下でAIを考える場合、通常の AI のように単に高精度…

フィジカルAIについて考えてみる

はじめに 昨今、フィジカルAIや、エンボディドAI などの単語をよく聞くようになってきました。 当サイトのリアルタイム性に対するこだわりが発揮しやすそうな領域であり、FPGA 応用の生きてくる分野でもありますので、少し考察してみたいと思います。 昔から…

(おまけ) 続・FPGAに対する誤解

はじめに 前回、FPGAに対する誤解と「どうFPGAを使うべきか」 という記事を書きました。 ちょっと調子に乗ってアンチパターンをイラスト化してみたのでおまけ記事として書いておこうと思います。 実践入門FPGA開発 7日間で学ぶ生成AIによる回路設計 技術の泉…

FPGAに対する誤解と「どうFPGAを使うべきか」

はじめに 以前、FPGAを始めるときの壁 というのを書かせて頂きました。 また最近、CPU や GPU についても幾つか個人的意見を書かせて頂きました。 今日は、今のところ私が最も熱を入れている FPGA について私見を書いてみたいと思います。 FPGAの原理と構成…

なぜGPUは高性能なのか

はじめに 最近 FPGA をやっているとよく GPU と比べられるという事が起こります。 本来の FPGA の得意分野(通信処理とか画像信号処理とか)を考えると、不思議な感じもするのですが、逆に FPGA が汎用計算機と比較されてしまうぐらい守備範囲を広げているとも…

近代CPUのメリット/デメリットを考えてみる

はじめに 我々プログラマは CPU/GPU/NPU/FPGA なんかを特性に合わせて選択しながらプログラミングすることになっているわけですが、AI以降、CPU以外のプロセッサの台頭が著しいですので、今更ながら基本となる CPU をもう一度眺めてみようという書きながら考…

テストと検証の違いについて考えてみた

はじめに 今回は定期的にやってくる駄文というかポエム回です。 ソフトウェア開発において「テスト(Test)」と言うものは非常に重要です。一方でLSI開発などを含めて、RTL界隈では「検証(Verification)」という言葉をよく聞きます。 業種や人によっても用語の…

産業用カメラを研究開発に用いる場合の課題

はじめに タイトルの通りなのですが、本来産業用カメラは、製造や流通など産業の現場で活躍する精密かつタフな高品質なカメラであり、現場の要望に応えて進化を繰り返してきたものなのですが、本記事は 本来の用途と違う 研究開発に使う場合の課題について触…

Zynq/ZynqMPのクロス開発環境を構築してみた

はじめに 私はこれまで ZYBO(Zynq-7000) や KV260(ZynqMP) の Linux 環境を活用してセルフコンパイル環境をメインに活用してきました。 Linux では gcc も rust も動きますので、OpenCV などの C++ や Rust などネイティブコンパイラでバージョン依存の強い…

FPGAのリセットについて

はじめに 先日 FPGAのリセットについての考察 - Ryuz's tech blog という記事を書きました。 アクセス解析見てみると意外とアクセスが多いページのようで、まじめに普通のFPGAのリセットの話を知りたくて来られた方に申し訳ないので、少しだけそういう話も書…

MIPI-CSI2仕様を調べてみる

はじめに ご承知の通り MIPI 仕様自体は無償公開あれているような代物ではありませんが、多くの FPGA ベンダーが、無償の IP コアを提供していることもあって、趣味レベルであっても FPGA などで画像取り込みができるような状況になっています。 一方で、そ…

Windows版 GOWIN EDA を WSL2のコマンドラインから使う工夫とか

はじめに GOWIN の FPGA は低価格で買えるものも多いため、夏休みの自由研究的に使う方も多いのではないでしょうか? GOWIN EDA はユーザー登録を行って、ライセンスファイルを発行してもらわないと使う事が出来ません。 私は、USBを繋いでプログラムを行っ…

GOWINで加算の性能を調べてみる

はじめに 最近 GOWIN を触る機会も多いのですが、他のベンダーさんの FPGA とくらべてあまり深いところまでは触っていません。 また、 AMD の CARRY8 のようなものが無いのではという噂も聞いたのと、LUT4 であるという点なども加味して、大雑把に性能を調べ…

アクティブマルチスペクトルカメラを妄想してみる

今作っている Spartan7 + オンセミ社 PYTHON300 イメージセンサ、やっと絵が出始めました。 お手製のPYTHON300カメラモジュール で、いつも通りの LUT-Network への応用や、オプティカルフロー計測、その他リアルタイムアクティブセンシングいろいろ考えて…

メタステーブルについて考えてみる

はじめに もう専門の方から一直線にマサカリが飛んできそうなタイトルで怖いんですが、ちょうど今週末は非同期周りを整理していて X でも少し盛り上がったのでネタにしておきます。 組み込みやっていると、チャタリングとかシュミットトリガとかはよく聞くわ…

リアルタイムコンピューティング的CNN再考

はじめに 当方はFPGAを使ったリアルタイムコンピューティングをメインに活動しております。 流行りの深層学習は私の中では One of them でしかないつもりなのですが、それでも昨今どうしても無視はできないので、リアルタイムコンピューティング観点でCNNを…

ハイサンプリングレートのススメ

はじめに 当サイトはリアルタイムコンピューティングの為に、ハイフレームレート撮影などサンプリングレートを高めることでリアルタイム性を上げることをことあるごとに推奨しています。 それはどういうことかというのを少し説明したいと思います。 高速度撮…

演算量とリアルタイム性の関係

はじめに 昨今、深層学習を中心に例えば画像認識を行うにしても大量の演算能力を投入して、高度な結果を得ようとするものが増えました。 しかしながら、同期デジタル回路による計算機が持つ演算能力には上限があり、演算器数×周波数以上の時間当たりの演算は…

LUT-Netowork の今後の可能性

はじめに 2025年3月1日より、個人事業主として開業申請いたしました。 当面は続けられる限りフリーランス的な働き方を併用しながら、今まで自分が挑戦できなかった分野の開発に取り組んでいこうと考えております。 で、サラリーマン的に趣味的に作っていた L…

FPGAのリセットについての考察

はじめに ファミコン世代にとっては当たり前に通じてしまう「リセットボタン」も、だんだん通じにくくなっているという話も聞きます。 今回はFPGAのリセットについて考えてみたいと思います。同期リセットとか非同期リセットとか、負倫理/正論理とかの話で…

FPGAを始めるときの壁

FPGAをはじめてみたい 「FPGAという何やら面白いものがあるらしくて、使うとすごい計算やいろいろなデバイス制御ができるらしい。」 と、興味を持って頂ける方はそれなりにいらっしゃるのではないでしょうか? 早速なんらかのHDLなる言語を勉強し、例えば Sy…

LUT-Network を振り返る

はじめに BinaryBrain の最初のコミット日を調べてみると 2018年8月1日でした。 github.com LUT-Network という名前のネットワークとその学習環境である BinaryBrain の開発を始めてから 6 年以上が経ったことになります。 世の中の AI が LLMなどで盛り上が…

FPGAプログラミングとは

はじめに 今更と言うところはあるのですが、FPGAプログラミングを知らない人に説明する機会も増えてきたので少し記事にしておきます。 FPGA とは 昔電子工作したときに撮影した写真が出てきたので張っておきますが、いわゆるこんなやつです。 こんなやつです…

データ並列とパイプライン並列

はじめに FPGAなどでデータ処理をする場合、その並列性を活かして高性能な処理をするという事はしばし求められることです。 その際にしばし使われるデータ並列とパイプライン並列を整理しておきたいと思います。 データ並列と言うと、AVX-2 のような SIMD(Si…

クロスバースイッチの規模考察

はじめに 今日は、最近のプロセッサをウォッチしている中での素人の妄想を書いてみます。 プロセッサの性能と規模の法則としてポラックの法則というものがあります。 これは簡単に言うとプロセッサの性能を2倍、3倍、4倍にするには、プロセッサに適用する…

RISC-Vもどきのバレルプロセッサ作ってみた

はじめに だいぶ前に、RISC-V もどきの最小セットを作って遊んでいましたが、今回はその延長でもう少し遊んでみました。 動機としては レジスタファイルの構成に LUTRAM や BlockRAM を使うのだから、レジスタ32個だけじゃもったいない 複数スレッド動かすな…

K26SoM のデータ帯域を調べてみる

はじめに KV260 には K26 SoMが搭載されています。実際には KV260 にはコネクタが片方しかついてないとかいろいろあるのですが、一旦そこは置いておいて、K26 SoM モジュールをデータ帯域観点で見てみたいと思います。 以前にリアルタイムコンピューティング…