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
りょうす
July 18, 2024
Programming
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RFSoCでPynqを試す
Xilinx の RFSoC をつかって RF の実験をする。その時、Pynq が使える。さらに Jupyter を使えってリアルタイムの情報を得ることもできる。
りょうす
July 18, 2024
More Decks by りょうす
See All by りょうす
OpenMPW 2023 技術ぽい理解
ryos36
0
610
Other Decks in Programming
See All in Programming
源内ハンズオン概要編
hideg
0
130
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
470
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
490
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
590
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
210
Go 1.27 における memory allocation の高速化
andpad
0
100
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
540
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.9k
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
450
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
370
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
460
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
200
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
200
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Thoughts on Productivity
jonyablonski
76
5.3k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
360
GraphQLとの向き合い方2022年版
quramy
50
15k
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 関係に手を出していく、、、かも
おしまい