摘要:针对调制样式在不同环境下的变化,采用了FPGA部分动态可重构的新方法,通过对不同调制样式信号的解调模块的动态加载,来实现了不同环境下针对不同调制样式的解调这种方式比传统的设计方式具有更高的灵活性、可扩展性,并减低了成本和功耗该设计方案同时也介绍了FPGA部分动态可重构的概念和特点,可以对其它通信信号处理系统设计提供一定的参考。

关键词:部分动态可重构;信号解调;FPGA;硬件实现

随着现代通信技术的迅速发展,信号的调制方式向多样化发展,解渊技术也随之不断向前发展。为了对高速大带宽的信号进行实时解调,现在很多的解调关键算法都是在高速硬件上用可编程逻辑器件(FPGA)实观,利用FPGA强大的资源和实时处理能力来快速的实现信号的跟踪、锁定和解调但是,基于硬件的实现方案和基于软件的方案相比,往往存在不能迅速适应调制样式改变的问题。为了有效斛决这个问题,笔者通过基下FPGA部分动态町重构技术,提出了相应的解决方案。

1 FPGA部分动态可重构技术介绍

从九零年代以来,随着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,可以长期或者临时保存多个配置比特流文件。

在图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所示,信号解调系统主要由信道化模块,可重构解调模块和数传接口模块组成。

信道化模块主要是把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)中综合好的模块网表指定为可重构模块下的可选内容。

6)在PlanAhead工具的Device视图中,对可重构模块划分分区(PBlock),目前分区只支持矩形,要求分区包含的资源数目略大于解渊模块所需资源的最大值,其中包括逻辑资源(查找表和寄存器),乘法器(DSP48E)和RAM资源。

7)根据对2个可重构解调模块的不同配置,产生多个配置文件,配置文件的一个例子如表1所示,并逐一进行布局布线,产生完整的配置比特流文件和用于部分重构的比特流文件。对于每一组配置文件,会产生一个包含静态逻辑的完整配置比特流文件,和2个用于部分重构的比特流文件,分别对应2个不同的分区,配置加载时不能随便互换。

8)对表1中配置文件进行设计规则检查比较,保证各组配置文件生成的完整配置的比特流文件是一致的。

9)完成以上设计后,首先调用任意一个完整配置文件进行加载,保证FPGA成功运行静态逻辑,然后根据需要,选择表1中的配置文件表中的任何1组,进行部分动态加载。

4 应用结果

以上设计经过实际验证,可以实现2路信号在不同调制样式的解调,当信号样式变化时,动态加载相应的解调模块,可以迅速完成功能切换,实现对应的解调功能。经过实际测试,部分动态可重构模块的加载速度存10 ms以内,极大的提高了原有系统的性能。

5 结论

目前国际上对FPGA可重构技术的研究极为广泛,本文介绍了一种基于Xilinx FPGA的部分动态可重构技术的信号解调系统,可以把不同的解调模块定位到芯片内部同一逻辑资源部分,通过重构这些资源来实现不同样式信号的解调,同时保持其他部分电路功能正常运行,从而提高了系统的适应能力。

本系统可以存通信系统中得到应用,对航天、电力等领域的类似系统也有参考价值,可以提高相应系统的灵活性和扩展性,减低系统功耗,缩短系统开发时间。

时间:2012-08-02

planahead 动态重构_部分动态可重构相关推荐

  1. 浅析FPGA局部动态可重构技术

    浅析FPGA局部动态可重构技术 所谓FPGA动态可重构技术,就是要对基于SRAM编程技术的FPGA实现全部或部分逻辑资源的动态功能变换.根据实现重构的面积不同,动态可重构技术又可分为全局重构和局部重构 ...

  2. ZooKeeper Dynamic Reconfiguration(ZooKeeper 动态配置重构)

    Overview 概览 Prior to the 3.5.0 release, the membership and all other configuration parameters of Zoo ...

  3. 移动平均线ma分析_使用动态移动平均线构建交互式库存量和价格分析图

    移动平均线ma分析 I decided to code out my own stock tracking chart despite a wide array of freely available ...

  4. sql server 监视_使用动态管理对象监视SQL Server –会话和连接

    sql server 监视 A fundamental task of Database Administrators is monitoring SQL Server performance. Wh ...

  5. 华为路由器ospf路由表解读_华为动态路由OSPF实例详解之多区域配置-华为路由器设置...

    在企业的大型网络中,因为设备众多,静态路由已经很难满足路由时常变化的需求,动态路由已经是必然选择,其中,OSPF又是最简单适合的动态路由协议,上一节已经介绍了单区域的OSPF配置,接着简单介绍下多区域 ...

  6. 用 Flask 来写个轻博客 (17) — MV(C)_应用蓝图来重构项目

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 重构目录结构 重构代码 使用蓝图后的路由过程 总结 前文列表 用 Fl ...

  7. 人工智能导论 王万良教授_学会动态丨辽宁省人工智能导论教学研讨活动在沈阳成功举办...

    5月29-30日,由中国科学技术协会指导,中国人工智能学会.辽宁省科学技术协会和辽宁省教育厅联合主办,东北大学承办的辽宁省<人工智能导论>教学研讨活动在沈阳成功举办.此次教学研讨活动由&l ...

  8. 动态网站的技术路线_简单动态网站搭建

    如何在windows服务器上配置wordPress和discuz 网站建设中的概念讲解 网站建设的基础操作 网站程序的基础使用 网站程序的优化 简单动态网站搭建 软件部署 域名和主机的购买 域名解析 ...

  9. java如何把文件中的内容存到一个动态数组arraylist中_如何动态地向Java中的数组添加项目?...

    由于数组的大小是固定的,因此您不能动态地向其中添加元素.但是,如果您仍然想要这样做,将数组转换为ArrayList对象. 将所需元素添加到数组列表. 将数组列表转换为数组. 示例import java ...

最新文章

  1. Window10+Python3.5安装opencv
  2. jvm在不同系统中的最大内存空间地址
  3. 大学计算机spoc长安大学答案,2018春C语言程序设计 上(长安大学)
  4. C++(STL):20---deque容器访问元素
  5. 项目实体类报错_分享elasticserch在质检算法项目中的应用
  6. Android Spinner填充数据后设置默认值的问题
  7. 运动目标跟踪(四)--搜索算法优化搜索方向之Camshift
  8. 计算机语言入门vfp,VFP基础教程第二章VFP语言基础3
  9. DPDK Release 21.11
  10. PHP实现用户扫描二维码后提示扫码成功的操作
  11. python训练营风变编程_扒一扒风变编程的社群运营手段,满满都是套路
  12. python自动排版_你熟悉Python的代码规范吗?如何一键实现代码排版
  13. blackduck,黑鸦binary二进制模式扫描jenkins配置
  14. I DID IT 推广二番 | ArcBlock 发布汇款转账应用 Demo
  15. 身体指标的测试软件,Runtastic Libra体重秤(身体指标测量)
  16. 麻醉学专业名词解释(比较全面)
  17. Anaconda/pip 更换阿里源,助力 conda create -n 虚拟环境搭建
  18. linux没办法识别u盘,linux系统下不能识别U盘
  19. 关于参加大数据培训机构有没有用的一些想法
  20. Java获取真实Ip地址

热门文章

  1. 虚拟机VMware安装centos7详细步骤
  2. nginx之静态资源访问和负载均衡的使用!
  3. MP3文件转换成arduino可以直接播放的wav格式,MP3转WAV工具
  4. 计算机控制水槽液位控制,计算机过程控制实验报告单容水箱液位数学模型的测定实验...
  5. 十九、I2C驱动及应用
  6. 手机拍照功能的简单实现
  7. 函数防抖Debounce和函数节流Throttle
  8. Struts2配置文件【代码库】
  9. CentOS 7 为firewalld添加开放端口及相关资料
  10. [Java开发之路]Java字符串