摘 要: 随着FPGA的广泛应用, 其实现的功能也越来越多, FPGA 的动态重构设计就显得愈发重要。在分析Xilinx Vertex II Pro系列FPGA配置流程、时序要求的基础上, 设计了基于CPLD 的FPGA 快速动态重构方案, 实现了同一硬件平台下多个FPGA 设计版本的在线动态配置和功能重构, 该技术已在工程中成功应用。
1 引 言
软件无线电( SDR )的设计思想已成为现今通信的热点, 它以通用、标准、模块化的硬件处理平台为依托, 通过软件编程来实现无线电台的各种功能。硬件处理平台设计为通信系统的关键之一,通用性是其首要考虑的问题, 因为只有具有通用性,才能用软件实现多种功能。由于FPGA ( Field Programmable Gate Array)的现场可编程特性, 故目前硬件处理平台的设计基本上都采用了FPGA + CPU 的架构, FPGA主要用来完成并行和高速处理的功能。
随着微电子技术的发展, FPGA 可提供的资源日益强大, 达到上千万门级, 其承担的功能越来越多, 同时, 电子设备对成本、功耗和体积的要求也越来越高, 矛盾就不可避免地产生。通过实时地动态重新配置FPGA 来加载不同的功能软件, 实现功能切换, 是解决此问题的较好方法, 可实现几者之间的均衡。目前, 实现FPGA 动态重新配置比较通用的方法有两种: 一是通过DSP或其它CPU 读取存储器中的比特( bit)文件对FPGA 进行串行加载或并行加载, 其缺点是加载速率一般很低, 不能实现状态高速切换; 二是使用Xilinx 公司的专用配置芯片XCFxxP系列, 但由于其存储容量有限, 对于功能复杂的系统, FPGA 的软件版本多, 需要多片专用配置芯片, 不适用于印制板尺寸很小、布局紧张的场合。
针对上述问题, 本文提出了基于CPLD的FPGA快速动态加载方案, 实现了FPGA 的功能重构, 克服了上述两种方式的缺点。
2 Vertex II Pro的配置流程
Xilinx 公司的FPGA 配置存储器是易失性的 , 每次上电时都要将存储在外部存储器中的位流文件加载到FPGA中才能正常工作。其配置过程主要有4个阶段: 清除配置存储器、初始化、加载配置数据、器件启动 , 其流程如图1所示。
配置存储器清除阶段, IN IT _B 和DONE 管脚变低。当配置存储器清除完毕后, IN IT _B 管脚变高。如果通过拉低PROG _B 管脚来清除配置存储器, 则PROG _B 的低脉冲时间至少大于300 ns, 无最大值。上电时序如图2所示。
2. 2 初始化
在初始化阶段, FPGA 首先释放对IN IT_B 的控制权。此时, 如果外部将IN IT _B 拉低, FPGA 将延迟配置进程, IN IT _B上升沿采样配置方式管脚M0、M1、M2, 根据不同的配置方式, 开始配置进程。在此期间, 不需要暂停时间或等待周期, 但IN IT _B 变高后, 也不会立即开始配置, 需要FPGA 从位流文件中收到同步字后, 其配置逻辑才开始处理数据。
2. 3 加载配置数据
内部配置存储器被分成叫做“帧”的块, 真正写进配置存储器的位流部分叫做"数据帧", "帧"的大小和数量随器件而变。一旦配置进程开始, FPGA接收数据帧, 最后一个数据帧接收完后进行CRC 校验。当CRC校验出错, FPGA 将IN IT _B 管脚置低,指示CRC 出错, 同时FPGA 放弃配置进程, 不启动工作, 直至PROG _B变低来重新复位配置逻辑; CRC校验正确, 最后一个数据帧下载后, 将给全局复位信号( GSR)一个脉冲, 它将在进入启动之前复位器件内的全部寄存器。
2. 4 器件启动
启动是配置的最后一个阶段, 是从配置状态到工作状态的一个转换过程, 如图3所示。启动次序是0~ 7的一个8段序列状态机, 可以用软件改变次序, 该阶段完成以下任务: 释放DONE 管脚; 撤消GTS, 激活所有的I/O; 使能GWE, 允许所有的RAM和触发器改变状态; 使能EOS, 启动结束标志总是设在第7段, 其为内部标志, 用户无法介入。
3 CPLD动态配置FPGA的方法
Vertex II Pro 系列有4 种配置模式: 主串行模式、主并行模式、从串行模式和从并行模式。其中主从指的是配置时钟的方向, 主模式配置时钟由FPGA内部振荡器产生, 从模式则由外部提供配置时钟; 串行是指配置数据逐位传输, 并行是指配置数据以字节传输。为了便于有效地控制配置流程和快速加载, 这里选择从并行模式。
评论
查看更多