找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于FPGA部分动态可重构的信号解调系统的实现

[复制链接]
admin 发表于 2013-3-26 10:29:01 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
随着现代通信技术的迅速发展,信号的调制方式向多样化发展,解渊技术也随之不断向前发展。为了对高速大带宽的信号进行实时解调,现在很多的解调关键算法都是在高速硬件上用可编程逻辑器件(FPGA)实观,利用FPGA强大的资源和实时处理能力来快速的实现信号的跟踪、锁定和解调但是,基于硬件的实现方案和基于软件的方案相比,往往存在不能迅速适应调制样式改变的问题。为了有效斛决这个问题,笔者通过基下FPGA部分动态町重构技术,提出了相应的解决方案。
   1 FPGA部分动态可重构技术介绍
      从90年代以来,随着FPGA芯片技术的逐步成熟和发展,FPGA在各个领域中的应用逐渐扩大,芯片内部的资源规模也成倍增加。但是,随着FPGA容量的扩大,FPGA的设计和实现也渐渐出现了下面的瓶颈问题:
   1)FPGA芯片内部布线随着设计复杂度的增加,布线的难度成平方增加,布线的时间也成倍增加。
   2)对于大容量的FPGA,为了保证设计时约定的性能,为了满足时序约束条件,最终实现版本的实际资源利用率反而下降。
   3)大容量的FPGA一旦设计完成后,对其进行部分模块的调整和优化经常需要很长时间。
       在此上述这些原因的基础上,FPGA的重配置技术应需而生。FPGA重配置技术分为完全重配置技术和部分动态可重构技术两种。其中FPGA完全重配置技术就是通过FPGA外部的配置处理单元,通过对FPGA配置管脚的编程,来实现整个FPGA内容的切换,这种方式在目前已经得到了较为广泛的应用。而FPGA部分动态可重构技术是通过FPGA内部或外部的配置处理单元,对FPGA内部部分资源的时分复用,来实现FPGA内部部分模块的切换。
       对这两种配置技术进行比较,可以看到FPGA部分动态可重构技术的优势在于以下这些方面:
   1)提高了配置速度。完全重配置需要配置整个FPGA的比特流文件,而部分动态可重构技术只需要配置相应模块的逻辑内容,文什大小相差悬殊,在相同的配置时钟频率下,部分动态可重构技术的配置速度是完全配置的几分之一或者几十分之一。
   2)省略了完全配置后的复位、下达参数的流程。完全重配置在配置完成后,整个FPGA处于初始状态,需要重新对接口进行初始化,并配置运行参数。而部分动态可重构技术不用进行全局复位,下达参数也只需要针对重构的模块。
   3)保存了FPGA运行的中间结果和数据。完全重配置很难保存FPGA运行的中间结果,如果外接DDR SDRAM等存储单元,也会因为接口的重新复位而导致数据混乱,而部分动态可重构技术完全不用担心这些问题。
       部分动态可重构技术具有上述相对与完全重配置技术的优势外,也和完全重配置技术一样,具有低功耗和灵动性高的优点,并且具备远程加载功能,可以通过有线网络或者无线网络来实现超距环境下的FPGA功能变更。
       部分动态可重构技术和完全重配置技术相比,对FPGA设计人员的开发能力和规划能力要求更高,下面通过对一个简单的数字信号解调系统,来给出部分动态可重构技术的实现途径。
   2 FPGA部分动态可重构技术的硬件实现方案
       FPGA部分动态可重构的硬件实现如图1所示,为了保证FPGA配置的可靠性,本文采用了FPGA外部单元控制配置流程的实现方式。一个基本的实现结构除了被配置的FPGA外,需要有配置控制模块、配置接口模块和配置存储模块这3个部分。其巾配置控制模块一般由DSP、单片机ARM处理器或者PowerPC选择,主要功能是从配置存储模块或者外部接口中获取配置比特流文件,并在需要部分动态重构的时刻把配置比特流文件传送到配置接口模块。配置接口模块一般由FPGA或者CPLD实现,功能是接收配置控制模块传输的配置比特流,进行相应的时序转换,产生满足FPGA配置时序的信号,从而对FPGA进行配置。配置存储模块一般是FLASH或者SDRAM,可以长期或者临时保存多个配置比特流文件。
    20121107045506804194792.jpg
   
       在图1的结构中,配置接口模块是实现的关键模块,根据配置速度和稳定性的要求,可以采用Slave SelectMap或者Slave Setial配置模式,从性能考虑,一般选择Slave SelectMap这种并行配置模式,在配置时钟最高50MHz、配置管脚32位的情况下,配置速度可以达到1.6Gb ps。在Slave SelectMap模式下,配置接口模块和FPGA的管脚连接可以参考XilinxVinex-5 Configuration User Guide中相应章节,本文不再赘述。并根据如图2所示的配置时序,来实现FPGA完全配置比特流文件的下载和功能实现。
   
       在进行配置部分动态可重构比特流文件时,因为该比特流文件不像完整的配置比特流文件一样具有文件头,而是只有帧地址、配置数据及校验和,当所有配置内容传输到FPGA后,不会有DONE信号拉高来表示配置结束。在这种情况下,必须监视传输来的配置数据,当出现部分重配置文件的结束标志DESYNCH(0000000D)时,就可以判断部分重构流程结束,可以运行新的重构模块。
   3 基于FPGA部分动态可重构的信号解调系统开发流程
   3.1 FPGA模块划分
       在完成了支持FPGA部分动态可重构的硬件实现后,下面开始规划信号解调系统的FPGA设计架构。如图3所示,信号解调系统主要由信道化模块,可重构解调模块和数传接口模块组成。
    20121107045506913564794.jpg
       信道化模块主要是把AD数据进行信道化处理,进行滤波,下变频、信道选择和抽取。可重构解调模块是针对不同调制样式的分别实现不同的解调模块,并根据实际需要进行部分重构。数传接口模块是把解调的结果传输到FPGA外,进行后续处理和在界面中显示。
   3.2 FPGA模块的设计和实现
      按照图3所示的结构,按照下面步骤进行基于部分动态可重构技术的FPGA程序设计:
   1)把需要部分重构的FPGA模块设计为一个空盒,即只有输入输出管脚,没有实际内容的空模块。在进行空模块的管脚规划时要综合考虑多种解调样式下的接口兼容性,保证一个模块接口能涵盖需要处理的所有样式。
   2)分别完成不需要部分重构的FPGA予模块,并完成FPGA顶层模块。
   3)对FPGA顶层模块进行综合,产生顶层网表。
   4)按照步骤1)中的模块定义格式完成针对不同调制模式的解渊模块,如qpsk_demod,fsk_demod等,并通过仿真验证,然后逐模块分别综合成单独的模块网表文件,保存到不同的目录中。
   5)在PlanAhead工具中导入FPGA顶层网表,注意在导入选项中选择支持部分重构。在PlanAhead工具中把2个空的可重构解调模块设定为可重构分区(ReconfigurablePartition),如图4所示,并把步骤4)中综合好的模块网表指定为可重构模块下的可选内容。
    20121107045506976064795.jpg
   6)在PlanAhead工具的Device视图中,对可重构模块划分分区(PBlock),目前分区只支持矩形,要求分区包含的资源数目略大于解渊模块所需资源的最大值,其中包括逻辑资源(查找表和寄存器),乘法器(DSP48E)和RAM资源。
   
   7)根据对2个可重构解调模块的不同配置,产生多个配置文件,配置文件的一个例子如表1所示,并逐一进行布局布线,产生完整的配置比特流文件和用于部分重构的比特流文件。对于每一组配置文件,会产生一个包含静态逻辑的完整配置比特流文件,和2个用于部分重构的比特流文件,分别对应2个不同的分区,配置加载时不能随便互换。
    20121107045507069814796.jpg
   8)对表1中配置文件进行设计规则检查比较,保证各组配置文件生成的完整配置的比特流文件是一致的。
   9)完成以上设计后,首先调用任意一个完整配置文件进行加载,保证FPGA成功运行静态逻辑,然后根据需要,选择表1中的配置文件表中的任何1组,进行部分动态加载。
   4 应用结果
      以上设计经过实际验证,可以实现2路信号在不同调制样式的解调,当信号样式变化时,动态加载相应的解调模块,可以迅速完成功能切换,实现对应的解调功能。经过实际测试,部分动态可重构模块的加载速度存10 ms以内,极大的提高了原有系统的性能。
   5 结论
      目前国际上对FPGA可重构技术的研究极为广泛,本文介绍了一种基于Xilinx FPGA的部分动态可重构技术的信号解调系统,可以把不同的解调模块定位到芯片内部同一逻辑资源部分,通过重构这些资源来实现不同样式信号的解调,同时保持其他部分电路功能正常运行,从而提高了系统的适应能力。
     本系统可以存通信系统中得到应用,对航天、电力等领域的类似系统也有参考价值,可以提高相应系统的灵活性和扩展性,减低系统功耗,缩短系统开发时间。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-28 20:24 , Processed in 0.057972 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表