Xilinx Zynq:一款适用于软件定义无线电的现代片上系统

发布于:2025-07-19 ⋅ 阅读:(14) ⋅ 点赞:(0)

摘要——软件定义无线电可以在通用处理器 (CPU) 上实现,例如基于 PC 的处理器。处理器具有高度灵活性:它不仅可以用来处理数据样本,还可以控制接收器功能、显示瀑布图或运行解调软件。然而,由于处理速度相对较慢,处理器只能处理有限带宽的信号。对于高带宽信号,软件定义无线电 (SDR) 算法必须以定制设计的数字电路形式在 FPGA 芯片上实现。FPGA 的处理速度非常快,但灵活性和用户界面不足。最近,FPGA 制造商赛灵思 (Xilinx) 推出了一款名为 Zynq 的混合片上系统,它将两种方案结合起来。它采用双 ARM Cortex-A9 处理器和一个 FPGA,在单芯片上兼具处理器的灵活性和 FPGA 的处理速度。因此,Zynq 在软件定义无线电 (SDR) 中的应用非常有前景。本文将讨论 Zynq 及其评估板 (Zedboard) 的应用。作为示例,我们在 Zedboard 上实现了一个直接采样接收器,该接收器使用一个 250 Msps 的高速 16 位 ADC。

在这里插入图片描述
一、SDR 硬件平台
软件定义无线电 (SDR) 依靠软件和数字信号处理来接收无线电信号。SDR 算法
始终在硬件平台上运行:在处理器(例如 PC 或微处理器)上运行,或在微芯片(例如 FPGA)中实现为数字电路。这些硬件平台在处理速度、功耗、尺寸、灵活性和设计简易性方面各不相同。
A. 常用硬件
目前,市场上有各种各样的平台,
其中的一些示例如表一所示。带有 Funcube Dongle SDR (FCD) 的 Raspberry Pi 是一款小型嵌入式便携式设备,采样率降低至 48 kHz,但处理速度非常有限。英特尔酷睿 i7 笔记本电脑处理器速度更快,可以处理带宽为 2 MHz 的 RTL DVB 棒,但功耗更高,体积也更大。带宽更大的软件无线电(SDR),例如 bladeRF(28 MHz)或直接采样接收机,例如 Perseus SDR(40 MHz),都需要更高的处理速度,而处理器无法提供这种能力。在这种情况下,FPGA 用于数字化射频信号的高速处理。
B. 要求
SDR 硬件所需的处理速度不仅取决于信号带宽,而且很大程度上取决于信号带宽。带宽越大,采样率也就越高,需要处理的数据就越多。高性能直接采样接收机通常以超过 50 Msps 的速度对模拟信号进行采样。这对处理速度提出了巨大的要求——随着直接采样(即在天线之后直接对模拟信号进行采样)在 SDR 中变得越来越普遍,这一事实将变得更加明显。
另一方面,灵活性是现代 SDR 接收机的一个问题。解调就是一个例子。业余无线电爱好者已经开发出多种数字模式,商业应用中也需要在调制类型、纠错和信源编码之间切换。
C. 处理器 vs FPGA
处理器是一种执行软件的电子电路。
软件执行以串行方式逐条指令进行,因此速度较慢,不适合高端软件无线电(SDR)中的大带宽处理。多核处理器是一个例外,它们在一定程度上具有并行性。
尤其是在显卡中,可以找到功能强大的多核处理器(GPU),非常适合信号处理。
然而,许多处理器功耗很高,
并且在PC(包括显卡)中需要占用很大的空间。处理器的优势在于它非常灵活,
因为它可以通过执行不同的软件轻松更改其执行的任务。此外,通常可以运行操作系统,并具有易于访问用户界面(例如显示器、键盘、鼠标)以及访问硬盘进行存储或连接互联网的优势。在 SDR 应用中,处理器非常适合:
解调不同模式
• 提供图形用户界面 (GUI)
• 控制接收器功能
• 记录和存储信号
• 提供互联网接入
FPGA 与处理器有着根本的不同。FPGA 是一种微芯片,包含大量可用于构成数字电路的元件,包括加法器、乘法器、多路复用器、寄存器等。对于要在 FPGA 上“执行”的每种算法,都必须设计专用的数字电路(硬件实现)并将其加载到 FPGA 上(配置)。原则上,这种配置包括 FPGA 元件之间的布线,以形成所需的数字电路。FPGA 可以反复配置,这称为重新配置,以便以后可以修改电路以消除错误或添加扩展功能。这使得 FPGA 成为一种相对便宜的微芯片,任何具备一些数字设计知识的人都可以设计它。FPGA 的一大优势在于它们可以高度并行地处理数据。因此,它们速度非常快,可以轻松处理高达数百 Msps 的数据。尽管 FPGA 的时钟频率通常要低得多(大约几百 MHz),但其可实现的加速通常可达处理器的 100 倍到 1000 倍。由于 FPGA 中的电路是定制设计的,因此可以根据具体应用选择数据、存储器和运算单元的位宽,这非常高效。例如,如果认为 6 位的位宽对于某个数据来说已经足够,则处理单元的布局将仅使用这 6 位;而在处理器中,位宽或多或少会限制在一个预定义的数字(例如 24、32 或 64 位)内。此外,与具有类似处理速度的(多核)处理器系统(例如 GPU 显卡)相比,FPGA 的功耗也更低。 FPGA 的缺点在于,算法的硬件实现(即电路设计)需要精通硬件描述语言、数字电路设计以及设计工具的使用经验。此外,外部接口(显示器、键盘、网络连接)的实现也很困难。在软件无线电 (SDR) 应用中,FPGA 非常适合高速、重复性计算,例如:
• 混频和下变频
• 滤波
• 高速 FFT
• 大量信号的并行解调
处理器和 FPGA 各有优缺点。在 SDR 中,各种不同的任务必须以不同的速度执行,这很难用单个处理器或单个 FPGA 实现。因此,SDR 的理想硬件是两者的结合。事实上,高端 SDR 已经遵循了这一原则。
II. ZYNQ 片上系统
微电子技术的最新发展催生了一种新型微芯片,它将 FPGA 和处理器集成在单个芯片上。FPGA 制造商 Xilinx 推出了 Zynq 器件,而其竞争对手 Altera 则推出了 Altera SoC 系列。这两款芯片在系统结构和性能上非常相似。下文我们将重点介绍 Xilinx Zynq,但许多细节也适用于 Altera SoC。
这些新型混合系统属于片上系统 (SoC)。SoC 由多个截然不同的组件组成,例如处理器、存储器、I/O 模块、加速器等,这些组件集成在单个芯片上。这降低了成本和尺寸,并提供了组件之间紧密而快速的交互。
微控制器以及广为人知的 Raspberry PI 都属于 SoC。 Zynq 也是一款 SoC,因为它包含一个双 ARM A9 内核、一个 FPGA 以及用于不同 I/O 的附加模块(例如 DDR3 内存接口、USB、SD 卡控制器)。处理器和 FPGA 之间有数千种可能的内部连接,这些连接可编程,并支持快速数据传输。这比 PCB 上 FPGA 和处理器的单独组合具有很大的优势,因为 PCB 设计完成后,可能的连接数量很少,而且很难更改。Zynq 有六种不同的尺寸(Z-7010 至 Z-7100)。所有型号都包含一个双 ARM A9 内核,但 FPGA 部分的尺寸差异很大。
在这里插入图片描述
Zynq 的编程包含两个任务:处理器编程和 FPGA 数字电路设计。
这两个任务几乎可以通过不同的工具独立完成。
处理器编程
处理器可以通过裸机编程或使用操作系统进行编程。裸机编程是指直接使用 C 语言对 ARM 处理器进行编程,无需任何操作系统,例如使用 Xilinx SDK 工具。然而,强烈建议使用 Linux 之类的操作系统,它通过使用硬件抽象层 (HAL) 隐藏了处理器的许多细节,并可以轻松访问接口和标准 Linux 软件。
Linux 发行版(例如 Ubuntu/Linaro)可以作为操作系统安装在 SD 卡上,SD 卡也可用作文件系统。可以通过网络接口(例如通过 SSH 或 RDP)或直接连接显示器、键盘和鼠标(作为独立系统使用)访问处理器。然后就可以使用标准软件了(Linux 软件包管理器提供或手动编译)。像 SciLab(数学工具箱)或强大的解调软件 Fldigi 这样的软件可以直接通过软件包管理器安装。编程可以使用多种语言进行,例如 C/C++、Qt、Python、Java 等。QtCreator 可以作为编程编辑器,它可以直接在 Zynq 上运行,无需繁琐的交叉编译。

在这里插入图片描述
FPGA 设计
最具挑战性的部分是 FPGA 的硬件设计。Xilinx 提供了一款名为“Vivado”的设计工具。
Vivado 的基本功能是免费的,Zedboard 评估板附带了额外的调试功能(Vivado 逻辑分析仪)许可证。这些工具足以满足 Zynq 的大多数设计需求。SDR 设计可以使用 Vivado 模块设计工具来完成,该工具是一个顶层原理图,用于连接不同的模块。这些模块包含主要功能,并且可以采用不同的设计方式。一种是使用硬件描述语言,例如 VHDL 或 Verilog。另一种选择是依赖高级综合,例如 Vivado HLS 或基于 Matlab 的工具(System Generator、HDL Coder),这些工具的主要目的是将 C 或 Matlab 代码转换为数字电路。
值得一提的是,Xilinx 提供了一些预定义的硬件组件,这些组件对于构建 SDR 非常有用:一个基于直接数字合成 (DDS) 的正弦信号发生器,可以进行参数化 [1]。频率范围、分辨率、位宽、时钟速度和无杂散动态范围 (SFDR) 均可选择。可以轻松获得 150 dB 的 SFDR。另一个有用的硬件模块是 FIR 滤波器编译器,它可以轻松实现 FIR 滤波器 [2]。许多硬件参数可供选择,滤波器系数的设计本身可以使用 Matlab 等工具完成。
FPGA 硬件设计需要丰富的硬件设计和数字电路知识和经验。
此外,经验表明,Vivado 工具有时似乎相当不成熟且使用起来不够直观。
互连工作原理
如上所述,Zynq 在处理器和 FPGA 之间提供了数千个互连,用于这些互连能够正常工作。
互连是一种内存映射接口。这意味着,处理器内存的一段32位数据会虚拟连接到FPGA中的一个32位寄存器。
处理器可以将数据写入这个特殊的内存片段,然后这些数据会立即传输到FPGA寄存器。或者,处理器可以通过从内存中读取数据来读取FPGA中的寄存器。从FPGA的角度来看,数据传输只需读写32位寄存器即可完成。

在这里插入图片描述
在这里插入图片描述
虽然移动数据听起来并不复杂,对于程序员来说也确实如此,但它却涉及一个基于 AXI 标准的相当复杂的过程,幸运的是,该标准对用户来说基本是隐藏的。
如果需要传输大量数据,可以使用直接内存访问 (DMA)。这样,通过使用 Zynq 的高性能 (HP) 或加速器一致性 (ACP) 端口,数据传输速度会更快。
重新配置
如果使用重新配置,Zynq 的另一个优势就会显现出来。如上所述,FPGA 中的数字电路可以更改。使用 Xilinx Vivado 工具设计数字电路时,设计会存储在一个文件(.bit 或有时为 .bin)中,称为比特流。上电后,FPGA 为空,可以将设计电路的比特流加载到芯片上,使 FPGA 正常工作。可以预先设计不同的硬件电路,并将它们存储在不同的比特流文件中。这些比特流可以在运行时交换。这个过程称为重新配置。重新配置只需几毫秒即可完全改变 FPGA 中的电路。独立的 FPGA 需要相当大的开销来进行重新配置。设计文件首先必须以某种方式传输到 PCB 上的额外存储器中。之后,每当触发重新配置时,都需要再次传输到 FPGA,这就需要额外的逻辑(例如微控制器)。Zynq 消除了这种开销,因为比特流文件可以存储在 SD 卡或远程计算机上的 Linux 文件系统中,并通过处理器传输到 FPGA。在 Linux 中,整个重新配置过程只需执行一条命令:cat new_bitstream.bin > /dev/xdevcfg。这为 SDR 开辟了新的可能性,因为高速数字电路可以在运行过程中进行更改。它们可以根据所需的无线电工作模式、频谱环境或所使用的传输模式进行调整,这些模式在认知无线电和自适应无线电等现代无线电技术中也得到了充分考虑。
III. ZEDBOARD
Zedboard 是一款用于 Xilinx Zynq 器件的低成本评估板。它包含许多外设,可以充分发挥 Zynq 的强大功能,例如电源、内存和众多接口。
Zedboard 的具体功能包括:
• 512 MB DDR3 内存
• 千兆以太网
• USB OTG 和 USB UART
• HDMI 接口
• VGA 接口
• OLED 显示屏
• SD 卡插槽
• GPIO 引脚、按钮和 LED
• FMC 接口
• ADAU 1761 音频接口
• 板载时钟发生器
这些外设使 Zedboard 成为一个完全独立的系统。可以连接显示器、鼠标、键盘和耳机,并建立互联网连接。
Zedboard 是实验者的理想选择,因为它提供了丰富的功能。它是许多不同应用的理想平台,例如图像处理、控制系统、算法加速以及软件无线电 (SDR)。此外,www.zedboard.org 上有一个庞大的在线社区。教程、示例项目和论坛可供初学者使用。
图 6. Zedboard
Zedboard 初学者。此外,该板的原理图也已发布,可免费下载。
由于 Zedboard 本身不包含任何适用于 SDR 的 ADC 或 DAC,因此需要连接无线电模块。FMC 连接器是理想的选择。许多公司,例如 Analog Devices、Texas Instruments 或 Linear Technology,都提供带有 FMC 接口的子板。这些板可以轻松连接到 Zedboard。Zedboard 相对于许多其他 SDR 平台的优势在于,无线电模块并非固定的。用户可以根据需求和预算进行选择。更换 FMC 开发板并创建具有全新 ADC/DAC 系统的无线电系统非常容易。
除了“经典”的 Zedboard 之外,市场上还出现了更多 Zynq 开发板。值得一提的是 MicroZed 和 Zybo,因为它们价格更便宜,并且提供类似的功能。但需要指出的是,这些开发板没有完整的 FMC 连接器。这使得连接 ADC 和 DAC 以创建完整的 SDR 平台变得更加困难。

在这里插入图片描述
IV. 使用 ZYNQ 的现代软件无线电 (SDRS) 示例
如前所述,Zynq 非常适合 SDR 应用的需求。这也是它已被应用于现代 SDR 的原因,下文将介绍其中一些。
Red Pitaya
Red Pitaya 被开发为一款测量设备(示波器、频谱分析仪、信号发生器)[3]。
它具有一个带有 14 位 ADC 的双通道输入和一个带有 14 位 DAC 的双通道输出。它是一个 125 Msps 的直接采样接收器,可捕获高达 50 MHz 的信号。信号处理依赖于 Zynq 7010,它是 Zynq 系列中最小的器件。该芯片运行 Linux,允许通过 LAN 连接 PC 或平板电脑,并提供与 C++、Matlab 或 Labview 的接口。它声称是开源的,但目前仅限于软件部分。Red Pitaya 虽然是为测量应用而设计的,但它已转换为完整的 SDR 系统 [4]。

在这里插入图片描述
Zepto SDR
Zepto SDR 由 Nutaq 开发,由 Zedboard 和 FMC 扩展板(Radio420S FMC)[5] 组成。它使用 12 位 ADC 和 DAC 转换器,工作频率范围为 0.3 至 3 GHz。最大处理带宽为 28 MHz。建议在 Zynq 上运行 GNU 无线电。
USRP E310
USRP E310 是 Ettus 著名 USRP 的嵌入式系列产品之一 [6]。由于采用了 Zynq 7020(尺寸与 Zedboard 相同),它是一款独立设备。双通道模拟前端支持 70 MHz 至 6 GHz 的频率范围,最大带宽为 56 MHz。
R2T2
R2T2 是一款直接采样收发器,具有两个接收通道和两个发送通道 [7]。它配备两个 14 位 ADC(采样率为 125 Msps)和 14 位 DAC(采样率为 250 Msps)。它提供与 Zedboard 类似的处理功能:配备 DDR3 内存的 Zynq 7020、千兆以太网、HDMI、USB、SD 卡以及音频编解码器 ADAU1791。最多 8 位用户可以通过 Web 界面远程使用该 SDR [7]。
V. PANORADIO SDR:高速直接采样接收器的技术演示
A. 概述
为了向实验者展示其当今的各种可能性,我们开发了一个技术演示——Panoradio SDR。它包含一个 Zedboard,附带一个内置高速 AD9467 ADC 的 FMC 卡,该 ADC 以 16 位分辨率和 250 Msps 的采样率对模拟信号进行采样 [8]。由于其精度高且采样率高,它可以直接在天线后拾取信号,无需任何模拟下变频,相当于一个直接采样接收器。由于采样率高,可以拾取并即时显示高达 125 MHz 的带宽(如果需要抗混叠滤波器,带宽会降至
约 100 MHz)。
B. 功能
Panoradio 提供三个可缩放的全景图或瀑布图显示,带宽高达 100 MHz,并经过了
适当的抗混叠滤波处理。全景图显示可以独立缩放至 6 kHz 的带宽,从而提供低至 7 Hz 的最低分辨率。三个全景显示可以同时观察非常大频率范围内的不同频段。例如,可以轻松同时观察80米、10米和4米波段的信号。由于Zedboard上运行操作系统,用于控制无线电的软件直接在接收器上运行,因此使其成为一个独立的嵌入式系统,并且可以直接连接鼠标、显示器和键盘。此外,诸如流行的Fldigi [9]等解调软件也可以直接在无线电上运行。Panoradio还可以用作FFT频谱分析仪。它的频率范围可以轻松检查短波信号。由于ADC的SFDR高达100 dBFS [8],因此杂散预计会非常低。除了全景显示外,还提供两个独立的音频接收器。每个音频接收器的带宽为 22 kHz(可选 6 kHz 或 3 kHz),其信号频谱以瀑布图的形式显示。音频输出可以直接复用或混合到 Zedboard 音频编解码器的耳机输出和处理器的音频接口(在 Linux 中显示为声卡设备)。此外,音频接收器可以独立且即时地调谐到 0 至 100 MHz 之间的任何频率。
C. 描述
Panoradio 的结构如图 9 所示。该设计分为在 FPGA 上完成的高速处理部分和在 Zynq 处理器部分完成的软件处理部分。

在这里插入图片描述
在这里插入图片描述
图 10. Panoradio 软件及其图形用户界面:主瀑布图显示了从 0 到 100 MHz 的完整频段。短波信号仅占据整个频段左侧的一小部分。88 MHz 以上的信号为调频广播电台,88 MHz 以下的零星发射属于应急服务。左侧小瀑布图显示了 15 米的广播频段。右侧小瀑布图放大显示了甚高频 (VHF) 广播信号。

FPGA 处理:来自 ADC 的数据样本通过 ADC 接口模块输入 FPGA。该模块执行一些 ADC 测试,处理线路延迟,并将差分双倍数据速率信号转换为可在 FPGA 中处理的单端数据。然后,这些样本被送入三个数字下变频 (DDC) 模块,其中一个用于瀑布显示器,另外两个用于音频接收器。每个 DDC 包含一个复数乘法器(用作 IQ 混频器)、DDS 本振以及一对 CIC 和 FIR 滤波器(用于抽取和带宽缩减)。瀑布 DDC 提供可缩放的全景图功能。缩放功能由速率可编程的 CIC 滤波器实现。对于所有三个瀑布显示器,仅使用一个接收器,该接收器在显示器之间进行复用。然后,其接收频率每秒多次切换到每个瀑布显示器的中心频率。音频 DDC 的输出 IQ 带宽为 22 kHz。随后,音频数据在音频后处理模块中进一步处理,该模块包含用于进一步降低带宽(从 22 kHz 降至 6 kHz 或 3 kHz)的滤波器和用于 SSB 接收的 Weaver 解调器。最后,音频接口将音频 IQ 数据发送到耳机输出和处理器。
软件处理:处理器在 SD 卡上运行 Linaro/Ubuntu Linux 操作系统。应用程序编程使用 C++ 完成。此外,还使用了一些附加库:Qt 和 Qwt [10] 用于图形用户界面,FFTW [11] 用于快速 FFT 处理。软件和处理器的任务主要是控制 FPGA 设计的功能并为用户提供接口。
FPGA 接口包括:从 DDC 读取 IQ 数据用于 FFT,初始化 ADC 和音频接口,设置 DDC 频率和滤波器属性,在系统启动时加载 FPGA 设计,确定 ADC 的放大倍数。

在这里插入图片描述
图 12. 缩放功能允许检查小带宽信号,
此处显示的是 20 米业余无线电频段的数字信号,包括一些
PSK31 传输。
和音频接口。此外,瀑布图的 FFT 计算(包括加窗、平均、抽取等)由处理器通过软件完成。此外,
处理器提供以太网和 UART 作为用户接口,显示 GUI 并处理用户输入。
D. 未来发展方向
由于 AD9467 的模拟接口可以在
1 GHz 以上的频率下工作,因此如果应用适当的模拟滤波,欠采样可用于
接收远高于奈奎斯特频率 125 MHz 的频率。这为直接采样当今业余无线电中考虑的更高频率提供了新的机会。然而,必须考虑相位噪声
的衰减。
Panoradio 仍在开发中,并将持续发展。更多信息请访问项目网站 www.panoradio-sdr.de。
六、结论
高性能 SDR 对其底层硬件平台提出了挑战性的要求。硬件需要提供高处理速度、灵活性和用户界面。现代 SoC,例如 Xilinx
Zynq 和 Altera SoC 系列,在单芯片上同时提供这两种功能。事实上,Zynq 已经在多个 SDR 项目中使用,而且由于价格实惠的 Zedboard 的推出,它也吸引了实验者的兴趣。作为技术演示,Panoradio SDR 已在本次演示中展示。它是一款基于 Zedboard 的 250 Msps 直接采样接收器,展示了这些新设备的性能。


网站公告

今日签到

点亮在社区的每一天
去签到