FPGA最小系统是可以使FPGA正常工作的最简单的系统。它的外围电路尽量最少,只包括FPGA必要的控制电路。一般所说的FPGA的最小系统主要包括FPGA芯片、下载电路、外部时钟、复位电路和电源。如果需要使用SOPC软嵌入式处理器还要包括SDRAM和Flash。一般以上这些组件是FPGA最小系统的组成部分。本文以EP2C8Q208C8为主芯片进行FPGA最小系统的设计。

FPGA芯片管脚介绍

对于需要在印刷电路板上使用大规模FPGA器件的设计人员来说,I/O引脚分配是必须面对的众多挑战之一。其既可能帮助设计快速完成,也有可能造成设计失败。在此过程中必须平衡FPGA和PCB两方面的要求,同时还要并行完成两者的设计。如果仅仅针对PCB或FPGA进行引脚布局优化,那么可能在另一方面引起设计问题。因此,在设计FPGA电路之前,需要认真阅读相应FPGA的芯片手册。FPGA的管脚主要包括配置管脚、电源、时钟、用户I/O及特殊应用管脚等。

1. 电源管脚

VCCINT:内核电压。通常与FPGA芯片所采用的工艺有关,如130nm工艺为1.5V、90nm工艺为1.2V。

VCCIO:端口电压。一般为3.3V,还可以支持选择多种电压,如5V、1.8V、1.5V等。

VREF:参考电压。

GND:信号地。

2. 时钟管脚

VCC_PLL:锁相环管脚电压,直接连VCCIO。

VCCA_PLL:锁相环模拟电压,一般通过滤波器接到VCCINT上。

GNDA_PLL:锁相环模拟地。

GNDD_PLL:锁相环数字地。

CLK[n]:锁相环时钟输入,其中n表示锁相环序号。

PLL[n]_OUT:锁相环时钟输出,其中n表示锁相环序号。

3. 配置管脚

MSEL[1..0]:用于选择配置模式。FPGA有多种配置模式,如主动、被动、快速、正常、串行、并行等,可以对此管脚进行选择。

DATA0:FPGA串行数据输入,连接至配置器件的串行数据输出管脚。

DCLK:FPGA串行时钟输出,为配置器件提供串行时钟。

nCSO(I/O):FPGA片选信号输出,连接至配置器件的nCS管脚。

ASDO(I/O):FPGA串行数据输出,连接至配置器件的ASDI管脚。

nCEO:下载链器件使能输出。在一条下载链(Chain)中,当第一个器件配置完成后,此信号将使能下一个器件开始进行配置。下载链的最后一个器件的nCEO应悬空。

nCE:下载链器件使能输入,连接至上一个器件的nCEO。下载链第一个器件的nCE接地。

nCONFIG:用户模式配置起始信号。

nSTATUS:配置状态信号。

CONF_DONE:配置结束信号。

4. 用户I/O

I/O[n]:可用作输入或输出,或者双向口,同时可作为LVDS差分对的负端。其中n表示管脚序号。

5. 特殊管脚

VCCPD:用于选择驱动电压。

VCCSEL:用于控制配置管脚和锁相环相关的输入缓冲电压。

PORSEL:上电复位选项。

NIOPULLUP:用于控制配置时所使用的用户I/O的内部上拉电阻是否工作。

TEMPDIODEn/p:用于关联温度敏感二极管。

FPGA开发板的主芯片EP2C8Q208C8如图2-2所示。

forum.jpg

图2-2 EP2C8Q208C8管脚图

电源电路设计

电源是整个系统能够正常工作的基本保证,如果电源电路设计得不好,系统有可能不能正常工作,或者即使能正常工作但是散热条件不好,导致系统不稳定等异常情况。所以如何选用合适的电源芯片,以及如何合理地对电源进行布局布线,都是值得下大工夫研究的。

在选用电源之前要仔细阅读FPGA的芯片手册,一般来说,FPGA用到的管脚和资源越多,所需要的电流就越大,当电路启动时FPGA的瞬间电流也比较大。通过数据手册中提供的电气参数,确定FPGA最大需要多大的电流才能工作。下面是几种常使用的FPGA参考电源芯片。

AMS1117系列稳压器可以提供1A电流,线型电源(适用208管脚以下、5万逻辑门以下的FPGA)。

AS2830(或LT1085/6)稳压器可以提供3A电流,线性电源(适用240管脚以下、30万逻辑门以下的FPGA)。

TPS54350稳压器可以提供3A电流,开关电源(适用大封装大规模的高端FPGA)。

为了降低FPGA电路成本,电源电路采用ASM1117电源芯片进行设计,如图2-3所示。

forum.jpg

图2-3 电源电路设计原理图

滤波电容电路模块设计

为了保证FPGA芯片正常工作,其每一个内核电压VCCINT和端口电压VCCIO引脚都需添加一个电容,以滤除外电路对FPGA主芯片的影响,其典型电路如图2-4所示。

forum.jpg

图2-4 电源电路设计原理图

JTAG调试与AS下载电路的设计

FPGA是SRAM型结构,本身并不能固化程序。因此,FPGA需要一片Flash结构的配置芯片来存储逻辑配置信息,用于进行上电配置。以Altera公司的FPGA为例,配置芯片分为串行(EPCSx系列)和并行(EPCx系列)两种。其中EPCx系列为老款配置芯片,体积较大,价格高。而EPCSx系列芯片与之相比,体积小、价格低。在把程序固化到配置芯片之前,一般先使用JTAG模式去调试程序,也就是把程序直接下载到FPGA芯片上运行。虽然这种方式在断电以后程序会丢失,但是充分利用了FPGA的无限擦写性。所以一般FPGA有两个下载接口:JTAG调试接口和AS下载接口。所不同的是前者下载至FPGA,后者是编程配置芯片(如EPCSx),然后上电复位再配置FPGA。如图2-5所示是JTAG模式和AS模式的电路原理图。

forum.jpg

图2-5 JTAG模式和AS模式电路设计原理图

时钟电路设计

FPGA的全局时钟应该是从晶振分出来的,最原始的频率。其他需要的各种频率都是在这个基础上利用PLL或其他分频手段得到的。晶振可以分为无源晶振和有源晶振。无源晶振有2个引脚的无极性元件,需要借助于外接设备内部的振荡时钟电路才能产生振荡信号,自身无法振荡起来。有源晶振有4只引脚,是一个完整的振荡器,器件内部除了石英晶体外,还有晶体管和阻容元件。因FPGA内部不存在振荡时钟电路,故需采用有源晶振进行时钟电路设计,同时在输出端串接了一个100欧姆和一个0欧姆电阻,以方便时钟电路调试,如图2-6所示是时钟电路原理图。

forum.jpg

图2-6 时钟电路原理图

复位电路的设计

电源是整个系统能够正常工作的基本保证,如果电源电路设计得不好,系统有可能不能正常工作,或者即使能正常工作但是散热条件不好,导致系统不稳定等异常情况。所以如何选用合适的电源芯片,以及如何合理地对电源进行布局布线,都是值得下大工夫研究的。

一般复位电路采用的是低电平复位,只有个别单片机采用高电平复位方式。常见的电平复位电路分为芯片复位和阻容复位。前者的复位信号比较稳定,而后者容易出现抖动。下面是几种常使用的复位芯片。

常用的芯片复位有MAX708S/706S系列,它们可提供高、低电平两种复位方式和电源监控能力(监控电源电压低到一定程度自动复位)。

IMP811是一款比较低廉的复位芯片,只有低电平复位功能,但是其体积非常小。

从FPGA电路板价格低廉角度出发,复位典型连接电路如图2-7所示。

forum.jpg

图2-7 复位电路设计原理图

锁相环外围电路的设计

Altera公司的FPGA内嵌模拟锁相环,但为了使锁相环正常工作,其外围必须加入一个10mH的电感、一个0.1uF和一个0.01uF的瓷片电容,以及一个10uF的电解电容,如图2-8所示为锁相环外围电路原理图。FPGA的锁相环可以通过反馈路径来消除时钟分布路径的延时,可以做频率综合(如分频和倍频),也可在去抖动、修正占空比移相等应用中使用。

forum.jpg

图2-8 锁相环外围电路原理图

LED电路的设计

为了便于验证FPGA最小系统时钟电路和主芯片是否可以正常工作,一般系统都需接入8位LED等,如图2-9所示为LED电路设计原理图。

forum.jpg

图2-9 LED电路设计原理图

高速SDRAM存储器接口电路设计

SDRAM可作为软嵌入式系统(SOPC)的程序运行空间,或者作为大量数据的缓冲区。SDRAM是通用的存储设备,只要容量和数据位宽相同,不同公司生产的芯片都是兼容的。一般比较常用的SDRAM包括现代HY57V系列、三星K4S系列和美光MT48LC系列。例如,4M×32位的SDRAM,现代公司的芯片型号为HY57V283220,三星公司的为K4S283232,美光公司的为MT48LC4M32。这几个型号的芯片可以相互替换。SDRAM典型电路如图2-10所示。

forum.jpg

图2-10 高速SDRAM存储器接口原理图

Flash存储器接口电路设计

Flash可作为SOPC系统的程序存储空间,或者作为程序的固件空间。最常使用的是AMD公司或者Intel公司的Flash。在小容量的Flash选择上,AMD公司的Flash性价比较高,而高容量的Flash选择上,Intel公司的Flash性价比较高。Flash同样也可以通过设置实现8位和16位的数据位宽,典型的16位模式下的Flash连接如图2-11所示。

forum.jpg

图2-11 Flash存储器接口电路原理图

FPGA最小系统扩展接口电路设计

为了完成FPGA对外围电路的控制,一般来说,FPGA最小系统都需要使用扩展接口电路来外接其他外围设备,同时也需要将电压5V、3.3V、GND引出,其典型电路如图2-12所示。

forum.jpg

图2-12 FPGA最小系统扩展接口电路原理图