DIY编程器网

标题: 基于FPGA与DSP导引头信号处理中FPGA设计 [打印本页]

作者: admin    时间: 2014-10-10 08:10
标题: 基于FPGA与DSP导引头信号处理中FPGA设计
1 引言
        随着同防工业对精确制导武器要求的不断提高,武器系统总体设计方案的日趋复杂,以及电子元器件水平的飞速发展。导引头信号处理器的功能越来越复杂,硬件规模越来越大.处理速度也越来越高.而且产品的更新速度加快,生命周期缩短。实现功能强、性能指标高、抗干扰能力强、工作稳定可靠、体积小、功耗低、结构紧凑合理符合弹载要求的导引头信号处理器已经势在必行。过去单一采用DSP处理器搭建信号处理器已经不能满足要求.FPGA+DSP的导引头信号处理结构成为当前以及未来一段时间的主流。
     FPGA和DSP处理器具有截然不同的架构,在一种器件上非常有效的算法.在另一种器件上可能效率会非常低。如果目标要求大量的并行处理或者最大的多通道流量,那么单纯基于DSP的硬件系统就可能需要更大的面积,成本或功耗。一个FPGA仅在一个器件上就能高提供多达550个并行乘法和累加运算,从而以较少的器件和较低的功耗提供同样的性能。但对于定期系数更新,决策控制任务或者高速串行处理任务,FPGA的优化程度远不如DSP。
     FPGA+DSP的数字硬件系统正好结合了两者的优点,兼顾了速度和灵活性。本文以导引头信号处理系统为例说明FPGA+DSP系统中FPGA的关键技术。
2 系统组成
      本系统南一片FPGA和一片DSP来组成,FPGA在实时并行计算实现标准数字信号处理算法的能力远强于DSP,因此数字接收系统信号处理要用到的FIR滤波、FFT、IFFT等算法,在FPGA中实现要远快于用DSP,且FPGA厂商提供了非常丰富易用的能实现数字信号处理的参数Core.可以大大简化开发过程。而且,FPGA支持丁程师设计高度并行的架构以及有大量乘法器和存储器资源,因此将数字下变频(DDC),脉压(PC),动目标检测(MTD),恒虚警处理(CFAR)等也在FPGA中实现,可有效提高实时性,集成度和稳定性。而DSP用来进行其他复杂信号处理,比如自动目标识别、抗干扰等。
FPGA和DSP的通信通过32位的数据总线联通。FPGA通过此数据总线把柃测得到的目标信息传递给DSP做后续处理,DSP则通过数据总线传递控制信息。
  

                                                      图1 FPGA+DSP的系统组成框图

3 FPGA设计中的关键技术
3.1 跨时钟域的设计
3.1.1基础
      只有最初级的逻辑电路才使用单一的时钟。大多数与数据传输相关的应用都有与牛俱来的挑战,即跨越多个时钟域的数据移动,例如磁盘控制器、CDROM/DVD控制器、调制解调器、网卡以及网络处理器等。当信号从一个时钟域传送到另一个时钟域时,出现在新时钟域的信号是异步信号。
      在现代IC、ASIC以及FPGA设计中,许多软件程序可以帮助工程师建立几百万门的电路。但这些程序都无法解决信号同步问题。设计者需要了解可靠的设计技巧,以减少电路在跨时钟域通信时的故障风险。
     从事多时钟设计的第一步是要理解信号稳定性问题。当一个信号跨越某个时钟域时.对新时钟域的电路来说它就是一个异步信号。接收该信号的电路需要对其进行同步。同步可以防止第一级存储单元(触发器)的亚稳态在新的时钟域里传播蔓延。
     亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既尤法预测该单元的输}}{电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期问,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种尤用的输出电平可以滑信号通道上的各个触发器级联式传播下去。
     由于数据率比较低,而FPGA的工作频率可以很高,所以在雷达信号处理机的FPGA设计中,势必要引入跨时钟域的设计,例如在某项口中,控制网络为10M.脉冲压缩工作时钟为200M,MTD、CFAR为80M,是个典型的跨时钟域设计。

      图2时钟域示意图


3.1.2跨R寸钟域的处理
      现代IC与FPGA设计巾使用的综合工具可以保证设计能满足每个数字电路触发器对建立与保持时间的要求。然而,异步信号却给软件提出了难题。对新的时钟域米说.从其它时钟域传柬的信号是异步的。大多数综合丁具在判定算步信号是否满足触发器时序要求时遇到了麻烦。因为它们不能确定触发器处于非稳态的时间,所以它们也就不能确定从一个触发器通过组合逻辑到达下一个触发器的总延迟时间。所以,最好的办法是使用一些电路来减轻异步信号的影响。
同步措施归纳起来主要有两方面,
1)对于跨越时钟域控制信号,用同步器来实现同步;
为了使同步。工作能正常进行,从某个时钟域传来的信号应先通过原时钟域上的一个触发器,然后不经过两个时钟域间的任何组合逻辑,直接进入同步器的第一个触发器中(图3)。这一要求非常重要,因为同步器的第一级触发器对组合逻辑所产生的毛刺非常敏感。如果一个足够长的信号毛刺正好满足建立一保持时问的要求,则同步器的第一级触发器会将其放行,给新时钟域的后续逻辑送出一个虚假的信号。
  

                                      图3同步器示意
一个经同步后的信号在两个时钟沿以后就成为新时钟域中的有效信号。信号的延迟是新时钟域中的一到两个时钟周期。一种粗略的估算方法是同步器电路在新时钟域中造成两个时钟周期的延迟,设计者需要考虑同步延迟将对跨时钟域的信号时序造成的影响。
2)对于跨越时钟域的数据总线,要通过FIFO或RAM达到同步的目的。
        数据在时钟域之间的传递是多个随机变化的控制信号在时钟域之间传递的一种实例。这种情况下,用同步器米处理同步问题往往不能收到满意的效果,因为多位数据的变化将会使同步器的采样错误率大大增加。常用的数据同步方法有两种:一种是用握手信号;另一种是用FIFO,一个时钟存数据。另一个时钟取数据。
时钟域之间的数据传输用得最多的是FIFO,采用Xilinx自带的FIFO核来实现比较简单方便,图4足Xilinx提供的FIFO核的一个简单的示意图.wclk为写时钟,rclk为读时钟,FIFO深度通过读写使能wen和ren控制。

                           图4 FIFO核示意图
3.2、FPGA与DSP数据交互
     实际应用过程中,DSP和FPGA程序设计往往是由不同的设计人员分工完成,在最后系统联调时,这两者之间的数据传输经常占用大量的调试时间,成为约束工程进度的关键凶素。因此,DSP与FPGA间接口和传输方式的选择与设计,是系统设计中必须要考惑的问题。
     导引头信号处理的一个特点是,FPGA要传输给DSP的数据比较多,需要传递幅度信息,和差支路数据等十几组数据.每组数据长度在512~2K,而且读取速度要求也比较高,一般要求百兆以上的读取频率。经过工程实践表明,采用通过EDMA通道同步读取FIFO的方式实现通信是非常有效的方法。但是接口处的FIFO比较多,而且读取速度有比较高,这势必导致FPGA内部对接口处资源的竞争,甚至会导致时序的不满足。在实际工程调试中表现在DSP接收到的数据乱序,周期循环甚至乱码。
要解决好FPGA和DSP的数据交互问题,要注意以下两个方面。
3.2.1 三态门的设计
        在本设计中,DSP和FPGA的互连采用了总线连接的方式,数据交互是通过一个32位的双向数据总线来完成的,而要实现双向总线,就需要使用FPGA构造三态总线了,使用三态缓冲器实现高、低电平和高阻三个状态。

                          图5双向数据总线的三态门设计
         本设计当中,FPGA给DSP发中断信号,DSP在中断信号到来时,根据系统要求,将不同的控制字写入数据总线,然后通过数据总线从FPGA中不同的FIFO中读取数据,这一切都通过DSP在地址线上给出不同的地址来完成。为了合理分配总线的使用,设计当中使用这样的策略:利用片选信号aace3,地址aaea[9:0]作为三态缓冲器的控制信号,由于DSP对FPGA的读写地址都不同,当片选信号aace3有效时,FPGA根据地址来确定凑写方式以及读写那些信息,否则置为高阻态,这样就避免了可能产生的的总线阻塞现象,使DSP和FPGA之间的数据交互能够顺利进行,示意图如图5所示。
3.2.2 加有效的时序约束
      由于接口FIFO比较多,为了合理分配FPGA内部接口处的资源,满足系统的时序要求,需要加必要的时序约束。因为本设计采用Xilinx公司芯片,所以需要加偏移约束2。
     偏置约束可以优化以下时延路径:从输入管脚到同步元件偏置输入;从同步元件到输出管脚偏置输出。为了确保芯片数据采样可靠和下级芯片之间正确交换数据,需要约束外部时钟和数据输入输出引脚问的时序关系。偏置约束的内容告诉综合器,布线器输入数据到达的时刻或者输出数据稳定的时刻,从而保证与下一级电路的时序关系。更多关于约束的内容请参阅文献。
4 结束语
       FPGA+DSP是同前导引头信号处理器中运用的最广泛的系统组成形式,对速度以及灵活性的要求都能够很好的满足,文中所涉及到的跨时钟域设计以及数据接口方面的问题是这样的系统中FPGA设计存在的关键技术,文中提出了详实的解决方法,而且工程应用已经证明了其有效性。
       本文作者创新点:依据工程实践经验,总结了在FPGA+DSP结构的雷达导引头信号处理中FPGA的关键问题,并提出了详细的解决方案,并得到了工程验证。




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