FPGA上电时序加载过程详解

目前,大多数fpga芯片是基于 sram 的结构的, 而 sram 单元中的数据掉电就会丢失,因此系统上电后,必须要由配置电路将正确的配置数据加载到 sram 中,此后 fpga 才能够正常的运行。
常见的配置芯片有epcs 芯片 (epcs4、epcs8、epcs16、epcs64、epcs128),还有通用的串行 spi flash 芯片如 m25p40、 m25p16、 w25q16 等。
配置(configuration)是对fpga的内容进行编程的过程。每次上电后都需要进行配置是基于sram工艺fpga的一个特点,也可以说是一个缺点。fpga配置过程如下:
2.fpga配置方式
根据fpga在配置电路中的角色,可以将配置方式分为三类:
1.fpga主动串行(as)方式 
2. jtag方式  
3. fpga被动(passive)方式
3.fpga配置过程
fpga的配置包括3各阶段:复位、配置和初始化。
fpga正常上电后,当其nconfig管脚被拉低时,器件处于复位状态,这时所有的配置ram内容被清空,并且所有i/o处于高阻态,fpga的状态管脚nstatus和config_done管脚也将输出为低。当fpga的nconfig管脚上出现一个从低到高的跳变以后,配置就开始了,同时芯片还会去采样配置模式(msel)管脚的信号状态,决定接受何种配置模式。
随之,芯片将释放漏极开路(open-drain)输出的nstatus管脚,使其由片外的上拉电阻拉高,这样,就表示fpga可以接收配置数据了。在配置之前和配置过程中,fpga的用户i/o均处于高阻态。
在接收配置数据的过程中,配置数据由data管脚送入,而配置时钟信号由dclk管脚送入,配置数据在dclk的上升沿被锁存到fpga中,当配置数据被全部载入到fpga中以后,fpga上的conf_done信号就会被释放,而漏极开路输出的conf_done信号同样将由外部的上拉电阻拉高。因此,conf_done管脚的从低到高的跳变意味着配置的完成,初始化过程的开始,而并不是芯片开始正常工作。
init_done是初始化完成的指示信号,它是fpga中可选的信号,需要通过quartus ii工具中的设置决定是否使用该管脚。在初始化过程中,内部逻辑、内部寄存器和i/o寄存器将被初始化,i/o驱动器将被使能。
当初始化完成以后,器件上漏极开始输出的init_done管脚被释放,同时被外部的上拉电阻拉高。这时,fpga完全进入用户模式,所有的内部逻辑以及i/o都按照用户的设计运行,这时,那些fpga配置过程中的i/o弱上拉将不复存在。不过,还有一些器件在用户模式下i/o也有可编程的弱上拉电阻。在完成配置以后,dclk信号和data管脚不应该被浮空(floating),而应该被拉成固定电平,高或低都可以。 
4.fpga配置模式选择
用户可以通过设置fpga上的msel0、mesl1两个引脚的状态来选择配置方式。各种方式的msel0、mesl1设置如下表所列:
说明:
在上表中,如果只采用一种配置方式,则可以直接将msel0、mesl1连接到vcc(注意要与fpga的io口的供电vccio相同)或gnd;
如果需要多种配置方式,那么msel要用控制器(单片机、cpld等)来控制以进行切换;
msel管脚在配置开始前必须处于一个固定的状态,因此不能将msel管脚悬空。
5.主动串行配置
主动串行配置方式(as)是将配置数据事先存储在串行配置器件epcs中,然后在系统上电时cyclone iv fpga通过串行接口读取配置数据(如果是压缩数据,还会进行解压缩处理)对内部的sram单元进行配置。
因为上述配置过程中fpga控制配置接口,因此通常称为主动配置方式。在配置期间,cyclone iv用过串行接口来读配置数据,来对里面的sram编程。串行配置器件的四个接口包括,串行时钟输入dclk,串行数据输出data,低有效的片选信号nce,串行数据输入asdi。
主动串行配置电路图:
因为fpga上的nstatus、config_done管脚都是开漏结构,所以都要接上拉电阻。fpga的片选脚nce必须接地。
6.jtag配置
通过jtag接口,利用quartus ii软件可以直接对fpga进行单独的硬件重新配置。quartus ii软件在编译时会自动生成用于jtag配置的.sof文件。
如果同时使用as方式和jtag方式来配置fpga,jtag配置方式拥有最高的优先级,此时as方式将停止,而执行jtag方式配置。
利用quartus ii软件和usb blaster等下载电缆可下载配置数据到fpga。quartus ii软件可以验证jtag配置是否成功。jtag配置通过下载电缆使用sof、jam或者jbc文件直接对fpga进行配置,这种配置方式只能用于调试阶段,因为,掉电后fpga中的配置数据将丢失。
7.被动串行配置
被动串行ps配置方式是altera cyclone iv系列fpga配置方式中比较常用的方式。但是,在工程应用中若采用这种配置方式,fpga需要连接一个智能主机(比如复杂可编程逻辑器件cpld/微控制单元mcu等)以给其提供配置时钟和配置数据。
在该配置方式下,智能主机在保证与存储配置数据的闪存通信无误的情况下,只需向fpga提供一个dclk信号和一个data0信号即可实现对fpga的配置。另外,该dclk信号还可以实现多种频率以满足用户对配置时间的需求,这是该配置方式的一大亮点。
本文介绍了以altera型的fpga芯片为例介绍了fpga的上电过程,并描述了三种常见的配置模式,用户可以根据不同的需求来采用对应的配置模式,每种配置模式下对应的配置数据类型也是不相同的。

压敏电阻怎么控制保护电压 压敏电阻保护电路设计
无线传感器网络涉及的7个重要概念
RP Fiber Power级联光纤放大器模型
海尔带动空调标准升级 给价格战带来很大的压力
嵌入式C语言中Const关键字的基础知识和作用的详细资料概述
FPGA上电时序加载过程详解
基于FPGA实现扩频通信模块的设计方案与仿真
浅析运放输入端平衡电阻在电子电路设计中的作用
兽药残留快速检测仪的检测步骤
直流调速器的工作原理
专业定制开发区块链交易所安全可靠交易系统开发商
2019年中国LED照明产品出口金额基本持平,出口数量再度出现下滑
马斯克只用2年来实现无人驾驶
4100万卡尔蔡司镜头+骁龙835,诺基亚8只要3188元?
利用EMSCAN电磁干扰扫描系统获得PCB完整电磁信息的方法
瑞萨电子谈RL78如何降低环境传感器系统的维护成本
2017年通信业最受关注十大事件揭秘
中国交通怎样开启了新篇章
数字校园智慧化电力平台
如何利用图像处理技术模糊车牌