0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA IO的基本结构及默认状态

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 2020-09-02 09:20 次阅读

概述

在进行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管,因为并不受到互补信号的控制,并不一定一个导通另一个闭合。

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

普通IO

配置完成之前

在FPGA上电到配置完成之前,由于当前FPGA还没有下载程序,无法区分哪些引脚被设计所使用,哪些引脚没有被使用。此时的普通IO包括两部分:

该封装中所有的通用IO引脚。

当前所选择的模式下没有使用到的所有功能复用管脚。

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

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

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

配置完成之后

在配置完成之后,FPGA就进入正常工作的模式了。在配置完成之后,普通引脚可以分为以下两种:

工程设计中使用的IO,即在UCF或者XDC中有明确约束的IO。

其余没有使用,也没有约束的IO。(称为Unassigned Pins)

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

对于没有约束的IO,又复杂一些了。在ISE开发环境下,工程完成Implement之后,在Processà Process properties àConfiguration Options中有"-g UnusedPin Unused IOB Pins"属性,可以选择Pull Down、Pull Up或者Floating。默认状态是Pull-Down。对应到图 1中,是高阻输出,导通下拉电阻。另两个设置就是高阻加上上拉电阻或者只是上下拉电阻均不导通。

在Vivado中也有相同的设置,必须在实现完成之后,打开Implementation Design之后选择bitstream Settings,其中在"Configure additional bitstream settings"中的Configuration栏中,有如下属性选择项。

专用IO

所有的专用配置引脚全部位于Bank0,包括CFGBVS、M[2:0]、TCK、TMS、TDI、TDO、PRORAM_B、INIT_B、DONE以及CCLK。专用引脚的含义就是无论在配置过程中还是配置完成之后,这些引脚无论在什么阶段都只用于配置。

所以对于这些引脚考虑相对比较简单,分为输入信号和输出信号。输入信号的状态始终保持LVCMOS电平标准,电压值为VCCO(输入信号为什么也有电平标准要求,需要与Input buffer的供电电压相匹配,见图 2)。输出信号的状态始终保持LVCMOS电平标准,电压为VCCO,12mA drive,fast slew rate。

功能复用IO

相比于其他引脚,功能复用引脚的情况是最复杂的,这些管脚包括与配置相关的PUDC_B、EMCCLK、CSI_B、CSO_B、DOUT、RDWR_B、D00_MOSI、D01_DIN、D[00-31]、A[00-28]、FCS_B、FOE_B、FEW_B、ADV_B、RS0以及RS1;以及与System Monitor相关的AD0P至AD15P、AD0N至AD15N,I2C_SDA以及I2C_SCLK。

为了说清楚功能复用管脚在不同阶段的状态,将复用管脚分为以下几类:

在当前所选择的功能中使用到的功能复用管脚,例如在选择BPI配置时的D[00-31]和A[00-28]。

在当前所选择的功能中没有使用到的功能复用管脚。例如在选择SPI配置时的D[00-31]和A[00-28]。

在完成配置之前需要作为输出或者双向,总之有可能向外输出信号的管脚,例如I2C_SDA和I2C_SCLK。

配置完成之前

在FPGA上电至配置完成之前的这段时间内,前面列出的第一类引脚,即在当前所选择的功能中使用到的功能复用管脚,状态等同于专用配置IO管脚。输入信号的状态始终保持LVCMOS电平标准,电压值为VCCO。输出信号的状态始终保持LVCMOS电平标准,电压为VCCO,12mA drive,fast slew rate。

前面列出的第二类引脚,即在当前所选择的功能中没有使用到的功能复用管脚,视同于普通IO,其状态受到HSWAPEN或者PUDC_B信号的控制,决定是高阻还是连接弱上拉电阻。

第三类引脚的情况比较复杂,目前所知的只有I2C_SDA和I2C_SCLK,这两个信号会在配置完成前出现一些不确定的状态。所以如果FPGA的IO还有富余,并且要求所有连接到外部的引脚有确定的状态,那么最好不要使用这两个引脚作为连接外设的IO。

配置完成之后

在FPGA配置完成之后,前面提到的三种引脚会被分成另外三类:

第一类是在用户设计中明确配置了需要保留的功能引脚,例如对于配置相关的引脚设置了Persist option属性,这种情况下这些引脚会继续保持之前与配置相关的功能,其状态为输入信号的状态始终保持LVCMOS电平标准,电压值为VCCO。输出信号的状态始终保持LVCMOS电平标准,电压为VCCO,12mA drive,slow slew rate。再例如设计中使用了SYSMON,I2C_SDA和I2C_SCLK引脚则继续保持DRP I2C的功能。

第二类是在用户设计配置中没有要求保留其特殊功能,这些引脚在配置完成之后会变成普通IO,且在用户设计中没有使用到的IO。这些IO相当于Unassigned IO,如前所述,这些IO在配置完成之后的状态受到相应设置的影响,可以是上拉、下拉或者Floating。

第三类是在用户设计配置中没有要求保留其特殊功能,这些引脚在配置完成之后会变成普通IO,并且在用户设计中使用到的IO。这些IO的状态由用户设计控制,会在XDC或者UCF中设定。如果没有设定就会按照默认的状态,输入端口默认状态为LVCMOS电平标准,电压值为VCCO;输出信号默认状态为保持LVCMOS电平标准,电压为VCCO,12mA drive,slow slew rate。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1627

    文章

    21685

    浏览量

    602322
  • Xilinx
    +关注

    关注

    71

    文章

    2164

    浏览量

    121089

原文标题:FPGA上电后IO的默认状态

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    fpga内部主要结构及其功能分析(Kintex-7FPGA内部结构

    Kintex-7 FPGA的内部结构相比传统FPGA的内部结构嵌入了DSP48E1,PCIE,GTX,XADC,高速IO口等单元,大大提升了
    发表于 08-24 09:26 2045次阅读
    <b class='flag-5'>fpga</b>内部主要<b class='flag-5'>结构</b>及其功能分析(Kintex-7<b class='flag-5'>FPGA</b>内部<b class='flag-5'>结构</b>)

    stm32没有配置任何IO口功能的情况下,默认IO口是什么状态

    请问各位大佬,32出厂时没有配置任何IO口功能的情况下,默认IO口是什么状态,是浮空还是说会配置成上下拉或者其他模式啥的,谢谢各位大佬解惑
    发表于 03-25 06:49

    labview事件结构响应外部IO事件

    请教,事件结构如何添加外部IO事件?我扩了一张IO卡,我现在把IO卡的状态读到一个变量中,将变量值改变加到事件中,
    发表于 11-02 17:06

    FPGA IO设计

    会有比较详细的结构图,因为是新人对于找资料解决问题,还是比较弱,往往无从下手)2. 想对FPGAIO,设计成可配置的形式,可以当普通IO口使用,有输入输出,也可以配置成复用模式,可配
    发表于 10-31 20:13

    FPGAIO

    `关键内容提要:(1) FPGA IO命名方式;(2) FPGA的上电时序 今天想和大家一起聊聊FPGAIO。先说说我当年入门的经历吧。国
    发表于 07-18 14:26

    如何拉低我的FPGA的所有io引脚状态

    大家好, 我在spartan-6 FPGA(XC6SLX9TQ144)板上遇到了问题。我发现我的FPGA的所有io引脚在配置之前都处于高位状态。但是我需要它们低。我不知道究竟是什么原因
    发表于 07-26 12:00

    请问DSP2812的IO口定义成输出不指定状态情况下的默认电平?

    芯片DSP2812,初始化一些管脚为普通IO口,方向是输出引脚,没有指定状态,请问引脚此时的默认状态是什么电平,是否与内部结构有关,内部弱上
    发表于 07-20 07:49

    FPGA所有IO状态进行分析

    设计、引脚分配产生非常重要的影响。这篇专题就针对FPGA从上电开始 ,配置程序,到正常工作整个过程中所有IO状态进行分析。  从时间阶段可以分为两部分,第一阶段是从FPGA上电开始直
    发表于 01-08 17:29

    怎么给FPGA的I/O引脚初始状态默认设为低电平?

    实验中发现在如果在初始是不给FPGAIO引脚执行操作,默认的输出时高电平,怎么回事呢?想设成是低电平,该怎么办?
    发表于 04-23 14:49

    IO状态切换说明.pdf

    IO状态切换说明
    发表于 04-01 18:50 22次下载
    <b class='flag-5'>IO</b>口<b class='flag-5'>状态</b>切换说明.pdf

    一文详解Spartan-6系列IO Tile结构

    对Spartan-6系列FPGA来说,一个IO Tile包括2个IOB、2个ILOGIC、2个OLOGIC、2个IODELAY。 图 1Spartan-6系列IO Tile结构图 图
    的头像 发表于 07-14 06:50 8304次阅读
    一文详解Spartan-6系列<b class='flag-5'>IO</b> Tile<b class='flag-5'>结构</b>

    改变单片机IO默认电平

    c51单片机上电后io默认的电平默认都是高电平,因为只不过P0没有内部上拉电阻,是弱上拉,不加外部上拉电阻的话只能驱动外部的门电路。P1到P3都有上拉电阻,是强上拉,可以直接驱动外部的接口电路。
    发表于 11-21 16:08 1.2w次阅读
    改变单片机<b class='flag-5'>IO</b>口<b class='flag-5'>默认</b>电平

    FPGA上电后IO默认状态

    在进行FPGA硬件设计时,引脚分配是非常重要的一个环节,特别是在硬件电路上需要与其他芯片通行的引脚。Xilinx FPGA从上电之后到正常工作整个过程中各个阶段引脚的状态,会对硬件设计、引脚分配产生非常重要的影响。这篇专题就针对
    发表于 11-28 14:41 1.6w次阅读
    <b class='flag-5'>FPGA</b>上电后<b class='flag-5'>IO</b>的<b class='flag-5'>默认</b><b class='flag-5'>状态</b>

    LPC单片机IO默认状态、复位状态、未初始化时输出高电平处理

    由STM32切换到LPC1788,发现LPC的IO未初始化时输出高电平,初始化后才能拉低,这样和STM32的设计就不兼容了。分析查LPC数据手册后,发现:复位状态为输入模式,上拉模式。后面也有具体
    发表于 11-17 09:21 2次下载
    LPC单片机<b class='flag-5'>IO</b>口<b class='flag-5'>默认</b><b class='flag-5'>状态</b>、复位<b class='flag-5'>状态</b>、未初始化时输出高电平处理

    FPGA 结构分析 -IO 资源

    工作方式; IO串并转换资源:分析IO资源如何实现串并转换。 其中第二、三系列是对第一系列中的部分内容进行更进一步的详细描述。本篇是对于第一个系列——IO资源进行部分描述,共分为几个章节进行具体阐述。
    的头像 发表于 12-13 13:20 1741次阅读