Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RFSoCでPynqを試す
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
りょうす
July 18, 2024
Programming
380
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
620
Other Decks in Programming
See All in Programming
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
AmebaブログはKMPから卒業します
kmars0605
0
190
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
残高管理から台帳サービスへの進化
artoy
1
200
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
150
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
430
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
6.1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Balancing Empowerment & Direction
lara
6
1.3k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
ラッコキーワード サービス紹介資料
rakko
1
5.3M
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Optimizing for Happiness
mojombo
378
71k
Prompt Engineering for Job Search
mfonobong
0
520
We Have a Design System, Now What?
morganepeng
55
8.4k
The Invisible Side of Design
smashingmag
301
52k
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 関係に手を出していく、、、かも
おしまい