Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RFSoCでPynqを試す
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
りょうす
July 18, 2024
Programming
0
280
RFSoCでPynqを試す
Xilinx の RFSoC をつかって RF の実験をする。その時、Pynq が使える。さらに Jupyter を使えってリアルタイムの情報を得ることもできる。
りょうす
July 18, 2024
Tweet
Share
More Decks by りょうす
See All by りょうす
OpenMPW 2023 技術ぽい理解
ryos36
0
570
Other Decks in Programming
See All in Programming
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
380
ぼくの開発環境2026
yuzneri
0
240
CSC307 Lecture 09
javiergs
PRO
1
840
Implementation Patterns
denyspoltorak
0
290
CSC307 Lecture 01
javiergs
PRO
0
690
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
740
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
100
CSC307 Lecture 08
javiergs
PRO
0
670
Patterns of Patterns
denyspoltorak
0
1.4k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
110
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
66
Speed Design
sergeychernyshev
33
1.5k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
How to build a perfect <img>
jonoalderson
1
4.9k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
310
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
Transcript
RFSoC で PYNQ りょうす
自己紹介 • りょうす • @ryos36 著者です
PYNQ と いえば... • あれは 2017 年の事だった
PYNQ を使う モチベーション • Python で簡単に FPGA を使いたい
RFSoC とは? • 高速多入力のAD,DA変換器を搭載 した大容量のFPGA • MIMO変復調装置、ビームフォーミング • 5G、Beyond 5Gなどの基地局、端末装置
• レーダー信号処理装置 • 量子コンピュータのマイクロ波制御など
RFSoC ZCU111 • 200万円くらい?
PYNQ が使えるらしい • https://github.com/Xilinx/RFSoC-PYNQ • 対応しているボード • RFSoC2x2 • RFSoC4x2
• ZCU111 • ZCU208 ZCU111 のディレクトリはある がほとんど空っぽ たとえば ZCU208 なら base というディレクトリがあって make を 実行するとどうも bitstream ができあがるらしい。
しかたがないので ZCU104 の PYNQ を 参考にちょっとやってみる • 参考にしたサイト • https://blog.n-hassy.info/2021/05/vitis-hls-to-fpga-4/
• というよりほぼそのままやってみている
SDカードを用意 • PYNQ イメージをダウンロードしマイクロ SD カードへ • Linux がたちあがるのでらくちん •
Ethernet でつなげていれば bitstream をコピーするだけで使える
USB Ether SD カード
Linux から接続 (cu コマンド!!) bitstream hwh ファイル 画像ファイル Jupyter のソース
Jupyter なのですごく簡単 design_1.bit : ビットストリーム design_1.hwh: ハードウェア情報
おおもとは C のソース(Vitis-HLS使う)
ソースコード void gaussian(AXI_STREAM &in_strm, AXI_STREAM &out_strm) { // 入出力のインターフェースを定義 #pragma
HLS INTERFACE s_axilite port=return bundle=CONTROL_BUS #pragma HLS INTERFACE axis port=in_strm #pragma HLS INTERFACE axis port=out_strm // line buffer と window を定義して,パーティションする int linebuf[d-1][width]; int window[d][d]; #pragma HLS ARRAY_PARTITION variable=linebuf complete dim=1 #pragma HLS ARRAY_PARTITION variable=window complete dim=0 AP_AXIS pix; // width * r + r + 1 個入力を読んで,linebuf と window を初期化する buf_x1: for (int px = width - r - 1; px < width; px++) { #pragma HLS PIPELINE II=1 pix = in_strm.read(); linebuf[r-1][px] = pix.data; } https://github.com/hashi0203/Vitis_HLS_Gaussian/ から AXI Stream を使用 している
ポイントはAXI-DMA(VDMAじゃない) ありがとう 「FPGAの部屋」!!情報たすかります
パケットの最後をラわすのに last を使う AP_AXIS val; val.keep = pix.keep; val.strb =
pix.strb; val.last = 0; // 最後のビットの時だけ 1 で,その他の時は 0 にする https://github.com/hashi0203/Vitis_HLS_Gaussian/ から VDMAじゃない!! user は使わない!!
しかし、このままだとRFSoCぽくない • いくつか Xilinx から有益な情報が公開されている • PYNQ RFSoC Workshop(https://github.com/Xilinx/PYNQ_RFSOC_Workshop)
そのなかの rfsoc_qpsk をトライ • ZCU111 用のソースがあるので合成可能 • make zcu111 でビットストリームが出来る
• 出来た後に design をすべて消すので注意 • boards/ZCU111/rfsoc_qpsk に移って make block_design https://github.com/strath-sdr/rfsoc_qpsk
実は pip3 でインストールするだけで使える # pip3 install https://github.com/strath-sdr/rfsoc_qpsk/releases/download/v1.4.5/rfsoc_qpsk.tar.gz python -m rfsoc_qpsk
install これも Jupyter だから 簡単!!
実機の準備 ループバックさせる
実行するとコンソールが現れる voila-dashboards という ツールを使っている リアルタイム に表示 QPSK
なんとなく RF ぽいがめんも出る
線をはずすと通信してないことがわかる
折角だから block_design もみる RF Data Converter が 重要
I (16) Q (16) 送信用:32
設定するだけ で使える!!
他のオーバレイ それにしても RFSoC 高価過ぎる!! Spectrum Analyzer RFSoC OFDM Demonstrator
ADALM-PLUTO • ソフトウェア無線アクティブ・ラーニング・モジュール • 電波法等の法規制を確認・遵守の上、ご使用ください。 https://www.analog.com/jp/design- center/evaluation-hardware-and- software/evaluation-boards-kits/adalm- pluto.html より
Zynq Z-7010 + AD9363 https://s-taka.org/plutosdr-tcxo-upgrade/ さんのサイトから
ADALM-PLUTO の機能 • 325 MHz ~ 3.8 GHz の RF
周波数帯に対応 • 最大 20 MHz の瞬時帯域幅 • 可変レートの 12 ビット ADC と DAC • 半二重または全二重のトランスミッタとレシーバー(1つずつ) • MATLAB®、Simulink® をサポート • GNU 無線シンク・ブロックとソース・ブロック https://www.analog.com/jp/design-center/evaluation- hardware-and-software/evaluation-boards-kits/adalm- pluto.html#eb-overview から引用
PyADI-IIO というのが使えるらしい https://github.com/analogdevicesinc/pyadi-iio/
今後、、、 • いろいろ買ってみたので SDR 関係に手を出していく、、、かも
おしまい