LOGO

利用個人電腦作聲頻訊號處理分析儀
-- 以 DSP 軟體為基礎

No.38   1996 Mar.   p40~47,   by 林茂榮 Paul Lin, BV5OC, P.O. Box 23-575 Changhua



    最近翻開各種電子相關雜誌,最熱門的話題之一,應是數位訊號處理 (DSP, Digital Signal Processing),尤其是單晶數位訊號處理 IC 市場,正展開如火如荼的競爭,不論是從價位、技藝、研發工具、及應用等來看,數位訊號處理 IC 都算是已經達到成熟的階段,也因此新一代的無線電收發機裡,數位訊號處理功能,幾乎都是標準的配備;更因為運算速度的提昇,頻率不斷提高,數位訊號處理 IC 也直逼到收發機的中頻線路。

Fig 01
圖 1:以個人電腦為基礎,利用軟體的數位訊號處理運算,可以達到即時的聲頻頻譜分析儀功能。

    在電子方面,一些以個人電腦為基礎的應用,常留給人極深的印象,參看圖 1,你一定會以為那是類似接收機選台的輔助工具,又更像是一套校正輔助儀器的畫面,其實圖片所示是以個人電腦為基礎的一種典型應用,這是一部利用軟體做 DSP 數位訊號處理,可以提供在聲頻範圍內的頻譜分析儀。

    也許你會認為這並不怎麼稀奇,因為如果你曾有這方面的應用經驗,在市場上,很方便可以買到供這方面應用的個人電腦介面卡,不過這裡要特別強調的是,本製作的數位處理完全著重在軟體的功能,也就是利用一個簡單的電子介面線路及數位聲頻訊號處理軟體,就可以製成這部足供業餘無線電應用的聲頻頻譜分析儀。

    現在個人電腦很普遍,只要你有一部 IBM 相容個人電腦,不論是配備 EGA、VGA、或者是 HCG 顯示界面,都可以利用本文介紹的一個簡單的介面線路及數位聲頻訊號處理軟體,就可以製成這部聲頻頻譜分析儀。利用這個簡易的聲頻訊號頻譜分析儀,你在聲頻訊號方面的實驗或應用就會有如虎添翼般,幫你在業餘無線電通訊活動方面更加順利,尤其對數據通訊有興趣的朋友,更是方便。


在業餘無線電方面的應用

    其實有些測試儀器的應用,僅止於幻想力,這部聲頻訊號頻譜分析儀也是如此,聲頻頻譜分析儀在業餘無線電通訊方面的應用,當然是不勝枚舉,縈縈可數者包括有:

    收發機內的聲頻濾波器:可以量測收發機內使用的石英晶體濾波器的帶通特性,這包括有帶通曲線的裙帶特性 (SHAPE FACTOR),以及曲線頂端的漣波。只要在收發機的天線端製造一些雜訊,就可以在個人電腦螢幕上看到聲頻訊號頻譜的變化。這個簡單的測量,可以利用雜訊抓出它對帶通濾波器的帶通特性以及裙帶特性輪廓。

    檢查經由大氣傳導後所接收到的聲頻訊號:如果你對高頻電波傳導有興趣,或是已經有了電波監測設備,則可以利用這聲頻訊號頻譜分析儀,觀察所接收到的聲頻訊號與各種電離層狀況之間的關係。

    調整數據機及數據通訊介面線路:有許多藉由無線電傳播的數據通訊,都必須經由一個轉換介面,作為數據與類比之間的轉換,例如 AFSK 就是把數據中的 "1" 及 "0",轉換成相對應的不同頻率的聲頻訊號;RTTY 就是典型的例子。

    監測聲頻訊號的偏移及頻譜特性:有些老舊的收發機,一打開電源,它的頻率就不停地飄動,這就是以往操作業餘無線電通常會有的一道歷時約半小時左右的溫機程序。

    你可以找一 CW 訊號,或是標準時間標準頻率發播台,打開收發機電源時,調整聲頻訊號到頻譜分析儀顯示幕的中央,過了溫機時間,你就可以知道收發機在溫機時,頻率會有多大的飄移。我試過我的收發機,溫機期間的頻率誤差約有 200Hz。當然一些無線電頻譜內的數據通訊的聲頻訊號,才是發揮本機功能的對象。

    調諧指示器:對於 RTTY 無線電傳打字、PACKET 包封通訊、SSTV 慢速掃描電視等數據通訊的可靠與否,除了訊號本質外,調整正確的接收頻率是非常重要的;聲頻訊號頻譜分析儀,在監聽或是做數據通訊時,可以幫你很快地找到正確的頻率及分析訊號特性。


技術說明

    不論主題是哪一方面,凡是談到理論,總不免會覺得單調些,但是為了能貫徹及了解某項技藝,又不能不以理論為基礎。下面就以很扼要的方式,來談談有關聲頻訊號頻譜分析儀的背景理論。

    電子訊號可以利用各種不同的數學式子來表達。參看圖 2 是二階正弦波函數波形,共有三個訊號:一道水平直線,代表純直流;另兩道是頻率不同的純正弦波,這兩個正弦波有著同相位的關係,在個別週期內的頻率振幅及相位都是一致。圖 3 則是把圖 2 的三道訊號混合成一道訊號,在數學上,只要把圖 2 三道波形在 Y 軸上的振幅相加,就會變成如圖 3 所示的波形了。

Fig 02
圖 2:可以解釋數位訊號原理的三道訊號,頻率分別是 0、1、及 2Hz。

Fig 03
圖 3:圖 2 的合成訊號。

    為了簡化手續,我們可以在 X 軸上取適當的點數相加,像圖 3 就只取了六點,然後把這幾點在 Y 軸相加後的結果,以平滑的曲線連接起來,這就是波形的混合,很簡單,但是如果要把這程序顛倒過來,也就是要把圖 3 的波形分解開來,那可就要動些腦筋了。

    首先須要決定取樣點的數目,究竟要取多少點呢?根據數位訊號處理的基本理論,取樣頻率必須大於合成頻率兩倍 (包括) 以上,這是對純理論而言,實際的應用,取樣通常是以不低於 2.2 倍為原則。也許你會發現,教科書上有關取樣的理論,不是都說取樣頻率只要是合成頻率約兩倍就可以了嗎?但若依照這理論拿到實際應用上頭,並不太合理。

    我們來看看取樣頻率剛好是合成頻率兩倍的情況,圖 4 取樣頻率剛好是合成頻率約兩倍,可是取樣的結果,並沒有得到原來的波形,就算是避開各種陷阱,像是改變其相位,使取樣點不致落在振幅是零的位置,但是所得到的結果依然為零,還是看不出原來的波形。因此,實際應用上,取樣率都以 2.2 倍為底限。

Fig 04
圖 4:取樣率剛好是訊號頻率兩倍的情形。

    如果以數學眼光來看,根據圖 3 的波形,因為包含有兩個訊號的振幅與相位,以及直流偏移等五個未知參數,因此就必須要有五個獨立的方程式,才可以解出唯一的正確答案。當然,取樣點的間隔不一定要等距,取樣個數也不一定為方程式的個數。

    本製作主要是以業餘無線電應用為考量,因此介面板的取樣率設在 7200Hz,如果以取樣率是 2.2 倍計算,那麼這介面板的工作最高頻率就是 3272Hz (7200 / 2.2),針對高頻的業餘無線電通訊活動而言,不論是話務或是數據通訊,聲頻部份的頻率都在 3KHz 以下,因此本製作中所設定的取樣率是合理的。


電路工作原理

    這簡單的電子介面,是以每秒 7200 次的取樣率,對輸入的聲頻訊號振幅做取樣,取樣後的值,利用串列傳輸的方式,送到個人電腦的串列介面埠 (傳輸率 115.2kbits/s),然後個人電腦以極快速的運算能力,把這些數值做「傅利葉展開」 (FFT) 運算,轉換成幾乎可以說是即時 (Real Time) 而且連續的振幅頻譜,並把它顯示在個人電腦的螢幕上。這樣所得到的頻率精確度是 (7200 / N)Hz / 每一單位之頻譜線。這裡 N 是指做傅利葉展開計算時的取樣數目,例如取樣的 N 值是 720 的話,則頻率的精確度就是 10Hz / 每一單位之頻譜線,用白一點的話來說,就是指最大解析度。


介面電路說明

    這裡介紹的 Sigma-Delta 數位調變器介面,主要是將類比訊號轉換成一連串之串列脈衝,它的等效功能,就相當於類比數位轉換器加上並列串列轉換器。緊接著是一數位濾波器及移位暫存器,將資料依序送到個人電腦的串列介面埠。整片介面線路在 9 伏供電下,耗電流為 15 毫安,線路方塊參看圖 5,詳細線路參看圖 6。

[ 圖 6:可做數位調變器的 Sigma-Delta 調變器詳細線路。 ]

Fig 05
圖 5:Sigma-Delta 調變器的方塊圖。



Sigma-Delta 調變器

    這裡要介紹的 Sigma-Delta 線路,首先由馬理 (Mark Mallory) 在 1991 年 2 月發表,它是以兩只 IC 為中心所構成的。

    類比訊號首先經由積分器積分之後,以 C1 保住這電壓,接著是一個比較器線路 (這裡可以稱它為 1 爻的類比數位轉換器),比較器的主要工作是將 C1 保住的電壓與參考電壓做比較,來決定比較器輸出的電壓是高或低電位。在正反器輸入的時脈訊號上升邊緣時,比較器的輸出會由 D 型正反器鎖住,在下一個時鐘週期,這個正反器的輸出會驅動比較器,比較器的輸出 (可能是高或低電位) 與積分器的正輸入端做加減的動作,這個迴路的主要功能在於平衡 C1 電容器的電壓值,藉著 4013 正反器 IC 的 Q 輸出端的工作週期變化,使積分器的 輸出值與接地端相同。調變器的輸出為數位訊號,因為供應線路的時脈頻率為 921.6kbits/s,隨著輸入訊號的類比電壓變化,此工作週期也隨著變化。

    調變器的輸出訊號是由兩只四位數的二進位加法器串連起來的計數器來計數,這樣每秒就能產生每位元八爻的 7200 位元資料。由於這資料是由個人電腦的串列介面來傳送,所以要把資料轉換成串列訊號,這些工作是由一對 4021 來負責,它們組成 16 位元並串列轉換,轉換出來的串列訊號是非同步格式,有一起始爻,8 爻資料,及一停止爻做結束,因為傳輸資料過程都沒有長的拉線,所以就不必要有可以偵錯的檢查爻。

    這樣的轉換,基本上傳送速率可以高達 11kbytes/ 秒,而本系統的總傳輸速率最高只到 7.2kbytes/ 秒,因此在資料傳送過程當申,還有一些空檔,程式執行起來,會有更大的迴旋空間;比如有些人在個人電腦上放有些常駐程式,就算是中斷受到耽擱,也不至於使本程式當掉。

    程式執行 1 位元資料的時間,大約 138 微秒,因為個人電腦的串列介面有各自的緩衝記憶體,就算個人電腦對讀取資料的執行速度慢了些,也不遺漏任何資料。這也不會影響到個人電腦的系統中斷 (通常是 55 微秒),但要特別注意,最好不要再耗費系統的時間。所以除非你使用的個人電腦執行速度非常快,否則最好不要再安裝任何常駐程式,以免影響這程式的執行。

    本程式會自動偵測有無漏失資料,並有遺漏資料的警告訊息。特別容易發生的是個人電腦的 DOS 列印服務公用程式,這方面的系統常被安裝而不自知。我試過 XT 機種,以 V20 處理器 (宏) 在 4.77MHz 的時脈下,運行自如,但如果安裝有其他常駐程式,恐怕就容易出現資料漏失的訊息;不過以目前個人電腦的執行速度而言,除非情況特別,根本不容易出現問題。

    介面線路使用的時脈訊號,是由訊號產生器兼時脈除頻的 IC, 74HC4060 來的。基本的振盪頻率是 1.8432MHz,這時脈訊號經由正反器除頻之後,可以取得相位相反的 921.6KHz 時脈。而這正反器的 Q 輸出,用來推動 Sigma-Delta 系統的栓鎖輸入,這約有 542 奈秒的延遲時間,可以保證邏輯閘正確無誤地反應過來。

    第二組正反器在計數器輸出穩定之後,提供時序訊號給並聯在一起的 4021 移位暫存器使用,而此時,由兩只 4516 組成的八爻計數器所含的計數值,並沒有立刻被清除,這是因為在硬體設計上,時序沒有夠大的間隔,所以很不好做,因此只能利用軟體來模擬;方法是這樣子的,先把計數值儲存起來,當有新的計數值資料記進來時,再減去先前儲存的資料,就是相當於最新讀進來的值;例如連續資料分別是 10、20、及 30,那麼因為計數器沒有歸零,所以三次所讀到的值分別是 10、30、及 60,第一次沒問題是 10,第二次讀進來的,就減去 10,30 減 10 得到 20,而第二次讀到的 30 被儲存起來,第三次讀進來的 60 被減去 30,結果得到 30,這就是利用軟體代替硬體歸零的原理。

    MC145106 是 RS-232 驅動線路,將移位暫存器輸出的 TTL 邏輯位準,轉換成符合 RS-232 位準的訊號,以便來提供給個人電腦的串列介面埠。MC145106 所需要的負電壓,是由系統時脈經過簡單的二極體轉換所得到的。


介面線路組合

    本製作所需要的費用不高,採用的元件都是很普遍的 CMOS IC,很容易購得,裝組本電路時,沒有特別的地方,與一般的電子線路一樣,每枚 IC 背上有方形焊墊記號的,就是第一隻腳。IC 焊妥之後,有極少數的電阻、電容、及二極體,焊接時,要特別注意極性。

    提供訊號給這介面的訊號線最好採用隔離線,當我使用一般絞線時,發現會有大量的干擾訊號,而這介面與個人電腦之間的 RS-232 介面,最好是買現成的連接線,然後去掉一頭,找出適當的對應線連接這介面線路,另一頭則接個人電腦;也可以買 DB-25 接頭自己焊,不過要特別注意接腳,DB-25 接頭上會以阿拉伯數字標示接腳,資料腳接第 3 腳 (要特別注意,如果使用 9 隻腳的接頭,類似滑鼠接頭,資料腳是第 2 腳),第 7 腳接地。

    基本上,使用兩條線就可以傳送數據資料給個人電腦,因為這裡不使用任何交握訊號,就算是個人電腦處理其他動作時,串列埠的中斷動作,並不會影響到個人電腦的運作,或是遺漏串列埠上的資料,當然軟體的速度也要夠快到不會影響串列埠接受中斷來讀取資料。

    另外利用個人電腦來連接任何介面,最怕的就是干擾,電腦本身可能是干擾源,介面線路也可能是干擾源。這個簡單的介面,就有可能是產生雜訊的地方,因為這以數位訊號來運作的電子線路,裡頭的脈衝常會有快速的上升及下降變換,當這類訊號如果有機會出現在長導線上,就會以輻射方式,變成嚴重的干擾訊號源。因此碰上干擾問題的機率很大,防患於未然就是要盡量做好避免干擾的措施,例如使用不容易產生電磁輻射的訊號線,個人電腦及其週邊設備應該遠離天線,萬一出現干擾,可以試著用下列方式來解決:

1. 將介面線路安裝在鐵質殼內。
2. 使用鐵酸鹽磁環、磁珠等有效的射頻隔離技藝。
3. 使用隔離效果好的隔離線來傳送類比訊號。

    有了這樣的防護措施,通常可以解決一般的干擾問題。


執行與操作軟體

    本程式是一 SHAREWARE 共享軟體,有兩種版本,一為 FFT.COM 及 FFTH.COM,後者為個人電腦採用單色螢幕者適用。執行程式之前,應先把介面線路接妥,把介面確實接在個人電腦串列介面埠上,並且打開介面用的電源。執行程式時,在 DOS 游標下鍵入 FFT GO,隨後按 ENTER 鍵,啟動程式。

    執行程式指令之所以要加 GO 的原因,是要告訴程式採用預設的參數,執行後你會看到個人電腦螢幕上顯示出頻譜圖形。萬一電腦螢幕出現錯誤訊息,例如串列埠無訊號,則應回頭檢查介面線路、連接線、供電的電池是否裝妥、及其他可能造成介面不能正常工作的原因。如果有看到頻譜畫面,表示介面正常運作,但是要做一些調整,所以按 ENTER 鍵先跳離程式,回到 DOS 上。

    如果執行 FFT 程式時,後頭沒有加 GO 這指令參數,表示執行程式時使用到的參數要逐項輸入,因此程式會要你輸入傅利葉展開長度、顯示的頻率範圍、點;積分;連續、及軟體自動增益功能等。

    傅利葉展開長度一般是 2 的整數次方,範圍是 16 到 4096,程式的預設值是 512,若是不輸入任何值,只按 ENTER 鍵,就是選擇這參數。傅利葉展開長度的一半,就是求出的頻譜線,也就是顯示在螢幕上的頻譜線數目,傅利葉展開長度越長,頻譜解析度越好,問題是,傅利葉展開長度過長,會因為個人電腦運算時間太長,而反應時間也就越慢。傅利葉展開長度是 4096 時,解析度最高,為 1.75Hz。

    顯示的頻率範圍是以最低及最高頻率來輸入資料,先是低頻極限,空一格之後再輸入高頻極限,這兩個數值一定要一起輸入,否則會有無法預料的錯誤。如果不輸入任何數值,直接按 ENTER 鍵,就是選用預設的 0~3.6KHz。這個數值只關係到顯示幕的顯示範圍,與先前設定的傅利葉展開長度無關。

    第三個參數是「點」 (SPOT)、「積分」 (INTEGRATE)、「連續」 (CONTINUOUS),個人電腦出現的是 (S,I,C) 供你選擇。「點」是只取設定區段內的某段,在計算之後,顯示出頻譜結果,畫面即進入靜止狀態,等待操作者的進一步操作;例如按 ENTER 鍵後,顯示下一頁結果。「積分」則對於需要典型濾波器特性曲線者非常管用,例如,你要檢查中頻濾波器的帶通特性,這積分模式,會產生一幅極為真實的曲線圖形,可以讓你一目了然。

    最後要回答的參數問題是,軟體自動增益功能,這問題只要輸入 Y 或 N,就是要不要軟體的自動增益功能,這功能啟動之後,顯示幕上的垂直刻度被重新設定,佔最大比例成份的頻譜線可以達到螢幕頂端。這項參數的預設值是打開軟體自動增益功能,如果取消這功能,螢幕顯示刻度就固定不變。

    Sigma-Delta 介面的聲頻輸入位準大約是 400 毫伏 (mV RMS),訊號位準超出太多則會被砍頭,位準太低則無法推動類比--數位轉換器。如果輸入的聲頻訊號源位準可調,那麼可以把軟體自動增益功能關掉,用下列的方法可以取得適當的輸入位準:先把聲頻訊號位準調到最低,再慢慢把位準調高,此時個人電腦螢幕的水平底端,會有像草一樣的頻譜線一根根長出來,當輸入位準越來越高,便會出現直流電壓成份,也就是在螢幕最左邊代表 0Hz 處會長出一條頻譜線;當介面的輸入聲頻訊號過載時,則訊號會有被砍頭現象,這時,取樣到的數 值會有大量的正臨界點及負臨界點值,而傅利葉展開程式,會將這些值視為直流成份。

    所以,當你在個人電腦螢幕上看到直流成份時,應該把聲頻訊號位準降低,如果已經無法降低聲頻訊號位準,則可以更改介面線路,R1 值是 20K 歐姆,這可以滿足大多數的應用,在不超過 400 毫伏時很合適,萬一訊號超過 400 毫伏,可以增加 R1 阻值。同理,如果輸入的聲頻訊號位準太低,可以減少 R1 值。


假像頻譜

    因為本製作取樣率是 7200Hz,所以最高的工作頻率在 3600Hz 以下,萬一訊號輸入端出現頻率高於 3600Hz 以上的訊號,會造成系統的紊亂。所以這介面的輸入端必須加一低通濾波器,阻止頻率 3600Hz 以上的成份進入介面線路。

    不加這道程序會怎樣呢?因為介面線路本身的類比數位轉換頻率可以很高,但是介面傳輸速率及電腦運算都有很大的限制,只要輸入訊號頻率超過 3600Hz,這些成份的訊號會顯示在低於 3600Hz 的位置上,對真正的訊號造成干擾。如果你有訊號產生器,可以做個簡單的實驗來看看這類現象:以聲頻訊號產生器為訊號源接到介面上,先把頻率調整在 3KHz 以下,調整訊號位準,螢幕上會出現漂亮的頻譜曲線,再把訊號頻率增加,頻譜曲線會在螢幕上由左往右移,當頻率達到 3600Hz 時,頻譜曲線會跳過瞬間的消失,然後由右往左移,當達到螢 幕最左邊時,又會往右移,這就是頻率超過 3600Hz 以上時,在頻譜畫面上的干擾情況。因此,在聲頻輸入此介面時,必須有一低通濾波器,不讓高於 3600Hz 的訊號進入。


頻譜渲染

    有趣的現象是,在某些頻率上,螢幕裡的頻譜曲線特別漂亮,有些頻率則會有渲染的現象,所謂渲染是指本來應該只有一條筆直的頻譜線,但是這頻譜線的兩旁卻出現有低一些的頻譜曲線,看起來好像是整個頻譜散開掉似的。要研究觀察這個現象,最好使用低失真的正弦波訊號,在基頻頻譜上散開,這並不代表輸入訊號有雜訊存在,有些是取樣過程中所產生的附屬品,因為取樣率非訊號頻率的整數倍關係,訊號頻譜會渲染開來,使得訊號看來好像是分配在一段頻譜區域內,而不是很純的訊號。

    發生這種現象,追根究底,可以歸結到取樣時間的限制,例如,我們做 512 點取樣的傅利葉展開,因為取樣率是 7200 點 / 秒,所以總共費時 71.111 毫秒,這週期的相對頻率為 14.0625Hz,也就是所謂的基頻,如果輸入的訊號頻率是落在這基頻的整數倍上,則取樣所運算出來的頻譜會非常漂亮;而其他頻率,因為取樣點與訊號週期不一致,造成像是不能整除的餘數,就是這些像餘數般的取樣資料,造成了頻譜的渲染。

    傅利葉展開運算主要是計算基頻的頻譜振幅,所以輸入訊號頻率要是落在這些基頻的間隙上,頻譜曲線就會有渲染現象;如果調整訊號頻率剛好落在基頻整數倍上,則求出來的頻譜曲線就會很漂亮。


傅利葉展開的顯示特性

    在 EGA 或是 VGA 顯示幕下,可以有 640 個水平掃描點,同時左邊還要留些空間,供作顯示刻度用,所以真正只有 620 個水平掃描點可以運用,因此只要顯示頻譜的垂直線不超過 620 條,電腦顯示幕都可以擠進去;萬一超過 620 條,就要進一步處理,例如,做 4096 的傅利葉展開,因為最小解析度為 1.75Hz,所以整個 3.6KHz 就有 2048 條垂直線要顯示,這樣就容納不下。

    有兩個方法解決這個問題:一是利用選擇區段性的頻率來顯示,例如設定要顯示的上下限頻率;另一種方法是整個頻率都擠進去,但是要犧牲 1.75Hz 的解析度,例如把解析度降到 5.25Hz 或更低些。

    但是畢竟要採用哪一種方式,必須視場合而定,例如訊號是集中在某個頻率上頭,如果此時顯示的是全頻率,那麼就會因為解析度降低,而無法窺得訊號全貌。這也就是為什麼在程式裡,傅利葉展開選用 512 點的原因,因為在這取樣點之下,螢幕可以容納到 3KHz 的頻譜曲線。要是你不在意解析度時,也可以減少取樣點,這樣可以減少運算時間,顯示幕的更新速度也就更快。如果對其一小段頻率區域內感興趣,那麼可以提高取樣點,以得到最佳的解析度。


總結

    訊號數位化或做數位處理是時勢所趨,目前雖然數位處理 IC 已經非常發達,但是利用電腦快速的運算能力,在頻率不高的情況下,即使沒有 DSP IC 的幫忙,也還算能夠做即時的數位處理,這既符合經濟方面的考量、更是發揮了業餘的學習精神。

    其實,這項技藝也可以擴大你在電子方面的視野;不然,你也可利用個人電腦上的聲霸卡,因為這裡頭就有一枚 DSP IC,寫個適當的軟體,也可以讓聲霸卡具有聲頻頻譜分析的功能。 END



雜誌目錄 依順序 雜誌目錄 依主題分類