Ryuz's tech blog

FPGAなどの技術ブログ

2021-01-01から1年間の記事一覧

ZynqMPでリアルタイムOSをFPGA化してみた

はじめに 少し前にUltra96V2 で FPGA化した リアルタイムOS を試すサンプルと言うものを公開しました。 作りっぱなしになっていたので、まだ碌にテストも出来ていない状態ですが、原理実験的には成り立っていそうですので、少し解説記事的なものを書いておこ…

RustからUIOやu-dma-bufやベアメタルからのMMIOをやってみた

概要 以前、「uioやudmabufにアクセスするC++のクラスを作ってみる」という記事を書きました。 今回はその Rust 版になります。最大の違いは C++ 版では Linux しか考慮していなかったのに対して、Rust 版ではベアメタルプログラミングでのMMIOアクセスも考…

コマンドラインだけでHLSで書いたIPをVivadoに取り込んで合成する

はじめに 少し前に、HLSで書いたC言語のコードを、コマンドラインから一気に Vivado に取り込んで合成するサンプルを作ってみましたが、ブログにかけてなかったと思うのでこちらにも少し書いておきます。 サンプルはこちらにあります。 とは言え、殆どが下記…

RustでRTOSを作ってみる試み

はじめに 組込みRustの勉強ついでに RTOS(リアルタイムOS)っぽいものを作ってみようと試みたちょっとしたサンプル的なものです。 以前の記事の後、放置状態だったのですが、今回簡単なサンプルだけ動くようにして crates.io にも登録したので続編となります…

FPGAで RTOS(Real-Time OS)を作ることを考える

はじめに こことかで少し実験を始めていい感触が出てきたので少し備忘録的に書いておきます。 具体的には ZynqMP の RPU(Cortex-R5) 用にPLでRTOSロジックを作っていろいろ実験中です。 なぜ今さらFPGAでRTOSなのか? RTOSをロジックで記述しようという試み…

RustでRTOSを考える

発表資料 本日TOPPERS開発者会議2021にてLTで参加させて頂きました。 RTOSの具体的なお試しは殆ど進んでなかったので、かなり「こうできたらいいなぁ」レベルのお話になってしまいましたが、楽しく参加させていただきました。 資料を下記に公開しておきます…

続・IIR型セマンティックセグメンテーション(途中経過)

はじめに 前回ぐらいからIIR型のネットワークに向けていろいろやってるのですが、道が長そうなのと、夏季休暇もあって少し進展もあったので途中経過をブログに残しておきます。 LUT-Networkのおさらい 当サイトでは主にFPGAで超リアルタイムなバイナリニュー…

ミップマップを使ったIIRフィルタライクなRNNを考える

はじめに 先日 Twitter に書いた内容ではあるのですが、ミップマップ構造を使ったIIRフィルタライクなRNNネタを備忘録程度にまとめておきます。 ミップマップについてはWikipediaの記事などを見て頂ければと思いますが、CGなどでテクスチャマッピングを行う…

Verilator に Clang と Ninja を使ってみる

Verilator のコンパイルを速くしたい 実行速度は爆速の Verilator ですが、ソースの規模が大きくなってくるとコンパイル時間が長くなってきます。 こちらで、Clang使うと少し早くなると紹介されていたのですが、なかなか手を出せずにいたところ cmake で使う…

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

はじめに 私のサイトでは 1998年に μITRON仕様の HOS-80をリリースさせていただいたのを出発点に、リアルタイムコンピューティングを扱ってきました。 いくつかの活動や成果物は私のWebサイトなどにも貼っておりますし、いろんな個人的な発表やTwitterなどで…

LUT-NetworkによるFPGAでの手書き数字(MNIST)のセマンティックセグメンテーション再整理

はじめに 私のTwitter のトップにも置いているこの動画ですが、かなり昔 C++ ベースでハイパーパラメーターや構造を何度も変えてリコンパイルしながら少しづつ試行錯誤してネットを育てるという事をやってしまったので、容易に再現環境が作れずにおりました…

もしもfopenがOpenGL風だったら

はじめに 最近、Ultra96V2 で Mali-400 使ってみようと思い、Rust の勉強ついでに久しぶりに OpenGL を触っています。 対応しているのが OpenGL ES 2.0 なので、古い書き方も出来なければ最新と言うわけでもない微妙な環境です。 当然 DirectX も Vulkan も…

Ultra96V2でNFS使ってみた

概要 Ultra96V2 の SDカード容量が心細くなってきたのと、以前にSDを酷使し続けて壊してしまった反省もあって、データをネットワーク越しに置くことでSDカードの容量不足と負担を減らそうという試みです。 Ultra96で使っているのはこちらのDebianイメージで…

Verilator勉強会

Verilator勉強会で発表させていただきました Verilator勉強会 2021/05/29 私の資料はこちら 基本的には過去記事のこれやこれのお話をさせて頂きました。 感想 私の発表はともかく、Verilator の中についてしっかり追いかけておられる @Vengineer氏 や @msyks…

ストールしないテクスチャキャッシュ

はじめに Verilator を試すのに昔書いたRTLソースを発掘していたら、かなり昔書いたGPU用のテクスチャサンプラーとテクスチャキャッシュが出てきました。 こんなことやってたころに作ったやつだと思いますが、記事にしたことが無かったと思いますので、少し…

FPGAはどこまでソフトウェアか?

はじめに 今更ながら@ikwzm氏の「一体いつから FPGA はハードウェアだと錯覚していた?」に感化されて、私なりにFPGA上で行うソフトウェア開発がどういうものかというのを再考してみたいと思います。 前置きですが、あくまですべて私見ですので、こういう風…

C++の動作モデル書いてみた(主にVerilator用)

はじめに 前回に続くネタです。これ自体は特に Verilator に依存しているわけではなく汎用のC++ライブラリとして記述してるのでいろいろできると思うのですが、ひとまずは Verilator と C++ モデルを接続動作させるのに使っています。 何を作っているのか 作…

Verilatorやってみた

はじめに どうも界隈でVerilatorなるものを耳にするようになったので少し試してみました。 結論から言うと、いろいろ制約はあるものの シミュレーション速度が爆速である テストベンチをC++で書くので OpenCV などが使いやすい の2点から、シミュレーション…

ZynqMP(Ultra96-V2)のCortex-R5にITRONでC++とかRustとかやってみた

HOS-V4a のサンプル作ってみました 以前書いた記事で Ultra96 の Cortex-R5 を使うのにあれこれやっておりました。 Ultra96V2のDebianイメージで Cortex-R5 を認識させる HOS-V4a(ITRON仕様 RTOS)をUltra96V2(ZynqMP)のCortex-R5で動かす ARMの割り込みPL390…

BinaryBrain ver4 リリース

リリースのお知らせ ずいぶんと久しぶりになりますが、コロナもあって引きこもりのお正月を迎えるにあたって、少しまとまった時間が取れましたので Python対応を強化して BinaryBrain Ver4 をリリースいたしました。 Ver4 ソースコード一式 ('ver4_release' …