# <center>0508 通訊實驗</center> --- ## <center>AM訊號的解碼</center> 這禮拜主要是在GNU Radio上實作AM訊號的解碼,分成四個小部份去進行實作: * 1.[觀察 AM 訊號](#title1) * 2.[調整中心頻率](#title2) * 3.[ AM 訊號解碼](#title3) * 4.[自己做訊號解碼](#title4) ### <center id="title1">觀察 AM 訊號</center> 這次實驗我們使用的AM訊號,是一段由California State University 的 Sharlene Katz 教授網頁所錄製的AM訊號,此檔案的錄製的中心頻率為 710 KHz,而抽樣速度為 256 KHz。 要觀察AM訊號最簡單的辦法,便是直接將訊號接到示波器上,但是本次觀察為純軟體,所以需要一個 Throttle 元件限制速度,才不會占用過多 CPU 資源。 <center> 取用 File Source, Throttle, 以及 QT GUI Frequency Sink 三個元件,連接如下圖所示:<br> <br> 各元件的參數如下: </center> 1. samp_rate: 256e3,這是錄製信號的抽樣速度 2. File Source: File 設定成下載檔案的路徑 3. QT GUI Frequency SInk : Grid: Yes Autoscale: Yes Average: Medium <center> 執行後結果如下<br> <br> </center> 從訊號的頻譜中觀察,這個訊號檔案可以觀察到頻率範圍為何? Ans : 710kHz +- 128kHz 相隔的兩個電台頻道,頻率上大概差多少? Ans : 80kHz 每個頻道的頻寬大約多少? Ans : 20kHz ### <center id="title2">調整中心頻率</center> 目前這個檔案,在頻率 0 的地方,實際上代表的頻率是 710 KHz,而在解碼某一個電台頻道之前,我們要以該頻道的頻率為中心,做一個低通濾波器,以便得到該頻道的訊號,同時濾除掉其他頻道的訊號。 一般常見的作法,會先將訊號乘上 $e$<sup>$j2\pi ft$</sup>,這等於是將每個頻率成份都加上 $f$ Hz。往右移 $f$ Hz 後,這時頻率 0 的地方,實際上代表的頻率應該是 710K - $f$ Hz,假設這就是我們要觀察的中心頻率 $f_c$,那麼 710K - $f$ Hz 要等於 $f_c$,也就是說,$f$ Hz 等於 710K - $f_c$ Hz <center> 我們可以建構以下的系統來觀察這個結果:<br> <br> 各元件的參數如下: </center> 1. Signal Source : Frequency = 710e3-$f_c$ 2. QT GUI Range ($f_c$) : Default Vaule : 710e3 Start : 600e3 Stop : 820e3 Step : 1e3 存檔執行之後,試著將頻率調為 680K,可以得到下面的圖形,此時 680K 已經變成新的頻率中心點了。(目前最高點仍是 710K)<br> <br> ### <center id="title3">AM訊號解碼</center> 把頻道調到中心點之後,接著用一個低通濾波器,就可以把想要的訊號保留住,而把其他電台的訊號濾除掉。這時的訊號仍是 AM 調變過的訊號,因此只要使用 AM 的解碼模塊,就可以將訊號解碼了。 <center> 將上一個系統擴充如下圖:<br> <br> 這邊我們加了幾個元件 : </center> 1. Low Pass Filter(低通濾波器) : Cutoff Freq : 5e3 Transtion Width : 100, 2. AM Demod (進行 AM 的解碼) Channel Rate : 256e3 Audio Decimation : 8,也就是將解碼出來的訊號,其抽樣速度改成 256K/8 = 32K。 3. QT GUI Range (gain) : Default Vaule : 100e-6 Start : 0 Stop : 2 Step : 100e-6 因此接下來就可以透過 Audio Sink 進行播放,不過播放之前,我們先乘上一個常數,以便用來調整播放的音量,而所乘的常數**盡量小一點,不然會被嚇到**,使用 QT GUI Range,便於在執行時進行調整。注意這邊 Audio Sink 的 samp_rate 要設定成 32K。 <center> 如果沒有接錯的話,存檔執行之後,就可以調整電台的頻道及播放的音量了。<br> <br> </center> 實際上,上面調整頻道的過程:把訊號和一個 Signal Source 做相乘,然後再經過低通濾波,實在太常使用了,因此 GNU Radio 提供了一個 Frequency Xlating FIR Filter 模組來做這件事。這個模組就是把訊號原來的中心點移到新的頻率,並且以新的頻率為中心做低通濾波,來保留所要的頻道訊號。 <center> 將系統改成如下圖所示:<br> <br> 其中 Frequency Xlating FIR Filter 模組的參數如下 : </center> 1. Taps : firdes.low_pass(1, 256e3, 5000, 100):表示增益為 1,抽樣速度為 256K,保留頻帶到 5K,過濾帶為 100。 2. Center Frequency : $f_c$ -710e3:原來中心 0 的地方為 710e3,現在則以 $f_c$ 為中心。 使用 Frequency Xlating FIR Filter 可以讓系統看起來更清爽,不過缺點是調整過頻率而還沒有濾波的中間訊號,沒有辦法拉出來用 Frequency Sink 來進行觀察。 ### <center id="title4">自己做訊號解碼</center> 我們剛才使用系統提供的 AM Demod 模組來解碼 AM 的訊號,但其實 AM 訊號很單純,它使用載波來傳送訊號,而載波的振幅變化,其實就是我們的訊號。了解這個原理之後,其實我們也可以自己來進行解碼。 解碼的方式,是先找到訊號的振幅,怎麼找呢?因為收到的訊號實際是複數值,因此只要求出其振幅就可以了,GNU Radio 中有一個模組叫做 Complex to Mag,就是用來找複數訊號的振幅,找出來的就是我們的訊號,接著可以將訊號的抽樣率降下來,以便送到 Audio Sink 播放。在播放之前,也可以先去掉訊號的直流成份,以及調整訊號的增益。 <center> 系統的架構如下 : <br> <br> </center> 存檔並執行之後,發現也可以將訊號解碼出來,不過解出來的訊號似乎沒有 AM Demod 解出來的訊號來得清晰。 ## <center>結論</center> 本次實驗學習到了如何將一個 AM 訊號進行解碼,從了解 AM 訊號開始,經過將中心頻率調整後,利用基礎的低通濾波器 + AM Demod 進行 AM 的解碼,進而簡化低通濾波器,運用 Frequency Xlating FIR Filter 模組,但是簡化的缺點便是無法觀察頻譜,而 AM Demod 也可以拆分成各個小部分進行解碼,但拆份過後的訊號並沒有比 AM Demod 來的清晰。過程中印象比較深刻的是一直被音量嚇到,一開始音量設定是800e-3,但是非常之大聲,所以直接下降到100e-6。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up