基于FPGA的自动加载系统设计实现
摘要:针对FPGA可以在每次上电时自动获取配置文件的需求,提出了一种由USB芯片和FLASH芯片、CPLD组成的可对FPGA上电后自动加载的系统。该系统可以通过USB芯片和CPLD将PC中的FPGA配置文件写入FLASH芯片,并且在CPLD的控制下将配置文件以PS模式配置给FPGA。测试表明,该系统可以在上电时自动对FPGA进行加载,弥补了FPGA掉电后数据消失的不足。
0 引言
FPGA(Field Programmable Gate Array)即现场可编程门阵列,随着微电子技术的发展,FPGA的性能变的越来越优越,应用空间也变得越来越广。FPGA具有支持重复编程的特点,但是掉电后不能保存配置信息。因此在上电后,都需要用户将设计的FPGA配置文件从外部存储器中下载到FPGA中才能工作。针对这种情况,本文提出了一种以USB芯片,FLASH芯片和CPLD组成的FPGA自动加载系统。该系统通过USB芯片将PC中的配置文件传送给CPLD,CPLD再将其写入FLASH芯片,FLASH芯片可以长久地存储配置文件。这样FPGA每次上电后CPLD将FLASH中的配置文件读出来配置FPGA。从而使FPGA在每次上电后都可以自动获取配置文件,使其可以作为一个独立“芯片”工作,具有很强的实用性。在PS模式配置方式上也有改进,在传统PS模式下配置多个FPGA时通常使用前一级的FPGA的nCEO连接后一级FPGA的nCE来使能后一级FPGA,这样在第一个FPGA配置好后,nCEO会使能下一级的FPGA开始配置。这样只能先配置第一个FPGA,而且不能自由控制来配置下一级的FPGA。采用CPLD同时连接两个nCE,在前一级FPGA配置好后,获取完成信号来配置第二个FPGA,这样不受FPGA前后级联的顺序影响,可以自由选择配置FPGA。
1 系统框架及芯片简介
系统由CPLD,USB芯片和FLASH芯片组成,外加PC部分配合系统工作。系统框架见图1。系统中USB芯片连接PC与CPLD,PC通过USB向CPLD发送命令来操作FLASH。首先发送擦除FLASH命令,擦除完毕或将配置文件写入FLASH芯片。在FLASH芯片中可以存入多个FPGA的配置文件,在上电后或者需要加载时,CPLD读取FLASH中的配置文件并且对FPGA进行配置。
?
?
2 烧写FLASH时序
USB、CPLD和FLASH的连接关系如图2所示。USB将PC的命令和配置文件发送给CPLD,CPLD通过时序逻辑控制FLASH。
?
?
系统中所使用的USB芯片是FTDI公司的FT245BL,将USB芯片与PC连接后,USB芯片会自动识别为串口,利用串口调试助手可以向其发送命令或文件。
擦除和烧写FLASH操作如下所述:
FLASH芯片选用恒忆公司的M29EW系列512MNOR型FLASH。采用异步时钟操作,时序图中的fls_byte管脚对应的位宽选择信号,在本系统中将其拉低表示使用8 b位宽fls_adr表示地址,fls_dat表示数据,fls_cen为芯片使能信号,fls_oen为芯片读使能信号,fls_wen为芯片写使能信号。
如图3和图4所示,在执行擦除或写操作时序时,将fls_cen拉低、fls_oen拉高时可以执行写或擦除命令,fls_wen上升沿采样地址,下降沿采样数据。fls_ry_by是芯片的繁忙或空闲信号,是FLASH芯片惟一的输出信号,用于表示正在执行擦除或者写操作。
?
?
?
?
(1)擦除FLASH
在使用FALSH芯片之前需要对其进行擦除,PC通过USB向CPLD发出擦除命令后如图3所示。写入连续5个对应的地址和数据后,FLASH芯片将整个芯片的数据擦除,如图3所示在执行后,fls_ry_by信号拉低表示进入了擦除状态。
(2)烧写FLASH
如图4所示,在执行写FLASH操作时,首先需要给出写FLASH三次对应的数据和地址作为前置命令,然后给出需要写入FLASH的地址和数据。在接到命令后,CPLD根据图中时序将FPGA的配置文件写入FLASH。
3 PS模式自动加载FPGA
FPGA的配置管脚如图5所示。
在PS模式下配置FPGA的FLASH,CPLD和FPGA的连接关系如图5所示。
?
?
图6所示为PS模式加载FPGA的流程图。在加载过程中,将ps_nce拉低并且将ps_nconfig拉低至少40μs后再拉高,正常情况下这个操作会使ps_nstatus产生一个由低到高的一个脉冲信号并且使ps_conf_done由高变低。在ps_nstatus产生上升沿的瞬间立即给出ps_dclk和ps_data0来配置FPGA,其中ps_data0信号是通过读取FLASH芯片中的数据实现的。FPGA在接收配置文件的过程会自动识别文件的结尾,在配置结束后ps_ conf_done信号会拉高以表明配置结束,配置过程中init_done会由高变低,在经过至少18μs后init_done信号拉高表明完成初始化,随后进入用户模式。常规的方式采用nCONFIG,nSTATUTS,CONF_DONE复用,并且前一级FPGA的nCE连接后一级的FPGA的nCEO,这样加载顺序就被固定,而且每次加载只能先加载第一个FPGA,待加载完毕后才能加载第二个FPGA。与常规的配
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)