跳至主要內容

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. 将输入讯号改成麦克风输入,输出讯号改用喇叭输出。