ZeroMQ-GNURadio
2024年3月28日大约 2 分鐘
這一節要介紹 GNU Radio 中的 ZeroMQ 模塊功能,以及利用 ZeroMQ 通訊來進行 AM 調變訊息的傳送與接收。
GNU Radio 中的 ZeroMQ 模塊
ZeroMQ 在 GNU Radio 中被分成 6 個 Source Block 和 6 個 Sink Block,可用來處理串流數據與訊息數據。其中 Source Block 都有相對應的 Sink Block。Source Block 用來提供進入 GNU Radio 的資料流,而 Sink Block 則用來將資料流發送出去。以下為對應的 12 個 ZeroMQ 模塊:
- ZMQ PUB Message Sink / ZMQ SUB Message Source
- ZMQ PUB Sink / ZMQ SUB Source
- ZMQ REQ Message Sink / ZMQ REP Message Source
- ZMQ REQ Sink / ZMQ REP Source
- ZMQ PUSH Message Sink / ZMQ PULL Message Source
- ZMQ PUSH Sink / ZMQ PULL Source
使用 TCP 綁定(Bind)時,應使用 tcp://0.0.0.0:<port>
來監聽所有網路介面的地址;或者將 0.0.0.0
代換為該電腦特定的某個 IP 地址。此處 <port>
為指定的埠號。另外使用 TCP 連接(Connect)時,則應指定要連接的遠端端點,可以使用 IP 地址或可解析的 DNS 名稱。
多個 IP
同一台電腦可以有多張網路卡和多個 IP 地址,網卡和 IP 地址數量也不一定一致。
AM 調變與解調
調變
建立以下的 AM 調變系統:
其中使用的參數:
- samp_rate: 200e3
- Signal Source: Amplitude=0.6
- Signal Source (Carrier): Frequency=50e3
- ZMQ PUB Sink: Address=
tcp://127.0.0.1:50001
模擬結果如下:
解調
建立以下的 AM 解變系統:
其中使用的參數:
- samp_rate: 200e3
- ZMQ SUB Source: Address=
tcp://127.0.0.1:50001
- Signal Source (Carrier): Frequency=50e3
- Low Pass Filter: Cutoff Freq=13e3, Transition Width=1000
- GUI Range (gain): Default Value=2, Start=0, Stop=20, Step=0.1
模擬結果如下,其中紅色訊號是解調後的結果:
練習 3
- 上述的模擬,調變與解調是在同一台電腦上進行,請將其分開在兩台電腦分別進行。
- 將輸入訊號改成麥克風輸入,輸出訊號改用喇叭輸出。