仕事:RFSoC
を読んでいく
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)
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のうちのどれかをシンボルといっていると推測できるが、確定情報を得たい
もう少し検索して
によると「デジタル変調において、シンボルとは一つの状態が続いている期間(時間)のことを表す。シンボルレートとは、単位時間あたりに変化するシンボル数であり、単位は[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の時間領域の波形を出力しそうである