项目概述
本项目基于高云半导体 GW5AT-LV60 FPGA 与 ADI AD9363/AD9361 射频收发器,构建了一套灵活可重构的软件无线电(SDR)验证平台。
系统采用软硬件协同设计架构:高速基带信号处理部署于 FPGA 端,交互控制与业务展示部署于 Python 上位机,二者通过千兆以太网实现高带宽交互,成功实现了 QPSK 等多种调制方式的实时无线通信与动态参数配置。
两台设备在真实无线信道环境下数据传输速率可达 4 Mbps。系统同时预留 USB 2.0 接口(开发中),进一步扩展物理连接的灵活性,为低成本、高透明度的 SDR 工程实践提供了一套完整的开源参考方案。
硬件架构设计
硬件平台的核心选用高云 GW5AT-LV60 FPGA,该器件仅包含可编程逻辑(PL)端,未集成 ARM 等硬核处理器。针对 AD9363/AD9361 射频前端的驱动需求,项目采用“FPGA+外置 MCU”的协同架构:
控制与初始化
基带信号处理
这种纯 PL 端设计规避了异构 SoC(如 Xilinx ZYNQ)中 PS 与 PL 交互的复杂性与黑盒效应,使高速数据流路径完全透明、时序精确可控,便于开发者深入追踪底层硬件时序与 SDR 工作原理。
上位机软件架构
PC 端配套开发了基于 PyQt5 的图形用户界面(GUI),采用多线程分层架构,确保界面响应与数据收发的解耦。
总体布局与线程管理
主窗口(main_window.py)采用左右分栏布局:左侧为参数配置区,右侧为多选项卡业务区。后台运行多个独立的 QThread 工作线程,分别负责串口通信、UDP 网络收发、音频流采集/播放和摄像头采集,所有线程间通过 Qt 信号槽机制完成线程安全的数据传递。
通信接口与协议栈
串口通信:串口线程(serial_worker.py)支持端口枚举与最高 921600 bps 波特率的全双工收发,接收端逐行解析数据流,识别 key=value 格式的参数响应并转发至配置面板。
以太网通信:网络模块(ethernet_worker.py)基于 UDP 实现了可靠与不可靠双模式传输,针对不同业务量身定制协议:
文本命令:采用停等协议,支持最多 128 次重传,确保指令绝对可靠。
文件传输:先以停等协议发送含文件名与大小的文件头,随后以 SR(Selective Repeat)滑动窗口协议(窗口大小 4)发送数据载荷,全程携带 CRC32 校验,实现乱序重传与差错恢复。
实时视频:采用自定义分包协议(帧头含帧 ID、分片序号、总分片数),每帧拆分为最大 1024 字节分片后以不可靠方式发送,接收端按帧 ID 重组,平衡画质与延迟。
实时音频:以不可靠方式直接发送 PCM 音频块,牺牲部分抗干扰能力以优先保证低延迟实时性。
射频参数动态配置
上位机集成 AD9363 参数面板(params_widget.py),分 TX/RX 两选项卡,涵盖本振频率、采样率、射频带宽、增益控制、FIR 使能及 DDS 音调频率等核心参数。每个参数条目通过串口以 key=value 格式下发指令,支持手动一键批量查询与连接后自动刷新状态。
多媒体与物联网业务
文件与文本:支持文本消息收发及带实时进度条与速率显示的文件可靠传输。
实时双向语音:基于 sounddevice 库以 44100 Hz / 单声道 / float32 格式采集,通过 UDP 低延迟传输,接收端经队列缓冲后驱动扬声器输出,两侧均内嵌基于 QPainter 与 NumPy 的波形控件(默认 5 倍增益、双缓冲渲染)。
实时双向视频:基于 OpenCV 采集,水平翻转后编码为 WebP 格式经 UDP 发送。
物联网演示:包含独立的网络视频监控选项卡及 433 MHz 无线物联网控制演示(iot_widget.py),后者以 500 ms 周期轮询 query_led_state? 指令,驱动自绘灯泡控件可视化设备状态。
本系统通过FPGA + STM32 + Python上位机的分层协作,实现了从射频前端配置、高速基带处理到高层业务应用的全链路贯通,为低成本 SDR 工程实践提供了极具价值的开源参考。
如何获取?
关注公众号【小灰灰的FPGA】后台回复(建议复制粘贴)
开源高云SDR项目
195
