核心内容摘要
揭秘XXX18HD19HD:高清视界,不止于此的沉浸体验
2.
4 配置电路设计我们所说的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方式灵活多用尤其是在线调试非常快速便利因此我们的FPGA核心板电路中就只预留了JTAG接口。
FPGA器件的启动配置主要有JTAG方式、AS和PS配置方式。
AS配置方式由FPGA器件引导配置过程它控制着外部存储器及其初始化过程。
FPGA器件处于主动地位配置器件处于从属地位。
配置数据通过DATA0引脚送入FPGA。
配置数据被同步在DCLK输入上1个时钟周期传送1位数据。
PS配置方式则由PC或其他控制器控制配置过程。
在PS配置期间配置数据从外部储存器件通过DATA0引脚送入FPGA。
配置数据在DCLK上升沿锁存1个时钟周期传送1位数据。
JTAG接口是一个业界标准主要用于芯片测试等功能使用IEEE Std
1
1联合边界扫描接口引脚支持JAM STAPL标准可以使用Altera下载电缆或主控器来完成。
FPGA在正常工作时它的配置数据存储在RAM中加电时须重新下载。
在实验系统中通常用计算机或控制器进行调试因此可以使用PS配置方式。
在实用系统中多数情况下必须由FPGA主动引导配置操作过程这时FPGA将主动从外围专用存储芯片中获得配置数据而此芯片中FPGA配置信息是用普通编程器将设计所得的pof格式的文件烧录进去。
JTAG模式在线下载FPGA的原理如图
所示PC端的Quartus II软件通过下载线缆将配置数据流sof文件下载到FPGA内部下载完成后在FPGA中立刻执行下载代码速度很快非常适合调试。
FPGA下载数据到配置芯片的原理如图
所示PC端的Quartus II软件通过下载线缆将配置数据流jic文件下载到配置芯片中。
由于配置芯片和JTAG接口都是分别连接到FPGA的它们不是直接连接的所以配置文件先从PC传送到FPGA然后FPGA内部再转送给配置芯片在该过程中FPGA相当于起到一个桥接的作用。
看完JTAG模式下在线配置FPGA和烧录配置芯片的原理我们再了解一下FPGA上电初始的配置过程。
FPGA上电后内部的控制器首先工作确认当前的配置模式如果是外部配置芯片启动则通过和外部配置芯片的接口如我们的SPI接口将配置芯片的数据加载到FPGA的RAM中配置完成后开始正式运行。
当然了有人可能在想JTAG在线配置是否和配置芯片加载相冲突呢非也JTAG在线配置的优先级是最高的无论此时FPGA中在运行什么逻辑只要JTAG下载启动则FPGA便停下当前的工作开始运行JTAG下载的新的配置数据。
先看器件手册中给出的一些相关参考设计如图
所示这是FPGA和用于配置的SPI Flash的接口连接方式即我们所说的AS配置方式。
注意FPGA的几个主要引脚nSTATUS\CONF_DONE\nCONFIG\nCE的连接或者上拉或者接地主要是为了保证这些信号在上电初始处于一个确定的电平状态防止错误电平导致误触发。
DATA\DCLK\NCSO\ASDO这4个引脚便是SPI接口连接到SPI Flash。
图
AS配置参考电路的截图如图
所示FPGA有组MSEL引脚是用于设置FPGA初上电时的启动模式我们的FPGA上电使用Standard AS模式从SPI Flash里面加载配置数据。
有了前面的理论做铺垫我们的设计也就有依有据了。
如图
所示这是我们的SPI Flash芯片它的4个信号分别连接到FPGA器件的相应引脚上。
图
FPGA的AS配置电路前面是上电启动配置数据的电路通过一个SPI Flash来实现。
而PC端到FPGA器件的下载则是通过JTAG来实现的JTAG这个概念网络上满天飞了大家自己去消化但凡有CPU的地方基本都有JTAG的存在FPGA也不例外。
另外大家注意前面的MSEL设置了FPGA启动模式是Standard AS模式但是JTAG永远是最高优先级的模式任何时刻只要JTAG需要进行下载配置那么配置模式将会转换。
JTAG下载插座以及部分配置专用引脚的连接电路如图
所示。
2.
5 DDR2电路设计FPGA通常有专用的接口支持诸如DDR
DDR3等高速的存储器因此在对其引脚进行连接时需要使用FPGA定义好的专用存储器接口总线不能随心所欲地随意连接。
Altera公司的FPGA器件在它们的官方网站上都可以下载到与器件对应的引脚定义文档通常有excel格式、txt格式或pdf格式在这些文档中详细罗列了哪些引脚可以用于存储器数据总线、地址总线、时钟或控制信号的连接。
因此在着手设计前一定要先参考并定义好FPGA与存储器间的接口连接。
DDR2芯片的连接电路如图
所示。
DDR2芯片接口以及PCB layout通常需要遵循以下原则·单端信号的电路板阻抗一般控制在50 ohm±10%差分信号的电路板阻抗一般控制在100 ohm±10%。
·DQ、DQS、CK/CK#选择VSS作为参考平面地址、命令、控制信号线选择VDD作为参考平面。
·双向I/O如DQ串行端接电阻放置在走线的中间用于抑制振铃、过冲和下冲。
·单向信号如地址、控制和命令线串行端接电阻放置在走线的中间或信号的发送端推荐放在信号的发送端。
·推荐的线宽为·推荐的线间距为·DQS一般布线在DQ信号组的中间。
·DQS与时钟信号线不相邻。
·为了避免串扰数据信号组和地址、控制、命令信号组之间的走线间距应在±20mils建议它们在不同的信号层走线。
·时钟信号组尽量走在内层CK和CK#的走线长度偏差在±20mils以内最好是±10mils以内。
·数据信号组的走线长度和时钟信号组的走线长度偏差在±500mils以内。
·同一组信号线的走线长度偏差在±50mils±25mils以内。
·地址、命令、控制信号线的走线长度与时钟信号组的走线长度偏差在±400mils以内。
·同一地址、命令、控制信号组内的走线长度偏差在±50mils。
·所有信号走线长度控制在2000mils50mm以内。
·VREF布局布线·VREF和其他信号之间保持20mm间距。
·VDD到VREF的走线尽可能短。
·去耦电容尽可能靠近VREF。
·VREF走线至少20~25mils。
·VREF和相邻走线之间至少保持15~25mils间距。
·布线顺序·数据信号DQ、DQS、DM·地址信号命令信号CAS#、RAS#、WE#·控制信号CS#、CKE·时钟信号·反馈信号·如图
所示蛇形走线的相邻走线间距是线宽的5倍。
2.
6 NAND Flash电路设计如图
所示这是NAND Flash芯片的接口电路。
只要NAND Flash的R/B#Ready/Busy#信号上拉其他信号都连接到FPGA的I/O引脚上就好。
2.
7 引脚分配与I/O扩展电路如图
所示核心板上专门留了一个LED指示灯连接到FPGA引脚上用于板子的测试。
PIN_113输出高电平LED将被导通点亮低电平LED截止则不亮。
FPGA核心板其余的I/O引脚通过3个32PIN的连接器引出。
如图2-
图
和图
所示。
3 扩展外设子板设计如图
所示为围绕FPGA器件设计的核心板它的诱人之处在于引出的3个32PIN插座。
这3组可扩展的接口可以连接各种各样的外设子板可以作为一个电子爱好者无限DIY的平台。
针对该核心板我们目前已经推出的可用于实现一些项目工程的外设子板有AD/DA外设子板、UART/USB外设子板、FX2USB
0外设子板、CMOS摄像头子板、AV视频采集子板设计、7寸工业液晶屏子板、VGA显示驱动子板和HDMI显示驱动子板。
如表
所示这是我们目前推出的核心板和各个子板的主要外设列表。
表
各个子板的主要外设列表
2.
1 AD/DA外设子板设计SF-BASE基本外设子板的各个主要外设芯片的实物位置如图
所示。
在后续项目实例中我们主要使用了SF-BASE子板AD/DA芯片的功能AD/DA芯片的引脚定义如表
所示。
A/D芯片的电路如图
所示。
它通过一个单向从A/D芯片到FPGA数据传输的SPI接口与FPGA相连。
FPGA通过这组SPI接口读取当前模拟电压值。
为了得到不同的模拟电压值我们的板子在A/D芯片的模拟输入端设置了一个
3V的分压电阻当跳线帽连接了P3的1~2引脚时调节可变电阻R24的阻值便能改变当前A/D采样的数据。
跳线帽若连接P3的2~3引脚则AD芯片的输入模拟电压来自于D/A芯片的当前输出。
D/A转换电路如图
所示该D/A芯片通过I2C接口与FPGA连接FPGA通过这组I2C接口输出数据相应D/A芯片的VOUT输出模拟电压值。
若跳线帽连接P2的1~2引脚则不同的模拟电压值输出驱动D9指示灯呈现不同的亮度。
2.
2 UART/USB外设子板设计SF-USB子板的实物照片如图
所示。
SF-USB子板主要用到其USB转UART芯片FT232该芯片内部功能框图如图
所示。
它通过USB的D/D-与PC进行通信芯片内部能够根据USB协议对数据进行处理最终通过FIFO将这些数据转换为UART协议和我们的FPGA进行通信。
FT232R的接口电路如图
所示。
P4为USB port用于连接PCUART_TX和UART_RX分别为FT232R芯片的UART发送和UART接收信号对应的UART_TX就是FPGA的UART接收而UART_RX就是FPGA的UART发送信号。
D2和D3连接着U
/22在UART_RX和UART_TX收发时它们会闪烁以指示工作状态。
FT232R的引脚定义如表
所示。
SF-USB子板的USB转UART芯片连接到FPGA的信号定义如表
所示。
表
SF-USB子板连接引脚定义
2.
3 FX2USB
0外设子板设计SF-FX2子板的实物照片如图
所示。
FX2CY7C68013是一款集成8051单片机的灵活的USB
0控制器其带宽可以接近USB
0标称的480Mbit/s。
FX2的内部功能框图如图
所示从图中不难看出8051实际上并不直接参与USB数据的实际传输而只是做一些基本的配置。
从GPIF或SlaveFIFO接口传输的数据在FX2内部传到了RAM中进行缓存并且可以直接送到USB
0的phy中传输给USB设备。
SF-FX2子板和SF-VIP核心板需要进行连接的主要接口定义如表