一种高档FPGA可重构配置方法
扫描二维码
随时随地手机看文章
基于软件无线电的某机载多模式导航接收机能较好地解决导航体制不兼容对飞行保障区域的限制,但由于各体制信号差异较大,各自实现其硬件将相当庞大,若对本系统中数字信号处理的核心 FPGA芯片使用可重构的配置方法,将导航接收机的多种模式以时分复用的方式得以实现,可以重复利用 FPGA的硬件资源,达到了缩小体积,减小功耗,增加灵活性和降低系统硬件复杂程度等目的。本系统中的核心器件是新一代高档 FPGA,适合于计算量大的数字信号处理,包含实现数字信号处理的 DSP块、数字锁相环、硬件乘法器以及各种接口等多项技术,支持远程更新,但其配置数据大,实现较为复杂。采用 CPLD+FLASH方案,有效的解决了这一问题。
1 FPGA及其可重构技术简介
现代高速度 FPGA运行时需将其配置数据加载到内部 SDRAM中,改变 SDRAM里面的数据,可使 FPGA实现不同的功能,即所谓的可重构技术。可重构技术包括静态系统重构和动态系统重构[1]。在 FPGA处于工作状态时对其部分配置数据进行更改称为动态配置,否则称为静态配置。由于本系统在工作时需要改变整个 FPGA功能,所以采用静态配置。这种配置是完全的,它对整个 FPGA的功能、参数完全更改,而且其引脚功能也被更改。
系统的关键部件为一片高档密度 FPGA EP2S30,其要求的一次配置数据达1.205MBytes,故其配置采用“Flash存储器+CPLD主控器”的方案。
EP2S30支持5种配置方案,即AS(Active Serial)模式、PS(PassiveSerial)模式、FPP(FastPassive Parallel)模式、PPA(Passive parallel Asynchronous)模式和JTAG配置模式等。为缩短配置时间,本系统采用FPP模式,配置数据不压缩,使各配置数据长度一致,以便于分配Flash存储空间,且只需要同数据率相同的时钟信号[2]。
2 可重构系统硬件设计
2.1 芯片介绍
2.1.1 FPGA芯片
采用 Altera公司 StratixⅡ系列 FPGA,具有多达 33880个等价逻辑单元 (LE)和 13552个自适应逻辑单元(ALM),支持可编程片上系统 (SOPC),有多达 1369Kbits片上 RAM,支持 NIOS嵌入式处理器,片上有多达 16个 DSP块和 64个 18位×18位硬件乘法器以及 6个 PLL模块,支持远程更新。其片内资源完全可以实现系统所需的数字下变频(DDC)、幅度调制与解调、方位和距离脉冲形成以及控制信号的产生等。但其配置数据达 1.205MBytes,要完成多模式可重构配置,其配置数据存储器必须有足够大的空间。
2.1.2 Flash芯片
为实现快速配置,综合存储容量、工作电压以及等各方面的要求,Flash芯片选用 AMD公司 AM29LV065,其为 8M×8bits Flash存储器,内部被分为 128个 64Kbytes扇区,可以存储 6套配置方案数据。支持 3.3V电压读写和擦除,支持扇区擦除和整片擦除,这一特性有利于实现某一配置数据单独更改。地址不变时能自动进入休眠状态,将数据锁存,从而减小功耗。
2.1.3 控制芯片
控制芯片采用 Altera公司 MAX7000AE系列 CPLD EPM7064A,其具有 ISP功能,为 3.3V内核,IO口灵活方便,避免了采用单片机作为控制芯片时 IO口不够用的问题。
2.2 硬件连接
配置系统硬件连接如图 1所示。
配置系统中配置主控制器 EPM7064A是整个配置系统的核心,它在数据加载过程中与 PC机通讯,产生 Flash命令控制字并将配置数据写入 Flash存储器,同时对 Flash存储空间进行自动分配;在配置过程中根据系统的配置模式控制信号将 Flash中的数据读出并配置到 FPGA中,同时完成 FPGA配置所需的时序,并检测 FPGA的状态,若配置成功进入休眠状态以节省功耗,若配置不成功将对 FPGA进行复位并重新配置。
为简化 CPLD的控制时序,便于对 FPGA进行自动配置,将 Flash的存储空间按顺序划分为 6个块,分别存储 6个配置数据。每个块包含 20个扇区,1.25MBytes存储空间。
500)this.style.width=500;" border="0" />
CPLD控制部分软件设计与实现
3.1 EPM7064A的 Verilog HDL描述
EPM7064A是整个配置电路的核心,它完成 Flash配置数据的加载和配置时序的产生。按照由上至下的进行设计,将其分成三个主要功能模块,即数据加载过程中与 PC机通讯的 UART模块、写 Flash时序产生模块和配置时序产生模块,分别由 Verilog HDL硬件描述语言实现。
数据加载过程中,EPM7064A的 UART模块与 PC机通讯,同时产生 Flash编程控制字,将 PC机送来的数据写入指定的块。其主要工作过程是串口模块接收到一个字节数据后,其 DATARDY有效,触发 Flash写模块先将三个控制字数据 AA、55、A0写入 Flash,然后将接收到的数据写入 Flash。写 Flash仿真时序图如图 4所示。
500)this.style.width=500;" border="0" />
数据读取和配置时序模块的主要程序代码如下:
module conf( clk20m, //设时钟频率20Mhz
…… ) //端口列表
…… //输入输出口定义
…… //寄存器定义
…… //配置模式参数定义
…… //工作状态参数定义
always@(posedge clk)
begin
if (conf_start==1) //配置启动脉冲启动一次配置
nCONFIG<=0;
if(nCONFIG==0)
count1<=count1+1;
if (count1<=50) //进入复位状态,复位时间大于2us
state<=reset;
if(count1>50)
nCONFIG<=1;
if(nSTATUS==1)
state<=configure; //进入配置状态
if(CONF_DONE)
begin state<=init; count2<=count2+1;end //进入初始化状态
if(INIT_DONE)
begin state<=user_mode;count2<=0;end //进入用户状态
end
always@(posedge clk)
begin
case(state)
reset: begin
case(mode)
conf_mode1: address<=23'h000000;
…… //初始化该模式起始地址
endcase
clk_start<=0;
end
configure:
begin
if(clk_start==0)
count3<=count3+1;
if(count3>=2000) //进入配置模式后延时100us 开始写数据
clk_start<=1;
if(clk_start==1)
begin
DCLK<=~DCLK;
if(DCLK==0) begin address<=address+1;DATA_OUT<=datain;end
end
end
init: begin …… end //配置完成,进入初始化工作状态
user_mode: begin …… end //初始化完成,进入用户工作状态
endcase
end
endmodule
程序代码在 QUARTUSⅡ6.0下的仿真时序如图 5所示。其简要工作过程是,外部 conf_start信号启动一次配置,EPM7064A将 nCONFIG和 nSTATUS信号拉低, FPGA进入复位状态,根据 mode取得相应的 Flash初始地址,复位完成 FPGA将 nSTATUS释放,延时大约 100us后 EPM7064开始给 FPGA提供时钟和数据,直到将配置数据全部写入 FPGA,配置完成后 FPGA将 CONF_DONE释放,表明配置完成, FPGA进入初始化状态,经过内部初始化后, INIT_DONE变高,表明 FPGA进入工作状态,各引脚将根据用户定义的状态工作。若配置过程中 nSTATUS被 FPGA拉低,则表明有配置错误,重新进行配置,在任何工作状态下外部指令都可以再次启动配置。
500)this.style.width=500;" border="0" />
3.2 配置文件的获取
在 FPGA的工程设计编译后产生的 .pof和.sof文件只能直接用于在 PS模式下对 FPGA进行
配置,要用 Flash存储配置数据,需要将配置数据转换成 .hexout或.hex格式, QUARTUSⅡ6.0提供两种方法得到所需的文件[2],一是编译时改变编译选项自动生成所需文件,二是将已有配置文件转换为所需文件格式。
4 结束语
本文的创新点在于将可重构配置方法成功应用于某导航接收机中,充分利用了硬件资源。这种可重构配置方法能根据指令自动更改 FPGA配置程序,重构系统功能,实现了多模式导航体制融为一体,系统灵活性和可扩展性大大增强,以较低的成本实现复杂系统,具有一定的工程实用价值。