当前位置: 首页 > news >正文

例说FPGA:可直接用于工程项目的第一手经验【1.3】

2.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 1149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。

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

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

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

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

先看器件手册中给出的一些相关参考设计,如图2-23所示,这是FPGA和用于配置的SPI Flash的接口连接方式,即我们所说的AS配置方式。注意FPGA的几个主要引脚nSTATUS\CONF_DONE\nCONFIG\nCE的连接,或者上拉,或者接地,主要是为了保证这些信号在上电初始处于一个确定的电平状态,防止错误电平导致误触发。DATA\DCLK\NCSO\ASDO这4个引脚便是SPI接口,连接到SPI Flash。

图2-23 AS配置参考电路的截图

如图2-24所示,FPGA有组MSEL引脚是用于设置FPGA初上电时的启动模式,我们的FPGA上电使用Standard AS模式从SPI Flash里面加载配置数据。

有了前面的理论做铺垫,我们的设计也就有依有据了。如图2-25所示,这是我们的SPI Flash芯片,它的4个信号分别连接到FPGA器件的相应引脚上。

图2-25 FPGA的AS配置电路

前面是上电启动配置数据的电路,通过一个SPI Flash来实现。而PC端到FPGA器件的下载则是通过JTAG来实现的,JTAG这个概念网络上满天飞了,大家自己去消化,但凡有CPU的地方,基本都有JTAG的存在,FPGA也不例外。另外,大家注意前面的MSEL设置了FPGA启动模式是Standard AS模式,但是JTAG永远是最高优先级的模式,任何时刻,只要JTAG需要进行下载配置,那么配置模式将会转换。JTAG下载插座以及部分配置专用引脚的连接电路如图2-26所示。

2.2.5 DDR2电路设计

FPGA通常有专用的接口支持诸如DDR2、DDR3等高速的存储器,因此在对其引脚进行连接时,需要使用FPGA定义好的专用存储器接口总线,不能随心所欲地随意连接。Altera公司的FPGA器件,在它们的官方网站上都可以下载到与器件对应的引脚定义文档(通常有excel格式、txt格式或pdf格式),在这些文档中,详细罗列了哪些引脚可以用于存储器数据总线、地址总线、时钟或控制信号的连接。因此,在着手设计前,一定要先参考并定义好FPGA与存储器间的接口连接。

DDR2芯片的连接电路如图2-27所示。

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。

·所有信号走线长度控制在2000mils(50mm)以内。

·VREF布局布线:

·VREF和其他信号之间保持20mm间距。

·VDD到VREF的走线尽可能短。

·去耦电容尽可能靠近VREF。

·VREF走线至少20~25mils。

·VREF和相邻走线之间至少保持15~25mils间距。

·布线顺序:

·数据信号DQ、DQS、DM

·地址信号,命令信号CAS#、RAS#、WE#

·控制信号CS#、CKE

·时钟信号

·反馈信号

·如图2-28所示,蛇形走线的相邻走线间距是线宽的5倍。

2.2.6 NAND Flash电路设计

如图2-29所示,这是NAND Flash芯片的接口电路。只要NAND Flash的R/B#(Ready/Busy#)信号上拉,其他信号都连接到FPGA的I/O引脚上就好。

2.2.7 引脚分配与I/O扩展电路

如图2-30所示,核心板上专门留了一个LED指示灯连接到FPGA引脚上,用于板子的测试。PIN_113输出高电平LED将被导通点亮,低电平LED截止则不亮。

FPGA核心板其余的I/O引脚通过3个32PIN的连接器引出。如图2-31、图2-32和图2-33所示。

2.3 扩展外设子板设计

如图2-34所示为围绕FPGA器件设计的核心板,它的诱人之处在于引出的3个32PIN插座。这3组可扩展的接口可以连接各种各样的外设子板,可以作为一个电子爱好者无限DIY的平台。针对该核心板,我们目前已经推出的可用于实现一些项目工程的外设子板有AD/DA外设子板、UART/USB外设子板、FX2(USB 2.0)外设子板、CMOS摄像头子板、AV视频采集子板设计、7寸工业液晶屏子板、VGA显示驱动子板和HDMI显示驱动子板。

如表2-1所示,这是我们目前推出的核心板和各个子板的主要外设列表。

表2-1 各个子板的主要外设列表

2.3.1 AD/DA外设子板设计

SF-BASE基本外设子板的各个主要外设芯片的实物位置如图2-35所示。

在后续项目实例中,我们主要使用了SF-BASE子板AD/DA芯片的功能,AD/DA芯片的引脚定义如表2-2所示。

A/D芯片的电路如图2-36所示。它通过一个单向(从A/D芯片到FPGA)数据传输的SPI接口与FPGA相连。FPGA通过这组SPI接口读取当前模拟电压值。为了得到不同的模拟电压值,我们的板子在A/D芯片的模拟输入端设置了一个3.3V的分压电阻,当跳线帽连接了P3的1~2引脚时,调节可变电阻R24的阻值便能改变当前A/D采样的数据。跳线帽若连接P3的2~3引脚,则AD芯片的输入模拟电压来自于D/A芯片的当前输出。

D/A转换电路如图2-37所示,该D/A芯片通过I2C接口与FPGA连接,FPGA通过这组I2C接口输出数据,相应D/A芯片的VOUT输出模拟电压值。若跳线帽连接P2的1~2引脚,则不同的模拟电压值输出驱动D9指示灯呈现不同的亮度。

2.3.2 UART/USB外设子板设计

SF-USB子板的实物照片如图2-38所示。

SF-USB子板主要用到其USB转UART芯片FT232,该芯片内部功能框图如图2-39所示。它通过USB的D+/D-与PC进行通信,芯片内部能够根据USB协议对数据进行处理,最终通过FIFO将这些数据转换为UART协议和我们的FPGA进行通信。

FT232R的接口电路如图2-40所示。P4为USB port,用于连接PC,UART_TX和UART_RX分别为FT232R芯片的UART发送和UART接收信号,对应的,UART_TX就是FPGA的UART接收,而UART_RX就是FPGA的UART发送信号。D2和D3连接着U2-23/22,在UART_RX和UART_TX收发时它们会闪烁以指示工作状态。

FT232R的引脚定义如表2-3所示。

SF-USB子板的USB转UART芯片连接到FPGA的信号定义如表2-4所示。

表2-4 SF-USB子板连接引脚定义

2.3.3 FX2(USB 2.0)外设子板设计

SF-FX2子板的实物照片如图2-41所示。

FX2(CY7C68013)是一款集成8051单片机的灵活的USB 2.0控制器,其带宽可以接近USB2.0标称的480Mbit/s。

FX2的内部功能框图如图2-42所示,从图中不难看出,8051实际上并不直接参与USB数据的实际传输,而只是做一些基本的配置。从GPIF(或SlaveFIFO)接口传输的数据,在FX2内部传到了RAM中进行缓存,并且可以直接送到USB 2.0的phy中传输给USB设备。

SF-FX2子板和SF-VIP核心板需要进行连接的主要接口定义如表2-5所示。

http://www.jsqmd.com/news/309739/

相关文章:

  • 【推广】2026高端滋补品牌推荐权威排行揭秘:哪个牌子是送礼首选?新年礼赠长辈领导,选这些准没错
  • 【推广】长沙冬日美食小吃地图|春节逛吃指南:五一广场,太平街私藏的烟火气
  • 【推广】白茶类品牌全案营销咨询公司哪家靠谱?
  • 【计算机网络】考研408计算机网络:传输介质(导向/非导向)考点梳理 - 指南
  • 实用指南:MySQL索引
  • Git可视化界面工具
  • 渐进式SFT内化
  • 从零开始写算法——图论篇1:岛屿数量 + 腐烂的橘子
  • 重复工作这么多,怎样才能提高工作效率?
  • 高项论文49分?他让“项目干系人管理”成了我的提分密码!
  • 书籍-普腊班扎《爪哇史颂》
  • 高纯氢氧化镁生产厂家|选对源头,让材料阻燃更省心!
  • 一篇文理解AI核心基本概念:LLM、Function Call、Agent…
  • AI开发的下一站:从Hugging Face生态看MLOps三大范式转移
  • 本地化部署:Windows系统下本地部署Qwen2.5大模型的实践教程(附教程)
  • 一个普通本科生,硬磕AI大模型的心路历程......
  • 手把手教你用 FastAPI + LangGraph搭建 AI 工作流
  • 入门大语言模型的开发者,推荐以下书籍和资源​,快速掌握大语言模型(附教程)
  • Cherry Studio+ MCP实现文件自由操控的奥秘
  • SSM医院疫情管理系统4f9a9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • SSM医院疫情管理系统e3oxi(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • 企业文件管理之痛:谁动了你的核心数据?
  • 【计算机毕业设计案例】基于springboot的敬老院管理系统基于springboot的大健康养老公寓管理系统(程序+文档+讲解+定制)
  • LeetCode 385 迷你语法分析器
  • 【计算机毕业设计案例】基于Springboot+vue的宠物之家领养寄养救助商城管理系统基于springboot的宠物领养救助系统(程序+文档+讲解+定制)
  • 2026AI时代,Java程序员还有必要深究源码吗?
  • 【快速EI检索 | 论文集出版 | 往届已检索!EI稳定快检索!】第二届通信技术与数据安全国际研讨会(CTADS 2026)
  • 【快速EI检索 | SPIE 出版 | 往届已见刊检索 | EI 检索 】第三届遥感技术与测量测绘国际学术会议(RSTSM 2026)
  • 认识区块链
  • 【JavaScript 异步编程】回调函数 | 回调地狱以及替代方案