特权同学

FPGA实战演练逻辑篇19:FPGA配置电路设计

0
阅读(3204)

FPGA配置电路设计

本文节选自特权同学的图书《FPGA设计实战演练(逻辑篇)》

配套例程下载链接:http://pan.baidu.com/s/1pJ5bCtt

我们所说的FPGA配置电路,一方面要完成从PC上把bit文件下载到FPGA或存储器的任务,另一方面则要完成FPGA上电启动时加载配置数据的任务。在开始设计FPGA的配置电路之前,我们不妨花一些篇幅简单的了解一下FPGA的配置过程和配置方式。(特权同学,版权所有)

前面已经强调过,FPGA是基于RAM结构的,当然了,也有基于FLASH结构的,但RAM结构的是主流,也是我们讨论的重点。而RAM是易失存储器,在掉电后保存在上面的数据就丢失了,重新上电后需要再次下载配置数据。因此,我们肯定不希望每次重新上电后都用PC去下载一次,工程应用也不允许我们这么做。所以,FPGA旁边都有一颗配置芯片,它通常是一颗FLASH存储器,或者是并行或者是串行接口的。不管是串行还是并行的FLASH,它们的启动加载原理基本相同,后面我们会一一讨论。(特权同学,版权所有)

为避免混淆,这里对FPGA的下载配置和启动配置做一点区分。FPGA器件的下载配置,是指将PC上的FPGA配置数据流通过下载线缆烧录到FPGA或者FLASH存储器中。而FPGA器件的启动配置,则是指将配置数据流从PC或者FLASH存储器中加载到FPGA内,使其运行起来。(特权同学,版权所有)

FPGA器件的下载配置,最常见的是基于JTAG的配置方式,这种方式既可以直接将PC上的配置数据流加载到FPGA上在线运行,也可以通过FPGA器件本身间接的将数据烧录到FLASH等外部配置芯片中。另一种下载配置是将配置数据流直接下载到配置芯片中。由于JTAG方式灵活多用,尤其是在线调试非常快速便利,因此我们的核心板电路中就只预留了JTAG接口。(特权同学,版权所有)

FPGA器件的启动配置主要有前面提到的JTAG方式,以及ASPS配置方式。(特权同学,版权所有)

AS配置方式由FPGA器件引导配置过程,它控制着外部存储器及其初始化过程,EPCS系列配置芯片如EPCS1EPCS4配置器件专供AS模式,目前只支持Cyclone/Cyclone II/Cyclone III系列。使用Altera串行配置器件来完成,FPGA器件处于主动地位,配置器件处于从属地位。配置数据通过DATA0引脚送入FPGA。配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。(特权同学,版权所有)

PS配置方式则由PC或其它控制器控制配置过程。通过加强型配置器件,如EPC16EPC8EPC4等配置器件来完成。在PS配置期间,配置数据从外部储存器件通过DATA0引脚送入FPGA。配置数据在DCLK上升沿锁存,1个时钟周期传送1位数据。(特权同学,版权所有)

JTAG接口是一个业界标准,主要用于芯片测试等功能,使用IEEE Std 1149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。(特权同学,版权所有)

FPGA在正常工作时,它的配置数据存储在RAM中,加电时须重新下载。在实验系统中,通常用计算机或控制器进行调试,因此可以使用PS配置方式。在实用系统中,多数情况下必须由FPGA主动引导配置操作过程,这时FPGA将主动从外围专用存储芯片中获得配置数据,而此芯片中FPGA配置信息是用普通编程器将设计所得的pof格式的文件烧录进去。(特权同学,版权所有)

JTAG模式在线下载FPGA的原理如图3.33所示,PC端的Quartus II软件通过下载线缆将配置数据流(sof文件)下载到FPGA内部,下载完成后FPGA中立刻执行下载代码,速度很快,非常适合调试。(特权同学,版权所有)

1.jpg

3.33 JTAG方式下载配置过程

FPGA下载数据到配置芯片的原理如图3.34所示,PC端的Quartus II软件通过下载线缆将配置数据流(jic文件)下载到配置芯片中。由于配置芯片和JTAG接口都是分别连接到FPGA的,他们不是直接连接,所以配置文件从PC先是传送到FPGA,然后FPGA内部再转送给配置芯片,这个过程FPGA相当于起到一个桥接的作用。(特权同学,版权所有)

2.jpg

3.34 JTAG方式下载数据到配置芯片

看完JTAG模式下在线配置FPGA和烧录配置芯片的原理,我们再了解一下FPGA上电初始的配置过程。FPGA上电后,内部的控制器首先工作,确认当前的配置模式,如果是外部配置芯片启动,则通过和外部配置芯片的接口(如我们的SPI接口)将配置芯片的数据加载到FPGARAM中,配置完成后开始正式运行。当然了,有人可能在想,JTAG在线配置是否和配置芯片加载相冲突呢?非也,JTAG在线配置的优先级是最高的,无论此时FPGA中在运行什么逻辑,只要JTAG下载启动,则FPGA便停下当前的工作,开始运行JTAG下载的新的配置数据。(特权同学,版权所有)

先看器件手册中给出的一些相关参考设计,如图3.35所示,这是FPGA和用于配置的SPI FLASH的接口连接方式,即我们所说的AS配置方式。注意FPGA的几个主要引脚Nstatus\CONF_DONE\Nconfig\nce的连接,或者上拉,或者接地,主要是为了保证这些信号在上电初始处于一个确定的电平状态,防止错误电平导致误触发。DATA\DCLK\NCSO\ASDO4个引脚便是SPI接口,连接到SPI FLASH(特权同学,版权所有)

3.jpg

3.35 AS配置参考电路的截图

如图3.36所示,FPGA有组MSEL引脚是用于设置FPGA初上电时的启动模式,我们使用的EP3C5器件没有bit3,只有bit2-0,上电使用FastAS模式从SPI FLASH里面加载配置数据。(特权同学,版权所有)

4.jpg

3.36 MSEL引脚配置说明的截图

有了前面的理论做铺垫,我们的设计也就有依有据了。如图3.37所示,这是我们的FPGA器件EP3C5E144C8NAS配置电路。M25P40是一颗4MbitSPI FLASH,兼容Altera推荐的专用配置芯片EPCS4,可用于存储配置数据。之所以选择4MbitSPI FLASH,是因为前面的图3.20已经给出了EP3C5器件的配置数据需要3Mbit左右,因此我们选择了比它略大一些的4MbitM25P40芯片。(特权同学,版权所有)

5.jpg

3.37 FPGAAS配置电路

前面是配置电路的一大任务,即上电启动配置数据的电路,通过一个SPI FLASH来实现。而另一个任务即下载,则是通过JTAG来实现的,JTAG这个概念网络上满天飞了,大家自己去消化,但凡有CPU的地方,基本都有JTAG的存在,FPGA也不例外。唯一需要大家注意的是Cyclone III器件的JTAG电压必须是2.5V。另外,还有一个提醒大家注意的是,即便前面的MSEL设置了FPGA启动模式是FastAS模式,但是JTAG永远是最高优先级的模式,任何时刻,只要JTAG需要进行下载配置,那么配置模式将会转换。JTAG下载插座电路如图3.38所示。(特权同学,版权所有)

3.38 FPGAJTAG下载插座电路


Baidu
map