DIY编程器网

标题: 基于FPGA的机载合成孔径雷达数字信号处理机接口板卡的设计与实现 [打印本页]

作者: liyf    时间: 2014-10-5 10:18
标题: 基于FPGA的机载合成孔径雷达数字信号处理机接口板卡的设计与实现
基于FPGA的机载合成孔径雷达数字信号处理机接口板卡的设计与实现

摘要:介绍基于FPGA芯片实现的机载合成孔径雷达数字信号处理机接口板卡。该接口板卡负责将输入数据缓存和信息格式转换,然后打包成处理机需要的数据帧发送到信号处理机,并具有PCI接口功能和在线自检测功能。着重介绍了系统的硬件结构设计和软件实现功能,给出了选用的主要芯片的型号。该接口板已应用于某合成孔径雷达数字信号处理机中,整机使用证明该系统工作稳定,实现了设计中要求的功能。    关键词:数据接口 LINK口 现场可编程门阵列 PCI接口
机载合成孔径雷达(Synthetic Aperture Radar,简称SAR)是以“合成孔径”原理和脉冲压缩技术为理论基础,以高速数字处理和精确运动补偿为前提条件的高分辨率成像雷达。对于机载合成孔径雷达成像处理来讲,仅有目标的原始回波数据是不够的,还必须获得雷达和载机的参数。另外,为了满足信号处理机实时处理的要求,要求输入到处理机的各种数据符合处理机成像处理的数据格式。这样,处理机在获得数据帧后就可以直接进行成像处理而不必再有格式转换的开销。但是 目标的原始回波数据与雷达和 载机的参数数据来自两个不同的设备它们的数据格式和时序都是由各自的设备确定的,因此信号处理机便面临着与外围设备接口的问题。
1 系统功能
在本机载合成孔径雷达系统中,进出接口板卡的数据流包括数据采集设备输入的原始回波数据、监控设备输入的雷达和载机的参数数据以及输出到处理机的成像处理数据。它们有如下特点:①输入数据流的速度和时序不匹配。数据采集设备和监控设备是两个异步的系统,它们都有自己的定时控制电路,以自己的速度传输数据。②输入输出数据流的信息格式不匹配。数据采集设备输入的原始回波数据和监控设备输入的雷达和载机的参数数据采用FPDP协议传输,接口板卡输出到处理机的数据采用Link口传输协议进行传输。
考虑到进出接口板卡数据流的特点和雷达系统对接口板卡的控制要求,接口板卡要具有如下功能:
(1)设置数据的缓冲、存储逻辑,以适应不同设备之间的速度差异和时序差异;
(2)进行信息格式转换,将目标的原始回波数据与雷达和载机的参数数据打包,插入相应的帧信息形成处理机要求的数据帧,并控制数据流的走向;
(3)实现PCI接口,能够产生PCI中断;
(4)具有在线自检测功能。

2 系统硬件结构设计

为了简化系统硬件设计,增加系统的灵活性,采用FPGA芯片实现系统要求的数据格式转换、打包、分发和逻辑控制功能。数据缓存采用硬件FIFO和软件双口RAM。PCI接口采用专用接口芯片实现。硬件FIFO和软件双口RAM的写时钟分别由各自的FPDP接口提供,其它时钟由接口板上的晶振提供。系统的硬件结构框图如图1所示。
2.1 输入数据流的缓存方案
为了适应处理机与数据采集设备和监控设备之间的速度差异,解决速度不匹配问题,需要将输入的数据先进行缓存。数据采集设备送入的原始回波数据每帧的数据量比较大,接口板卡上设计了硬件FIFO作为原始回波数据的缓存器,FIFO的读写使能由FPGA编程控制,写时钟由FPDP接口提供,读时钟由接口板卡上的晶振提供。数据采集设备和监控设备是两个异步的系统,雷达参数数据流和原始回波数据流之间没有同步关系,一帧雷达参数数据对应几帧原始回波数据,因此设计中用双口RAM作为雷达参数数据的缓存器。另外,每帧雷达参数的数据量比较小,本设计在FPGA内利用参数化的模块库(Library of Parameterized Modules,简称LPM)中的lpm_ram_dp编程实现双口RAM,简化了硬件设计。
2.2 PCI接口设计
实现PCI接口的方案一般有两种:采用可编程逻辑器件和采用专用总线接口器件。采用可编程逻辑器件实现PCI接口的最大好处是比较灵活,缺点是设计难度较高,开发周期较长。采用专用接口器件实现虽然没有采用可编程逻辑器件实现那么灵活,但能够有效地降低接口设计的难度,缩短开发时间。本系统采用专用接口器件PCI9052实现接口板卡的PCI接口。
接口板卡的硬件资源为映射到FPGA内部寄存器的I/O映射空间和一个中断源。PCI9052提供5个局部地址空间,选用Space0作为接口板的地址空间,分配16个8位地址。同时设置相应的初始化,PCI配置寄存器中的PCIBAR2设置为0XFFFFFFF0,向系统请求分配内存的数量为16。设置局部地址空间的范围为0X01000000~0X01000010。PCI9052提供两个局部中断源,选用LINTi1。FPGA提供电平触发中断信号,因此PCI9052的中断触发模式设置为电平触发。利用PCI9052的局部设备片选信号CS0#作为FPGA的片选信号。CS0#片选信号的起始地址和地址范围由CS0 Base Address寄存器的设置值0x01000011决定,即起始地址为1000000h,地址范围为20h。PCI9052寄存器的初始值由串行EEPROM提供,在PCI9052加电后读取。EEPROM必须采用支持连读功能的芯片,本设计中采用FairChild Semiconductor公司的93CS46N。
2.3 FPGA的配置设计
本设计为FPGA提供了两种配置方式:主动串行配置和被动串行配置。
主动串行配置由EPC2向FPGA器件输入串行位流的配置数据。在该配置方式下,一直由FPGA控制着配置过程。在加电过程中,FPGA检测到nCONFIG由低到高的跳变时,就开始准备配置。FPGA将CONF_DONE拉低,驱动EPC2的nCS为低,而nSTATUS引脚释放并由上拉电阻拉至高电平使能EPC2。此后,EPC2就用其内部振荡器的时钟将数据串行地从EPC2DATA输送到FPGADATA0。当配置完成后,FPGA释放CONF_DONE,将EPC2与系统隔离。
被动串行配置由编程硬件通过ByteBlaster配置。ByteBlaster产生一个由低到高的跳变送到nCONFIG引脚,然后由编程硬件将配置数据送到DATA0引脚,该数据锁存至CONF_DONE变为高电平为止。当CONF_DONE变成高电平时,用DCLK的10个周期初始化FPGA,器件的初始化由下载电缆自动执行。
为了两种配置方式共存,设计中用拨码开关将EPC2与FPGA和ByteBlaster的下载电缆插座隔离。当用被动串行方式配置时,拨码开关断开,由上位机通过ByteBlaster下载电缆加载FPGA。当用主动串行方式配置时,拨码开关接通,由EPC2加载FPGA。电路图如图2所示。
2.4 在线自检测功能
板卡设计时还应考虑便于日常调试维护及故障检测定位。板卡在硬件上针对各电源信号和关键的状态信号设计了信号灯,一旦发现有误,便可给出信号触发该电路板上的信号灯告警,定位系统故障。另外在电路设计时应留出测试孔,以增加电路的可测性。
3 系统的软件设计
系统上电后, PCI上电复位,FIFO清零。上位机向相应寄存器写入初始值,完成寄存器设置。当系统启动信号有效时,接口板开始接收数据,进行数据打包和分发,直到上位机向接口板卡写停止命令为止。图3给出了系统工作流程图。
3.1 数据的打包和流向控制
雷达参数数据和原始回波数据的数据源是异步的,不能保证两者确切的对应关系,接口板卡利用对缓存原始回波数据FIFO和缓存雷达参数数据双口RAM的读写控制,调整雷达参数数据和原始回波数据对应关系,将两种数据源按处理机要求的输入数据格式组成正确的数据帧。雷达参数数据和原始回波数据打包后的数据帧格式如下:

    在程序中,设计了雷达参数发送控制计数器Para_counter和回波数据发送控制计数器Data_counter。系统工作后,每次检测到原始回波数据流的数据有效信号data_valid的上升沿(标记收到完整的一帧回波数据)时,启动雷达参数发送控制计数器开始计数,当计数到设定的值(本设计中为25)时停止计数并启动回波数据发送控制计数器开始计数,计数到设定的值(本设计中为5000)时停止计数。当检测到原始回波数据流的数据有效信号data_valid的下降沿(标记开始接收新的一帧回波数据)时,两个计数器都清零。根据计数器的计数值产生Link口选择信号确定数据的流向。图4给出了数据流向的示意图。图5给出了基于MAXPLUSⅡ10.0的仿真结果,仿真显示正确地实现了数据打包和流向控制。

[attach]32294[/attach]
图3 系统工作流程图


    3.2 Link口传输协议的实现
Link口的数据传输是在同步时钟线(LxCLK)与应答线(LxACK)相互握手的情况下同步传输的。一个传输字为32bit,Link口以4bit为单位进行传输。在LxCLK上升沿,发送端会发送一个新的4bit数据,在LxCLK的下降沿,接收方锁存数据线上的数据。8个4bit数据发送完毕后,如果接收方准备好接收下一个字,则将LxACK置1。发送方在每次发送新字的第一个4bit时对LxACK采样,如果LxACK为0,表明接收方没有准备好,则发送方保持LxCLK为高电平,且数据线上保持当前的4bit数据,直到接收方将LxACK置1,发送方才将 LxCLK下拉,并继续发送新的数据。当发送方缓存为空时,表明没有数据需要发送,则LxCLK保持为低电平。接口板利用VHDL语言实现了Link口传输协议。下面给出了关键的程序片断:

    ChangeStateModeprocessNibleCountemptyLxACKPresentStateempty
begin
case PresentState is
when SendACK =>
if LxACK='1' and empty='0' then
NextState<=Send
else NextState<=SendACK
end if
when Send =>
if NibleCount/= 3 or NibleCount=3 and empty='0'and LxAck='1' then
NextState<=Send
else NextState<=SendACK
end if
end case
end process changestatemode

[attach]32295[/attach]
图5 数据转发仿真时序较


4 应用和结论
目前该接口板已经完成了电路设计、软件仿真和制板,并应用到某机载合成孔径雷达数字信号处理机中。接口板卡位于信号处理机的前端,通过CPCI机箱的前面板接口,采用一块PMC子板实现。系统采用了图1所示的体系结构,锁存器选用TI公司的SN74LVT16374,时钟驱动芯片选用IDT公司的IDT49FCT3805APY,FIFO选用IDT公司的IDT72V36110,PCI接口芯片选用PLX9052,FPGA选用Altera公司的EP1K100FC256-1。经过实验室阶段和外厂试验,接口板都工作正常,达到了设计要求。
作者: 李小路    时间: 2021-6-27 16:01
谢谢分享!




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2