Ryuz's tech blog

FPGAなどの技術ブログ

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' …

Ultra96V2(ZynqMP)のDebian動作中にPLからDisplayPort出力

概要 前回の続きで、ある程度私なりの使い方が落ち着いてきて、github コードをにも上げましたので簡単に説明を書いておきます。 事前に断っておきますと、正しいやり方でも何でもなく、さしあたって「安直にPLから画像出力表示したい」という欲求から「力技…

Ultra96V2 DisplayPort 挑戦中(作業記録)

はじめに Ultra96V2 の Display Port 出力に挑戦中です。 なお、現時点ではあくまで作業記録であって、なかなかこれと言った安定した表示方法にたどり着けてはいません。 環境は例によって ikwzmさんのDebian GNU/Linux (v2019.2版) ブートイメージを利用さ…

Ultra96V2(ZynqMP) のPS⇔PL間性能計測

はじめに Ultra96V2(ZynqMP)は、PL(Programable Logic)とともに、APUにCortex-A53を4個、RPUにCortex-R5を2個搭載したエッジコンピューティングデバイスで、PLにI/Oロジックや演算ロジックをプログラムすることで様々な機器との接続や、一般的なCPU/GPUが苦…

Qrunchの過去記事アーカイブを一旦 github に退避

Qrunchがサービス終了 技術記事を書いていた Qrunchが残念ながらサービス終了とのことで、記事アーカイブを引き揚げ中です。 https://github.com/ryuz/qrunch_blog/ にアーカイブを保存しています。 Markdown ですが、数式が表示されなかったり、段組みがお…

Ultra96V2をベンチマークしてみる

環境 ボード: AVNET Ultra96V2 OS : ikwzm氏 Debianブートイメージ Stream インストール&実行 wget http://www.cs.virginia.edu/stream/FTP/Code/stream.c gcc -O3 stream.c -o stream ./stream Ultra96V2での結果 -------------------------------------…

Ultra96V2用にマルチI/O基板を作ってみた

はじめに Ultra96V2 向けにI/Oをいろいろ拡張するボードを、KiCAD にて設計し、Fusion PCBさんの 4.9ドルの基板製造サービスで作成してみました。 まだ現在進行形な部分はありますが、MIPI-CSI が動作確認できましたので、こちらで少し記事にしておきたいと…

ZYBO-Z7 で Raspberry Pi Camera Module V2 (Sony IMX219) を 1000fpsで使うサンプル (復刻記事)

おしらせ 本記事は以前Qrunchで書いていた記事の復刻です。 はじめに 基本的には下記のブログ記事の続きなのですが、QrunchがMarkdownで書けて書きやすいのでこちらに書かせていただきます。 Zybo Z7 への Raspberry Pi Camera V2 接続(MIPI CSI-2受信) Zybo…

ARMの割り込みPL390(GIC)設定やHOS-V4aのZynq対応メモ(復刻記事)

おしらせ 本記事は以前Qrunchで書いていた記事の復刻です。 はじめに 前回の記事で、XILINX社の Zynq-7000 の Cortex-A9 や ZynqMP の Cortex-R5 用に HOS-V4a(ITRON4.0仕様 RTOS) を移植しましたが、その際に両社に共通の割り込みコントローラ(GIC)であるPL…

HOS-V4a(ITRON仕様 RTOS)をUltra96V2(ZynqMP)のCortex-R5で動かす(復刻記事)

おしらせ 以前Qrunchで書いていた記事の復刻です。 はじめに HOSは私がかなり昔に作って、長らくメンテすることもなく埋もれさせてしまっていたITRON4.0仕様のRealTime OS ですが、Zynq のベアメタルプログラミングにのキャッチアップにちょうどいいのではな…

画像の量子化とディザに関する考察(復刻記事)

おしらせ 以前Qrunchで書いていた記事の復刻です。 画像の量子化とディザに関する考察 先日の記事の最後で入力データの量子化をいくつかのパターンで実験しましたが、視覚的にどう見えるかを少し実験してみました。 というのは、実際問題1bitまで量子化して…

Fully Binary Neural Network への変調入力の評価結果(復刻記事)

おしらせ 以前Qrunchで書いていた記事の復刻です。 CIFAR-10 の CNN でのバイナリ化検討 CIFAR-10 の CNNを利用して、入力のバイナリ化による影響を評価し、完全なバイナリネット(Fully Binary Network) の可能性を探っております。 以前、Qiitaの方にも記事…

uioやudmabufにアクセスするC++のクラスを作ってみる(復刻記事)

おしらせ 以前Qrunchで書いていた記事の復刻です。 はじめに Xilinx社の Zynq や ZynqMP などのPL(プログラマブルロジック)付きのSoCでプログラミングする場合、PL部分にある自分で作った回路のレジスタにアクセスしたり、メモリ領域を回路からのメモリアク…

ベイズの定理の私的覚え方(復刻記事)

おしらせ 以前Qrunchで書いていた記事の復刻です。 ベイズの定理 ベイズの定理として知られる の式の私的覚え方。 集合論的な絵にしてしまう 下記のような絵(ベン図)をで考えてしまう。 ここで、全体(a+b+c+d)の中のある値がXに属する確率は であり、Yに属す…