CN105958995B - 一种快速启动fpga的电路和方法 - Google Patents
一种快速启动fpga的电路和方法 Download PDFInfo
- Publication number
- CN105958995B CN105958995B CN201610267195.5A CN201610267195A CN105958995B CN 105958995 B CN105958995 B CN 105958995B CN 201610267195 A CN201610267195 A CN 201610267195A CN 105958995 B CN105958995 B CN 105958995B
- Authority
- CN
- China
- Prior art keywords
- configuration
- preferential
- logical module
- programmed logical
- circuit
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17758—Structural details of configuration resources for speeding up configuration or reconfiguration
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Logic Circuits (AREA)
Abstract
一种快速启动FPGA的电路和方法,包括配置电路、优先配置可编程逻辑模块、非优先配置可编程逻辑模块,优先配置可编程逻辑模块额外还包括边界隔离电路。该FPGA电路架构的核心是改进FPGA内各类型的可编程逻辑单元的位置分布,将需要快速启动的逻辑资源集中放置,并使用边界隔离电路进行环绕,构成相对独立的优先配置可编程逻辑模块区,以实现特定可编程逻辑模块的快速配置、快速启动,快速进入工作状态;其它的可编程逻辑单元则构成非优先配置可编程逻辑模块区,在FPGA快速启动后再进行配置,使FPGA实现完整的逻辑功能。本发明极大减小整个电子系统上电后到进入可操作状态所需要的时间,在可广泛应用于宇航、航空、汽车等领域的电子系统中。
Description
技术领域
本发明涉及一种快速启动的FPGA,通过对FPGA电路架构、配置电路和配置方法的改进,实现对部分逻辑资源的优先配置和快速启动,整体技术属于集成电路领域。
背景技术
随着工艺技术的进步,FPGA的可编程逻辑资源规模逐渐增大,并且整合了各种内嵌的高性能专用可编程逻辑单元(如数字信号处理单元、时钟管理单元、微处理器、块存储器等),已发展为面向应用的数字系统平台,在宇航、航空、汽车、工业控制等领域中起到关键作用。但是,随着FPGA技术发展,最先进的FPGA已经具有几十亿只晶体管的规模,配置码流也增加到几百兆位,使得配置时间普遍在1000毫秒以上,这在很多时序敏感的系统中是无法接受的。例如,PCI-E系统上电后100毫秒根组件就开始扫描总线结构,进行初始化设置,如果FPGA还没有配置完成,就不会响应初始化设置请求,根组件会认为它不存在,以至于后续也无法被PCI-E总线系统识别。汽车领域中基于CAN的网络中也有类似情况,ECU进入睡眠模式,一旦接收到唤醒信号,需要在100毫秒内做好运行准备,同样需要FPGA快速完成启动。随着FPGA规模的进一步增大,这种问题会越来越严重,因此有必要提出一种快速启动的FPGA,采用分区域配置的思路,将总线系统所必需的优先配置可编程逻辑模块区域优先配置起来,使FPGA具备基本的通信响应能力,满足系统时序需求。
发明内容
本发明的技术解决问题是:克服现有技术的不足之处,提供了一种快速启动FPGA的电路架构、配置电路和配置方法,解决了因传统FPGA从上电到启动的时间过长,而导致不能被总线初始化检测到的问题。
本发明的技术解决方案是:一种用于快速启动FPGA的配置电路,包括三维寻址的配置存储器阵列、配置控制中心和“行”配置电路;三维寻址的配置存储器阵列将FPGA的配置存储器阵列按照逻辑资源的物理结构需求而设计成具有相同高度的“行”,使用行地址ADDR_Row进行寻址,将每一“行”中的配置存储器按照所控制的逻辑资源类型不同而区分设计成若干“列”,采用列地址ADDR_Col进行寻址,将每一“列”中的配置存储器设计成若干个1位宽的数据“帧”,采用辅地址ADDR_minor进行寻址;通过三层次的地址来定位每个模块的具体配置帧的位置,逐帧将配置数据写入所需的配置存储单元矩阵,实现独立的、针对单个基本规模的可编程电路模块的分别配置;以实现在对FPGA中大部分配置存储器单元不产生影响的情况,高效完成对某一局部区域配置存储器的快速配置;
配置控制中心接收上电复位信号、全局清零结束反馈信号,产生清零使能信号、全局置位信号,控制FPGA的整体清零行为;接收从FPGA外部读入的配置码流,含配置码流配置命令和配置数据,产生若干个配置数据“字”、配置帧地址,完成优先配置可编程逻辑模块的快速配置和非优先配置可编程逻辑模块的正常配置;接收优先配置可编程逻辑模块和非优先配置可编程逻辑模块的配置完成反馈信号,产生分别针对上述优先配置可编程逻辑模块和非优先配置可编程逻辑模块的全局置位释放信号、全局写使能信号和全局端口三态释放信号,分别完成优先配置可编程逻辑模块的快速启动和非优先配置可编程逻辑模块的正常启动;
“行”配置电路,接收从配置控制中心发出的配置数据“字”,通过位宽转换,成为一个“帧”数据,并通过驱动器发送至配置存储器阵列的一组位线上,对配置存储器进行数据写入;接收从配置控制中心发出的配置帧地址,帧地址包括“行”地址、“列”地址和“辅”地址,解码后成为一个“帧”的选通控制信号,通过驱动器发送到配置存储器阵列的一条对应字线上,完成对相应配置存储器“帧”的字线开启。
一种快速启动FPGA的电路架构,包括优先配置可编程逻辑模块、非优先配置可编程逻辑模块和配置电路;
优先配置可编程逻辑模块包括数个高速接口电路、数个通信协议电路、数十个至数百个可编程逻辑电路和数十个至数百个用户接口电路;其中高速接口电路、通信协议电路、可编程逻辑电路和用户接口电路为可编程逻辑资源;
优先配置可编程逻辑模块中还包括边界隔离电路,用以在优先配置时序关键电路模块与非优先配置的非关键时序电路模块之间进行信号隔离,避免相互之间的影响;
非优先配置可编程逻辑模块包括数千个至数万个可编程逻辑单元、数千个至数万个用户接口电路、数十个至数百个块存储器、数十个至数百个数字信号处理器、数十个至数百个时钟管理器、数个处理器等各类高性能电路模块,用以在FPGA快速启动之后逐步配置,实现相对复杂的用户功能;其中可编程逻辑单元、用户接口电路、块存储器、数字信号处理器、时钟管理器、处理器的各类高性能电路模块为可编程逻辑资源;
配置电路,读取FPGA外部的配置码流,先对优先配置可编程逻辑模块实现快速配置和启动,完成对电子系统上电响应时间要求较快即100ms以内的逻辑功能,再对非优先配置可编程逻辑模块进行配置和启动,完成用户其余的各种逻辑功能。
配置电路,包括三维寻址的配置存储器阵列、配置控制中心和若干个“行”配置电路;三维寻址的配置存储器阵列将FPGA的配置存储器阵列按照逻辑资源的物理结构需求而设计成具有相同高度的“行”,使用行地址ADDR_Row进行寻址,将每一“行”中的配置存储器按照所控制的逻辑资源类型不同而区分设计成若干“列”,采用列地址ADDR_Col进行寻址,将每一“列”中的配置存储器设计成若干个1位宽的数据“帧”;采用辅地址ADDR_minor进行寻址,通过三层次的地址来定位每个模块的具体配置帧的位置,逐帧将配置数据写入所需的配置存储单元矩阵,实现独立的、针对单个基本规模的可编程电路模块的分别配置;以实现在对FPGA中大部分配置存储器单元不产生影响的情况,高效完成对某一局部区域配置存储器的快速配置;
配置控制中心接收上电复位信号、全局清零结束反馈信号,产生清零使能信号、全局置位信号,控制FPGA的整体清零行为;接收从FPGA外部读入的配置码流,含配置码流配置命令和配置数据,产生若干个配置数据“字”、配置帧地址,完成优先配置可编程逻辑模块的快速配置和非优先配置可编程逻辑模块的正常配置;接收优先配置可编程逻辑模块和非优先配置可编程逻辑模块的配置完成反馈信号,产生分别针对上述优先配置可编程逻辑模块和非优先配置可编程逻辑模块的全局置位释放信号、全局写使能信号和全局端口三态释放信号,分别完成优先配置可编程逻辑模块的快速启动和非优先配置可编程逻辑模块的正常启动;
“行”配置电路,接收从配置控制中心发出的配置数据“字”,通过位宽转换,成为一个“帧”数据,并通过驱动器发送至配置存储器阵列的一组位线上,对配置存储器进行数据写入;接收从配置控制中心发出的配置帧地址,帧地址包括“行”地址、“列”地址和“辅”地址,解码后成为一个“帧”的选通控制信号,通过驱动器发送到配置存储器阵列的一条对应字线上,完成对相应配置存储器“帧”的字线开启。
优先配置可编程逻辑模块内包含数十至数百个边界隔离电路,每个边界隔离电路由数十至数百个带有关断功能的互连开关组成。
优先配置可编程逻辑模块、非优先配置可编程逻辑模块的逻辑资源的类型和规模并非固定不变的,可根据用户需求,在整体设计时进行增减。
一种快速启动FPGA的配置方法,实现步骤如下:
(1)首先进行FPGA电上电;
(2)上电完成后,进行FPGA全局清零;
(3)清零完成后,配置电路读取配置码流中用于优先配置可编程逻辑模块的配置命令码流段与数据码流段,对优先配置可编程逻辑模块进行配置;
(4)优先配置可编程逻辑模块配置完成后,配置电路读取配置码流中用于优先配置可编程逻辑模块的启动命令码流段和填充码流段,对优先配置可编程逻辑模块进行快速启动;
(5)在优先配置可编程逻辑模块启动完成后,配置电路读取配置码流中用于非优先配置可编程逻辑模块的配置命令码流段与数据码流段,对非优先配置可编程逻辑模块进行配置;
(6)非优先配置可编程逻辑模块配置完成后,配置电路读取配置码流中用于非优先配置可编程逻辑模块的启动命令码流段和填充码流段,对非优先配置可编程逻辑模块进行全局启动;
(7)全局启动完成后,FPGA交用户操作。
快速启动FPGA的配置码流的结构具体由以下九段组成:器件识别/配置初始化码流段、优先配置可编程逻辑模块所需的命令码流段、优先配置可编程逻辑模块所需的数据码流段、启动优先配置可编程逻辑模块区域所需的命令码流段、等待局部启动完成所需的填充码流段、非优先配置可编程逻辑模块所需的命令码流段、非优先配置可编程逻辑模块所需数据码流段、启动非优先配置可编程逻辑模块所需的命令码流段、等待全局启动完成所需的填充码流段。
本发明与现有技术相比的有益效果是:
本发明快速启动的FPGA的核心是改变内部各类型的可编程逻辑单元的位置分布,将需要快速启动的逻辑资源集中放置,并使用边界隔离电路进行环绕,构成相对独立的优先配置可编程逻辑模块区,以实现特定可编程逻辑模块的快速配置、快速启动,快速进入工作状态;其它的可编程逻辑单元则构成非优先配置可编程逻辑模块区,在FPGA快速启动后再进行配置,使FPGA实现完整的逻辑功能。采用此架构的FPGA可极大减小整个电子系统上电后到进入可操作状态所需要的时间,在基于PCI-E或CAN总线等具有严格时序要求的电子系统中优势更加明显,大规模FPGA的响应时间可缩短至原来的百分之一。
附图说明
图1是本发明快速启动FPGA的电路整体架构示意图
图2是配置电路的结构和信号关系示意图;
图3是三维寻址的配置存储器阵列的层次结构示意图;
图4是优先配置可编程逻辑模块的物理结构示意图;
图5是边界隔离电路中的互连开关结构示意图;
图6是快速启动FPGA的配置方法;
图7是本发明快速启动FPGA所需的配置码流结构。
具体实施方式
本发明中的一种快速启动FPGA(000)具体可由优先配置可编程逻辑模块120、非优先配置可编程逻辑模块110和配置电路200几个部分组成。图1是本发明快速启动FPGA的电路整体架构示意图,优先配置的可编程模块120和非优先配置的可编程模块110可以合并起来称为FPGA内的可编程逻辑资源100,传统的FPGA并不区分可编程逻辑资源中的那一部分是先配置、那一部分是后配置,在上电之后,一次性将所有可编程逻辑资源都进行配置后,才启动FPGA,造成整个FPGA系统从上电到工作所需的初始化时间较长,随着FPGA规模越来越大,这种初始化时间甚至超过1秒,造成FPGA与系统内其它器件无法协同工作,所以本发明通过将可编程逻辑资源100分为优先配置可编程逻辑模块120和非优先配置可编程逻辑模块110两部分,将优先配置可编程逻辑模块120的规模设计为相对较小(只占全部可编程逻辑资源的1/100到1/10),并改进了传统的配置电路和配置方法,使之可在不对其它可编程逻辑资源造成任何影响的情况,实现对优先配置可编程逻辑模块120所在区域的独立配置,并单独启动优先配置可编程逻辑模块120,使FPGA在整体配置完成之前,就可以响应用户系统的检测访问等指令。这种FPGA分区域配置、分区域启动的工作机制称之为快速启动。在图1中为了便于理解,将配置电路200单独用底层表示,将优先配置可编程逻辑模块120和非优先配置可编程逻辑模块110用顶层表示,底层的配置电路200控制顶层的可编程逻辑资源100,实现用户功能,实际设计中,这三部分电路都处于芯片的同一个平面内。
本发明中的配置电路功能主要是读取FPGA外部的配置码流,先对优先配置可编程逻辑模块实现快速配置和启动,使FPGA完成对电子系统上电响应时间要求较快(例如100ms以内)的逻辑检测响应,再对非优先配置可编程逻辑模块进行配置和启动,完成用户其余的各种逻辑功能。图2是配置电路200的结构和信号关系示意图,本发明配置电路包括三维寻址的配置存储器阵列210、配置控制中心220和“行”配置电路230。“行”配置电路230划分为N个子电路(如“行”配置子电路230-1、“行”配置子电路230-2、“行”配置子电路230-3至“行”配置子电路230-N),每个子电路主要由串并转换电路和地址译码电路组成,串并转换电路接收从配置控制中心发出的配置数据“字”,通过位宽转换,成为一个“帧”数据(例如,将16个32位字转换成800位高度、1位宽的配置帧数据),并通过驱动器发送至三维寻址的配置存储器阵列210的某一行(这组位线数据宽度为800位)上,对这一行的三维寻址的配置存储器阵列进行写入;地址译码电路接收从配置控制中心发出的配置帧地址,帧地址包括“行”地址、“列”地址和“辅”地址,解码后成为相应的“帧”选通控制信号CTRL,将这一位信号发送到配置存储器阵列的一条对应字线上,完成对相应配置存储器“帧”的字线开启(本发明描述中地址译码电路属于“行”配置电路,位于配置存储器阵列的外部,是一种抽象的表述,实际设计中由于字线物理上分布范围较大,地址译码电路一般被设计成分散的门级电路,分布于配置存储器阵列内部,实现对字线的就近译码);这样对三维寻址的配置存储器阵列210来说,“行”配置电路提供了读写所需的位线和字线,在二者的配合下实现了相应的读写行为。
三维寻址的配置存储器阵列210由各个“行”对应的配置存储器阵列组成,如“行”子阵列210-1、“行”子阵列210-2、“行”子阵列210-3、“行”子阵列210-N。本发明中举例把优先配置可编程逻辑模块设计在左下角,所以“行”子阵列210-N又分成了对应优先配置可编程逻辑模块的配置存储器子阵列210-N-1和对应非优先配置可编程逻辑模块的配置存储器阵列210-N-2。
配置控制中心220接收可编程逻辑电路100产生的上电复位信号POR、三维寻址的配置存储器阵列210产生的全局清零结束反馈信号EOC,产生清零使能信号ClearCE、全局置位信号GSR,发送到三维寻址的配置存储器阵列210和“行”配置电路230,控制FPGA的整体清零行为;接收从FPGA外部读入的配置码流D0-D7,含配置码流配置命令和配置数据,产生若干个配置数据“字”、配置帧地址,通过配置数据/帧地址总线D/Abus写入“行”配置电路230,“行”配置电路230将其转换和译码为配置“帧”数据和对应的“帧”选通控制信号,通过“帧”数据总线Frambus和“帧”选通控制信号CTRL,完成对三维寻址的配置存储器阵列210的写入,用以完成对优先配置可编程逻辑模块120的快速配置和启动和非优先配置可编程逻辑模块110的正常配置和启动;配置控制中心220接收优先配置可编程逻辑模块120的配置完成反馈信号EOFP,产生针对优先配置可编程逻辑模块120的局部置位释放信号GSR2_B、局部写使能信号GW2E和局部端口三态释放信号GTS2_B,完成优先配置可编程逻辑模块的快速启动;配置控制中心220接收非优先配置可编程逻辑模块110的配置完成反馈信号EOSP,产生针对非优先配置可编程逻辑模块110的全局置位释放信号GSR1_B、全局写使能信号GWE1和全局端口三态释放信号GTS1_B,完成非优先配置可编程逻辑模块的正常启动。
图3是本发明中三维寻址的配置存储器阵列210的层次结构示意图,图中可见本发明首先将FPGA的配置存储器阵列按照逻辑资源的物理结构需求而设计成具有相同高度(例如,每一“行”大约为10个或20个基本的可编程逻辑单元电路CLB的物理版图高度)N行的子阵列,定义为“行”子阵列210-1到“行”子阵列210-N,使用行地址ADDR_Row进行寻址;接着将每一“行”子阵列按照所控制的逻辑资源类型不同而区分设计成若干“列”(例如可以分为可编程逻辑单元电路CLB的配置存储器列211-C、块存储器的配置存储器列211-B、数字信号处理单元电路DSP的配置存储器列211-D、输入输出电路IOB的配置存储器列211-I、时钟管理电路的配置存储器列211-T等等),采用列地址ADDR_Col进行寻址;最后将每一“列”中的配置存储器设计成若干(本例中数量为C)个1位宽的数据“帧”,采用辅地址ADDR_minor进行寻址;这样通过行地址ADDR_Row、列地址ADDR_Col和辅地址ADDR_minor三层次的地址,就可以单独定位到每个模块单元电路的具体配置帧的位置,逐帧将配置数据写入所需的配置存储单元矩阵,实现独立的、针对单个基本规模的可编程电路模块的分别配置。例如每个“行”被设计成10个(不限于10个)可编程逻辑单元电路CLB的高度,每个可编程逻辑单元电路CLB所需的配置存储器阵列高度和宽度分别为80bit和20bit,那么每个“行”的配置存储器高度就是10乘以80bit,每个“列”的宽度为1乘以20bit,通过对这个包含1600个bit相对较小的配置存储器阵列进行单独配置,就完成了这一“行”所对应的10个可编程逻辑单元电路CLB的功能重新定义,所以能够实现在对FPGA中大部分配置存储器单元不产生影响的情况,高效完成对某一局部区域配置存储器的快速配置,为实现快速启动FPGA提供高效配置支持。
图4是本发明快速启动FPGA中优先配置可编程逻辑模块120的物理结构示意图,主要由若干边界隔离电路121和需快速启动的的可编程逻辑单元122组成。需快速启动的的可编程逻辑单元122可以由可编程逻辑单元电路CLB、块存储器BRAM、数字信号处理单元电路DSP、输入输出电路IOB、时钟管理电路CMT、高速串行收发器SerDes、通信协议电路(TEMAC/PCI-E/CAN总线控制器)等组成,这些各种类型的可编程逻辑单元的类型、数量、规模和之间的比例并非固定不变的,可根据用户需求,在整体设计时进行增减。一般来说,优先配置可编程逻辑模块120内包含的边界隔离电路121数量大约在数十至数百个之间,这一数量并非完全固定不变,具体数量取决于所设计的优先配置可编程逻辑模块120的规模大小和所设计的边界隔离电路121的规模大小之间的比例关系。
本发明中的边界隔离电路121用来在优先配置可编程逻辑模块120与非优先配置可编程逻辑模块110之间进行信号隔离,避免它们在FPGA部分资源快速启动之后、但尚未整体启动之前相互之间的信号干扰。每个边界隔离电路由数十至数百个带有关断功能的互连开关500组成,这种互连开关是由传统FPGA中的互连开关改进而来,增加了全关断情况下的输出高阻态(传统FPGA的互连开关输出非0即1,这种强驱动输出会对边界隔离电路的后级产生干扰),本发明中的互连开关结构如图5所示。本示例中以4选1的互连开关500为例进行说明,实际设计中可根据FPGA布线算法优化为N选1的互连开关,此处N一般为几个到几十个大小。4选1的互连开关500由4个NMOS管(NMOS1至NMOS4)、1个4输入或门502和1个三态驱动器501组成。互连开关有4个数据输入端口(A1至A4)、4个选择端口(S1至S4)和1个输出端口Y1。NMOS1的栅极与选择端口S1相连,源级与数据输入端口A1相连,漏极与三态缓冲区501的输入端相连;NMOS2的栅极与选择端口S2相连,源级与数据输入端口A2相连,漏极与三态缓冲区501的输入端相连;NMOS3的栅极与选择端口S3相连,源级与数据输入端口A3相连,漏极与三态缓冲区501的输入端相连;NMOS4的栅极与选择端口S4相连,源级与数据输入端口A4相连,漏极与三态缓冲区501的输入端相连;4输入或门502的4个输入端分别与选择端口A1、A2、A3、A4相连,4输入或门502的输出端与三态驱动器501的三态端口相连;三态驱动器501的输出端口与互连开关的输出端口Y1相连。相对于传统FPGA内部的互连开关,本发明使用三态驱动器501代替传统的驱动器,在配置存储器S1、S2、S3、S4的控制下,可以关断输出,使Y1保持高阻态,消除互连开关输入端对输出端信号线的影响。
本发明中的非优先配置可编程逻辑模块110结构上类似于一个规模放大的优先配置可编程逻辑模块120,它在FPGA快速启动之后再逐步配置,实现相对复杂的用户功能。具体结构可包括数千个、数万个甚至数百万个各种类型的可编程逻辑单元,例如可编程逻辑单元电路CLB、块存储器BRAM、数字信号处理单元电路DSP、输入输出电路IOB、时钟管理电路CMT、高速串行收发器SerDes、通信协议电路(TEMAC/PCI-E/CAN总线控制器)等。
本发明中使用了一种改进的FPGA配置方法600,传统FPGA只需要上电、清零、配置、启动共四个环节,并且这一过程只执行1次,本发明中为了实现快速启动,对于优先配置可编程逻辑模块120的配置存储器阵列需要进行优先配置,所以在配置流程中新增了部分配置和局部启动两个环节。本发明中的FPGA配置方法如图6所示。
(1)首先进行FPGA电上电601;
(2)上电完成后,进行FPGA全局清零602;
(3)清零完成后,配置电路读取配置码流中用于优先配置可编程逻辑模块的配置命令码流段与数据码流段,对优先配置可编程逻辑模块进行配置603;
(4)优先配置可编程逻辑模块配置完成后,配置电路读取配置码流中用于优先配置可编程逻辑模块的启动命令码流段和填充码流段,对优先配置可编程逻辑模块进行快速启动604;
(5)在优先配置可编程逻辑模块启动成功后,配置电路读取配置码流中用于非优先配置可编程逻辑模块的配置命令码流段与数据码流段,对非优先配置可编程逻辑模块进行配置605;
(6)非优先配置可编程逻辑模块配置完成后,配置电路读取配置码流中用于非优先配置可编程逻辑模块的启动命令码流段和填充码流段,对非优先配置可编程逻辑模块进行全局启动606;
(7)全局启动完成后,FPGA交用户操作607。
图7是本发明快速启动FPGA的配置方法所需的码流结构,相对于传统FPGA的配置码流,本发明将器件识别/初始化码流段之后的配置命令、配置数据、启动命令和填充码流段进行了拆分,先将涉及优先配置可编程逻辑模块的码流段独立出来,进行优先写入,之后再将剩余的非关键模块涉及的码流段写入FPGA。本发明配置码流的码流结构具体由以下九段组成:器件识别/配置初始化码流段701、优先配置可编程逻辑模块120所需的命令码流段702、优先配置可编程逻辑模块120所需的数据码流段703、启动优先配置可编程逻辑模块120区域所需的命令码流段704、等待局部启动完成所需的填充码流段705、非优先配置可编程逻辑模块110所需的命令码流段706、非优先配置可编程逻辑模块110所需数据码流段707、启动非优先配置可编程逻辑模块110所需的命令码流段708、等待全局启动完成所需的填充码流段709。
Claims (7)
1.一种用于快速启动FPGA的配置电路,其特征在于:所述配置电路,包括三维寻址的配置存储器阵列、配置控制中心和“行”配置电路;三维寻址的配置存储器阵列将FPGA的配置存储器阵列按照逻辑资源的物理结构需求而设计成具有相同高度的“行”,使用行地址ADDR_Row进行寻址,将每一“行”中的配置存储器按照所控制的逻辑资源类型不同而区分设计成若干“列”,采用列地址ADDR_Col进行寻址,将每一“列”中的配置存储器设计成若干个1位宽的数据“帧”,采用辅地址ADDR_minor进行寻址;通过三层次的地址来定位每个模块的具体配置帧的位置,逐帧将配置数据写入所需的配置存储单元矩阵,实现独立的、针对单个基本规模的可编程电路模块的分别配置;以实现在对FPGA中大部分配置存储器单元不产生影响的情况,完成对某一局部区域配置存储器的快速配置;
配置控制中心接收上电复位信号、全局清零结束反馈信号,产生清零使能信号、全局置位信号,控制FPGA的整体清零行为;接收从FPGA外部读入的配置码流,含配置码流配置命令和配置数据,产生若干个配置数据“字”、配置帧地址,完成优先配置可编程逻辑模块的快速配置和非优先配置可编程逻辑模块的正常配置;接收优先配置可编程逻辑模块和非优先配置可编程逻辑模块的配置完成反馈信号,产生分别针对上述优先配置可编程逻辑模块和非优先配置可编程逻辑模块的全局置位释放信号、全局写使能信号和全局端口三态释放信号,分别完成优先配置可编程逻辑模块的快速启动和非优先配置可编程逻辑模块的正常启动;
“行”配置电路,接收从配置控制中心发出的配置数据“字”,通过位宽转换,成为一个“帧”数据,并通过驱动器发送至配置存储器阵列的一组位线上,对配置存储器进行数据写入;接收从配置控制中心发出的配置帧地址,帧地址包括“行”地址、“列”地址和“辅”地址,解码后成为一个“帧”的选通控制信号,通过驱动器发送到配置存储器阵列的一条对应字线上,完成对相应配置存储器“帧”的字线开启。
2.一种快速启动FPGA的电路架构,其特征在于:包括优先配置可编程逻辑模块、非优先配置可编程逻辑模块和配置电路;
优先配置可编程逻辑模块包括若干个高速接口电路、若干个通信协议电路、若干个可编程逻辑电路和若干个用户接口电路;其中高速接口电路、通信协议电路、可编程逻辑电路和用户接口电路为可编程逻辑资源;
优先配置可编程逻辑模块中还包括边界隔离电路,用以在优先配置时序关键电路模块与非优先配置的非关键时序电路模块之间进行信号隔离,避免相互之间的影响;
非优先配置可编程逻辑模块包括若干个可编程逻辑单元、若干个用户接口电路、若干个块存储器、若干个数字信号处理器、若干个时钟管理器、若干个处理器的各类高性能电路模块,用以在FPGA快速启动之后逐步配置,实现相对复杂的用户功能;其中可编程逻辑单元、用户接口电路、块存储器、数字信号处理器、时钟管理器、处理器的各类高性能电路模块为可编程逻辑资源;
配置电路,读取FPGA外部的配置码流,先对优先配置可编程逻辑模块实现快速配置和启动,完成对电子系统上电响应时间要求较快即100ms以内的逻辑功能,再对非优先配置可编程逻辑模块进行配置和启动,完成用户其余的各种逻辑功能。
3.根据权利要求2所述的一种快速启动FPGA的电路架构,其特征在于:所述配置电路,包括三维寻址的配置存储器阵列、配置控制中心和若干个“行”配置电路;三维寻址的配置存储器阵列将FPGA的配置存储器阵列按照逻辑资源的物理结构需求而设计成具有相同高度的“行”,使用行地址ADDR_Row进行寻址,将每一“行”中的配置存储器按照所控制的逻辑资源类型不同而区分设计成若干“列”,采用列地址ADDR_Col进行寻址,将每一“列”中的配置存储器设计成若干个1位宽的数据“帧”;采用辅地址ADDR_minor进行寻址,通过三层次的地址来定位每个模块的具体配置帧的位置,逐帧将配置数据写入所需的配置存储单元矩阵,实现独立的、针对单个基本规模的可编程电路模块的分别配置;以实现在对FPGA中大部分配置存储器单元不产生影响的情况,高效完成对某一局部区域配置存储器的快速配置;
配置控制中心接收上电复位信号、全局清零结束反馈信号,产生清零使能信号、全局置位信号,控制FPGA的整体清零行为;接收从FPGA外部读入的配置码流,含配置码流配置命令和配置数据,产生若干个配置数据“字”、配置帧地址,完成优先配置可编程逻辑模块的快速配置和非优先配置可编程逻辑模块的正常配置;接收优先配置可编程逻辑模块和非优先配置可编程逻辑模块的配置完成反馈信号,产生分别针对上述优先配置可编程逻辑模块和非优先配置可编程逻辑模块的全局置位释放信号、全局写使能信号和全局端口三态释放信号,分别完成优先配置可编程逻辑模块的快速启动和非优先配置可编程逻辑模块的正常启动;
“行”配置电路,接收从配置控制中心发出的配置数据“字”,通过位宽转换,成为一个“帧”数据,并通过驱动器发送至配置存储器阵列的一组位线上,对配置存储器进行数据写入;接收从配置控制中心发出的配置帧地址,帧地址包括“行”地址、“列”地址和“辅”地址,解码后成为一个“帧”的选通控制信号,通过驱动器发送到配置存储器阵列的一条对应字线上,完成对相应配置存储器“帧”的字线开启。
4.根据权利要求2所述的一种快速启动FPGA的电路架构,其特征在于:所述优先配置可编程逻辑模块内包含数十至数百个边界隔离电路,每个边界隔离电路由若干个带有关断功能的互连开关组成。
5.根据权利要求2所述的一种快速启动FPGA的电路架构,其特征在于:所述优先配置可编程逻辑模块、非优先配置可编程逻辑模块的逻辑资源的类型和规模并非固定不变的,可根据用户需求,在整体设计时进行增减。
6.一种快速启动FPGA的配置方法,其特征在于实现步骤如下:
(1)首先进行FPGA电上电;
(2)上电完成后,进行FPGA全局清零;
(3)清零完成后,配置电路读取配置码流中用于优先配置可编程逻辑模块的配置命令码流段与数据码流段,对优先配置可编程逻辑模块进行配置;
(4)优先配置可编程逻辑模块配置完成后,配置电路读取配置码流中用于优先配置可编程逻辑模块的启动命令码流段和填充码流段,对优先配置可编程逻辑模块进行快速启动;
(5)在优先配置可编程逻辑模块启动完成后,配置电路读取配置码流中用于非优先配置可编程逻辑模块的配置命令码流段与数据码流段,对非优先配置可编程逻辑模块进行配置;
(6)非优先配置可编程逻辑模块配置完成后,配置电路读取配置码流中用于非优先配置可编程逻辑模块的启动命令码流段和填充码流段,对非优先配置可编程逻辑模块进行全局启动;
(7)全局启动完成后,FPGA交用户操作。
7.根据权利要求6所述的快速启动FPGA的配置方法,其特征在于:所述配置码流的码流结构具体由以下九段组成:器件识别/配置初始化码流段、优先配置可编程逻辑模块所需的命令码流段、优先配置可编程逻辑模块所需的数据码流段、启动优先配置可编程逻辑模块区域所需的命令码流段、等待局部启动完成所需的填充码流段、非优先配置可编程逻辑模块所需的命令码流段、非优先配置可编程逻辑模块所需数据码流段、启动非优先配置可编程逻辑模块所需的命令码流段、等待全局启动完成所需的填充码流段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610267195.5A CN105958995B (zh) | 2016-04-27 | 2016-04-27 | 一种快速启动fpga的电路和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610267195.5A CN105958995B (zh) | 2016-04-27 | 2016-04-27 | 一种快速启动fpga的电路和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105958995A CN105958995A (zh) | 2016-09-21 |
CN105958995B true CN105958995B (zh) | 2019-04-02 |
Family
ID=56915843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610267195.5A Active CN105958995B (zh) | 2016-04-27 | 2016-04-27 | 一种快速启动fpga的电路和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105958995B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108540126A (zh) * | 2017-03-03 | 2018-09-14 | 成都海存艾匹科技有限公司 | 基于三维可写存储器的可编程门阵列 |
US11132207B2 (en) * | 2017-12-29 | 2021-09-28 | Lattice Semiconductor Corporation | Fast boot systems and methods for programmable logic devices |
CN109740275B (zh) * | 2018-02-27 | 2023-05-16 | 上海安路信息科技股份有限公司 | 集成电路的重配置电路及其方法 |
CN111208753A (zh) * | 2019-12-24 | 2020-05-29 | 西安旭彤电子科技股份有限公司 | 一种基于arm的fpga启动及在线升级方法 |
CN113657061B (zh) * | 2021-08-19 | 2023-08-18 | 无锡中微亿芯有限公司 | 可实现不同配置应用过程间数据传递的fpga |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927279A (zh) * | 2013-01-16 | 2014-07-16 | 京信通信系统(中国)有限公司 | Fpga配置方法及系统、处理器 |
CN104636290A (zh) * | 2013-11-06 | 2015-05-20 | 京微雅格(北京)科技有限公司 | 基于多配置链组的fpga芯片配置结构和配置方法 |
CN104636151A (zh) * | 2013-11-06 | 2015-05-20 | 京微雅格(北京)科技有限公司 | 基于应用存储器的fpga芯片配置结构和配置方法 |
-
2016
- 2016-04-27 CN CN201610267195.5A patent/CN105958995B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927279A (zh) * | 2013-01-16 | 2014-07-16 | 京信通信系统(中国)有限公司 | Fpga配置方法及系统、处理器 |
CN104636290A (zh) * | 2013-11-06 | 2015-05-20 | 京微雅格(北京)科技有限公司 | 基于多配置链组的fpga芯片配置结构和配置方法 |
CN104636151A (zh) * | 2013-11-06 | 2015-05-20 | 京微雅格(北京)科技有限公司 | 基于应用存储器的fpga芯片配置结构和配置方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105958995A (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105958995B (zh) | 一种快速启动fpga的电路和方法 | |
CN103744009B (zh) | 一种串行传输芯片测试方法、系统及集成芯片 | |
US8549463B2 (en) | Die expansion bus | |
US6588006B1 (en) | Programmable ASIC | |
KR100458371B1 (ko) | 프로그램가능한 논리 셀 어레이의 구성 방법 및 구성 장치 | |
US5625780A (en) | Programmable backplane for buffering and routing bi-directional signals between terminals of printed circuit boards | |
US7856545B2 (en) | FPGA co-processor for accelerated computation | |
US20140132291A1 (en) | Scalable built-in self test (bist) architecture | |
US7587686B1 (en) | Clock gating in a structured ASIC | |
US10540200B2 (en) | High performance context switching for virtualized FPGA accelerators | |
WO2001022235A1 (en) | Control fabric for enabling data path flow | |
US11437982B2 (en) | Flip flop standard cell | |
US20110271128A1 (en) | State transitioning clock gating | |
EP1690102A1 (en) | Integrated circuit with leakage control and method for leakage control | |
CN105242768A (zh) | 可分时钟控制的低功耗高速ahb总线访问多块sram的桥装置 | |
US7716458B2 (en) | Reconfigurable integrated circuit, system development method and data processing method | |
US9792395B1 (en) | Memory utilization in a circuit design | |
CN104681082A (zh) | 单端口存储器件中的读和写冲突避免方法及其半导体芯片 | |
CN112187341B (zh) | 一种基于fpga的数据模拟源及其搭建与控制方法 | |
CN106133838B (zh) | 一种可扩展可配置的fpga存储结构和fpga器件 | |
CN101689851A (zh) | 逻辑状态捕捉电路 | |
US7797666B1 (en) | Systems and methods for mapping arbitrary logic functions into synchronous embedded memories | |
US9729153B1 (en) | Multimode multiplexer-based circuit | |
Schuck et al. | An Interface for a Decentralized 2D Reconfiguration on Xilinx Virtex‐FPGAs for Organic Computing | |
US9053773B2 (en) | Method and apparatus for clock power saving in multiport latch arrays |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |