軟體收音機-原理篇
我打造了一部軟體收音機,從硬體到軟體,我試著在這裡寫下打造這部數位收音機的過程。
雖然題目是是收音機原理,但我試試看不要用數學能否清楚說明,畢竟世間萬物的運作並沒有數學公式寫在上面,而且更重要的是,我數學並不好~
無線電廣播是利用高頻率的電流變化能夠將能量傳遞於遠方的特性所設計的一種訊息傳遞方式。為了將音頻訊號能夠傳遞到遠方,所以會將音頻訊號與高頻信號相互混合,於是低頻的訊息就能透過高頻的訊號傳送出去。這種高低頻訊號相互混合的方法稱作「混波」,而乘載著訊息的高頻訊號就稱作「載波」。
自從發展無線電廣播以來,人們不斷嘗試各種頻率的載波來發送訊號,隨著技術進步的時程演進,無線電廣播的載波頻率也不斷向上探索,而且乘載的訊息也不僅僅是廣播節目。時至今日的無線網路以及移動通訊技術無所不在,為生活帶來便利的同時,我們也可以回顧一下過往的技術所帶來的樂趣。
隨著各式各樣的廣播頻率的應用,人們意識無線電廣播的使用需要被管理,因此先有了無線電頻率的劃分管理。以頻率高低來劃分頻道,例如我們熟悉的AM廣播屬於LF(低頻)範圍,FM屬於VHF(甚高頻)等等。
無線電頻率劃分參考資料:https://zh.wikipedia.org/wiki/%E6%97%A0%E7%BA%BF%E7%94%B5%E9%A2%91%E8%B0%B1
在各種頻率中,短波廣播是一種可長距離播送的廣播技術,恰好利用了大氣層上方的電離層與底面之間形成的波導空間讓廣播信號突破直線距離與地球弧度的限制,讓遠距離的收聽用戶也能收到廣播。
高頻訊號能夠傳遞訊息至遠方,但如何接收以及處理訊息變成另一種難題。
理論上將高頻信號接收之後,利用帶通濾波器鎖定頻道的頻率,高頻信號可因而過濾而剩下的就是乘載的低頻訊息。但由於放送至空間中的高頻訊號十分微弱加上受限於電子零件的非理想特性,因此上述過程無法被簡單實作出來。
如使用混波技術則可以使用與高頻載波相同的訊號將載波訊號抵銷而取得低頻訊號,是一種十分直覺的信號處理方式,但是如果高頻訊號太過於微弱,所謂的訊號雜訊比(S/N)太低,則混波之後可能輸出訊號也會落於雜訊大海之中而無法取得。
在二次大戰的時候發展出的收音機類比技術中有一項稱做「超外差」的技術,該技術是將高頻信號加以混波之後降成中頻範圍的信號,再將其解調之後取得音頻信號。雖然比起直接混波會增加硬體成本,但是區別頻道(選擇性)與處理微弱訊號的能力(靈敏度)大幅增加。
超外差接收機專利:https://patents.google.com/patent/US1941069A/
類比電路由於原件非理想特性的緣故因而無法將信號順利過濾,而數位信號處理在理論上可以做到高階數的濾波效果,因此前端的類比信號電路的成本可以轉嫁到後端信號處理的程式之中。
在處理訊號的時候會用不同角度看待訊號,將訊號以數軸圖形方式表達來說,如果橫軸代表時間縱軸是訊號隨時間變化情形,我們稱這個是「時域」,如果橫軸的頻率縱軸是訊號依頻率不同的分佈來表達,這個稱作「頻域」。下面用圖形方式解釋一個複雜波形可能可以是不同成分的信號所組成。
什麼是AM
有了上述的概念之後,這裡簡介一下AM廣播。所謂的AM(調幅)就是「振幅調變」的意思。因為為了讓訊息能夠傳遞至遠方,所以我們需要一個高頻的載波,接著將欲傳遞遠方的音頻訊號用來控制這個載波的振幅,達到「調變」的目的。如此一來這個音頻訊號就會被載波「載」到遠方去了。下圖描述AM廣播時的各階段訊號,由下往上就是訊號的發送過程,反之如果能直覺的由上往下處理訊號,那就是接收機的基本原理了。
舉例來說,有一個1000KHz的載波,有另一個談話節目的錄音,利用這個節目錄音的聲音變化用來控制載波的振幅變化,如此這個節目內容就會被載波傳送出去,如果以頻譜的角度來觀察這個1000KHz附近的頻率分布會得到下面的頻譜圖。圖中顯示除了載波存在以外,在載波兩側就是廣播內容。
數位時代處理訊號的方式截然不同
到了資訊時代之後電腦運算的能力大幅提升,所以數位信號處理的技術變得很常見。因此就開始有人嘗試上述收音機不需要中頻的處理過程,重新審視將高頻訊號直接調變出音頻信號的作法是否可行?早年因為電子零件的技術限制,無法直接處理高頻信號,到如今零件技術已經成熟,如果加上足夠運算力的電腦進行數位信號處理的話,是否能達成上述理想?
在電腦處理速度越來越快的今日,許多早先只能在理論上證明可行的方法也能一一實現了,例如應用電腦程式計算的快速傅立葉轉換(FFT),不只能夠用電腦快速計算甚至是達到即時處理的速度。所謂的傅立葉轉換即是數學中為了分析週期函數的組成成分的工具,這是一種遠早在電子時代之前就已經出現的數學工具。現今搭配電腦程式的即時運算可以用在分析高頻訊號中的組成成分,也就是不同頻道上的無線電訊號或是廣播訊號。
為了要能夠直接觀察到高頻訊號在所處空間中的分佈情形,可以結合上述「頻域」的概念以及「快速傅立葉轉換」的技術,直接將接收到的無線電訊號轉換成以頻率為橫軸的頻域數軸圖形,如此便可以直覺方式觀察高頻訊號的分佈情形。進一步說,可以再將觀察到的高頻信號加以處理後,以數學方法將低頻訊號取出便是達到收音機的功能了。
以簡單硬體接收高頻訊號並且用電腦程式加以分析取出音頻訊息我們稱做軟體收音機
有一些業餘無線電玩家會自己打造接收機,玩家之間也會互相交換設計與製作心得,在網路時代的現今人人都可以輕易地搜尋到這些資訊。早年以類比元件打造收音機必須要有精密的計算以及複雜的調整,雖然現今設計聲音機多半都被IC技術整合成一顆IC,玩家卻寧可保持從頭打造的興趣,使得業餘無線電不是因為設備昂貴不然就是製作複雜而玩家不多。
隨著電腦程式運算速度越來越快,業餘無線電玩家的嘗試也更多元,一種非常精簡的架構被發表出來。利用個人電腦都有的音效卡輸入,將降頻後的頻道訊息讓電腦即時輸入,再藉由頻率分析軟體的相關演算法將廣播頻道取出來。目前的軟體收音機軟體設計都採取頻譜直覺式操作,以滑鼠框選要取出的頻道訊號,再選擇要解調的方式,就可以在電腦上聽到無線電廣播或是業餘通訊的電台聲音。
這就是以電腦科技的運算力來解析廣播的訊號,直接將高頻信號降頻至音頻範圍的「零中頻」技術。
因為相關資訊已經公開在網路,所以自己動手做的軟體收音機變得十分簡單,首先可以看到目前主流自製軟體收音機都是源自於下面這個專利:
利用電子開關元件製成簡單的混波器:https://patents.google.com/patent/US6230000B1/
這份專利闡述的是利用四路開關電路依序切換,因為是四路開關等時間切換,因此這同於將輸入的高頻訊號以四倍頻的訊號切割成四種相位。後端再以運算放大器將四組不同相位分成0度與180度以及90度與270度兩組,最終得到0度與90度的輸出,這樣一來就可以得到高頻訊號與本地振盪四倍頻訊號的混波結果並且以IQ調變方式輸出。
電腦音效卡的輸入取樣頻率最高在48KHz,這表示輸入的頻寬落在24KHz,這略高於人類聽覺的上限,所以這個軟體聲音機架構是將高頻訊號以四倍於載波頻率的混波方式,將訊號降頻至24KHz範圍內,再利用數位信號處理軟體將講要聽到的頻道取出。舉例來說,如果想要聽到1000KHz頻道的廣播,則需要在本地振盪產生4000KHz的開關時脈,驅動開關依序開關,則1000KHz載波上的音頻訊號(0~20KHz)就會被降至音效卡24KHz的頻寬範圍內,程式只要將所需的頻寬訊號濾波取出之後就可以聽到廣播內容了。
在軟體方面,可以利用現成程式庫將電腦音源輸入的音頻資料加以處理,再以FFT方式取得音頻訊號的頻譜,接著再將想要取得的頻道訊號加以選擇,最後把處理好的頻譜反向回來時域訊號就可以聽到廣播內容了。
我嘗試用最簡單的硬軟體來建構軟體收音機,初步有一些成果。接下來的連載文章會詳細討論上述軟體收音機硬、軟體的製作方法。