GNU Radio 是一個免費、開源的軟體開發套件,通過提供訊號處理 「塊」 以幫助開發者實施軟體無線電。
它易於和一些低成本的RF硬體外設一起使用,也可以純模擬使用。
它廣泛應用於研究、行業、學術界、政府和業餘愛好者中,大大推動無線電技術的發展。
下面顯示了 GNU Radio Companion 視覺化編輯器中的範例流程圖:
GNU Radio 是一個方便使用者設計、模擬、及部署功能強大現實世界無線電系統的框架。
GNU Radio 已大量用於現實世界中,包括:音訊處理、行動通訊、衛星跟蹤、雷達系統、GSM 網路、世界數位廣播。
就其本身而言,GNU Radio 沒有限制說只能和某一特定硬體配合使用,它也不提供特定無線電通訊標準(例如:802.11,Zigbee,LTE...)的開箱即用服務,但它可以用於開發基本上任何頻段的通訊標準的實現。
以前,在開發無線電通訊裝置時,工程師必須開發一個特定的電路來檢測、解碼、編碼、傳輸特定訊號,並使用昂貴的裝置進行偵錯。
使用軟體無線電(SDR)進行模擬訊號處理時,只需要準備一個模擬訊號收集硬體(通用的),然後將模擬訊號處理的工作全部放計算機上,這樣就能省去準備和偵錯特定硬體電路所帶來的苦惱。
特定硬體的工作省了,可是你準備每次遇到不同需求,就準備從頭開始寫計算機上的模擬訊號處理邏輯了嗎? 你準備從頭開始編寫為了方便偵錯的互動式 GUI 了嗎? 你是不是在想 —— 這些工作能不能模組化、標準化?
哈哈,GNU Radio 就是你想要的計算機訊號處理框架。它將功能包裝在易於和可重複使用的 「塊」 中,具備豐富的可延伸性,提供了廣泛的標準演演算法庫,並且針對各種通用平臺進行了大量優化。它還帶有大量範例,可讓您快速入門。
本文的其餘部分提供了 DSP 的簡要介紹,如果您已經熟悉 DSP, 請隨時跳到下一個教學。
作為軟體框架,GNU Radio 致力於數位化訊號,以使用通用計算機生成通訊功能。
軟體處理需要數位訊號(計算機擅長處理數位),但是什麼是數位訊號?
為了更好的理解,讓我們看一下一個常見的 「訊號」 場景:錄製語音、然後用手機進行傳輸 -->
人說話產生聲音 「訊號」,該訊號由人的聲帶震動引起空氣震動(形成空氣氣壓波)產生的,氣壓值會隨著時間變化:
當波到達麥克風時,它將變化的壓力轉換為電訊號,即可變電壓:
此時訊號變成了電訊號,類比電路能處理它,但是計算機還不能處理(此時的電訊號是模擬訊號,計算機能處理數位訊號(有限數量、有限時間)):
因此,我們需要對模擬訊號進行取樣(等時取樣),如上圖,我們用取樣的一系列的點,代表模擬訊號;每秒的取樣數量,稱為取樣率。
現在我們有了一系列數位,我們的計算機可以對其進行任何操作。例如:數位濾波、壓縮、識別等。
無線電波和聲波原理類似:
訊號(此處為電磁波)可以使用天線轉換為變化的電壓。
然後,該訊號處於 「載波頻率」 上,該頻率通常是幾兆赫甚至千兆赫。
當要處理數位訊號,直接利用將各個處理階段(過濾、校正、分析、檢測... )設計成的處理塊,可以使用簡單的流程指示箭頭進行連線:
當要建立訊號處理應用程式時,需要建立完整的塊圖。這樣的圖在 GNU Radio 中稱為流程圖。
GNU Radio 是一個開發這些處理塊並建立包含無線電處理應用程式的流程圖的框架。
作為 GNU Radio 使用者,您可以將現有塊組合到一個高階流程圖中,GNU Radio 將自動在這些塊之間移動訊號資料並在塊中進行訊號處理。
因此,GNU Radio 主要是訊號處理塊及其互動作用開發的框架,它帶有廣泛的標準塊庫,開發人員可以構建許多可用系統。但是 GNU Radio 本身並不是準備做特定事情的軟體 —— 儘管它已經附帶了許多有用的工作範例。但是使用者的工作就是從中構建有用的東西,可以將範例視為一組構建塊。
: ** 如果覺得不錯,幫忙點個支援哈~**