基于CPLD实现FPGA的SPI Flash配置

时间:2022-08-15 10:40:33

摘要:FPGA在电子通信领域是一种用途广泛的可编程逻辑器件,能否选择合适的程序配置方式是一个重要的问题,关系到FPGA上电后能否快速可靠地进入到工作状态。通过设置FPGA为从串配置模式,利用SPI Flash芯片作为外置存储器,CPLD作为程序加载控制器可以对FPGA进行可靠配置。实践证明,这种配置方式操作方便,可实施性强,具有一定的参考价值。

关键词:FPGA CPLD SPI Flash 配置

中图分类号:TP206.1 文献标识码:A 文章编号:1007-9416(2016)12-0092-02

1 引言

现场可编程门阵列(FPGA)技术在当前许多领域都得到了大规模的广泛应用,包括通信、网络、工业、医疗、汽车等各个领域都发挥了重要作用,满足了对电子产品高性能、高可靠性和高灵活性的要求。

FPGA基于芯片内部的SRAM技术完成其逻辑功能,并具有可重复编程的特点,但是SRAM存在易失性,掉电则数据丢失,因此需要将配置程序存入外部存储芯片中,上电进入对应的管理模式即可进行程序加载。FPGA的程序配置有多种选择方式,既可以选择FPGA公司提供的配置芯片,也可以选择通用存储芯片,还可以选择在线配置模式。而选用通用存储芯片在性价比方面具有一定的优势,通过CPLD进行数据读写控制操作,即可实现对FPGA的程序配置,操作简单灵活。

2 配置原理

按照数据接口进行划分,FPGA的配置模式可以分为并行模式和串行模式。按照是否由FPGA提供时钟源又可以分为主模式和从模式,由FPGA提供配置时钟CCLK信号的模式称为为主模式,反之由外部器件给FPGA提供配置时钟的模式称为从模式。因此配置模式主要包括主并、主串、从并、从串以及JTAG配置方式。具w模式由FPGA模式管脚M2、M1、M0设定。外部SPI Flash芯片是一种串行芯片,CPLD作为主控制器,选择从串配置模式。M(2:0)信号设为“111”。

FPGA选用Xilinx公司的Virtex 6芯片XC6VLX130T。Virtex 6系列芯片采用40nm工艺制造,是一种高性能的现场可编程门阵列。Virtex 6 FPGA系列包括高性能逻辑、高性能DSP以及高速串行收发器三个面向应用领域而优化的FPGA平台,分别提供了不同的功能和特性组合来满足不同客户应用的需求。

CPLD芯片选用的是Xilinx公司的CoolRunner-Ⅱ系列的XC2A64A。具有高性能、低功耗的特点,并且具有封装尺寸小的特点,可以有效节约电路板的布局面积。

SPI FLASH存储芯片选择的是意法半导体的M25P128,存储容量为128M比特。SPI接口最大传输速率为50Mhz。M25P128具有多种操作指令。

CPLD执行对SPI Flash芯片的读操作时,操作指令为0x03。当开始读取数据时,首先将片选信号CS由高电平拉为低电平,SPI Flash芯片在数据输入管脚(D)读取读操作指令,然后读取3字节的存储单元的首地址。随后SPI Flash芯片在数据输出管脚(O)输出该地址的存储数据字节。读取地址自动加1,再跳至下一地址,存储字节可以依次输出到数据输出管脚(O)。该Flash芯片为128Mbit,最大存储单元为16777216字节。当到达最高地址时,地址计数器清零。在此期间CS信号一直保持低电平。一旦CS信号重新拉高,即可中止对数据的读取操作。

SPI Flash芯片内部按页分块进行地址空间的划分,可以存储多个FPGA的配置文件。当需要配置FPGA时,CPLD根据配置文件的具体保存地址进行数据的读取操作,从而可以实现在不同功能要求下的不同FPGA文件的动态可重配置,具有一定的灵活性。

3 功能实现

FPGA配置系统平台主要由3部分组成:FPGA芯片、CPLD芯片和SPI Flash芯片。由CPLD提供配置参考时钟CCLK给FPGA,同时提供SPI工作时钟给SPI Flash芯片。

FPGA配置电路图如图1所示。

接口信号功能说明如下:

MSCK: SPI工作时钟。

CS: 配置芯片选择信号,低电平有效。

MOSI: Flash数据信号串行输入。

MISO: Flash数据信号串行输出。

CCLK: FPGA配置时钟,和SPI工作时钟反相。

PROG: 低电平FPGA异步复位信号,从低电平重新拉高后才可以进行编程。

INIT: FPGA初始化完成信号,当为低电平时,FPGA清除配置寄存器。当FPGA采集配置模式信号M2、M1、M0状态完成后,由低电平变为高电平。

DONE: FPGA配置完成信号。

CPLD按照不同功能主要包括3个模块:信号检测模块,计数器模块,SPI信号产生模块。

信号检测模块完成对PROG、INIT、DONE等信号的检测判断。

计数器模块完成符合SPI时序要求的计数以及复位计数器等计数器的计数。

SPI信号产生模块主要完成符合SPI时序要求的CS、MOSI、MISO等信号的输出。

CPLD上电后可以实现对FPGA的重复配置。CPLD完成对FPGA的配置操作是通过对SPI Flash的读操作和对FPGA的写操作两个过程来实现的。FPGA在没有完成编程之前,INIT和DONE信号为低电平,PROG信号为高电平。

CPLD在两种条件下选择是否对FPGA进行程序配置。首先,当电路板上电时,CPLD即进入FPGA程序加载编程模式。其次,CPLD对来自上位机或电路板CPU的FPGA程序加载使能信号进行判断,使能信号为脉冲信号,脉宽为一个SPI工作时钟周期,高电平有效。判断信号有效时则进入程序加载编程模式。

FPGA选用V6芯片,而V6芯片是多电源供电,在FPGA各路电源按照上电顺序供电正常后,电源管理模块输出给CPLD一个power-complete高电平信号,才可以对FPGA进行程序配置。

在电路板上电后,CPLD检测power-complete信号和加载使能信号,一旦信号有效,CPLD内部的的4位PROG计数器开始计数,产生一个不小于250us的PROG低电平信号,然后PROG信号重新拉高。

CPLD开始检测FPGA的INIT信号,在PROG信号由低电平变为高电平最多5ms 的时间之内,INIT信号应该由低电平变为高电平,CPLD可以开始对Flash芯片的读操作,否则进入无效状态。

Flash芯片的存储容量为128Mbit,即16M字节。数据读写计数器包括3位计数器mcnt(2:0)和24位计数器mcnt1(23:0)。mcnt1(23:0)最大计数值为0xFFFFFF,一旦计满停止计数,除非计数器重新复位。

CPLDa生CS信号和MOSI输出信号,一旦进入Flash读操作模式,CS信号电平即拉低为低电平。MOSI信号首先输出1个字节的操作指令,由于是对FLASH的读操作,因此输出指令为0x03,然后输出3个字节的地址。由于程序是从Flash芯片的第0字节开始写入,因此读取的初始地址设为0X000000。Flash芯片在收到正确的指令后,从第5个字节周期开始,FLASH芯片的MISO管脚开始输出配置文件的数据,并同时送给FPGA芯片和CPLD芯片。FPGA开始执行配置数据的写操作,接收MCS配置文件码流。

同时CPLD芯片开始检测FPGA的DONE信号,一旦检测到DONE信号为高电平,说明配置码流传输正常结束,CS信号需要重新拉高,表示FPGA配置完成。

利用VHDL语言编写代码,完成CPLD的逻辑电路设计。

在仿真软件里得到的仿真波形图如图2所示。

4 功能验证

为了对本文设计的FPGA配置系统进行验证,按照图1设计了系统验证平台。SPI Flash芯片通过配置接口写入FPGA配置程序MCS文件,然后由CPLD进行数据读取,再写入到FPGA XC6VLX130T芯片进行程序配置。经过验证,CPLD可以成功实现FPGA的配置。

5 结语

本文提供了一种通过CPLD配置FPGA的方法,对于其它类似的FPGA和SPI Flash芯片的配置,可以进行同样的电路和程序设计,具有一定的参考价值。

参考文献

[1]候伯亨,刘凯,顾新.VHDL硬件描述语言与数字逻辑电路设计(第四版)[M].西安电子大学出版社,2014.

[2]何宾.EDA原理及VHDL实现[M].清华大学出版社,2011.

[3]李春雨,夏敏磊.基于CPLD的SPI Flash程序在线加载方案[J].自动化与仪器仪表,2015.

[4]陆礼红,尹焕亭.基于CPLD 技术的FPGA 快速加载方案研究[J].电子技术与软件工程,2015.

[5]Xilinx.Virtex-6 FPGA Configuration User Guide UG360 (v3.9) [R] November 18,2015.

上一篇:企业内部控制中风险管理机制的有效运用分析 下一篇:基于翻转课堂和慕课融合下促进教学资源均衡的...