IF Sampling 原理
在介紹 RTL-SDR 的文章中,提到 RTL-SDR 是將 RF 訊號 down-convert 到中頻 (IF,intermediate frequency),再對中頻的訊號取樣。我有一個疑惑:對中頻訊號的取樣和對基頻訊號的取樣不一樣,並不限於一般的 Nyquist sampling theorem,那應該滿足什麼條件?這篇文章就來講解對中頻訊號取樣的原理。
原理
在 Ziemer 和 Tranter 的教科書 Principles of Communications 中提到,對帶通訊號取樣,要避免 aliasing 須滿足以下條件(作者稱為 uniform sampling theorem for bandpass spectra):
如果訊號的 RF 頻寬為 $W$ 且頻率上限為 $f_u$,則取樣率可以為 $2f_u / m$,其中 $m = \lfloor f_u / W\rfloor$。更高的取樣率也不保證 aliasing-free,除非高於 $2f_u$。
這稱為 undersampling 或是 sub-sampling。假設經過取樣後,並無 aliasing 的情況,且帶通訊號成分在 $f_c - W/2 = f_u - W$ 到 $f_c + W/2 = f_u$ 之間。還記得取樣後的頻譜,等於原本頻譜以 $f_s$ 為週期的複製貼上 (shifted replica),所以只要知道 $0$ ~ $f_s / 2$ 之間的頻譜情形,就可以得知是否產生 aliasing。
現在,假設最靠近 DC 的 replica 位於 $f > 0$ 的區間 $\left[-m f_s + f_u - W, -m f_s + f_u\right]$,即是向左位移 $mf_s$ 的 replica。為了必免在 DC 發生 aliasing,
$$
\begin{align}
-m f_s + f_u - W &\geq 0\\[10pt]
f_s &\leq \frac{f_u - W}{m}
\end{align}
$$
也為了避免在 $f = f_s/2$ 附近造成 aliasing,
$$
\begin{align}
-m f_s + f_u &\leq f_s / 2\\[10pt]
f_s &\geq \frac{2f_u}{2m + 1}
\end{align}
$$
且 $W \leq f_s / 2$。滿足這兩個不等式的 $f_s$ 就是合格的取樣率。注意到如果滿足不等式的 $f_s$ 存在,則
$$
\frac{f_u - W}{m} \geq \frac{2f_u}{2m + 1}
$$
整理得到
$$
\begin{align}
W \leq \frac{f_u}{2m + 1} &\Longrightarrow 2m + 1 \leq \frac{f_u}{W}\\[10pt]
&\Longrightarrow 2m + 1 \leq \lfloor \frac{f_u}{W}\rfloor
\end{align}
$$
令 $n = \lfloor \frac{f_u}{W}\rfloor$,可以得到取樣率的最低合格範圍:
$$
\begin{align}
\frac{2f_u}{n} \leq f_s \leq \frac{2(f_u - W)}{n - 1}
\end{align}
$$
實際上,上式不一定要取最大的 $2m + 1$,因此可以取 $\left[1, n\right]$ 之間的任意奇數,得到的區間都是合格的取樣率範圍。
上面討論的是沒有發生 spectrum inversion 的情況,不過 spectrum inversion 的思路也是類似的。IF sampling 得到的訊號,其頻率成分實際上已經轉換到相對低頻,因此可以用 DDC 再將訊號轉換到基頻,結束 down-conversion 的旅程。回顧 RTL-SDR 的例子,取樣率為 2.56 M sa/s,最大 RF 頻寬為 $W$ = 1.28 MHz,但是以最高頻率 $f_u = f_c + W / 2 = 3.57 + 0.64 = 4.21$ MHz 來說,這個取樣率太低,因此要嘛調整取樣率,要嘛限制訊號頻寬。
模擬
我們以 MATLAB 模擬來驗證上述的說法。假設目標訊號為 1000 Hz 的弦波乘上寬度為 10 ms 的方波,對應到頻域就是主瓣寬度為 200 Hz 的 sinc 函數。在這個例子中,$f_u$ = 1100 Hz,$W$ = 200 Hz,$n = \lfloor f_u / W\rfloor$ = 5,對應到的取樣率範圍為 440 ~ 450 Hz。我們取 442.5 Hz 作為取樣率。(不要問我為什麼取這個數字,問就是產出來的圖比較好看。)
模擬的程式碼如下,模擬結果如圖A所示。圖A上半部為取樣前的頻譜,下半部為取樣後頻譜,可以看到取樣後的頻譜基本上是沒有 aliasing 的(忽略 sinc 的旁瓣)。程式中對取樣訊號作 upsample 是為了呈現取樣後頻譜以 $f_s$ 為週期重複的特性。
1 | % This program simulates sub-sampling. |
結語
一般教科書提及取樣定理,都是指對基頻訊號的取樣,對帶通訊號取樣的理論則是草草帶過。本文對帶通訊號的取樣原理提出解釋,並且以 MATLAB 模擬證實該理論。實際應用上,由於 ADC 時脈的增加,在一些硬體上高達幾十 G sa/s,因此也有不少系統是採用 RF 直接取樣,一個 ADC 就有 mixer + sampler 的功能,這時候本文的解說就可以派上用場。
參考資料
[1] Wikipedia, “Undersampling”. Available: https://en.wikipedia.org/wiki/Undersampling
[2] electronics.stackexchange.com (forum), “ADC Input Frequency Bandwidth and Sampling Frequency”. Available: https://electronics.stackexchange.com/questions/601248/adc-input-frequency-bandwidth-and-sampling-frequency