CN102377423A - Fpga在线配置方法 - Google Patents
Fpga在线配置方法 Download PDFInfo
- Publication number
- CN102377423A CN102377423A CN2010102604417A CN201010260441A CN102377423A CN 102377423 A CN102377423 A CN 102377423A CN 2010102604417 A CN2010102604417 A CN 2010102604417A CN 201010260441 A CN201010260441 A CN 201010260441A CN 102377423 A CN102377423 A CN 102377423A
- Authority
- CN
- China
- Prior art keywords
- fpga
- configuration
- cpu
- data
- configuration data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种FPGA在线配置方法,步骤包括:先用CPU分别连接存储有FPGA配置数据的存储器和FPGA,所述CPU的GPIO口连接FPGA的加载数据的PIN脚;再由CPU从存储器器中调取配置数据;最后,在被动串行PS模式下,通过控制GPIO口的时序关系来完成配置数据加载。使用本方法,可以在设计中既降低成本,实现代替价格昂贵的不可擦写和可擦写配置芯片,并使其达到了保密性和可升级的要求,随时通过简单的文件拷贝操作即可完成产品软件的升级更新。
Description
技术领域
本发明属于卫星通信系统中的一种技术方案,具体是一种FPGA在线配置方法。
背景技术
在当今的通信产品上,产品是否便于现场升级,是否便于灵活使用成为一项关键因素。现在使用的通信设备上广泛的采用了Altera公司的的FPGA器件,其内部采用SRAM工艺,它的配置数据存储在SRAM中,而由于SRAM的易失性,每次系统上电时,必须重新配置数据,即ICR(In-Circuit Reconfigurability),只有在数据配置正确的情况下系统才能正常工作。在线配置方式一般有两类:一是通过下载电缆由计算机直接对其进行配置,二是通过配置芯片对其进行配置。通过PC机对FPGA进行在系统重配置,虽然在调试时非常方便,但在应用现场是很不现实的,自动加载配置对FPGA应用来说是必需的。采用配置芯片价格昂贵,且容量有限,对容量较大的可编程逻辑器件,需要多片配置芯片组成菊花链形进行配置,增加系统设计的难度。
发明内容
为了解决现有技术中存在的上述问题,本发明提出一种实现FPGA在线配置的方法,具体技术方案如下:
一种FPGA在线配置方法,步骤包括:
先用CPU分别连接存储有FPGA配置数据的存储器和FPGA,所述CPU的GPIO口连接FPGA的加载数据的PIN脚;
再由CPU从存储器器中调取配置数据;
最后,在被动串行PS模式下,通过控制GPIO口的时序关系来完成配置数据加载;
对于不同型号的FPGA芯片,相应的配置数据存储于不同的存储器区,由CPU调取相应的配置数据,再通过修改FPGA和CPU的连接(因为CPU的GPIO PIN脚有多个,针对于具体的FPGA,可以对各个GPIO PIN脚进行定义,或者在GPIO PIN脚和FPGA的加载数据的PIN脚之间的物理连接关系),以及时序关系来完成配置数据加载。不同型号的FPGA可能有不同的时钟沿和不同的配置管脚,只要相对应修改CPU的设置即可完成加载。
所述FPGA的加载数据的PIN脚包括:状态输出CONF_DONE、配置的状态nSTATUS、配置控制nCONFIG、时钟输入DCLK和数据输入DATA;
配置过程包括:
当nCONFIG产生下降沿脉冲时,启动配置过程;
在DCLK上升沿,开始将配置数据移入目标FPGA;
配置数据全部正确地移入目标芯片内部后,CONF_DONE信号跳变为高;
DCLK提供时钟,确保目标芯片被正确初始化后,再进入用户工作模式。
当在配置过程中,如果出现错误,nSTATUS是低电平,则重新启动配置过程。
该方案可以有由CPU、FLASH、FPGA和一些外围电路组成实现,将CPU的数个GPIO口和FPGA加载数据的相关PIN脚相连,通过控制GPIO口的时序关系,来完成加载。如果要实现配置不同容量的各种芯片,只要通过修改FPGA和CPU的连接和时序关系即可。而FPGA的数据则由CPU存储于FLASH中,既方便管理也容易更新,最后由CPU选择读取不同存储器区的数据下载到FPGA器件中,实现在线配置。
本发明采用的这套配置方案充分结合了卫星通信产品在实际中对FPGA的使用,满足对设计的保密性和设计的可升级的要求,实现代替价格昂贵的不可擦写和可擦写配置芯片,并且随时方便快捷的升级程序。
本发明的有益效果:
在设计中既降低成本,实现代替价格昂贵的不可擦写和可擦写配置芯片,并使其达到了保密性和可升级的要求,随时通过简单的文件拷贝操作即可完成产品软件的升级更新。
附图说明
图1是PS配置方式时序示意图。
图2是连接电路示意图。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步说明:
一种FPGA在线配置方法,步骤包括:
先用CPU分别连接存储有FPGA配置数据的存储器和FPGA,所述CPU的GPIO口连接FPGA的加载数据的PIN脚;
再由CPU从存储器器中调取配置数据;
最后,在被动串行PS模式下,通过控制GPIO口的时序关系来完成配置数据加载;
对于不同型号的FPGA芯片,相应的配置数据存储于不同的存储器区,由CPU调取相应的配置数据,再通过修改FPGA和CPU的连接,以及时序关系来完成配置数据加载,不同型号的FPGA可能有不同的时钟沿和不同的配置管脚,只要相对应修改CPU的设置即可完成加载。
所述FPGA的加载数据的PIN脚包括:状态输出CONF_DONE、配置的状态nSTATUS、配置控制nCONFIG、时钟输入DCLK和数据输入DATA;
配置过程包括:
当nCONFIG产生下降沿脉冲时,启动配置过程;
在DCLK上升沿,开始将配置数据移入目标FPGA;
配置数据全部正确地移入目标FPGA内部后,CONF_DONE信号跳变为高电平;
DCLK提供时钟,确保目标芯片被正确初始化后,再进入用户工作模式。
当在配置过程中,如果出现错误,nSTATUS是低电平,则重新启动配置过程。
本例中,
a)FPGA器件的配置方式和配置文件
配置方案采用PS配置方式来实现ICR功能,图1是PS配置方式的时序图。PS方式因电路简单,对配置时钟的要求相对较低,而被广泛应用。
工作过程:当nCONFIG产生下降沿脉冲时启动配置过程,在DCLK上升沿,将数据移入目标芯片。在配置过程中,系统需要实时监测,一旦出现错误,nSTATUS将被拉低,系统识别到这个信号后,立即重新启动配置过程。配置数据全部正确地移入目标芯片内部后,CONF_DONE信号跳变为高,此后,DCLK必须提供几个周期的时钟(具体周期数与DCLK的频率有关),确保目标芯片被正确初始化,进入用户工作模式。
配置文件:Altera的开发工具可以生成多种配置或编译文件,用于不同配置方法的配置系统,而对于不同系列的目标器件配置数据的大小也不同,配置文件的大小一般有.rbf文件决定。.rbf文件即二进制文件。该文件包括所有的配置数据,一个字节的.rbf文件有8位配置数据,每一字节在配置时最低位最先被装载。CPU可以读取这个二进制文件,并把它装载到目标器件中。
b)软件设计
在该配置方案中,软件是CPU控制软件。CPU的软件采用C语言编程。部分软件程序如下:
DATA0------------------------GPIO6
输出/配置数据
DCLK------------------------GPIO5
输出/配置时钟
nCONFIG------------------------GPIO4
输出/器件复位脚(该信号线的上升沿使配置开始)
CONF_DONE--------------------------GPIO2
输入/状态位(在配置完成后,该信号线为高)
nSTATUS------------------------GPIO3
输入/状态位(如果该信号线为低,表明在配置过程中出现错误,需重新配置)*/
inline void out_DCLK(unsigned int d){//输出时钟
if(d)
GPSR0=(1)<<(2&0x1f);
else
GPCR0=(1)<<(2&0x1f);}
inline void out_DATA(unsigned int d){//输出数据
if(d)
GPSR0=(1)<<(3&0x1f);
else
GPCR0=(1)<<(3&0x1f);}
inline void out_nCONFIG(unsigned int d){//输出nCONFIG
if(d)
GPSR0=(1)<<(4&0x1f);
else
GPCR0=(1)<<(4&0x1f);}
inline int get_nSTATUS(void){//读nSTATUS状态
return(GPLR0 &(1<<(5&0x1f)))?1:0;}
inline int get_CONF_DONE(void){//读CONF_DONE状态
return(GPLR0 &(1<<(6&0x1f)))?1:0;}
void inline download_fpga_byte(char data)
{
char i;
for(i=0;i<8;i++){
out_DCLK(0);
out_DATA(data&1);
data=data>>1;
out_DCLK(1);
out_DCLK(0);
}
}
#define FPGA_SIZE 2000000
int download_fpga(char*filename)
{
char buf[FPGA_SIZE];
int i,j;
int loop;
FILE*fp;
int ret,sizeread;
ret=1;
sizeread=0;
while(1){//-----------------------------------读入FPGA数据
ret=fread(buf+sizeread,1,1,fp);
if(ret!=1)break;
sizeread++;
}
fclose(fp);
out_nCONFIG(1);
udelay(1);
out_nCONFIG(0);
loop=0;
while((get_nSTATUS())){//读取状态
udelay(1);
if(loop++>200){printf(″nStatus not going to Low\n″);return-20;}
}
out_nCONFIG(1);
loop=0;
while(!(get_nSTATUS())){//检测nSTATUS状态
udelay(1);
if(loop++>200){printf(″Error:nSTATUS not going to high\n″);
return-30;}
}
for(j=0;j<sizeread;j++){
download_fpga_byte(buf[j]);
}
loop=0;
while(!get_CONF_DONE())
{
if(loop++>10){
printf(″warning:CONFIG_DONE is not high\n″);
return-40;
}
}
for(i=0;i<50;i++){
out_DCLK(1);
out_DCLK(0);
}
printf(″FPGA download OK\n″);//下载成功
return 0;
Claims (3)
1.一种FPGA在线配置方法,其特征是步骤包括:
先用CPU分别连接存储有FPGA配置数据的存储器和FPGA,所述CPU的GPIO口连接FPGA的加载数据的PIN脚;
再由CPU从存储器器中调取配置数据;
最后,在被动串行PS模式下,通过控制GPIO口的时序关系来完成配置数据加载;
对于不同型号的FPGA芯片,相应的配置数据存储于不同的存储器区,由CPU调取相应的配置数据,再通过修改FPGA和CPU的连接,以及时序关系来完成配置数据加载,不同型号的FPGA可能有不同的时钟沿和不同的配置管脚,只要相对应修改CPU的设置即可完成加载。
2.根据权利要求1所述的FPGA在线配置方法,其特征是所述FPGA的加载数据的PIN脚包括:状态输出CONF_DONE、配置的状态nSTATUS、配置控制nCONFIG、时钟输入DCLK和数据输入DATA;
配置过程包括:
当nCONFIG产生下降沿脉冲时,启动配置过程;
在DCLK上升沿,开始将配置数据移入目标FPGA;
配置数据全部正确地移入目标FPGA内部后,CONF_DONE信号跳变为高电平;
DCLK提供时钟,确保目标芯片被正确初始化后,再进入用户工作模式。
3.根据权利要求1所述的FPGA在线配置方法,其特征是当在配置过程中,如果出现错误,nSTATUS是低电平,则重新启动配置过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102604417A CN102377423A (zh) | 2010-08-23 | 2010-08-23 | Fpga在线配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102604417A CN102377423A (zh) | 2010-08-23 | 2010-08-23 | Fpga在线配置方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102377423A true CN102377423A (zh) | 2012-03-14 |
Family
ID=45795510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102604417A Pending CN102377423A (zh) | 2010-08-23 | 2010-08-23 | Fpga在线配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102377423A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257875A (zh) * | 2013-04-27 | 2013-08-21 | 杭州和利时自动化有限公司 | 一种硬件配置信息的读取方法及系统 |
CN103617056A (zh) * | 2013-11-25 | 2014-03-05 | 广东威创视讯科技股份有限公司 | Fpga逻辑代码的在线升级方法和装置 |
CN104407882A (zh) * | 2014-10-28 | 2015-03-11 | 大唐移动通信设备有限公司 | 一种板卡装置 |
CN104461620A (zh) * | 2014-11-27 | 2015-03-25 | 北京时代民芯科技有限公司 | 一种SoPC芯片自主重构软配置方法 |
CN108362995A (zh) * | 2013-10-12 | 2018-08-03 | 深圳市爱德特科技有限公司 | 一种创新的fpga的使用方法 |
CN111198527A (zh) * | 2020-01-15 | 2020-05-26 | 北京实干兴邦科技有限公司 | 基于fpga的gpio输出状态的控制装置、控制方法及应用 |
CN112506552A (zh) * | 2020-12-30 | 2021-03-16 | 天津瑞能电气有限公司 | 一种基于usb接口的fpga程序加载系统及加载方法 |
CN113157627A (zh) * | 2021-05-13 | 2021-07-23 | 南京典格通信科技有限公司 | 一种基于fpga和射频芯片交互的自适应spi通信系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340585B1 (en) * | 2002-08-27 | 2008-03-04 | Xilinx, Inc. | Method and system for fast linked processor in a system on a chip (SoC) |
US7554357B2 (en) * | 2006-02-03 | 2009-06-30 | Lattice Semiconductor Corporation | Efficient configuration of daisy-chained programmable logic devices |
CN201499258U (zh) * | 2009-09-14 | 2010-06-02 | 首都师范大学 | 双路视场数字图像采集系统 |
CN201527452U (zh) * | 2009-04-28 | 2010-07-14 | 国网电力科学研究院 | 用于雷电探测的远程智能升级装置 |
-
2010
- 2010-08-23 CN CN2010102604417A patent/CN102377423A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340585B1 (en) * | 2002-08-27 | 2008-03-04 | Xilinx, Inc. | Method and system for fast linked processor in a system on a chip (SoC) |
US7554357B2 (en) * | 2006-02-03 | 2009-06-30 | Lattice Semiconductor Corporation | Efficient configuration of daisy-chained programmable logic devices |
CN201527452U (zh) * | 2009-04-28 | 2010-07-14 | 国网电力科学研究院 | 用于雷电探测的远程智能升级装置 |
CN201499258U (zh) * | 2009-09-14 | 2010-06-02 | 首都师范大学 | 双路视场数字图像采集系统 |
Non-Patent Citations (1)
Title |
---|
朱伟等: "基于ARM的嵌入式系统中从串配置FPGA的实现", 《仪表技术》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257875A (zh) * | 2013-04-27 | 2013-08-21 | 杭州和利时自动化有限公司 | 一种硬件配置信息的读取方法及系统 |
CN108362995A (zh) * | 2013-10-12 | 2018-08-03 | 深圳市爱德特科技有限公司 | 一种创新的fpga的使用方法 |
CN103617056A (zh) * | 2013-11-25 | 2014-03-05 | 广东威创视讯科技股份有限公司 | Fpga逻辑代码的在线升级方法和装置 |
CN103617056B (zh) * | 2013-11-25 | 2017-02-01 | 广东威创视讯科技股份有限公司 | Fpga逻辑代码的在线升级方法和装置 |
CN104407882A (zh) * | 2014-10-28 | 2015-03-11 | 大唐移动通信设备有限公司 | 一种板卡装置 |
CN104461620A (zh) * | 2014-11-27 | 2015-03-25 | 北京时代民芯科技有限公司 | 一种SoPC芯片自主重构软配置方法 |
CN111198527A (zh) * | 2020-01-15 | 2020-05-26 | 北京实干兴邦科技有限公司 | 基于fpga的gpio输出状态的控制装置、控制方法及应用 |
CN112506552A (zh) * | 2020-12-30 | 2021-03-16 | 天津瑞能电气有限公司 | 一种基于usb接口的fpga程序加载系统及加载方法 |
CN113157627A (zh) * | 2021-05-13 | 2021-07-23 | 南京典格通信科技有限公司 | 一种基于fpga和射频芯片交互的自适应spi通信系统及方法 |
CN113157627B (zh) * | 2021-05-13 | 2024-03-15 | 南京典格通信科技有限公司 | 一种基于fpga和射频芯片交互的自适应spi通信系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102377423A (zh) | Fpga在线配置方法 | |
CN102609286B (zh) | 一种基于处理器控制的fpga配置程序远程更新系统及其方法 | |
US9652410B1 (en) | Automated modification of configuration settings of an integrated circuit | |
CN102609287B (zh) | 一种通过cpu远程更新fpga的装置及其方法 | |
CN107704285B (zh) | 现场可编程门阵列多版本配置芯片、系统和方法 | |
CN103559053A (zh) | 一种板卡系统及通信接口卡fpga在线升级方法 | |
CN105930186B (zh) | 多cpu的软件加载方法及基于多cpu的软件加载装置 | |
CN107479913A (zh) | 一种fpga配置多启动低资源占用更新方法及实施系统 | |
WO2014143245A1 (en) | Multi-boot of fallback boot of a system-on-chip using a file-based boot device | |
CN103777983A (zh) | 一种星载软件在轨维护及升级方法 | |
CN104035803A (zh) | 一种更新cpld/fpga固件的方法、装置及烧录器 | |
CN105808290B (zh) | 用于多fpga整机系统的远程动态更新系统和方法 | |
CN102520961B (zh) | 片外在线可编程的soc系统及其控制方法 | |
CN101216773A (zh) | 一种嵌入式Linux系统固件下载方法和装置 | |
CN103605542A (zh) | Fpga配置文件的在线升级装置 | |
CN105320531A (zh) | 一种基于MicroBlaze软核的FPGA软件在线升级方法 | |
CN106201636B (zh) | 一种dsp片外代码动态加载方法及装置 | |
CN106406936A (zh) | 一种fpga程序多版本管理装置及方法 | |
CN109669704B (zh) | 远程传输加载多节点fpga程序加载管理电路 | |
CN104679559A (zh) | 单片机在线编程的方法 | |
CN104881286A (zh) | 可编程器件配置系统及方法 | |
CN108139916A (zh) | 可编程逻辑设备的多阶段引导映像加载和配置 | |
CN108037943A (zh) | 一种基于nios ii的fpga在线升级方法 | |
CN101493770A (zh) | 一种远程下载可擦除编程逻辑器件epld的方法 | |
CN109408924B (zh) | 基于dsp芯片的fpga配置方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120314 |
|
RJ01 | Rejection of invention patent application after publication |