CN201353157Y - 一种对设备内fpga芯片统一配置和管理的系统 - Google Patents
一种对设备内fpga芯片统一配置和管理的系统 Download PDFInfo
- Publication number
- CN201353157Y CN201353157Y CNU2008202357634U CN200820235763U CN201353157Y CN 201353157 Y CN201353157 Y CN 201353157Y CN U2008202357634 U CNU2008202357634 U CN U2008202357634U CN 200820235763 U CN200820235763 U CN 200820235763U CN 201353157 Y CN201353157 Y CN 201353157Y
- Authority
- CN
- China
- Prior art keywords
- configuration
- fpga
- cpld
- equipment
- fpga chip
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Logic Circuits (AREA)
Abstract
本实用新型公开了一种对设备内FPGA芯片统一配置和管理的系统,包括配置和管理逻辑组件和至少一个现场可编程逻辑门阵列FPGA芯片,配置和管理逻辑组件与现场可编程逻辑门阵列FPGA相连,配置和管理逻辑组件包括微处理器、非易失性存储器、复杂可编程逻辑器件CPLD,微处理器、非易失性存储器和复杂可编程逻辑器件CPLD相互连接,复杂可编程逻辑器件CPLD与现场可编程逻辑门阵列FPGA连接,配置和管理逻辑组件用于按照串行方式或并行方式配置指定的一片或多片所述现场可编程逻辑门阵列FPGA。本实用新型对设备内FPGA芯片统一配置和管理的系统实现了对一台设备内FPGA芯片的统一配置和管理,大大提高了对设备内FPGA芯片的配置效率,从而提高了设备使用和维护时的效率。
Description
技术领域
本实用新型涉及嵌入式系统技术领域,具体涉及一种对设备内FPGA芯片统一配置和管理的系统。
背景技术
现代的超声多普勒诊断仪越来越多的使用FPGA(FieldProgrammable Gate Array,现场可编程逻辑门阵列),通常要使用超过一片的FPGA芯片。但是基于SRAM(Static RAM,静态随机存储器)工艺的FPGA芯片在每次上电后需要进行配置,通常情况下FPGA芯片的配置文件由一片外部专用的EPROM来加载。这种传统配置方式是在FPGA芯片的功能相对稳定的情况下采用的。在系统设计要求配置速度高、容量大、维修以及远程升级时,这种方法就显得很不实际也不方便。
在FPGA芯片正常工作时,配置数据存储在SRAM单元中,这个SRAM单元也被称为配置存储(Configuration RAM)。由于SRAM是易失性的存储器,因此,FPGA芯片在上电之后,外部电路需要将配置数据重新载入到片内的配置RAM中。在芯片配置完成后,内部的寄存器以及I/O管脚必须进行初始化。等初始化完成以后,芯片才会按照用户设计的功能正常工作。
目前有两种方案可以实现,一种是使用专用的PROM,这些专用的PROM内部集成控制电路,能够提供FPGA芯片的配置时序,只要将PROM和FPGA芯片的专用引脚相连,上电时就能够自动加载PROM中的配置数据到FPGA芯片的SRAM中;另一种是在含有微处理器的系统中采用其他非易失性存储器如E2PROM、Flash存储配置数据,微处理器模拟FPGA芯片的配置时序将ROM中的数据置入FPGA芯片。与第一种方案相比,该方案节省成本、缩小系统体积。适用于对成本和体积苛刻要求的系统。
但是对于多普勒超声诊断设备,一台设备上有多个的FPGA芯片,并分布于不同的单板上。按照上述的方案,必须每个FPGA芯片都配套一片PROM,会增加成本,并且维修升级都不方便,必须将PROM从单板上取下,在专用的设备上将FPGA芯片的配置数据写入PROM,再焊接到单板上。第二种方案要求单板上必须由含有微处理器,如果没有微处理器,就必需在单板上增加一个微处理器,增加成本。并且,微处理器的运行速度一般比较慢,配置一片FPGA芯片需要比较长的时间,FPGA芯片的配置数据越大,需要的时间越长。由于微处理器无法进行并行操作,如果单板上的微处理器需要配置多个FPGA芯片,就必须逐一配置FPGA芯片,这样需要等待的时间就更长。
并且对于多普勒超声诊断设备,也必须对所有的FPGA芯片的配置数据进行管理,目前的方案都是针对单片FPGA芯片的配置数据或者单板上所有FPGA芯片的配置数据的管理,无法对一台设备内所有的FPGA芯片的配置数据进行统一的、集成的管理。
因此对于多普勒超声诊断设备,如何使用一种低成本、简单有效的方案对整机的FPGA芯片的配置数据进行有效的配置和管理:配置FPGA芯片、存取数据、升级数据,就摆在业内人士的面前。
实用新型内容
本实用新型要解决的技术问题是提供一种对设备内FPGA芯片统一配置和管理的系统及方法,克服现有技术只能对单一的FPGA芯片进行配置,配置效率低下的缺陷。
本实用新型为解决上述技术问题所采用的技术方案为:
一种对设备内FPGA芯片统一配置和管理的系统,包括配置和管理逻辑组件和至少一个现场可编程逻辑门阵列FPGA,所述配置和管理逻辑组件与所述现场可编程逻辑门阵列FPGA相连,所述配置和管理逻辑组件包括微处理器、非易失性存储器、复杂可编程逻辑器件CPLD,所述微处理器、所述非易失性存储器和所述复杂可编程逻辑器件CPLD相互连接,所述复杂可编程逻辑器件CPLD与所述现场可编程逻辑门阵列FPGA连接,所述配置和管理逻辑组件用于按照串行方式或并行方式配置指定的一片或多片所述现场可编程逻辑门阵列FPGA。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述配置和管理逻辑组件对所述现场可编程逻辑门阵列FPGA的配置数据进行读取、更新或升级。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述微处理器设置通讯接口,通过所述通讯接口与上位机进行通讯。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述微处理器对所述非易失性存储器的内容进行读写或修改。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述微处理器向所述复杂可编程逻辑器件CPLD发送命令并读取所述复杂可编程逻辑器件CPLD的状态值。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述非易失性存储器存储所述现场可编程逻辑门阵列FGPA的配置数据和相关信息。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述复杂可编程逻辑器件CPLD根据所述非易失性存储器存储的有关所述现场可编程逻辑门阵列FPGA的配置信息,读取所述非易失性存储器的数据并配置所述现场可编程逻辑门阵列FPGA。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述复杂可编程逻辑器件CPLD向所述微处理器返回所述现场可编程逻辑门阵列FPGA的配置结果。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述非易失性存储器设为Flash存储器或EEPROM存储器。
所述的对设备内FPGA芯片统一配置和管理的系统,其中所述通讯接口设为USB接口。
本实用新型的有益效果:本实用新型对设备内FPGA芯片统一配置和管理的系统实现了对一台设备内FPGA芯片的统一配置和管理,大大提高了对设备内FPGA芯片的配置效率,从而提高了设备使用和维护时的效率。
附图说明
本实用新型包括如下附图:
图1为本实用新型为对设备内FPGA芯片统一配置和管理的系统示意图;
图2为本实用新型实施例Flash区域划分示意图;
图3为本实用新型实施例CPLD内部组成示意图;
图4为本实用新型实施例SPI接口示意图;
图5为本实用新型实施例CPLD命令分析模块状态机;
图6为本实用新型实施例CPLD三态缓冲器示意图;
图7为本实用新型实施例CPLD Flash读取模块示意图;
图8为本实用新型实施例CPLD内部总线仲裁模块状态机;
图9为本实用新型实施例CPLD FPGA配置模块示意图;
图10为本实用新型实施例CPLD FPGA并行配置模块状态机;
图11为本实用新型实施例CPLD FPGA串行配置模块状态机;
图12为本实用新型实施例CPLD FPGA校验模块状态机;
图13为本实用新型实施例配置和管理逻辑组件示意图;
图14为本实用新型实施例微处理器操作流程图。
具体实施方式
下面根据附图和实施例对本实用新型作进一步详细说明:
如图1所示,本实用新型对设备内FPGA芯片统一配置和管理的系统,包括配置和管理逻辑组件和至少一个现场可编程逻辑门阵列FPGA,配置和管理逻辑组件与现场可编程逻辑门阵列FPGA相连,配置和管理逻辑组件包括微处理器、非易失性存储器、复杂可编程逻辑器件CPLD,微处理器、非易失性存储器和复杂可编程逻辑器件CPLD相互连接,复杂可编程逻辑器件CPLD与现场可编程逻辑门阵列FPGA连接,配置和管理逻辑组件用于按照串行方式或并行方式配置指定的一片或多片现场可编程逻辑门阵列FPGA。配置和管理逻辑组件对现场可编程逻辑门阵列FPGA的配置数据进行读取、更新或升级。微处理器设置通讯接口,通过通讯接口与上位机进行通讯。微处理器对非易失性存储器的内容进行读写或修改。微处理器向复杂可编程逻辑器件CPLD发送命令并读取复杂可编程逻辑器件CPLD的状态值。非易失性存储器存储现场可编程逻辑门阵列FGPA的配置数据和相关信息。复杂可编程逻辑器件CPLD根据非易失性存储器存储的有关现场可编程逻辑门阵列FPGA的配置信息,读取非易失性存储器的数据并配置现场可编程逻辑门阵列FPGA。复杂可编程逻辑器件CPLD向微处理器返回现场可编程逻辑门阵列FPGA的配置结果。非易失性存储器设为Flash存储器或EEPROM存储器。通讯接口设为USB接口。
具体实施方式:
Flash
如图2所示,Flash是用于存储FPGA芯片的配置信息以及FPGA芯片的配置数据。因此我们将Flash的存储空间分成两个区域,其中一个区域用于存放FPGA芯片的配置信息,称为信息区;另一个区域用于存放FPGA芯片的配置数据,称为数据区。
信息区的开始部分存放的是配置标志位,用于指示CPLD是否需要等待微处理器的命令才开始进行FPGA芯片的配置。如果配置标志位=0xAA,则CPLD无需等待微处理器的配置命令,只要获得Flash的总线控制权,就可以开始FPGA芯片的配置;如果配置标志位=0x55,CPLD必须等待微处理器的配置命令,才可以开始FPGA芯片的配置;如果配置标志位为上述两个值之外的其他值,则CPLD不进行任何的FPGA芯片配置活动,并向微处理器返回一个错误状态。如表1所示。这样,如果我们需要FPGA芯片尽快地被配置完成,我们就可以通过微处理器将配置标志位设置为0xAA。而如果我们有其他的需要而不希望CPLD自动配置FPGA芯片,希望使用命令一个一个的配置FPGA芯片,则可以通过微处理器将配置标志位设置为0x55。
表1
配置标志位 | 说明 | 备注 |
0x55 | FPGA芯片的配置受微处理器命令的控制 | 微处理器发送配置命令,CPLD取得Flash的控制权后才开始配置FPGA芯片 |
0xaa | CPLD自动配置 | CPLD取得Flash的控制权即 |
FPGA芯片 | 可配置FPGA芯片 | |
其他 | 错误 | CPLD向微处理器返回错误状态 |
接下来的信息区存放的是FPGA数目,表示系统中连接到配置模块的FPGA的数量。0表示系统中没有任何的FPGA连接到配置模块,1表示系统中有1片FPGA连接到配置模块,以此类推。本配置模块能连接的FPGA数量受Flash的容量、CPLD的引脚数量的限制。例如,在本配置模块的一个应用实例上,连接的FPGA是8片。
接下来的是存放FPGA配置数据的相关信息的FPGA配置数据信息,通过这个信息,CPLD可以得到:连接在CPLD某一个配置通道上的FPGA代号、FPGA的配置顺序、以及FPGA的配置数据的存放区域、校验值。
其中,FPGA配置次序是用于指示FPGA的配置顺序。如表2所示,根据不同的配置等级,即可CPLD即可得到FPGA的配置顺序。如果有多个FPGA具有相同的配置等级,则表示这些FPGA需要并行配置。
表2
FPGA配置次序 | 说明 | 备注 |
0x00 | 忽略本CPLD配置通道上连接的FPGA,即不配置该FPGA | |
0x01 | 本CPLD配置通道上连接的FPGA,配置等级为1 | 最高等级 |
...... | ...... | 以此类推. |
0xff | 本CPLD配置通道上连接的FPGA,配置等级为255 | 最低等级 |
FPGA代码表示的是系统中使用的FPGA的代号。主要是基于这样的考虑,在多普勒超声诊断设备中,有可能需要多片FPGA使用同一个的配置数据,使用FPGA的代号可以进行简单的校验:不同型号的FPGA不能使用同一个配置数据,相同型号的FPGA才可以使用同一个配置数据。如表3所示,表示的是在本配置模块的一个应用实例上,连接的8片FPGA的代号。其中XC3S1400A有2片、XC3S1600E有4片。这些相同的FPGA就可以使用同一个配置数据。
表3
FPGA代码 | FPGA | 说明 |
0x01 | Virtex-5 | |
0x02 | XC3S1400A | 2片 |
0x03 | XC3S1600E | 4片 |
0x04 | XC3SD1800A | |
其他的 | Reserved | 保留 |
FPGA配置数据起始地址和FPGA配置数据长度存放的是FPGA配置数据的起始地址和大小。通过这两个信息段,CPLD可以从指定区域读出指定长度的配置数据,从而对FPGA进行配置。
FPGA配置数据校验值是保存FPGA配置数据的校验值,这个主要是为了防止存取过程中出现错误,导致配置完成后的FPGA的工作状态不是我们所预期的。CPLD在从Flash的数据区读取FPGA配置数据时,同时按照一定的校验算法进行计算,直到FPGA配置数据起始地址和FPGA配置数据长度指定的区域的FPGA配置数据被读取完成,此时校验算法也完成,将得到的校验结果与FPGA配置数据校验值比较,表示FPGA配置数据存取过程中没有失误。如果两个值不相等,表示有失误,CPLD必须向微处理器返回一个错误状态。根据开发难度和CPLD的容量,校验算法可以使用任何成熟的校验算法,本配置模块的一个应用实例上使用的是CRC-16(Cyclic Redundancy Check,循环冗余校验)校验算法。
Flash的数据区就用于存放FPGA配置数据,一般的根据CPLD的配置通道顺序存放。只要将FPGA配置数据的起始地址和大小正确的反应到FPGA配置数据起始地址和FPGA配置数据长度即可。
CPLD
如图3所示,CPLD包括串行接口、命令分析模块、三态缓冲器、Flash读取模块、内部中线仲裁模块、FPGA配置模块等。Flash采用8M字节,16位宽度的芯片;串行接口采用SPI(Serial Peripherals Interface,串行外设接口);对上述8片FPGA进行配置,其中7片采用Slave Serial配置方式,另一片采用SelectMAP配置方式。
串行接口模块用于CPLD与微处理器之间的通讯,两者之间没有很多的数据需要传送,因此采用引线较少的串行接口是比较合适的。本实施例中采用SPI接口,其中CPLD属于从器件,微处理器属于主器件,所有的操作均由主器件引起。SPI接口只需4根信号线:LE#为片选信号,当其有效电平为低电平,表示从器件被选中;CLK是由主器件发送给从器件的时钟信号,用于同步主从器件的工作时序;MOSI是数据传输线,由主器件输出,从器件输入;MISO也是数据传输线,由从器件输出,主器件输入。
SPI接口如图4所示。当LE#有效时,三个三态门打开,CLK、MOSI、MISO也可以输入。在CLK的推动下,MOSI的数据进入接收移位寄存器,发送移位寄存器的数据出现在MISO。当一个字节的数据发送接收完成之后,通过接收状态和发送状态产生RxIFG和TxIFG到命令分析模块,由这个模块读取接收缓冲寄存器的数据和写数据到发送缓冲寄存器。
如图5所示,命令分析模块分析微处理器发送过来的命令和数据,并执行相应的动作,以及从Flash中读取信息区的数据并执行相应动作。这个模块比较复杂,采用状态机实现,其中虚线框部分,适用于CPLD自动从Flash中读取数据,并根据Flash信息区的信息自动配置FPGA。
当本配置装置上电开始工作时,需要检测EN#信号是否有效,EN#信号是微处理器发送给CPLD的,是用于指示CPLD是否可以使用Flash的总线。在命令分析模块里只需要检测一次EN#是否有效即可。如果EN#无效,则等待。如果EN#有效,则通过Flash读取模块从Flash读取配置标志位,并判断。如果配置标志位=0x55,表示需要等待微处理器的命令才进行FPGA的配置,此时状态机进入空闲状态,等待微处理器的命令。如果配置标志位=0xaa,表示CPLD根据Flash的信息自动进行FPGA的配置,则再次从Flash中读取FPGA数目。如果FPGA数目=0表示没有FPGA需要进行配置,此时状态机进入空闲状态,等待微处理器的命令。如果FPGA数目>0,表示有FPGA需要配置,则状态机将读取的次数设置为FPGA数目。接着从Flash读取FPGA配置数据信息并写入对应FPGA配置模块;如果没有达到预设的次数,则继续读取下一个FPGA配置数据信息;如果达到预设的次数,则启动配置,之后进入空闲状态,等待微处理器的命令。具体的配置事务将交给FPGA配置模块完成。
当状态机处于空闲状态,等待微处理器的命令时,如果串行接口的RxIFG有效,则从串行接口的接收缓冲寄存器读取微处理器的命令,并进入命令分析[表4是一个实例的命令列表]。如果分析结果是该命令无效,则又返回空闲状态;如果命令是配置,则进入配置FPGA状态,从命令中获得配置的通道,并设置读取次数为1;接着从Flash读取FPGA配置数据信息并写入对应FPGA配置模块,然后启动配置,最后进入空闲状态。如果命令是获取,则进入读取状态,从命令中读取读取的目标,然后等待串行接口的TxIFG有效,如果有效,则将数据写入串行接口的发送缓冲寄存器,每发送一个字节都必须等待TxIFG有效,直到数据发送完成,最后进入空闲状态。
表4
如图6所示,三态缓冲器用于CPLD与外部的Flash总线的相互隔离。因为微处理器、CPLD都连接到Flash,当微处理器、CPLD中的一个需要访问Flash,另一个就必须把自己与Flash总线隔离,否则引起访问错误。通过多个的三态门将CPLD内部总线和Flash总线隔离开,三态门的禁止和使能由微处理器的EN#控制,如果EN#有效,则三态门使能,CPLD内部总线和Flash Bus直接相连,可以正常从Flash中读取数据。如果EN#无效,则三态门将CPLD内部总线和Flash总线隔开,禁止CPLD访问Flash。
如图7所示,Flash读取模块从Flash中读取数据。因为不同的Flash有不同的读取时序特性,需要通过本模块来实现对不同的Flash的兼容性。EN#(在CPLD内部成为CEN#)从无效变成有效,将使RST信号发生器产生一个RST#信号,使Flash恢复到读状态。从内部总线仲裁模块发过来两组信号读信号FRD#和地址FA0:22(FRD#和FA0:22是由命令分析模块和FPGA配置模块等在需要读取flash数据时产生的,并通过内部总线仲裁模块发送到Flash读取模块)。FRD#使CE信号发生器、OE信号发生器产生CE#、OE#信号,同时CE#使地址锁存器输出CA0:22信号到Flash,使Flash输出指定地址的数据;而CE#、OE#信号将使数据锁存器锁定这些数据,并写入Flash读取数据缓冲区,并发送OK#信号到内部总线仲裁模块,表明完成一次Flash读操作,可以读取结果。
如图8所示,内部总线仲裁模块用于总线仲裁,因为有多个模块需要通过Flash读取模块来访为Flash,为了防止多个模块同时访问Flash而互相干扰,需要一个根据模块的优先级作一个排列,使访问依次完成。有两个并行的处理进程(并行处理是CPLD/FPGA等的特点),一个是用于将进程按照先后顺序以及优先级将其他模块发送的读请求排列,另一个进程是用于将队列里的读请求取出,发送到Flash读取模块,并将数据读回,发送给请求者。
从CPLD上电后,本模块进入空闲状态,如果FRD#信号有效,则判断是否有多个读请求同时产生,如果不是,直接将本读请求放入队列的末尾,接着返回空闲状态。如果是多个读请求同时产生,则根据读请求的优先级(表5),从优先级高到低排列,依次放入队列中,接着返回空闲状态。
在空闲状态时,如果队列中有读请求,则取出最前面的一个读请求,并发送到Flash读取模块,读取flash中的数据,等到OK#有效时,就可以从Flash读取数据缓冲区读取数据发送给读请求者。接着进入空闲状态。
如表5所示是实施例的优先级说明。将命令分析模块设置为最高优先级,因为这是读取命令的。将Virtex-5设置为次级优先级,因为这个FPGA很重要,需要尽快被配置完成。而其余的FPGA也都根据其重要性,设置了相应的优先级。
表5
“读请求”发送者 | 优先级 | 说明 |
命令分析模块 | 1(最高) | 1是最高,以后依次降低 |
FPGA配置模块8 | 2 | Virtex-5 |
FPGA配置模块1 | 3 | XC3SD1800A |
FPGA配置模块2 | 4 | XC3S1400A |
FPGA配置模块3 | 5 | XC3S1400A |
FPGA配置模块4 | 6 | XC3S1600E |
FPGA配置模块5 | 7 | XC3S1600E |
FPGA配置模块6 | 8 | XC3S1600E |
FPGA配置模块7 | 9 | XC3S1600E |
如图9所示,FPGA配置模块将Flash中的数据转为FPGA可识别的格式并产生合适的配置信号,以及计算配置数据的校验值。FPGA配置模块由配置模块和校验模块两个模块,以及起始地址寄存器、数据长度寄存器、校验值寄存器、状态寄存器四个寄存器组成。
其中,起始地址寄存器存放的是本配置通道上的FPGA的配置数据在Flash中的起始地址;数据长度寄存器存放的是本配置通道上的FPGA的配置数据有多少个字节;校验值寄存器存放的是本配置通道上的FPGA的配置数据的校验值;状态寄存器用于存放本通道配置的结果。起始地址寄存器、数据长度寄存器、校验值寄存器的内容是由命令分析模块写入的,状态寄存器是在配置过程中,由配置模块和校验模块写入的,其各位代表的意义如表6所示。如果读取的状态数据的Bit7=1,表示正在配置FPGA,bit0-bit3的状态不可信,因为还没配置完成;Bit6-Bit3没有使用,读回总是0;Bit2-Bit0是表示配置过程的状态,只有四位同时为1才表示配置是成功的,如果有不是1的状态存在,都表示不成功。
表6
Bit0 | Bit1 | Bit2 | Bit3 | Bit4 | Bit5 | Bit6 | Bit7 | |
0 | Init_B状态无效 | 校验结果不匹配 | DONE信号无效 | 保留,未使用,总是0 | 保留,未使用,总是0 | 保留,未使用,总是0 | 保留,未使用,总是0 | 空闲 |
1 | Init_B状态有效 | 校验结果正常 | DONE信号有效 | 正在配置FPGA |
配置模块是实际执行FPGA配置功能的模块。在本实例上,由于使用了两种配置方式-串行配置和并行配置,就需要两种不同的配置模块。如图10所示的是本实例的并行配置模块,如图11所示的是本实例的串行配置模块。采用并行配置,一次可以将16位的配置数据写入FPGA,配置速度快,对于大容量的FPGA来说,可以显著的缩短时间。而串行配置方式每次只能写一位数据,不适合大容量的FPGA,但是这种方法的引线显然是很少的。
并行配置模块的一个实例如图10所示,CPLD上电后,进入空闲状态,当命令分析模块发过来一个启动配置的命令后,则马上将PROG_B、RDWR_B拉低,使FPGA进入待配置状态,此时需要检测Init_B引脚的状态,以确定FPGA是否进入了待配置状态,并根据Init_B的状态设置状态寄存器。如果FPGA已经进入待配置状态,则根据起始地址寄存器、数据长度寄存器的值启动一个Flash读请求到内部总线仲裁模块,并等待配置数据返回。数据返回之后,将数据写入配置端口CfgD[0:15],并使CSI_B=0,同时令CRC_S=0,并将数据复制给校验模块,使数据校验模块继续进行。之后,根据Busy的状态,等待FPGA读取配置端口CfgD[0:15]的数据。之后就可以令CSI_B=1,表明完成一次的FPGA配置数据的写入。之后,根据数据长度寄存器的值判断是否已经将所有的配置数据写如FPGA,如果没有,再发起一个Flash读请求,进行一次的FPGA配置数据的写入。这样循环,直到所有配置数据都写入FPGA,就检测DONE的状态,根据DONE的状态,设置状态寄存器。最后返回空闲状态。
串行配置模块的一个实例如图11所示,与并行配置模块差不多,差别是串行配置模块必须将并行数据串行化,一位一位传给FPGA,这个工作由移位寄存器完成。工作过程如下:CPLD上电后,进入空闲状态,当命令分析模块发过来一个启动配置的命令后,则马上将PROG n拉低(n取值为1到7),使FPGA进入待配置状态,此时需要检测Init n引脚的状态,以确定FPGA是否进入了待配置状态,并根据Init n的状态设置状态寄存器。如果FPGA已经进入待配置状态,则根据起始地址寄存器、数据长度寄存器的值启动一个Flash读请求到内部总线仲裁模块,并等待配置数据返回。数据返回之后,将数据写入移位寄存器,同时令CRC_S=0,并将数据复制给校验模块,使数据校验模块继续进行。之后,从移位寄存器移一位数据到CfgData n,并产生一个CfgCLK n信号给FPGA,由于一次只向FPGA写一位数据,因此FPGA能够及时响应,之后,判断移位寄存器是否为空,如果不空,重复移位和CfgCLK n,直到移位寄存器为空。之后,根据数据长度寄存器的值判断是否已经将所有的配置数据写如FPGA,如果没有,再发起一个Flash读请求。这样循环,直到所有配置数据都写入FPGA,就检测DONE的状态,根据DONE的状态,设置状态寄存器。最后返回空闲状态。
如图12所示,校验模块是用于校验Flash中的FPGA配置数据的,以防止FPGA配置数据在存储、读取过程中发生意外的修改,导致FPGA不能正常工作。CPLD上电后,进入空闲状态,当Init_B(或Init n)等于1,则开始计算校验值的进程,进入等待CRC_S=0的状态,当CRC_S=0时,接受配置模块发过来的数据,使用该数据计算校验值,并在计算完成之后令CRC_S=1。之后判断是否所有数据都计算完成,如果没有,则进入等待CRC_S=0的状态。如果已经计算完成,将计算结果与校验值寄存器的值比较,根据结果设置状态寄存器。这样,完成一次配置数据的校验。
微处理器
微处理器的连接如图13所示,微处理器通过USB(Universal SerialBus,通用串行总线)接口与上位机器实现通讯,实现与上位机实现数据、命令、状态的通讯,这里的上位机一般使用带USB接口的PC。另外,微处理器与CPLD之间的连接线主要有两组,一组用于实现微处理器与ARM的通讯,如前所述的SPI接口的4根信号线和Busy、EN#信号线,以实现向CPLD发送命令并从CPLD得到一些状态值;另一组是配置连接线,用于微处理器配置CPLD的,包括CfgCLKc、CfgDatac、Progc、Initc、Donec等五根信号线,用以实现更新CPLD的配置数据,实现CPLD的升级。最后,微处理器通过三态缓冲器与Flash连接,以实现对Flash的内容进行写、读、修改,又可以与Flash的总线断开,使得CPLD可以无障碍的访问Flash。
因此,微处理器的固件需要完成以下事务:
1、与上位机进行的USB通讯;
2、对Flash的操作:读、写、校验;
3、与CPLD的SPI命令处理模块;
4、配置CPLD的模块
其主程序流程图如图14所示。
本领域技术人员不脱离本实用新型的实质和精神,可以有多种变形方案实现本实用新型,以上所述仅为本实用新型较佳可行的实施例而已,并非因此局限本实用新型的权利范围,凡运用本实用新型说明书及附图内容所作的等效结构变化,均包含于本实用新型的权利范围之内。
Claims (10)
1、一种对设备内FPGA芯片统一配置和管理的系统,其特征在于:包括配置和管理逻辑组件和至少一个现场可编程逻辑门阵列FPGA,所述配置和管理逻辑组件与所述现场可编程逻辑门阵列FPGA相连,所述配置和管理逻辑组件包括微处理器、非易失性存储器、复杂可编程逻辑器件CPLD,所述微处理器、所述非易失性存储器和所述复杂可编程逻辑器件CPLD相互连接,所述复杂可编程逻辑器件CPLD与所述现场可编程逻辑门阵列FPGA连接,所述配置和管理逻辑组件用于按照串行方式或并行方式配置指定的一片或多片所述现场可编程逻辑门阵列FPGA。
2、根据权利要求1所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述配置和管理逻辑组件对所述现场可编程逻辑门阵列FPGA的配置数据进行读取、更新或升级。
3、根据权利要求2所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述微处理器设置通讯接口,通过所述通讯接口与上位机进行通讯。
4、根据权利要求3所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述微处理器对所述非易失性存储器的内容进行读写或修改。
5、根据权利要求4所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述微处理器向所述复杂可编程逻辑器件CPLD发送命令并读取所述复杂可编程逻辑器件CPLD的状态值。
6、根据权利要求5所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述非易失性存储器存储所述现场可编程逻辑门阵列FGPA的配置数据和相关信息。
7、根据权利要求6所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述复杂可编程逻辑器件CPLD根据所述非易失性存储器存储的有关所述现场可编程逻辑门阵列FPGA的配置信息,读取所述非易失性存储器的数据并配置所述现场可编程逻辑门阵列FPGA。
8、根据权利要求7所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述复杂可编程逻辑器件CPLD向所述微处理器返回所述现场可编程逻辑门阵列FPGA的配置结果。
9、根据权利要求8所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述非易失性存储器设为Flash存储器或EEPROM存储器。
10、根据权利要求9所述的对设备内FPGA芯片统一配置和管理的系统,其特征在于:所述通讯接口设为USB接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNU2008202357634U CN201353157Y (zh) | 2008-12-30 | 2008-12-30 | 一种对设备内fpga芯片统一配置和管理的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNU2008202357634U CN201353157Y (zh) | 2008-12-30 | 2008-12-30 | 一种对设备内fpga芯片统一配置和管理的系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN201353157Y true CN201353157Y (zh) | 2009-12-02 |
Family
ID=41409498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNU2008202357634U Expired - Fee Related CN201353157Y (zh) | 2008-12-30 | 2008-12-30 | 一种对设备内fpga芯片统一配置和管理的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN201353157Y (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087606A (zh) * | 2011-02-16 | 2011-06-08 | 电子科技大学 | 一种fpga配置文件更新装置 |
CN102289381A (zh) * | 2011-08-24 | 2011-12-21 | 中兴通讯股份有限公司 | 一种可编程逻辑器件的升级方法及系统 |
CN102789190A (zh) * | 2011-05-20 | 2012-11-21 | 中国科学院微电子研究所 | 适用于不同类型fpga电路编程的列地址分配器电路 |
CN103531228A (zh) * | 2013-09-30 | 2014-01-22 | 中国科学院微电子研究所 | 一种用于可配置位宽ram的读取路径选择及控制电路 |
CN103530234A (zh) * | 2013-09-30 | 2014-01-22 | 中国科学院微电子研究所 | 一种用于可配置位宽ram的写入路径选择及控制电路 |
US9411528B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Storage management systems and methods |
US9411613B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Systems and methods for managing execution of specialized processors |
US9542244B2 (en) | 2015-04-22 | 2017-01-10 | Ryft Systems, Inc. | Systems and methods for performing primitive tasks using specialized processors |
CN106682296A (zh) * | 2016-12-19 | 2017-05-17 | 西安微电子技术研究所 | 一种面向fpga的多路通用化配置加载控制系统及方法 |
CN108472058A (zh) * | 2015-11-25 | 2018-08-31 | 伊西康有限责任公司 | 用于外科器械的受限使用特征 |
-
2008
- 2008-12-30 CN CNU2008202357634U patent/CN201353157Y/zh not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087606B (zh) * | 2011-02-16 | 2014-02-05 | 电子科技大学 | 一种fpga配置文件更新装置 |
CN102087606A (zh) * | 2011-02-16 | 2011-06-08 | 电子科技大学 | 一种fpga配置文件更新装置 |
CN102789190A (zh) * | 2011-05-20 | 2012-11-21 | 中国科学院微电子研究所 | 适用于不同类型fpga电路编程的列地址分配器电路 |
CN102789190B (zh) * | 2011-05-20 | 2015-03-25 | 中国科学院微电子研究所 | 适用于不同类型fpga电路编程的列地址分配器电路 |
CN102289381A (zh) * | 2011-08-24 | 2011-12-21 | 中兴通讯股份有限公司 | 一种可编程逻辑器件的升级方法及系统 |
CN103531228A (zh) * | 2013-09-30 | 2014-01-22 | 中国科学院微电子研究所 | 一种用于可配置位宽ram的读取路径选择及控制电路 |
CN103530234A (zh) * | 2013-09-30 | 2014-01-22 | 中国科学院微电子研究所 | 一种用于可配置位宽ram的写入路径选择及控制电路 |
CN103530234B (zh) * | 2013-09-30 | 2016-07-06 | 中国科学院微电子研究所 | 一种用于可配置位宽ram的写入路径选择及控制电路 |
CN103531228B (zh) * | 2013-09-30 | 2016-08-31 | 中国科学院微电子研究所 | 一种用于可配置位宽ram的读取路径选择及控制电路 |
US9411528B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Storage management systems and methods |
US9411613B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Systems and methods for managing execution of specialized processors |
US9542244B2 (en) | 2015-04-22 | 2017-01-10 | Ryft Systems, Inc. | Systems and methods for performing primitive tasks using specialized processors |
CN108472058A (zh) * | 2015-11-25 | 2018-08-31 | 伊西康有限责任公司 | 用于外科器械的受限使用特征 |
CN108472058B (zh) * | 2015-11-25 | 2021-04-23 | 伊西康有限责任公司 | 用于外科器械的受限使用特征 |
CN106682296A (zh) * | 2016-12-19 | 2017-05-17 | 西安微电子技术研究所 | 一种面向fpga的多路通用化配置加载控制系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101485576A (zh) | 一种对设备内fpga芯片统一配置和管理的系统 | |
CN201353157Y (zh) | 一种对设备内fpga芯片统一配置和管理的系统 | |
CN102722390B (zh) | 多处理器共用flash的装置及固件程序加载与升级方法 | |
CN103325411B (zh) | 一种用于fpga的抗单粒子翻转加固系统及其方法 | |
US20190235858A1 (en) | Apparatus and method for configuring or updating programmable logic device | |
CN108121672A (zh) | 一种基于NandFlash存储器多通道的存储阵列控制方法与装置 | |
US20080028186A1 (en) | FPGA Co-Processor For Accelerated Computation | |
CN104425041B (zh) | 能够对多个存储器进行独立控制的测试装置 | |
CN100476650C (zh) | 单片机存储系统 | |
EP1487107A2 (en) | Apparatus and methods for communicating with programmable logic devices | |
CN114661655B (zh) | 一种星载测控数传一体机fpga程序在轨重构系统及方法 | |
CN104572384B (zh) | 一种芯片多fpga验证方法 | |
CN101414291A (zh) | 一种主从分布式系统和应用于该系统的并行通信方法 | |
CN101814058A (zh) | 通用存储装置 | |
CN108139916A (zh) | 可编程逻辑设备的多阶段引导映像加载和配置 | |
CN103185859B (zh) | 一种片内混合测试装置和方法 | |
CN105988738A (zh) | 服务混合负荷中有效使用数据锁存器的存储器裸芯和方法 | |
CN102253844B (zh) | 一种启动处理器的方法和设备 | |
CN101983373B (zh) | 可重构装置 | |
CN208907999U (zh) | 一种新型Raid扣卡 | |
CN102053937A (zh) | 在lpc总线中调用spi接口的闪存的方法及系统 | |
CN106528217A (zh) | 一种现场可编程门阵列程序加载系统和方法 | |
CN101339812B (zh) | 存储装置测试设备 | |
US11895191B2 (en) | Mobile IoT edge device using 3D-die stacking re-configurable processor module with 5G processor-independent modem | |
CN107122274A (zh) | 基于fpga重构技术的cpu测试系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091202 Termination date: 20141230 |
|
EXPY | Termination of patent right or utility model |