CN103927279A - Fpga配置方法及系统、处理器 - Google Patents

Fpga配置方法及系统、处理器 Download PDF

Info

Publication number
CN103927279A
CN103927279A CN201310016560.1A CN201310016560A CN103927279A CN 103927279 A CN103927279 A CN 103927279A CN 201310016560 A CN201310016560 A CN 201310016560A CN 103927279 A CN103927279 A CN 103927279A
Authority
CN
China
Prior art keywords
pin
fpga
level
processor
low level
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
Application number
CN201310016560.1A
Other languages
English (en)
Inventor
凌兴锋
黄健安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Comba Network Systems Co Ltd
Original Assignee
Comba Telecom Systems China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Comba Telecom Systems China Ltd filed Critical Comba Telecom Systems China Ltd
Priority to CN201310016560.1A priority Critical patent/CN103927279A/zh
Publication of CN103927279A publication Critical patent/CN103927279A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种FPGA配置方法及系统、处理器,FPGA配置方法包括:处理器将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平;若检测到INIT_B管脚的电平由低电平上拉至高电平,则通过SCLK管脚向FPGA发送SPI总线的同步时钟信号,以及通过MOSI管脚向FPGA发送配置数据;在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对FPGA的配置。本发明技术方案解决了现有技术在配置FPGA时,处理器模拟的同步时钟速率会比较慢,传输配置数据的速率较低,从而使得配置FPGA的耗时会比较长,制约了系统的快速启动的问题。

Description

FPGA配置方法及系统、处理器
技术领域
本发明涉及通信技术领域,尤其涉及一种FPGA配置方法及系统、处理器。
背景技术
现场可编程门阵列(FPGA,Field Programmable Gates Array)是一种高密度现场可编程逻辑器件,其逻辑功能是通过把设计生成的数据文件配置到器件内部的静态配置数据存储器(SRAM,Static Random Access Memory)来实现的。FPGA具有可重复编程性,能灵活实现各种逻辑功能。
基于SRAM工艺的FPGA具有易失性。在FPGA芯片掉电后,SRAM中的配置数据容易丢失,因此需要外接只读存储器(ROM,Read-Only Memory)来保存其配置数据,那么在芯片上电后,就需要重新配置FPGA,即重新将配置数据载入FPGA。
现有技术中,配置FPGA的方式灵活多样,根据FPGA的芯片是否能够自己主动加载配置数据,可以将配置FPGA的方式分为主模式和从模式。在主模式中,为FPGA配置可编程只读存储器(PROM,Programmable Read-OnlyMemory)来保存配置数据,FPGA芯片上电后自动加载PROM中的配置数据到SRAM中;在从模式中,处理器的非易失性存储器来存储配置数据,在FPGA芯片上电后,由处理器对FPGA进行在线配置,其中,嵌入式系统中的处理器可以为微处理器(MPU,Microprocessor Unit)、微控制器(MCU,Micro ControllerUnit)等,处理器中的非易失性存储器可以为电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)或闪存(FLASH)等。
由上可见,采用主模式配置FPGA时,需要为FPGA配置PROM,因此占用了电路板面积,且成本较大,因此为了节省成本以及节省电路板面积,现有技术一般采用从模式来配置FPGA。
其中,从模式又分为从串模式和从并模式,由处理器通过同步串行接口将配置数据串行写入FPGA中的配置方式称为从串模式,在目前采用从串模式配置FPGA时,通常将处理器的通用输入/输出(GPIO,General Purpose InputOutput)管脚和FPGA的串行配置管脚直接相连,如图1所示,然后再通过软件来模拟如图2所示的配置时序,处理器在需要配置FPGA时,将PROGRAM_B管脚的电平由高电平下拉为低电平,并在保持一定时间的低电平后,再由低电平上拉为高电平,以此来通知FPGA开始进行配置,FPGA检测到PROGRAM_B管脚的电平为低电平时,将INIT_B管脚的电平由高电平下拉至低电平,开始进行配置初始化操作,并在完成配置初始化后,将INIT_B管脚的电平上拉至高电平,此时处理器开始通过CCLK管脚发送模拟的同步时钟信号以及通过DIN管脚发送配置数据,FPGA根据同步时钟信号接收配置数据,若配置完成,则FPGA将DONE管脚的电平上拉至高电平,处理器检测到DONE管脚的电平为高电平后,确认配置完成。
上述从串模式实现方式相对比较简单,只要处理器控制五个GPIO管脚,按上述时序先后输出相应的逻辑电平即可。但是,由于处理器对GPIO管脚的操作时间相对比较长,这就导致模拟的同步时钟速率会比较慢,传输配置数据的速率较低,从而使得配置FPGA的耗时会比较长,也制约了系统的快速启动。
发明内容
本发明实施例提供一种FPGA配置方法及系统、处理器,用以解决现有技术在配置FPGA时,处理器模拟的同步时钟速率会比较慢,传输配置数据的速率较低,从而使得配置FPGA的耗时会比较长,制约了系统的快速启动的问题。
本发明实施例技术方案如下:
一种FPGA配置方法,处理器的串行外设接口SPI总线管脚中的SCLK管脚和现场可编程门阵列FPGA中的CCLK管脚相连,处理器的SPI总线管脚中的MOSI管脚和FPGA中的DIN管脚相连,处理器的通用输入/输出GPIO管脚中的PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,处理器的GPIO管脚中的INIT_B管脚和FPGA中的INIT_B管脚相连,处理器的GPIO管脚中的DONE管脚和FPGA中的DONE管脚相连,该方法包括:所述处理器在需要配置所述FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知所述FPGA进行配置初始化;所述处理器在检测到INIT_B管脚的电平由低电平上拉至高电平时,则确认所述FPGA完成了配置初始化;所述处理器通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据;所述处理器在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对所述FPGA的配置。
一种处理器,包括SCLK管脚、MOSI管脚、PROGRAM_B管脚、INIT_B管脚和DONE管脚,SCLK管脚和MOSI管脚为串行外设接口SPI总线管脚,PROGRAM_B管脚、INIT_B管脚和DONE管脚为通用输入/输出GPIO管脚,其中,SCLK管脚和现场可编程门阵列FPGA中的CCLK管脚相连,MOSI管脚和FPGA中的DIN管脚相连,PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,INIT_B管脚和FPGA中的INIT_B管脚相连,DONE管脚和FPGA中的DONE管脚相连;所述处理器还包括主控单元,用于在需要配置所述FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知所述FPGA进行配置初始化;在检测到INIT_B管脚的电平由低电平上拉至高电平时,则确认所述FPGA完成了配置初始化;通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据;在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对所述FPGA的配置。
一种FPGA配置系统,包括处理器和现场可编程门阵列FPGA,处理器的串行外设接口SPI总线管脚中的SCLK管脚和FPGA中的CCLK管脚相连,处理器的SPI总线管脚中的MOSI管脚和FPGA中的DIN管脚相连,处理器的通用输入/输出GPIO管脚中的PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,处理器的GPIO管脚中的INIT_B管脚和FPGA中的INIT_B管脚相连,处理器的GPIO管脚中的DONE管脚和FPGA中的DONE管脚相连,其中:所述处理器,用于在需要配置所述FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知所述FPGA进行配置初始化,在检测到INIT_B管脚的电平由低电平上拉至高电平时,则确认所述FPGA完成了配置初始化,通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据,在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对所述FPGA的配置;所述FPGA,用于在检测到PROGRAM_B管脚的电平由高电平下拉至低电平时,将INIT_B管脚的电平由高电平下拉至低电平,开始进行配置初始化,并在完成配置初始化后,将INIT_B管脚的电平由低电平上拉至高电平,通过CCLK管脚接收同步时钟信号,并根据接收到的同步时钟信号,从DIN管脚接收配置数据,若配置完成,则将DONE管脚的电平由低电平上拉至高电平。
本发明实施例技术方案中,处理器包括SCLK管脚、MOSI管脚、PROGRAM_B管脚、INIT_B管脚和DONE管脚,其中,SCLK管脚和MOSI管脚为串行外设接口(SPI,Serial Peripheral Interface)总线管脚,PROGRAM_B管脚、INIT_B管脚和DONE管脚为GPIO管脚,SCLK管脚和FPGA中的CCLK管脚相连,MOSI管脚和FPGA中的DIN管脚相连,PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,INIT_B管脚和FPGA中的INIT_B管脚相连,DONE管脚和FPGA中的DONE管脚相连,处理器在需要配置FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知FPGA进行配置初始化,若检测到INIT_B管脚的电平由低电平上拉至高电平,则确认FPGA完成了配置初始化,此时可以通过SCLK管脚向FPGA发送SPI总线的同步时钟信号,以及通过MOSI管脚向FPGA发送配置数据,在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对FPGA的配置。由上可见,本发明实施例技术方案中,不再由GPIO管脚中的CCLK管脚向FPGA发送模拟的同步时钟信号,而是由SPI总线管脚中的SCLK管脚发送同步时钟信号,而SPI总线的同步时钟是通过处理器的主频进行分频直接得到的,有效地提高了配置数据的传输速率,也减少了配置FPGA的耗时,使得系统能够快速启动,此外,处理器中一般都带有SPI总线管脚,这就使得控制SPI总线管脚模拟配置时序相对比较方便,减少了配置FPGA的处理复杂度,由于SPI总线稳定、可靠性好,因此也有效提高了配置FPGA过程的稳定性。
附图说明
图1为现有技术中,处理器和FPGA之间的管脚连接关系示意图;
图2为现有技术中,采用从串方式配置FPGA时的配置时序示意图;
图3为本发明是实施例一中,处理器和FPGA之间的管脚连接关系示意图;
图4为本发明是实施例一中,FPGA配置方法流程示意图;
图5为本发明是实施例一中,实测配置时序示意图;
图6为本发明是实施例二中,处理器上运行的操作系统不对SPI总线进行管理时,配置FPGA的流程示意图;
图7为本发明是实施例二中,异常出错处理流程示意图;
图8为本发明是实施例三中,处理器上运行的操作系统对SPI总线进行管理时,配置FPGA的流程示意图。
具体实施方式
下面结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细地阐述。
实施例一
由上述图2可知,在现有技术配置FPGA时的配置时序中,同步时钟信号和数据的时序很接近串行通信中普遍使用的SPI总线时序,区别仅在于配置FPGA时传递的是一串比特流,传输的数据量比较大,而且SPI总线的同步时钟是由主频进行分频直接得到的,因此为了解决现有技术中处理器模拟的同步时钟速率比较慢,传输配置数据的速率较低的问题,本发明实施例一提出,可以使用SPI总线管脚来传输同步时钟信号和配置数据,从而有效地提高了配置数据的传输速率,减少了配置FPGA的耗时。
本发明实施例一中,处理器和FPGA之间的管脚连接关系如图3所示,处理器的GPIO管脚中的PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,处理器的GPIO管脚中的INIT_B管脚和FPGA中的INIT_B管脚相连,处理器的GPIO管脚中的DONE管脚和FPGA中的DONE管脚相连。与现有技术不同的是,在本发明实施例一中,处理器的SPI总线管脚中的SCLK管脚和FPGA中的CCLK管脚相连,处理器的SPI总线管脚中的MOSI管脚和FPGA中的DIN管脚相连。
其中,SPI总线管脚中的SCLK管脚用于发送SPI总线的同步时钟信号,SPI总线的同步时钟是由主频进行分频直接得到的,SPI总线管脚中的MOSI管脚用于发送数据信号。
基于上述管脚连接关系,本发明实施例一提出一种FPGA配置方法,其流程如图4所示,其具体处理流程如下:
步骤41,处理器在需要配置FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知FPGA进行配置初始化。
本发明实施例一中,嵌入式系统中的处理器可以但不限于为MPU或MCU。
上述预设时长可以设置,例如可以设置为10μs或6μs。
当系统上电后,处理器首先初始化各管脚的电平,其中,PROGRAM_B管脚和INIT_B管脚初始化后的电平为高电平,DONE管脚初始化后的电平为低电平,相应的,此时FPGA中的PROGRAM_B管脚和INIT_B管脚的电平也为高电平,DONE管脚的电平也为低电平。
处理器需要配置FPGA时,通过发送一个下降脉冲来启动配置,即将自身的PROGRAM_B管脚的电平由高电平下拉至低电平,以通知FPGA进行配置初始化,并且在保持预设时长的低电平后,再将PROGRAM_B管脚的电平由低电平上拉至高电平。由于FPGA的PROGRAM_B管脚和处理器的PROGRAM_B管脚相连,因此FPGA的PROGRAM_B管脚的电平也会先由高电平下拉至低电平,然后在保持预设时长的低电平后,再由低电平上拉至高电平。
FPGA在检测到自身的PROGRAM_B管脚的电平也由高电平下拉至低电平后,开始进行配置初始化,准备接收配置数据,同时将自身的INIT_B管脚的电平由高电平下拉至低电平,在完成配置初始化后,FPGA将INIT_B管脚的电平由低电平上拉至高电平。由于FPGA的INIT_B管脚和处理器的INIT_B管脚相连,因此处理器的INIT_B管脚的电平也会先由高电平下拉至低电平,然后再由低电平上拉至高电平。
步骤42,处理器若检测到INIT_B管脚的电平由低电平上拉至高电平,则确认FPGA完成了配置初始化。
本发明实施例一提出,处理器在检测到INIT_B管脚的电平由高电平下拉至低电平后,若检测到INIT_B管脚的电平在规定时间长度内一直为低电平,则确认对FPGA配置失败,失败原因可能为FPGA发生硬件故障。
步骤43,处理器通过SCLK管脚向FPGA发送SPI总线的同步时钟信号,以及通过MOSI管脚向FPGA发送配置数据。
其中,SPI总线的同步时钟由处理器控制,是由处理器的主频直接进行分频得到的,受处理器的主频影响,因此能够有效地提高配置数据的传输速率,减少配置FPGA的耗时,使得系统能够快速启动。
嵌入式系统的处理器中一般都带有SPI总线管脚,因此控制SPI总线管脚模拟配置时序相对比较方便,减少了配置FPGA的处理复杂度。此外,由于SPI总线稳定、可靠性好,因此也有效提高了配置FPGA过程的稳定性。
SPI总线管脚中的MOSI管脚在传输数据信号时,每次传输一个字节的数据,因此,处理器可以通过MOSI管脚,将FPGA的配置数据按字节顺序移位发送出去,具体的:
处理器从保存的该FPGA的未发送的配置数据中,提取出预设数目个字节的数据,然后通过MOSI管脚,依次发送提取出的各字节的数据,判断是否还存在未发送的配置数据,若判断结果为是,则继续提取预设数目个字节的数据,即返回执行从FPGA的未发送的配置数据中,提取出预设数目个字节的数据的步骤,若判断结果为否,则表明已完成所有配置数据的传输。
其中,处理器可以按照各字节的数据的存储地址由先到后的顺序,依次从FPGA的未发送的配置数据中,提取出预设数目个字节的数据,然后按照各字节的数据的存储地址由先到后的顺序,依次发送提取出的各字节的数据。
例如,FPGA的配置数据的大小为2M,上述预设数目为2,处理器在传输配置数据时,首先按照各字节的数据的存储地址由先到后的顺序,从该FPGA的未发送的配置数据中提取出两个字节的配置数据,并通过MOSI管脚,依次发送此次提取出的第一个字节的数据和提取出的第二个字节的数据,然后处理器继续按照各字节的数据的存储地址由先到后的顺序,从未发送的配置数据中提取出下两个字节的配置数据,并通过MOSI管脚,依次发送此次提取出的第一个字节的数据和提取出的第二个字节的数据,循环执行上述步骤,直至完成所有配置数据的发送。
由于从未发送的配置数据中提取出预设数目个字节的数据时,需要一定的时延,而在依次发送提取出的各字节的数据时,各字节的数据之间的传输时延可以缩小到零,因此本发明实施例一提出,上述预设数目越大,即每次提取出的数据的字节数目越多,那么传输配置数据的速率就越快,配置FPGA的速率也就越快。
若各字节的数据之间的传输时延缩小到零,则配置FPGA的速率就能达到SPI总线的同步时钟传输速率。如图5所示,为SPI总线的同步时钟传输速率为20MBit/S,且两个字节之间的传输时延为0时的实测配置时序图,其中,上方的信号为同步时钟信号,下方的信号为数据信号。由图5可知,SPI总线的同步时钟周期为50ns,同步时钟频率为20MHZ。
SPI总线的同步时钟传输速率最高为40MBit/S,但是传输速率过高会影响FPGA接收配置数据的稳定性,而图5所示的实际测试结果中的20MBit/S已经基本能够满足绝大部分系统对配置速率的要求。
其中,处理器在传输每个字节的数据时,可以按照由低位到高位的顺序,依次发送各比特的数据。
FPGA通过CCLK管脚接收同步时钟信号,并根据接收到的同步时钟信号,从DIN管脚接收配置数据。
步骤44,处理器在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对FPGA的配置。
FPGA若成功接收所有配置数据,则将自身的DONE管脚的电平由低电平上拉至高电平,以通知处理器配置已完成。由于FPGA的DONE管脚和处理器的DONE管脚相连,因此处理器的DONE管脚的电平也会相应的由低电平上拉至高电平。处理器在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对FPGA的配置。
处理器若检测到自身的DONE管脚的电平在规定时间长度内一直为低电平,则确认对FPGA配置失败。
此外,处理器若检测到DONE管脚的电平为低电平,且INIT_B管脚的电平再次由高电平下拉至低电平,则确认对FPGA配置失败,失败原因可能为FPGA发生硬件故障。
本发明实施例一中,若处理器确认对FPGA配置失败,则可以在排除故障之后重新对该FPGA进行配置。
由上可知,采用从串模式配置FPGA时,FPGA侧的各管脚的功能如下表所示。
本发明实施例一中,由于部分时钟用于时序建立,例如FPGA被配置为等待数据通信模块(DCM,Data Communication Module)锁存其时钟输入,因此对FPGA进行配置的时长要大于传输配置数据的时长。
由上述处理过程可知,本发明实施例技术方案中,处理器包括SCLK管脚、MOSI管脚、PROGRAM_B管脚、INIT_B管脚和DONE管脚,其中,SCLK管脚和MOSI管脚为串行外设接口(SPI,Serial Peripheral Interface)总线管脚,PROGRAM_B管脚、INIT_B管脚和DONE管脚为GPIO管脚,SCLK管脚和FPGA中的CCLK管脚相连,MOSI管脚和FPGA中的DIN管脚相连,PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,INIT_B管脚和FPGA中的INIT_B管脚相连,DONE管脚和FPGA中的DONE管脚相连,处理器在需要配置FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知FPGA进行配置初始化,若检测到INIT_B管脚的电平由低电平上拉至高电平,则确认FPGA完成了配置初始化,此时可以通过SCLK管脚向FPGA发送SPI总线的同步时钟信号,以及通过MOSI管脚向FPGA发送配置数据,在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对FPGA的配置。由上可见,本发明实施例技术方案中,不再由GPIO管脚中的CCLK管脚向FPGA发送模拟的同步时钟信号,而是由SPI总线管脚中的SCLK管脚发送同步时钟信号,而SPI总线的同步时钟是通过主频进行分频直接得到的,有效地提高了配置数据的传输速率,也减少了配置FPGA的耗时,使得系统能够快速启动,此外,处理器中一般都带有SPI总线管脚,这就使得控制SPI总线管脚模拟配置时序相对比较方便,减少了配置FPGA的处理复杂度,由于SPI总线稳定、可靠性好,因此也有效提高了配置FPGA过程的稳定性。
实施例二
若处理器上运行的操作系统不对SPI总线进行管理,例如ucosⅡ系统,则由软件直接控制SPI总线管脚进行数据的发送,此时配置FPGA的流程如图6所示,其具体处理流程如下:
步骤61,若确认采用从串模式对FPGA进行配置,则处理器将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长(例如10μs)的低电平后,由低电平上拉至高电平,以通知FPGA进行配置初始化;
步骤62,处理器若检测到INIT_B管脚的电平由低电平上拉至高电平,则确认FPGA完成了配置初始化,已经准备好接收配置数据;
步骤63,处理器确认FPGA的配置数据在非易失性存储器中的存储地址,其中,非易失性存储器可以为FLASH;
步骤64,处理器对SPI总线进行初始化设置,具体的,可以设置数据传输速率、传输模式等;
步骤65,处理器通过SCLK管脚,发送SPI总线的同步时钟信号;
步骤66,处理器按照各字节的数据的存储地址由先到后的顺序,从FPGA的未发送的配置数据中依次提取出N个字节的配置数据,其中N为预先设定数目,N≥1;
步骤67,处理器通过MOSI管脚,按照各字节的数据的存储地址由先到后的顺序,依次发送此次提取出的各字节的数据;
步骤68,若处理器在发送每个字节的数据时,发生了发送异常,则进行异常出错处理流程;
步骤69,处理器判断是否还存在未发送的配置数据,若判断结果为是,则转至步骤66,若判断结果为否,则转至步骤610;
步骤610,确认SPI总线完成了配置数据的传输;
步骤611,处理器若检测到DONE管脚的电平由低电平上拉至高电平,则确认完成对FPGA的配置,从串配置结束。
如图7所示,为上述过程中的异常出错处理流程图,具体处理流程如下:
步骤71,处理器在当前需要发送的数据发送成功之前,判断该数据的等待时长(从提取出该数据的时间点到当前时间点之间的时长)是否达到了预设的等待时长阈值,若判断结果为否,则转至步骤72,若判断结果为是,则转至步骤76;
步骤72,判断SPI总线的状态寄存器是否将该数据的状态修改为发送成功,若判断结果为是,则转至步骤73,若判断结果为否,则转至步骤71;
步骤73,判断状态寄存器是否存在运行错误,例如模式错误或从模式中止错误,若判断结果为是,则转至步骤74,若判断结果为否,则转至步骤75;
步骤74,进行相应的异常处理,例如,当发生模式错误时,清除模式错误标志位,然后重写控制寄存器,当发生从模式中止错误时,清除Slave Abort错误标志位;
步骤75,继续发送下一字节的数据;
步骤76,判断该数据对应的重发次数是否达到了预设的重发次数阈值,若判断结果为是,则转至步骤79,若判断结果为否,则转至步骤77,其中,重发次数阈值可以设置为三次;
步骤77,清除状态寄存器中该数据的发送失败状态;
步骤78,重新发送该数据,然后转至步骤71;
步骤79,SPI总线结束数据传输流程;
步骤710,确认对PFGA配置出错,配置失败,退出配置流程。
实施例三
若处理器上运行的操作系统能够对SPI总线进行管理,即带有SPI总线管理功能(例如嵌入式Linux系统),则由操作系统的相关接口进行数据的发送,其中,在操作系统的上层用户空间将数据传送到接口,再在下层的内核空间将数据接口发送,此时配置FPGA的流程如图8所示,其具体处理流程如下:
步骤81,在用户空间调用操作系统的调用接口,以复位FPGA的各管脚;
步骤82,在内核空间复位FPGA的各管脚;
步骤83,在操作系统中打开存放FPGA的配置数据的文件;
步骤84,若出现文件打开错误,则进行异常处理,例如文件打开失败,则可以重新打开文件,若再次打开失败,则可以退出配置流程;
步骤85,在用户空间开辟与FPGA的配置数据大小相同的内存缓存区;
步骤86,读取FPGA的配置数据到新开辟的内存缓存区;
步骤87,将FPGA的配置数据的大小传递给内核空间;
步骤88,内核空间记录FPGA的配置数据的大小;
步骤89,用户空间通知内核空间开始进行数据发送;
步骤810,内核空间初始化FPGA的各管脚;
步骤811,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长(例如6μs)的低电平后,由低电平上拉至高电平,以通知FPGA进行配置初始化;
步骤812,若检测到INIT_B管脚的电平由低电平上拉至高电平,则确认FPGA完成了配置初始化,已经准备好接收配置数据;
步骤813,在内核空间开辟预设大小的空间作为缓存区,由于内核空间不适合开辟大的内存,会影响系统的稳定性,因此可以开辟4K大小的缓存区;
步骤814,准备循环发送4K大小的数据;
步骤815,从用户空间的内存缓存区复制4K大小的数据到内核空间的缓存区;
步骤816,为了防止SPI设备进行其他工作,此时可以给SPI设备加保护锁;
步骤817,将内核空间的缓存区中的数据加入到SPI发送队列的尾部;
步骤818,通过SCLK管脚,发送SPI总线的同步时钟信号,通过MOSI管脚,依次发送SPI发送队列的各数据;
步骤819,释放为SPI设备加的保护锁,结束一次4K大小的数据的发送;
步骤820,判断是否完成所有FPGA的配置数据的发送,若判断结果为是,则转至步骤821,若判断结果为否,则转至步骤814;
步骤821,若发生发送异常,则内核空间进行异常出错处理流程;
步骤822,释放在内核空间开辟的缓冲区,若检测到DONE管脚的电平由低电平上拉至高电平,则确认完成对FPGA的配置,从串配置结束。
步骤823,若发生发送异常,则用户空间进行异常情况记录;
步骤824,释放用户空间的内存缓存区,结束FPGA的配置。
实施例四
基于本发明实施例一提出的FPGA配置方法,本发明实施例四提出一种处理器,包括SCLK管脚、MOSI管脚、PROGRAM_B管脚、INIT_B管脚和DONE管脚,SCLK管脚和MOSI管脚为SPI总线管脚,PROGRAM_B管脚、INIT_B管脚和DONE管脚为GPIO管脚,其中,SCLK管脚和FPGA中的CCLK管脚相连,MOSI管脚和FPGA中的DIN管脚相连,PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,INIT_B管脚和FPGA中的INIT_B管脚相连,DONE管脚和FPGA中的DONE管脚相连;
所述处理器还包括主控单元,用于在需要配置所述FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知所述FPGA进行配置初始化;若检测到INIT_B管脚的电平由低电平上拉至高电平,则确认所述FPGA完成了配置初始化;通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据;在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对所述FPGA的配置。
较佳的,所述主控单元,具体用于从所述FPGA的未发送的配置数据中,提取出预设数目个字节的数据,通过所述MOSI管脚,依次发送提取出的各字节的数据,判断是否存在未发送的配置数据,若判断结果为是,则返回执行从所述FPGA的未发送的配置数据中,提取出预设数目个字节的数据的步骤。
较佳的,所述主控单元,还用于在检测到DONE管脚的电平为低电平,且INIT_B管脚的电平再次由高电平下拉至低电平时,确认对所述FPGA配置失败。
较佳的,所述主控单元,还用于在通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据之前,若检测到INIT_B管脚的电平在规定时间长度内一直为低电平,则确认对所述FPGA配置失败。
较佳的,所述主控单元,还用于在检测到DONE管脚的电平在规定时间长度内一直为低电平时,确认对所述FPGA配置失败。
相应的,本发明实施例四还提供一种FPGA配置系统,包括处理器和FPGA,处理器的SPI总线管脚中的SCLK管脚和FPGA中的CCLK管脚相连,处理器的SPI总线管脚中的MOSI管脚和FPGA中的DIN管脚相连,处理器的GPIO管脚中的PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,处理器的GPIO管脚中的INIT_B管脚和FPGA中的INIT_B管脚相连,处理器的GPIO管脚中的DONE管脚和FPGA中的DONE管脚相连,其中:
所述处理器,用于在需要配置所述FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知所述FPGA进行配置初始化,若检测到INIT_B管脚的电平由低电平上拉至高电平,则确认所述FPGA完成了配置初始化,通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据,在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对所述FPGA的配置;
所述FPGA,用于在检测到PROGRAM_B管脚的电平由高电平下拉至低电平时,将INIT_B管脚的电平由高电平下拉至低电平,开始进行配置初始化,并在完成配置初始化后,将INIT_B管脚的电平由低电平上拉至高电平,通过CCLK管脚接收同步时钟信号,并根据接收到的同步时钟信号,从DIN管脚接收配置数据,若配置完成,则将DONE管脚的电平由低电平上拉至高电平。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (11)

1.一种FPGA配置方法,其特征在于,处理器的串行外设接口SPI总线管脚中的SCLK管脚和现场可编程门阵列FPGA中的CCLK管脚相连,处理器的SPI总线管脚中的MOSI管脚和FPGA中的DIN管脚相连,处理器的通用输入/输出GPIO管脚中的PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,处理器的GPIO管脚中的INIT_B管脚和FPGA中的INIT_B管脚相连,处理器的GPIO管脚中的DONE管脚和FPGA中的DONE管脚相连,所述方法包括:
所述处理器在需要配置所述FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知所述FPGA进行配置初始化;
所述处理器在检测到INIT_B管脚的电平由低电平上拉至高电平时,则确认所述FPGA完成了配置初始化;
所述处理器通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据;
所述处理器在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对所述FPGA的配置。
2.如权利要求1所述的方法,其特征在于,所述处理器通过所述MOSI管脚发送配置数据,具体包括:
所述处理器从所述FPGA的未发送的配置数据中,提取出预设数目个字节的数据;
通过所述MOSI管脚,依次发送提取出的各字节的数据;
判断是否存在未发送的配置数据;
若判断结果为是,则返回执行从所述FPGA的未发送的配置数据中,提取出预设数目个字节的数据的步骤。
3.如权利要求1所述的方法,其特征在于,还包括:
所述处理器若检测到DONE管脚的电平为低电平,且INIT_B管脚的电平再次由高电平下拉至低电平,则确认对所述FPGA配置失败。
4.如权利要求1所述的方法,其特征在于,所述处理器在通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据之前,还包括:
所述处理器若检测到所述INIT_B管脚的电平在规定时间长度内一直为低电平,则确认对所述FPGA配置失败。
5.如权利要求1所述的方法,其特征在于,还包括:
所述处理器若检测到所述DONE管脚的电平在规定时间长度内一直为低电平,则确认对所述FPGA配置失败。
6.一种处理器,其特征在于,包括SCLK管脚、MOSI管脚、PROGRAM_B管脚、INIT_B管脚和DONE管脚,SCLK管脚和MOSI管脚为串行外设接口SPI总线管脚,PROGRAM_B管脚、INIT_B管脚和DONE管脚为通用输入/输出GPIO管脚,其中,SCLK管脚和现场可编程门阵列FPGA中的CCLK管脚相连,MOSI管脚和FPGA中的DIN管脚相连,PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,INIT_B管脚和FPGA中的INIT_B管脚相连,DONE管脚和FPGA中的DONE管脚相连;
所述处理器还包括主控单元,用于在需要配置所述FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知所述FPGA进行配置初始化;在检测到INIT_B管脚的电平由低电平上拉至高电平时,则确认所述FPGA完成了配置初始化;通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据;在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对所述FPGA的配置。
7.如权利要求6所述的处理器,其特征在于,所述主控单元,具体用于从所述FPGA的未发送的配置数据中,提取出预设数目个字节的数据,通过所述MOSI管脚,依次发送提取出的各字节的数据,判断是否存在未发送的配置数据,若判断结果为是,则返回执行从所述FPGA的未发送的配置数据中,提取出预设数目个字节的数据的步骤。
8.如权利要求6所述的处理器,其特征在于,所述主控单元,还用于在检测到DONE管脚的电平为低电平,且INIT_B管脚的电平再次由高电平下拉至低电平时,确认对所述FPGA配置失败。
9.如权利要求6所述的处理器,其特征在于,所述主控单元,还用于在通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据之前,若检测到INIT_B管脚的电平在规定时间长度内一直为低电平,则确认对所述FPGA配置失败。
10.如权利要求6所述的处理器,其特征在于,所述主控单元,还用于在检测到DONE管脚的电平在规定时间长度内一直为低电平时,确认对所述FPGA配置失败。
11.一种FPGA配置系统,其特征在于,包括处理器和现场可编程门阵列FPGA,处理器的串行外设接口SPI总线管脚中的SCLK管脚和FPGA中的CCLK管脚相连,处理器的SPI总线管脚中的MOSI管脚和FPGA中的DIN管脚相连,处理器的通用输入/输出GPIO管脚中的PROGRAM_B管脚和FPGA中的PROGRAM_B管脚相连,处理器的GPIO管脚中的INIT_B管脚和FPGA中的INIT_B管脚相连,处理器的GPIO管脚中的DONE管脚和FPGA中的DONE管脚相连,其中:
所述处理器,用于在需要配置所述FPGA时,将PROGRAM_B管脚的电平由高电平下拉至低电平,且在保持预设时长的低电平后,由低电平上拉至高电平,以通知所述FPGA进行配置初始化,在检测到INIT_B管脚的电平由低电平上拉至高电平时,则确认所述FPGA完成了配置初始化,通过所述SCLK管脚向所述FPGA发送SPI总线的同步时钟信号,以及通过所述MOSI管脚向所述FPGA发送配置数据,在检测到DONE管脚的电平由低电平上拉至高电平后,确认完成对所述FPGA的配置;
所述FPGA,用于在检测到PROGRAM_B管脚的电平由高电平下拉至低电平时,将INIT_B管脚的电平由高电平下拉至低电平,开始进行配置初始化,并在完成配置初始化后,将INIT_B管脚的电平由低电平上拉至高电平,通过CCLK管脚接收同步时钟信号,并根据接收到的同步时钟信号,从DIN管脚接收配置数据,若配置完成,则将DONE管脚的电平由低电平上拉至高电平。
CN201310016560.1A 2013-01-16 2013-01-16 Fpga配置方法及系统、处理器 Pending CN103927279A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310016560.1A CN103927279A (zh) 2013-01-16 2013-01-16 Fpga配置方法及系统、处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310016560.1A CN103927279A (zh) 2013-01-16 2013-01-16 Fpga配置方法及系统、处理器

Publications (1)

Publication Number Publication Date
CN103927279A true CN103927279A (zh) 2014-07-16

Family

ID=51145502

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310016560.1A Pending CN103927279A (zh) 2013-01-16 2013-01-16 Fpga配置方法及系统、处理器

Country Status (1)

Country Link
CN (1) CN103927279A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391818A (zh) * 2014-11-26 2015-03-04 国家电网公司 一种EtherCAT双网数据读写系统及其方法
CN105958995A (zh) * 2016-04-27 2016-09-21 北京时代民芯科技有限公司 一种快速启动fpga的电路和方法
CN107168923A (zh) * 2017-03-28 2017-09-15 山东超越数控电子有限公司 一种配置多个fpga的装置及方法
CN107678909A (zh) * 2017-07-31 2018-02-09 郑州云海信息技术有限公司 一种服务器中监控芯片配置状态的电路及方法
CN111198527A (zh) * 2020-01-15 2020-05-26 北京实干兴邦科技有限公司 基于fpga的gpio输出状态的控制装置、控制方法及应用
CN112698887A (zh) * 2021-01-14 2021-04-23 成都壹石新科信息技术有限公司 具有隔离功能的fpga在线配置装置及方法
CN113127078A (zh) * 2021-03-30 2021-07-16 山东英信计算机技术有限公司 一种cpld的配置选定方法和装置
CN113360198A (zh) * 2021-08-11 2021-09-07 成都博宇利华科技有限公司 一种只用fpga自身在线更新fpga配置的方法
CN115033523A (zh) * 2022-05-19 2022-09-09 上海安路信息科技股份有限公司 Fpga码流更新方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391818A (zh) * 2014-11-26 2015-03-04 国家电网公司 一种EtherCAT双网数据读写系统及其方法
CN104391818B (zh) * 2014-11-26 2018-08-28 国家电网公司 一种EtherCAT双网数据读写系统及其方法
CN105958995A (zh) * 2016-04-27 2016-09-21 北京时代民芯科技有限公司 一种快速启动fpga的电路和方法
CN105958995B (zh) * 2016-04-27 2019-04-02 北京时代民芯科技有限公司 一种快速启动fpga的电路和方法
CN107168923A (zh) * 2017-03-28 2017-09-15 山东超越数控电子有限公司 一种配置多个fpga的装置及方法
CN107678909A (zh) * 2017-07-31 2018-02-09 郑州云海信息技术有限公司 一种服务器中监控芯片配置状态的电路及方法
CN111198527A (zh) * 2020-01-15 2020-05-26 北京实干兴邦科技有限公司 基于fpga的gpio输出状态的控制装置、控制方法及应用
CN111198527B (zh) * 2020-01-15 2021-03-30 北京实干兴邦科技有限公司 基于fpga的gpio输出状态的控制装置、控制方法及应用
CN112698887A (zh) * 2021-01-14 2021-04-23 成都壹石新科信息技术有限公司 具有隔离功能的fpga在线配置装置及方法
CN112698887B (zh) * 2021-01-14 2023-02-28 成都壹石新科信息技术有限公司 具有隔离功能的fpga在线配置装置及方法
CN113127078A (zh) * 2021-03-30 2021-07-16 山东英信计算机技术有限公司 一种cpld的配置选定方法和装置
CN113360198A (zh) * 2021-08-11 2021-09-07 成都博宇利华科技有限公司 一种只用fpga自身在线更新fpga配置的方法
CN113360198B (zh) * 2021-08-11 2021-11-16 成都博宇利华科技有限公司 一种只用fpga自身在线更新fpga配置的方法
CN115033523A (zh) * 2022-05-19 2022-09-09 上海安路信息科技股份有限公司 Fpga码流更新方法

Similar Documents

Publication Publication Date Title
CN103927279A (zh) Fpga配置方法及系统、处理器
US10942753B2 (en) Data loading system
CN101604244B (zh) 一种实现fpga上电即用和远程升级的装置及方法
CN105446657B (zh) 一种监控raid卡的方法
CN103605542A (zh) Fpga配置文件的在线升级装置
EP3697023A1 (en) Fpga device and cloud system based on fpga device
WO2021098485A1 (zh) PCIe设备的上下电控制方法以及系统
CN107885517B (zh) 嵌入式系统处理器程序加载电路
CN109324991B (zh) 一种pcie设备的热插拔装置、方法、介质及系统
CN102609286A (zh) 一种基于处理器控制的fpga配置程序远程更新系统及其方法
CN104050068A (zh) 在mcu芯片中调试fpga的方法和装置
CN112698887B (zh) 具有隔离功能的fpga在线配置装置及方法
CN105512084A (zh) 一种Zynq平台数据交互装置
CN104050067A (zh) Fpga在mcu芯片中工作的方法和装置
US20180357193A1 (en) Computing device and operation method
CN112231005A (zh) 一种基于uboot管理fpga版本的方法
CN104200846A (zh) 一种嵌入式prom测试系统及实现方法
CN103812739B (zh) Fpga与dsp的通信装置和通信方法
CN102033767A (zh) 一种单板及单板在线升级的方法
CN103729165A (zh) 应用于高速运动控制系统的pci从设备核心控制模块
CN103890713B (zh) 用于管理处理系统内的寄存器信息的装置及方法
CN105446753A (zh) 配置文件的处理方法及装置
EP2750030A1 (en) Method, apparatus and processor for reading BIOS
CN114327660B (zh) 基于fpga的外接内存的初始化方法
CN108572831B (zh) 一种软件在线更新升级系统及方法

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20140716