跳至主要內容

ZeroMQ-GNURadio

Jia-Yin大约 2 分鐘coursecomm

這一節要介紹 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

  1. 上述的模擬,調變與解調是在同一台電腦上進行,請將其分開在兩台電腦分別進行。
  2. 將輸入訊號改成麥克風輸入,輸出訊號改用喇叭輸出。