close
当前位置: 物联网在线 > 技术文库 >

FPGA上电后IO的默认状态

 FPGA上电后IO的默认状态

概述

在进行FPGA硬件设计时,引脚分配是非常重要的一个环节,特别是在硬件电路上需要与其他芯片通行的引脚。Xilinx FPGA从上电之后到正常工作整个过程中各个阶段引脚的状态,会对硬件设计、引脚分配产生非常重要的影响。这篇专题就针对FPGA从上电开始 ,配置程序,到正常工作整个过程中所有IO的状态进行分析。

从时间阶段可以分为两部分,第一阶段是从FPGA上电开始直到配置(Configuration)完成之前。第二个阶段是配置完成之后,FPGA开始正常工作开始。

从引脚类型上分,可以分为三大类:第一类是普通的IO,其中又分为程序设计中使用到的IO和程序设计中没有使用的IO(即在ucf或者XDC文件中没有进行约束的IO);第二类是专用下载配置引脚(Dedicated Pins),这类引脚只用于专用的功能,包括有M[2:0]、TCK、TMS、PROGRAM_B、INIT_B等。第三类为功能复用引脚,这类引脚在使用特定的功能时使用,例如在使用BPI配置模式时,D[00-31]和A[00-28]需要使用。如果使用SYSMON时,I2C_SDA和I2C_SCL需要使用。但在当前没有使用该功能的情况下,功能复用引脚可以看成普通IO。

FPGA IO的基本结构

在《IO输入输出的各种模式》介绍了处理器IO的各种输入输出模式以及原理,那么FPGA的IO是什么样的结构和原理?图 1为Xilinx文档中提供的IOB的内部结构,可以看出:

在FPGA IOB内部,Pad输出之前,内置上下拉电阻。且可以通过Passive Pull-up/Pull-down模块控制两个MOS管的导通与否来控制是否使能上下拉电阻。

内部连接Pad的分别有一个Input Buffer和Output Buffer。其中Input Buffer对外应该始终呈现高阻状态,同时可以将Pad上的电平通过Input Buffer传到I1和I2,或者是下部的FF。Output Buffer有两个控制信号,分别是Slew Rate Control,用来控制输出信号的Slew Rate;另一个是三态控制信号T,可以控制Output Buffer输出高阻。

内部输出信号Out,可以通过上半部分的FF,经Output Clock同步后打出,也可以直接连接到Output buffer的输入端,直接输出。

同样Input Buffer的输出,可以直接连接到I1和I2,也可以经过下半部分的FF,经过input clock的同步之后输出到内部总线上。

上下两个MOS并不是推挽输出的两个MOS管,因为并不受到互补信号的控制,并不一定一个导通另一个闭合。

图 1

这里介绍一下输入缓存器的结构和原理,其结构如图 2所示,其原理与推挽输出电路非常类似,只是输入端信号作为了两个互补MOS管的控制端,控制着输出端的电平。由于输入缓冲器有自己的供电电压,所以输入电平必须与缓冲器的电源电压相匹配。D1和D2两个钳位二极管用于防治输入电压过低或者过高,损坏输入缓冲器。

图 2

普通IO

配置完成之前

在FPGA上电到配置完成之前,由于当前FPGA还没有下载程序,无法区分哪些引脚被设计所使用,哪些引脚没有被使用。此时的普通IO包括两部分:
1. 该封装中所有的通用IO引脚。
2. 当前所选择的模式下没有使用到的所有功能复用管脚。

在Spartan6系列以及之前的器件中这些引脚的状态是根据HSWAPEN的状态决定的。

图 3

在7系列以后的器件,包括Ultrascale器件中,这些引脚的状态是根据PUDC_B(Pull-Up During Configuration)引脚

图 4

这两个引脚的功能是相似的,都是用来控制在Configuration完成之前,所有普通IO的上拉电阻是否使能的。对应到图 1中,即Output Buffer输出高阻,Input Buffer对外始终为高阻,此时选择是否连接上拉电阻。

配置完成之后

在配置完成之后,FPGA就进入正常工作的模式了。在配置完成之后,普通引脚可以分为以下两种:
工程设计中使用的IO,即在UCF或者XDC中有明确约束的IO。
其余没有使用,也没有约束的IO。(称为Unassigned Pins)

首先,对于第一种情况,由于已经在设计中明确设定了这些引脚的设置,包括方向、电平、驱动能力等等,所以在配置完成之后,这些引脚的状态已经被设置为了预设的状态。


(责任编辑:ioter)

用户喜欢...

FPGA中组合逻辑和时序逻辑的区别

数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。 1.组合逻辑概念 组合逻辑电路在逻辑功能上的特...


Xilinx FPGA复位浅析

1. 普通逻辑的复位 对于xilinx 7系列的FPGA而言,flip-flop支持高有效的异步复/置位和同步复位/置位。对普通逻辑设计,同步复位和异步复位没有区别,当然由于器件内部信号均为高有效,因此推...


FPGA双端口RAM操作(乒乓操作)

如果需要重读,需要用ram,如果不需要重读的话就用FIFO 双buffer不太好实现错误重传机制!!!! 双buffer作用: 1、跨时钟域 2、完成数据位宽转换 3、完成数据缓冲 双buffer缓冲操作示意图,...


Mellanox网卡嵌入Xilinx FPGA将降低背板插槽数量与CPU周期占用

Mellanox公司的下一代Innova网络适配器不仅将整合强制性高速接口,同时亦将嵌入一块Xilinx FPGA芯片。 分流工作负载已经成为Mellanox适配器发展策略中的一项重要组成部分,而这显然也迎合了一...


用BittWare XUPPR3R Virtex UltraScale+FPGA搭建48端口的服务器

想要自己搭建一个以太网交换机么?想要快速的搭建一个SDN交换器么?想要在VPN集线器、路由器、防火墙以及指令检测系统等方面搞事情么?在硬件开源之风吹来的时代,只要一个有FPGA的平...


FPGA差分信号缓冲的转换(IBUFDS、IBUFGDS和OBUFDS)

IBUFDS、IBUFGDS和OBUFDS都是差分信号缓冲器,用于不同电平接口之间的缓冲和转换。 IBUFDS 是差分输入的时候用; OBUFDS 是差分输出的时候用; IBUFGDS 则是时钟信号专用的输入缓冲器。 下面详细说明...


如何简单快捷地用小型Xiliinx FPGA加速卷积神经网络CNN

刚好在知乎上看到这个问题 如何用FPGA加速卷积神经网络CNN,恰巧我的硕士毕业设计做的就是在FPGA上实现CNN的架构,在此和大家分享。 先说一下背景,这个项目的目标硬件是Xilinx的PYNQ。该开...


一站式FPGA基础设施服务:FPGA加速云服务器亮相华为欧洲生态大会

在欧洲举行的2017 华为欧洲生态大会(HUAWEI ECO-CONNECT EUROPE,HCE)上,华为云FPGA加速云服务器(FACS)惊艳亮相,获得广泛关注,完整的基础设施服务及其两款FP1实例,成为本次大会的一大亮点...


再破吉尼斯世界纪录 赛灵思FPGA加速服务吸睛开发者

10月19日,继在美国、日本成功举办之后的赛灵思(Xilinx)公司首次中国开发者大会(XDF)在北京举行。本次XDF共有三个分会场,包括针对传统赛灵思客户的硬件开发者,以及软件与嵌入式应用开...


PYNQ 用Python运行FPGA

PYNQ介绍 PYNQ全称为Python Productivity for Zynq,即在原有Zynq架构的基础上,添加了对python的支持。Zynq是赛灵思公司推出的行业第一个可扩展处理平台系列,在芯片中集成了ARM处理器和FPGA可编程逻...