Open2

仕事:RFSoC

nikuniku

https://github.com/Xilinx/PYNQ_RFSOC_Workshop/blob/master/notebooks/02_pynq_and_data_converter.ipynb
を読んでいく

Exploring the RF Data Converters: a QPSK Transceiverを読む

とくになし

RF data converter refresher を読む

とくになし、でも図は良さそう

Import libraries を読む

xrfdc:rfデータ・コンバータ構成用
ipywidgets:インタラクティブコントロール作成用
numpy:数値解析用
rfsoc_qpsk:QPSK設計用

import xrfdc
import ipywidgets as ipw
import numpy as np

from rfsoc_qpsk.qpsk_overlay import QpskOverlay

Download the QPSK bitstream を読む

ビットストリームダウンロード時にRFクロックを初期化しないようにOverlay生成

ol = QpskOverlay(init_rf_clks=False)
nikuniku

Inspecting the transmit path を読む

Inspectの意味は中を見るだとか、注意深く観察するだとか
つまりは、RF SoCのtransmit pathをより良い理解のために詳しく内部構成含めて見ていこう的な意味だと考えられる

「タップオフ」とは、有線放送設備の線路に送られた電磁波を分岐する機器とからしいので、多分信号をプローブさせるために分岐させるとかそういうことであろう

多分このOverlayの内部で使用されているIPにQPSK transmit IPという物があり、その信号経路に
Random symbol generation
Pulse shaping
Interpolation
という3つの構成要素が含まれているという図がある。

でタップオフはDMAに接続している矢印のことで、関数名まで図に記載されている

まずは、QPSK symbolを時間領域でプロットするらしいが
QPSKもsymbolも何のことやらさっぱりだ

Geminiによると「QPSK(Quadrature Phase-Shift Keying)とは、搬送波の位相を4つの値に変化させてデジタル情報を付加する変調方式です。1回の変調で「00」「01」「10」「11」の4値(2ビット)の情報を伝送することができます」とのこと

Geminiに一般的なシンボルの意味を聞くと「シンボルとは、抽象的な思想や観念、事物などを、具体的な事物によって理解しやすい形で表すこと、またはその表現に用いられたものを指します。表象、記号とも呼ばれます。」

すいそくするに00か01か10か11のうちのどれかをシンボルといっていると推測できるが、確定情報を得たい

もう少し検索して
https://www.mk-laboratory.com/2021/04/14/symbol-rate/#:~:text=シンボルレートとは、単位,るビット数である。
によると

「デジタル変調において、シンボルとは一つの状態が続いている期間(時間)のことを表す。シンボルレートとは、単位時間あたりに変化するシンボル数であり、単位は[symbol/s]となる。また、シンボルレートはボーレート[Baud]、変調レートとも呼ばれる。」
とのこと

まあ、わかった気がする

ol.plot_group(
  'tx_symbol',            # Plot group ID
  ['time-binary'],        # List of plot types chosen from:
                          #   ['time','time-binary','frequency','constellation']
  ol.qpsk_tx.get_symbols, # Function to grab a buffer of samples
  500                     # Sample frequency (Hz)
)

RFSoC上で実行すると

ol.plot_group('tx_shaped', ['time', 'frequency'], ol.qpsk_tx.get_shaped_time, 4000,
              get_freq_data=ol.qpsk_tx.get_shaped_fft)

こんな感じのプロットが得られた。
推測するに
Plot group ID : 任意のプロット名
List of plot types chosen from: ['time','time-binary','frequency','constellation']はプロットタイプを指定する感じ、時間領域の波形ならtime, 周波数領域の波形ならfrequency, シンボルの波形ならtime-binary
Function to grab a buffer of samples:はある一定量のサンプリングごとに呼び出される関数
Sample frequency (Hz)は正直わからない、普通に考えればサンプリング周波数だろうけど、上の関数が呼び出されるサンプル数かもしれないし、

ちなみにサイトの図によると
ol.qpsk_tx.get_symbols()は QPSK symbol generationのパターンを出力しそうだし
ol.qpsk_tx.get_shaped_fft()はInterpolation filter chainの周波数領域の波形を出力しそうだし
ol.qpsk_tx.get_shaped_time()はInterpolation filter chainの時間領域の波形を出力しそうである