一种多FPGA上电自动配置方法与流程

文档序号:12802894阅读:394来源:国知局
一种多FPGA上电自动配置方法与流程
本发明涉及fpga配置这一
技术领域
,具体而言,涉及一种同时对多片fpga进行上电配置的多fpga上电自动配置方法。
背景技术
:随着摩尔定律(moore’slaw)不断的被人们用一代代技术证明,多核处理器(multi-core)结构成为微处理器体系结构技术发展的主流,流片后验证处理器设计正确性的工作也越来越重要。目前,对处理器进行流片后验证的方法主要有软件验证方法、硬件验证方法和fpga验证方法,其中,软件验证方法采用软件验证系统进行验证,软件验证系统虽然灵活,但是验证速度太慢;硬件验证方法采用专用的硬件验证系统进行验证,而专用的硬件验证系统的成本很高,无法普及使用;fpga验证方法从速度和成本上都有自身的优点,是现在处理器设计验证中广泛应用的方法。fpga验证方法是把处理器设计通过fpga公司提供的配套软件经过综合后生成网表,通过软件将网表变换为对应的门级电路,最后生成配置文件,以将整个处理器设计在fpga芯片上并且真正用硬件实现,然后在fpga的硬件系统上面运行软件,fpga验证方法实现了软硬件协同验证,所以能够避免软件验证方法和硬件验证方法存在的缺点。fpga器件的配置是实现fpga功能的前提,上电后,配置数据保存在配置ram中,将配置数据载入配置ram即是对fpga编程,但是掉电后fpga内部的配置信息便丢失,下次上电需要再次对fpga进行配置。目前主流的对fpga进行配置的方式是jtag配置(jointtestactiongroupconfiguration),在使用jtag配置时,每次都要使用jtag下载器将pc机和fpga连接进行通信。每一片fpga需要一台pc机和一条jtag下载器,在硬件上通过插拔的方式进行连接及下载,这种配置方式在对数量不多的fpga进行配置时可以方便的实现。但是,在用fpga搭建众核处理器架构验证平台的时候,动辄就需要上百块fpga互连,如果对每一块fpga仍采用传统的jtag下载器进行逐片插拔的方式下载,整个平台配置中仅插拔动作就需要耗费4小时的时间,并且pc机对jtag设备的识别率并不高,耗费人力物力;其次,用jtag方式进行下载时,软件每配置一片fpga需要3分钟的时间,上百块fpga仅软件配置就需要耗费5小时。这样算下来,整个平台配置过程需要至少一天的时间。由此可见,jtag配置方式在对多fpga进行配置时非常不方便。技术实现要素:本发明提供一种多fpga上电自动配置方法,用以解决现有技术中对多fpga平台配置耗费人力、物力大的问题。为达到上述目的,本发明提供了一种多fpga上电自动配置方法,用于将多个配置文件分别写入多个fpga芯片中,一个配置文件对应其中一个fpga芯片,其包括以下步骤:s1:将多个配置文件分别写入多个存储模块中;s2:将每一fpga芯片分别与一数据读写平台连接;s3:将每一数据平台与对应的存储模块连接;s4:每一数据读写平台分别从对应的存储模块中读取配置文件;s5:每一数据读写平台分别将读取到的配置文件写入对应的fpga芯片中。在本发明的一实施例中,步骤s1中,通过sd卡烧写器将多个配置文件分别写入多个fpga芯片。在本发明的一实施例中,所述数据读写平台为stm32f103zet6。在本发明的一实施例中,所述存储模块为sd卡。在本发明的一实施例中,步骤s4中,数据读写平台通过spi串行总线的方式从对应的存储模块中读取配置文件。在本发明的一实施例中,步骤s5中,数据读写平台为主设备,fpga芯片为从设备,采用slaveserial模式或slaveselectmap模式进行数据写入。在本发明的一实施例中,配置文件的格式为fat32。在本发明的一实施例中,步骤s4和步骤s5为同时进行。下面以对包括256个fpga芯片的fpga平台进行配置为例,本发明提供的多fpga上电自动配置方法与现有的采用jtag方式配置fpga的方法相比,具有以下优势:(1)节省大量时间,采用jtag配置方式需要逐片配置,并且至少需要一天的时间,而采用本发明提供的多fpga上电自动配置方法只需要一分钟就可以完成配置,大大节省了时间,提高了效率。(2)节省人力成本,采用jtag配置方式进行配置时,每配置一个fpga芯片需要对板卡进行两次插拔,在pc端也需要两次插拔,费时费力,一个人无法一次完成对这么多个fpga的配置,而本发明提供的多fpga上电自动配置方法不需要人为进行操作就可以自动完成对fpga芯片的配置,大大降低了人力成本。(3)节省物资成本,采用jtag配置方式进行配置时,配置一个fpga芯片需要一个jtag烧写器和一台pc机,而本发明提供的多fpga上电自动配置方法只需要一个sd卡和一块stm32的最小系统,一个fpga芯片就可节省物资成本3000元左右,整个fpga平台即可节省一大笔项目开发费用。(4)解决了各平台无法同步工作的问题,采用jtag配置方式进行配置时,会出现一些fpga芯片中的程序已经开始运行甚至已经运行结束了,而其他剩余的fpga芯片中的程序还没有开始配置,这种用串行的烧写方式会造成整个平台无法运行以及时钟不同步等问题,导致整个fpga平台无法正常运行下去。而本发明提供的多fpga上电自动配置方法是对所有fpga芯片同步并行配置,同步上电即可实现同步配置,程序在所有fpga芯片中同步运行,使得整个fpga平台中的所有fpga芯片同时工作,从而能够保证整个fpga平台中的程序顺利配置完成。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明中的sd卡、stm32f103zet6和fpga芯片的连接示意图;图2为本发明中的sd卡与stm32f103zet6的管脚连接示意图;图3为fpga芯片采用slaveserial模式进行配置时的时序关系示意图;图4为fpga芯片采用slaveserial模式进行配置时的流程图;图5为fpga芯片采用slaveselectmap模式进行配置时bit交换示意图;图6为fpga芯片的配置过程示意图;图7为配置文件采用fat32格式进行存储时的文件存储结构。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明中的sd卡、stm32f103zet6和fpga芯片的连接示意图,图2为本发明中的sd卡与stm32f103zet6的管脚连接示意图,如图1、图2所示,本发明提供的多fpga上电自动配置方法用于将多个配置文件分别写入多个fpga芯片中,一个配置文件对应其中一个fpga芯片,其包括以下步骤:s1:将多个配置文件分别写入多个存储模块中;本实施例中的存储模块为sd卡,配置文件的格式为fat32,也可以根据实际需要选择使用其他具有存储功能的器件作为存储模块。除了fat32格式,配置文件的格式还可以设置为*.bit、*.bin、*.rbt、*.mcs、*.hex等,“写入”方式可以是通过sd卡烧写器将多个配置文件分别写入多个fpga芯片,以于短时间内实现快速写入,也可以根据实际的写入工作量选择其他写入方式。如图7所示为配置文件采用fat32格式进行存储时的文件存储结构,主引导记录(mbr)由446个字节的引导代码、64字节的主分区(4个)表以及两个字节的签名“55aa”组成。其中最重要的参数是逻辑扇区的起始地址(lba)。获得该参数后即可以读取bios参数数据块(bpb)。bpb中存储了每扇区字节数、每簇扇区数、保留扇区数、fat表个数、文件系统大小、每个fat表大小、根目录起始簇号等信息。可通过上述信息定位文件系统根目录位置。文件分配表描述簇的分配状态以及标明文件或目录的下一簇的簇号。根目录中记录了各不同文件的文件名和起始簇以及文件大小等信息,根目录是数据区的起始位置,通常位于2号簇(第一簇)。关于配置文件的读取和发送进一步说明如下:首先读取主引导记录(mbr),获取逻辑扇区的起始位置(偏移字节数为0x08-0x0b)。根据此地址获取bios参数数据块(bpb),得到保留扇区数、每个fat表大小扇区数和fat表个数信息,并计算根目录的位置,计算公式为:根目录位置(数据区起始扇区号)=保留扇区数+每个fat表大小扇区数×fat表个数。从根目录中读取当前文件的起始簇号,然后通过访问fat(该地址由bpb得到)读取对应该起始簇的字节,获得文件系统的下一个簇号,直至最后一簇(fat中对应数值为0xffff)。需要注意的是,最后一簇的数据量可能不足一簇,因此需要特殊处理。使用sd卡或其他具有存储功能的器件作为存储模块,是考虑到fpga芯片作为验证平台,需要经常更换配置文件,而将配置文件写入sd卡中则十分便于更换配置文件。另外,为了便于对单片fpga进行配置和调试,fpga上还预留了jtag接口。s2:将每一fpga芯片分别与一数据读写平台连接;本实施例中,数据读写平台选用stm32f103zet6,其是一种常用的微处理器,其具体功能可参考其对应的数据手册。s3:将每一数据平台与对应的存储模块连接;图1为本发明中的sd卡、stm32f103zet6和fpga芯片的连接示意图,图2为本发明中的sd卡与stm32f103zet6的管脚连接示意图,如图1、图2所示,对多个fpga芯片进行配置之前,sd卡、stm32f103zet6和fpga芯片需要先按照图1和图2所示连接。s4:每一数据读写平台分别从对应的存储模块中读取配置文件;本实施例中,数据读写平台通过spi串行总线的方式从对应的存储模块中读取配置文件,spi串行总线方式是一种常见的数据传输方式,具体读取过程为本领域技术人员所熟知,在此不予赘述。s5:每一数据读写平台分别将读取到的配置文件写入对应的fpga芯片中;在本实施例中,步骤s5在执行时,数据读写平台为主设备,fpga芯片为从设备,采用slaveserial模式或slaveselectmap模式进行数据写入,如图3所示为fpga芯片采用slaveserial模式进行配置时的时序关系示意图,图4为fpga芯片采用slaveserial模式进行配置时的流程图,图6为fpga芯片的配置过程示意图,其中,图4虚线框内的流程是slaveselectmap模式且配置时钟频率大于50mhz时所需。需要注意的是,接收完配置数据后,done信号会拉高,但此时fpga的配置过程并未结束,系统仍需要cclk进行后续的启动工作,因此,在done信号拉高后,还要持续输出8个周期的cclk,以保证配置过程的正确性。此外,在slaveserial模式中发送1字节数据过程中,应先发送高位,依次递减;在slaveselectmap模式中,则需要进行bit交换,以发送0xabcd为例,经bit交换之后,发送的数据为0xd5b3,如图5所示为fpga芯片采用slaveselectmap模式进行配置时bit交换示意图。以xilinx系列fpga为例,配置模式是由上电时其专用配置管脚的状态决定的,对应关系如表1所示。表1fpga配置模式选择表fpga配置模式配置管脚slaveserial111slaveselectmap110当设置fpga的配置模式为slaveserial模式时,对应的配置管脚有5个,分别是:cclk、prog_b、init、din和done,其管脚信号说明如表2所示。表2slaveserial模式配置管脚说明管脚名称方向功能说明cclk输入配置时钟prog_b输入复位配置逻辑init输出标识是否准备接收配置数din输入配置数据传输管脚done输出标识是否配置完毕由于本发明为每一个fpga芯片均设置了一个与其连接的sd卡数据和一个数据读写平台,因此,各个fpga芯片之间的配置文件的读取和写入可以同时进行,不必等待一个fpga芯片的配置文件读写完成后才开始下一个,从而大大节省了fpga的上电配置时间,另外,步骤s4和步骤s5可以为同时进行,一边从存储模块中读取数据文件,一边将读取到的数据文件写入对应的fpga芯片,实现了边读边写,从而能够节省时间和成本。下面以对包括256个fpga芯片的fpga平台进行配置为例,本发明提供的多fpga上电自动配置方法与现有的采用jtag方式配置fpga的方法相比,具有以下优势:(1)节省大量时间,采用jtag配置方式需要逐片配置,并且至少需要一天的时间,而采用本发明提供的多fpga上电自动配置方法只需要一分钟就可以完成配置,大大节省了时间,提高了效率。(2)节省人力成本,采用jtag配置方式进行配置时,每配置一个fpga芯片需要对板卡进行两次插拔,在pc端也需要两次插拔,费时费力,一个人无法一次完成对这么多个fpga的配置,而本发明提供的多fpga上电自动配置方法不需要人为进行操作就可以自动完成对fpga芯片的配置,大大降低了人力成本。(3)节省物资成本,采用jtag配置方式进行配置时,配置一个fpga芯片需要一个jtag烧写器和一台pc机,而本发明提供的多fpga上电自动配置方法只需要一个sd卡和一块stm32的最小系统,一个fpga芯片就可节省物资成本3000元左右,整个fpga平台即可节省一大笔项目开发费用。(4)解决了各平台无法同步工作的问题,采用jtag配置方式进行配置时,会出现一些fpga芯片中的程序已经开始运行甚至已经运行结束了,而其他剩余的fpga芯片中的程序还没有开始配置,这种用串行的烧写方式会造成整个平台无法运行以及时钟不同步等问题,导致整个fpga平台无法正常运行下去。而本发明提供的多fpga上电自动配置方法是对所有fpga芯片同步并行配置,同步上电即可实现同步配置,程序在所有fpga芯片中同步运行,使得整个fpga平台中的所有fpga芯片同时工作,从而能够保证整个fpga平台中的程序顺利配置完成。本发明提供的多fpga上电自动配置方法中,若仅限于其中的一个烧写平台(即一个fpga芯片、一个stm32f103zet6和一个sd卡),则本发明并不具有明显的优势。在进行众核处理器架构模拟时,动辄需要上百块烧写平台,此时本发明才能充分体现其优势,通过开启总电源,使得所有烧写平台能够同时上电工作,实现了于非常短时间内完成大量烧写任务的目的。前案1(齐冶.基于微处理器的fpga配置方案[j].2007.)公开了一种基于微处理器的fpga配置方案,本发明与其的区别如下:(1)微处理器的选择不同:前案1中的微处理器选择的是at89c2051,本发明选择的是stm32f103zet6。但是,受限于at89c2051本身受到晶振频率的限制,本案发明人实验证明,用at89c2051进行一次烧写,在超频的状态下需要12分钟,而且成功率很低。而本发明配置过程只需要一分钟,而且是在正常工作状态下,并且成功率高。(2)存储文件的器件选择不同:前案1选择eeprom芯片at24c01。首先,fpga的配置文件很大,at24c01的存储空间不足。其次,前案1中也提到,配置文件可以利用编程器烧入其中,那这个方法产生的问题又和用jtag的方式一样了,上千块的板卡就需要上千个烧写器,上千个pc机和上千个工程人员进行工作,而且难以保证时序的同步。(3)前案1中的图4为一块at89c2051配置多块fpga。这种方式在实际工程中不可用。区别(1)中已经指出,超频烧写一块就需要12分钟,而且错误率很高。再进行一个at89c2051配置多块fpga,速度之慢和错误率之高可想而知。而本发明中的每一烧写平台均为一个stm32和一个sd卡配置一块fpga,并且能够同步烧写。综上所述,前案1在进行单个fpga的烧写时不比本发明有优势,在进行上千个fpga的烧写时,根本没法工作。前案2(张承畅,严单贵,杨力生,等.基于xcf32p的多fpga配置方案[j].计算机工程,2010,36(15):259-261.)公开了一种基于xcf32p的多fpga配置方案,本发明与其的区别如下:(1)配置方式不同:前案2使用的是并行配置,本发明使用串行配置。在保证速度为前提的条件下,占用的微处理器接口和资源越少越好,前案2采用并行方式占用的微处理器接口太多,而且速度和串行配置相对于一块板卡而言无异。(2)前案2选择xcf32p的存储器,该存储器工作时需要特有的下载器,前案2中提到的一个xcf32p和一个cpld可配置4块fpga,那么,当达到上百核的时候,需要上百个下载器和上百个pc机,相比于本发明只需要一台pc机和一台sd卡烧写器,上百个下载器和上百个pc机花费要大很多,而且工程人员的工作量也要大很多。(3)前案2中也指出了可用于配置数据小于8mb的fpga,在进行众核处理器架构模拟的时候,fpga的程序远远大于8mb,而本发明使用的sd卡存储容量例如可以扩充至8g甚至更高,以满足配置文件的存储需求。综上所述,前案2具有很多的限制因素,当fpga板卡的数量多到百块的时候无法进行快速自动的配置。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1