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
0
23
RFSoCでPynqを試す
Xilinx の RFSoC をつかって RF の実験をする。その時、Pynq が使える。さらに Jupyter を使えってリアルタイムの情報を得ることもできる。
りょうす
July 18, 2024
Tweet
Share
More Decks by りょうす
See All by りょうす
OpenMPW 2023 技術ぽい理解
ryos36
0
360
Other Decks in Programming
See All in Programming
大公開!iOS開発の悩みトップ5 〜iOSDC Japan 2024〜
ryunakayama
0
180
フロントエンドのテストからアクセシビリティをしれっと広めていく
nano72mkn
3
700
ウォンテッドリーにおけるモバイルアプリ開発 / iOSDC Japan 2024 Sponsor Session
kubode
0
220
2024 컴포즈 정원사
jisungbin
0
140
Ruby Parser progress report 2024
yui_knk
2
180
Swiftで高速フーリエ変換してオーディオビジュアライザーを作る / iOSDC Japan 2024 Day1 Track D
kyome22
2
460
iOSDC 2024 SMBファイル共有をSwiftで実装する
kishikawakatsumi
1
110
Regular Expressions, REXML, Automata Learning
makenowjust
0
180
マルチモジュールにおけるテスト最適化
fxwx23
0
110
これからの時代の新標準!SwiftTestingへの移行とトラブルシューティング
uetyo
0
440
状態管理ライブラリZustandの導入から運用まで
k1tikurisu
2
240
dRuby 入門者によるあなたの身近にあるdRuby 入門
makicamel
4
340
Featured
See All Featured
For a Future-Friendly Web
brad_frost
173
9.3k
GitHub's CSS Performance
jonrohan
1029
450k
Build your cross-platform service in a week with App Engine
jlugia
228
18k
The Illustrated Children's Guide to Kubernetes
chrisshort
46
48k
A Tale of Four Properties
chriscoyier
155
22k
Fantastic passwords and where to find them - at NoRuKo
philnash
47
2.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
33
1.7k
Designing for Performance
lara
604
68k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
103
47k
Writing Fast Ruby
sferik
623
60k
Into the Great Unknown - MozCon
thekraken
28
1.4k
Building Applications with DynamoDB
mza
89
5.9k
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 関係に手を出していく、、、かも
おしまい