ZeroMQ-GNURadio
2024年3月29日大约 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
- 上述的仿真,调制与解调是在同一台计算机上进行,请将其分开在两台计算机分别进行。
- 将输入讯号改成麦克风输入,输出讯号改用喇叭输出。