基于FPGA和AD9364的矢量信号源设计与实现

2021-06-03 03:55罗义军
仪表技术与传感器 2021年5期
关键词:信源信号源寄存器

尹 康,罗义军

(武汉大学电子信息学院,湖北武汉 430072)

0 引言

在某些通信测试中(如电子对抗、电网规划、探测等),为了检验设备和系统的性能及参数指标,需要产生真实或仿真信号以及模拟复杂电磁环境,但是传统的信号发生器难以满足特殊需求,很难产生所需要的复杂信号[1-2]。基于此,设计一种能发送用户所需的测试信号,模拟复杂电磁环境,并且同时能快速切换频点并迅速响应的矢量信号源,是非常具有实用价值和应用前景的[3]。

目前,随着半导体技术高速发展,宽带高速收发器以及现场可编程逻辑阵列芯片(FPGA)的出现,基于软件无线电的数字式信号源迅速发展起来[4]。可应用于FPGA的高速串行计算机扩展总线标准接口(PCIe),可以连接上位机与FPGA,进行稳定的高速数据传输[5]。为了设计能满足上述需求的矢量信号源,本文利用以上技术,通过PC端上位机产生或存储所需信号,经PCIe接口传输到FPGA并存储到外部存储器,利用FPGA读取存储的数据,通过AD9364射频发射器发射,提供了一种便携式、低成本及高灵活性的矢量信号源设计方案。

1 系统整体方案设计

1.1 系统硬件整体设计

矢量信号源的硬件部分包括FPGA载板、射频捷变发射器、数据存储板以及PCIe板卡。FPGA芯片采用XC7K325TFFG900;射频发射器采用AD9364的评估板;外部存储用第三代同步动态随机存取内存(DDR3);PCIe接口采用金手指插槽,节省体积;整体设计方案如图1所示。

PCIe通道分为数据通道和命令通道。其中命令通道主要传输AD9364的寄存器配置信息和数据发送的控制命令,上位机通过解析AD936x评估板软件(ADI公司提供)生成的配置信息,下发配置命令到FPGA,FPGA利用串行外设接口(SPI)进行寄存器配置,配置完成后,上位机下发信源发送命令,激活数据通道。数据通道负责传输上位机下发的大量所需信源数据,经FPGA控制存储到DDR3。再从DDR3取出信源数据,通过AD9364的Tx端发送出去。

选用的射频捷变收发器AD9364支持I/Q 2路,具有带宽大、可编程性强、数字分频精确等特点,AD9364内部包括混频器、发射通道的频率合成器、模拟滤波、数据转换器和其他功能,将数模转换、射频锁相环、上变频等功能合为一体,降低了硬件电路设计的复杂度[6-7]。AD9364支持频段为70 MHz~6.0 GHz,可调谐带宽低于200 kHz~56 MHz,最高采样率为122.88 MSPS,发送误差矢量(Tx EVM)小于等于-40 dB,收发增益可控。AD9364通过FMC(FPGA mezzanine card)接口与FPGA载板连接,进行数据的交互。AD9364在发射信号时,发送数据需要经过单端转差分,单倍数据速率(SDR)转双倍数据速率(DDR),其发射通道操作如图2所示。

1.2 上位机软件设计

上位机软件的作用是向FPGA发送各种控制、配置信号以及信源数据。按照功能划分,需要设计以下几个部分:

(1)启动设备,初始化PCIe设备寄存器,获取内存映射地址。

(2)下发AD9364配置信息,对从AD936x评估板软件生成的配置信息进行有效提取,每次操作都生成为32 bit的配置信息。如图3所示,[7∶0]为寄存器数据;[17∶8]为寄存器地址;[22∶18]全0;[23]为读写标志位;[31∶24]为帧头,判断是否为等待状态。

(3)开启PCIe数据通道,向FPGA发送用户自己定义的信源数据,由于下发速度快于AD9364采样速率,所以需要接收来自FPGA的反馈命令,间断地下发大量信源数据。

(4)停止和复位,停止下发信源数据,利用命令通道给FPGA内资源进行全局复位。

2 系统FPGA设计

2.1 PCIe通道与DDR3设计

PCIe总线使用了高速差分总线,采用端到端的连接方式,实现高速串行点对点的双通道高带宽传输。PCIe通道是本方案最关键的模块,它能够架起上位机与FPGA之间高速数据和命令的传输。

本方案中的PCIe接口采用的是PCIe2.0 x8接口,可提供的数据传输速率最高可达4 GB/s,而AD9364发送数据最大速率约为196.6 MB/s,本次采用的PCIe接口能够满足上位机和FPGA之间的数据传输带宽要求。XC7K325TFFG900FPGA芯片内部集成了PCIe硬核,硬核中已完成物理层与数据链路层的设计,这简化了不少的开发流程[8]。Xilinx公司提供了XDMA这款IP核,它可以提供AXI Memory Mappe(MM)选项,主要针对通过DDR进行大量的数据读写,又可以使用AXI-Lite选项,让上位机通过PCIe接口向FPGA发送各种控制或者配置指令。图4为XDMA IP核结构总览图。

PCIe与DDR控制顶层RTL图如图5所示。当上位机向FPGA下发命令时,会往专用的寄存器地址里写入相应的命令信息,通过PCIe接口的命令通道,从XDMA IP核的AXI-Lite接口里解析相关地址与数据。获得有效命令信息,完成解析后通过跨时钟域方式,送往命令相对应的模块,如AD9364的配置模块和发送数据通路模块等。

当上位机下发大量信源数据时,需要DDR3进行数据缓存,其控制由MIG IP核来完成,并且该IP核提供AXI接口。本方案PCIe采用SG_DMA方式来对DDR进行数据读写,只需启动一次DMA操作,便可传输多个非连续存储块数据,这样对大数据传输(大于4 KB)效率要高得多[9]。

数据下发到DDR3存储后,信号发送到AD9364中间需要一个异步FIFO来进行缓存和跨时钟域输出,通过设置FIFO的快满信号(prog_full)和快空信号(prog_empty)信号来控制FIFO的读写,让数据能够源源不断地送到AD9364,可以保证信号发送的连续性。

2.2 AD9364控制及发射通道设计

AD9364是由通过SPI写入的寄存器信息来控制的。通过AD936x评估板软件完成AD9364的配置信息生成,由上位机处理后,通过PCIe命令通道一次性将所有寄存器配置信息发送到FPGA,由于AD9364内部寄存器有上千个,并且可能会重复配置,所以将配置信息存入一个深度为4 096,位宽32 bit的FIFO[10]。32 bit数据经提取配置信息后,通过SPI对AD9364完成配置。当配置完寄存器后,读取地址为0x017的寄存器数据,判断AD9364是否在FDD模式,如果在,则结束这一次AD9364的配置,AD9364开始正常工作,否则向上位机请求重新配置。AD9364配置操作流程如图6所示。

在正常工作后,PCIe数据通道便可以下发准备好的信源数据,FPGA内部接收AD9364的随路时钟作为发射数据时钟data_clk,按照图2的发射通道操作,首先进行I/Q数据的拆分,那么I/Q数据下行到发射通道的数据速率应为data_clk的一半,然后利用原语ODDR,让data_clk的上升沿发送I路数据,下降沿发送Q路数据。AD9364也需要根据tx_frame这一信号来判断当前一路6 bit I/Q 2路数据为完整12 bit I/Q 2路数据的高6位还是低6位。最后利用原语OBUFDS转为LVDS差分信号送入AD9364子板。图7为AD9364寄存器配置顶层RTL图,图8为AD9364发射通路模块RTL图。

3 上位机操作流程

上位机作为交互界面,需要给FPGA发出各种指令以及准备好将要发送的信号数据。FPGA在接收到各种指令后,会完成AD9364的配置,进入工作状态,然后上位机下发数据,AD9364就可以将信源数据发射出去。操作界面如图9所示。

上位机操作步骤:

(1)前期准备。按照所需要发射内容对AD9364进行配置,利用AD936x评估板软件生成相关寄存器配置文件。同时,用户准备好所需发送的信源数据。

(2)启动设备。确认FPGA载板插入卡槽,点击“启动设备”按钮,如果日志区显示“启动成功”,说明设备开始运行;如果显示“启动失败”,就需要重新确认载板是否插好,确保无接触不良后,关掉上位机后重新启动。

(3)FPGA复位。点击FPGA复位按钮,在任何状态下,都会使FPGA内所有资源处于复位后状态,日志区会显示“复位成功”,如果显示“复位失败”,那么也需要关掉上位机重新打开。

(4)配置AD9364。前期准备好AD9364的配置文件,在AD9364配置框内,打开配置文件所处的位置,点击“开始配置”按钮,AD9364的配置信息将从上位机下发到FPGA,对AD9364进行配置。日志区显示“配置失败”则需要重新再配置一次。

(5)发送信源数据。前期准备好信源数据,在信号源框内,打开信源数据所在文件位置,点击发送信号,上位机就会利用PCIe通道将信源数据重复地发送到FPGA,经AD9364发射端发出,日志区会显示“数据正在发送”。

(6)停止发送。如果需要停止发送,按下“停止发送”按钮即可;按下“继续发送”按钮就可以继续发送信源数据。

4 测试验证

根据图1的整体设计方案,在Vivado2018.2内完成硬件电路的逻辑设计,搭建了信号源设备用以测试。如图10、图11所示,FPGA载板通过FMC与AD9364相连,然后通过PCIe的插槽与便携式工控机相连。

4.1 资源使用分析

在Vivado2018.2的开发平台下,用verilog语言完成硬件逻辑设计,经过综合和布局布线,Vivado提供了本次设计的FPGA资源消耗情况,如表1所示。可以从表1看出FPGA芯片的内部资源丰富,整个逻辑设计占用的资源并不是太高,其中主要的FF、LUT和RAM资源还有很多未利用,未来可以在这个设备的基础上添加其他功能。

表1 FPGA资源使用情况表

4.2 AD9364发射测试

AD9364芯片支持最高载波频率为6 GHz,本文的设计方案中采用的AD9364射频部分是评估板EVAL-AD-FMCOMMS4-EBZ。在实际测试中,利用配置软件生成不同频率载波的配置信息,通过上位机经FPGA对AD9364进行配置,不断调整发射载波频率,测试发现可以实现载波频率70 MHz~6 GHz的变化,图12为其中AD9364单独发射载波频率为6 GHz的频谱图。

4.3 矢量信号源测试

用来测试的源信号由Simulink产生,利用它来产生QPSK调制信号,符号速率为16.384 Mbit/s,并在上位机做好处理,归一化后乘以2 047后取整,保证有效数据11 bit,加上符号位为12 bit,符合AD9364的12 bit精度。完成AD9364的相关配置信息生成,主要选择采样速率、载波频率、滤波器设置和数据速率等,按照上位机步骤下发信源数据,图13为ILA中被正确识别拆分的I,Q 2路信号,图14为AD9364输出载波频率为230 MHz的QPSK信号频谱图,可以看出QPSK调制信号带宽为符号速率2倍,杂波抑制约为60 dB。

在上位机修改AD9364的配置信息,将载波频率提高到1.4 GHz,然后在上位机操作下发到FPGA进行重新配置,由图15可以看到成功地将载波频率修改到1.4 GHz。

5 结论

本文设计了基于FPGA与AD9364的便携式矢量信号源设备并成功实现,经测试验证,该设备能正确发送用户所需的信号,发射信号源数据为用户根据需求自定义生成,与传统的矢量信号源相比,具有低成本、灵活性高、适用性高及便携式等特点。该设备可以利用在复杂电磁环境下实际采集的信号,在其他地点完成此复杂电磁环境的模拟。本文给出的方案在信号源的设计中具有很好的应用价值。

猜你喜欢
信源信号源寄存器
基于极化码的分布式多信源信道联合编码
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
聚焦4K视频播放展望未来信号源发展
低噪声键控宽频信号源设计与实现
发射机信号源的自动处理和控制系统
信源自动切换装置的设计及控制原理
灾难传播中的媒体人微博的信源结构分析
——以鲁甸地震相关新浪微博为例
基于DDS的PCM数字信号源设计与实现
基于Matlab的信源编码实验系统的设计