0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA IO的基本結(jié)構(gòu)及默認(rèn)狀態(tài)

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者:玩轉(zhuǎn)單片機(jī) ? 2020-09-02 09:20 ? 次閱讀

概述

在進(jìn)行FPGA硬件設(shè)計時,引腳分配是非常重要的一個環(huán)節(jié),特別是在硬件電路上需要與其他芯片通行的引腳。Xilinx FPGA從上電之后到正常工作整個過程中各個階段引腳的狀態(tài),會對硬件設(shè)計、引腳分配產(chǎn)生非常重要的影響。這篇專題就針對FPGA從上電開始 ,配置程序,到正常工作整個過程中所有IO的狀態(tài)進(jìn)行分析。

從時間階段可以分為兩部分,第一階段是從FPGA上電開始直到配置(Configuration)完成之前。第二個階段是配置完成之后,F(xiàn)PGA開始正常工作開始。

從引腳類型上分,可以分為三大類:第一類是普通的IO,其中又分為程序設(shè)計中使用到的IO和程序設(shè)計中沒有使用的IO(即在ucf或者XDC文件中沒有進(jìn)行約束的IO);第二類是專用下載配置引腳(Dedicated Pins),這類引腳只用于專用的功能,包括有M[2:0]、TCK、TMS、PROGRAM_B、INIT_B等。第三類為功能復(fù)用引腳,這類引腳在使用特定的功能時使用,例如在使用BPI配置模式時,D[00-31]和A[00-28]需要使用。如果使用SYSMON時,I2C_SDA和I2C_SCL需要使用。但在當(dāng)前沒有使用該功能的情況下,功能復(fù)用引腳可以看成普通IO。

FPGA IO的基本結(jié)構(gòu)

在《IO輸入輸出的各種模式》介紹了處理器IO的各種輸入輸出模式以及原理,那么FPGA的IO是什么樣的結(jié)構(gòu)和原理?圖 1為Xilinx文檔中提供的IOB的內(nèi)部結(jié)構(gòu),可以看出:

在FPGA IOB內(nèi)部,Pad輸出之前,內(nèi)置上下拉電阻。且可以通過Passive Pull-up/Pull-down模塊控制兩個MOS管的導(dǎo)通與否來控制是否使能上下拉電阻。

內(nèi)部連接Pad的分別有一個Input Buffer和Output Buffer。其中Input Buffer對外應(yīng)該始終呈現(xiàn)高阻狀態(tài),同時可以將Pad上的電平通過Input Buffer傳到I1和I2,或者是下部的FF。Output Buffer有兩個控制信號,分別是Slew Rate Control,用來控制輸出信號的Slew Rate;另一個是三態(tài)控制信號T,可以控制Output Buffer輸出高阻。

內(nèi)部輸出信號Out,可以通過上半部分的FF,經(jīng)Output Clock同步后打出,也可以直接連接到Output buffer的輸入端,直接輸出。

同樣Input Buffer的輸出,可以直接連接到I1和I2,也可以經(jīng)過下半部分的FF,經(jīng)過input clock的同步之后輸出到內(nèi)部總線上。

上下兩個MOS并不是推挽輸出的兩個MOS管,因為并不受到互補(bǔ)信號的控制,并不一定一個導(dǎo)通另一個閉合。

這里介紹一下輸入緩存器的結(jié)構(gòu)和原理,其結(jié)構(gòu)如圖 2所示,其原理與推挽輸出電路非常類似,只是輸入端信號作為了兩個互補(bǔ)MOS管的控制端,控制著輸出端的電平。由于輸入緩沖器有自己的供電電壓,所以輸入電平必須與緩沖器的電源電壓相匹配。D1和D2兩個鉗位二極管用于防治輸入電壓過低或者過高,損壞輸入緩沖器。

普通IO

配置完成之前

在FPGA上電到配置完成之前,由于當(dāng)前FPGA還沒有下載程序,無法區(qū)分哪些引腳被設(shè)計所使用,哪些引腳沒有被使用。此時的普通IO包括兩部分:

該封裝中所有的通用IO引腳。

當(dāng)前所選擇的模式下沒有使用到的所有功能復(fù)用管腳。

在Spartan6系列以及之前的器件中這些引腳的狀態(tài)是根據(jù)HSWAPEN的狀態(tài)決定的。

在7系列以后的器件,包括Ultrascale器件中,這些引腳的狀態(tài)是根據(jù)PUDC_B(Pull-Up During Configuration)引腳

這兩個引腳的功能是相似的,都是用來控制在Configuration完成之前,所有普通IO的上拉電阻是否使能的。對應(yīng)到圖 1中,即Output Buffer輸出高阻,Input Buffer對外始終為高阻,此時選擇是否連接上拉電阻。

配置完成之后

在配置完成之后,F(xiàn)PGA就進(jìn)入正常工作的模式了。在配置完成之后,普通引腳可以分為以下兩種:

工程設(shè)計中使用的IO,即在UCF或者XDC中有明確約束的IO。

其余沒有使用,也沒有約束的IO。(稱為Unassigned Pins)

首先,對于第一種情況,由于已經(jīng)在設(shè)計中明確設(shè)定了這些引腳的設(shè)置,包括方向、電平、驅(qū)動能力等等,所以在配置完成之后,這些引腳的狀態(tài)已經(jīng)被設(shè)置為了預(yù)設(shè)的狀態(tài)。

對于沒有約束的IO,又復(fù)雜一些了。在ISE開發(fā)環(huán)境下,工程完成Implement之后,在Processà Process properties àConfiguration Options中有"-g UnusedPin Unused IOB Pins"屬性,可以選擇Pull Down、Pull Up或者Floating。默認(rèn)狀態(tài)是Pull-Down。對應(yīng)到圖 1中,是高阻輸出,導(dǎo)通下拉電阻。另兩個設(shè)置就是高阻加上上拉電阻或者只是上下拉電阻均不導(dǎo)通。

在Vivado中也有相同的設(shè)置,必須在實現(xiàn)完成之后,打開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。專用引腳的含義就是無論在配置過程中還是配置完成之后,這些引腳無論在什么階段都只用于配置。

所以對于這些引腳考慮相對比較簡單,分為輸入信號和輸出信號。輸入信號的狀態(tài)始終保持LVCMOS電平標(biāo)準(zhǔn),電壓值為VCCO(輸入信號為什么也有電平標(biāo)準(zhǔn)要求,需要與Input buffer的供電電壓相匹配,見圖 2)。輸出信號的狀態(tài)始終保持LVCMOS電平標(biāo)準(zhǔn),電壓為VCCO,12mA drive,fast slew rate。

功能復(fù)用IO

相比于其他引腳,功能復(fù)用引腳的情況是最復(fù)雜的,這些管腳包括與配置相關(guān)的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相關(guān)的AD0P至AD15P、AD0N至AD15N,I2C_SDA以及I2C_SCLK。

為了說清楚功能復(fù)用管腳在不同階段的狀態(tài),將復(fù)用管腳分為以下幾類:

在當(dāng)前所選擇的功能中使用到的功能復(fù)用管腳,例如在選擇BPI配置時的D[00-31]和A[00-28]。

在當(dāng)前所選擇的功能中沒有使用到的功能復(fù)用管腳。例如在選擇SPI配置時的D[00-31]和A[00-28]。

在完成配置之前需要作為輸出或者雙向,總之有可能向外輸出信號的管腳,例如I2C_SDA和I2C_SCLK。

配置完成之前

在FPGA上電至配置完成之前的這段時間內(nèi),前面列出的第一類引腳,即在當(dāng)前所選擇的功能中使用到的功能復(fù)用管腳,狀態(tài)等同于專用配置IO管腳。輸入信號的狀態(tài)始終保持LVCMOS電平標(biāo)準(zhǔn),電壓值為VCCO。輸出信號的狀態(tài)始終保持LVCMOS電平標(biāo)準(zhǔn),電壓為VCCO,12mA drive,fast slew rate。

前面列出的第二類引腳,即在當(dāng)前所選擇的功能中沒有使用到的功能復(fù)用管腳,視同于普通IO,其狀態(tài)受到HSWAPEN或者PUDC_B信號的控制,決定是高阻還是連接弱上拉電阻。

第三類引腳的情況比較復(fù)雜,目前所知的只有I2C_SDA和I2C_SCLK,這兩個信號會在配置完成前出現(xiàn)一些不確定的狀態(tài)。所以如果FPGA的IO還有富余,并且要求所有連接到外部的引腳有確定的狀態(tài),那么最好不要使用這兩個引腳作為連接外設(shè)的IO。

配置完成之后

在FPGA配置完成之后,前面提到的三種引腳會被分成另外三類:

第一類是在用戶設(shè)計中明確配置了需要保留的功能引腳,例如對于配置相關(guān)的引腳設(shè)置了Persist option屬性,這種情況下這些引腳會繼續(xù)保持之前與配置相關(guān)的功能,其狀態(tài)為輸入信號的狀態(tài)始終保持LVCMOS電平標(biāo)準(zhǔn),電壓值為VCCO。輸出信號的狀態(tài)始終保持LVCMOS電平標(biāo)準(zhǔn),電壓為VCCO,12mA drive,slow slew rate。再例如設(shè)計中使用了SYSMON,I2C_SDA和I2C_SCLK引腳則繼續(xù)保持DRP I2C的功能。

第二類是在用戶設(shè)計配置中沒有要求保留其特殊功能,這些引腳在配置完成之后會變成普通IO,且在用戶設(shè)計中沒有使用到的IO。這些IO相當(dāng)于Unassigned IO,如前所述,這些IO在配置完成之后的狀態(tài)受到相應(yīng)設(shè)置的影響,可以是上拉、下拉或者Floating。

第三類是在用戶設(shè)計配置中沒有要求保留其特殊功能,這些引腳在配置完成之后會變成普通IO,并且在用戶設(shè)計中使用到的IO。這些IO的狀態(tài)由用戶設(shè)計控制,會在XDC或者UCF中設(shè)定。如果沒有設(shè)定就會按照默認(rèn)的狀態(tài),輸入端口默認(rèn)狀態(tài)為LVCMOS電平標(biāo)準(zhǔn),電壓值為VCCO;輸出信號默認(rèn)狀態(tài)為保持LVCMOS電平標(biāo)準(zhǔn),電壓為VCCO,12mA drive,slow slew rate。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21777

    瀏覽量

    604734
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2169

    瀏覽量

    121799

原文標(biāo)題:FPGA上電后IO的默認(rèn)狀態(tài)

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    fpga內(nèi)部主要結(jié)構(gòu)及其功能分析(Kintex-7FPGA內(nèi)部結(jié)構(gòu)

    Kintex-7 FPGA的內(nèi)部結(jié)構(gòu)相比傳統(tǒng)FPGA的內(nèi)部結(jié)構(gòu)嵌入了DSP48E1,PCIE,GTX,XADC,高速IO口等單元,大大提升了
    發(fā)表于 08-24 09:26 ?2191次閱讀
    <b class='flag-5'>fpga</b>內(nèi)部主要<b class='flag-5'>結(jié)構(gòu)</b>及其功能分析(Kintex-7<b class='flag-5'>FPGA</b>內(nèi)部<b class='flag-5'>結(jié)構(gòu)</b>)

    stm32沒有配置任何IO口功能的情況下,默認(rèn)IO口是什么狀態(tài)?

    請問各位大佬,32出廠時沒有配置任何IO口功能的情況下,默認(rèn)IO口是什么狀態(tài),是浮空還是說會配置成上下拉或者其他模式啥的,謝謝各位大佬解惑
    發(fā)表于 03-25 06:49

    labview事件結(jié)構(gòu)響應(yīng)外部IO事件

    請教,事件結(jié)構(gòu)如何添加外部IO事件?我擴(kuò)了一張IO卡,我現(xiàn)在把IO卡的狀態(tài)讀到一個變量中,將變量值改變加到事件中,
    發(fā)表于 11-02 17:06

    FPGA IO設(shè)計

    會有比較詳細(xì)的結(jié)構(gòu)圖,因為是新人對于找資料解決問題,還是比較弱,往往無從下手)2. 想對FPGAIO,設(shè)計成可配置的形式,可以當(dāng)普通IO口使用,有輸入輸出,也可以配置成復(fù)用模式,可配
    發(fā)表于 10-31 20:13

    FPGAIO

    `關(guān)鍵內(nèi)容提要:(1) FPGA IO命名方式;(2) FPGA的上電時序 今天想和大家一起聊聊FPGAIO。先說說我當(dāng)年入門的經(jīng)歷吧。國
    發(fā)表于 07-18 14:26

    如何拉低我的FPGA的所有io引腳狀態(tài)

    大家好, 我在spartan-6 FPGA(XC6SLX9TQ144)板上遇到了問題。我發(fā)現(xiàn)我的FPGA的所有io引腳在配置之前都處于高位狀態(tài)。但是我需要它們低。我不知道究竟是什么原因
    發(fā)表于 07-26 12:00

    請問DSP2812的IO口定義成輸出不指定狀態(tài)情況下的默認(rèn)電平?

    芯片DSP2812,初始化一些管腳為普通IO口,方向是輸出引腳,沒有指定狀態(tài),請問引腳此時的默認(rèn)狀態(tài)是什么電平,是否與內(nèi)部結(jié)構(gòu)有關(guān),內(nèi)部弱上
    發(fā)表于 07-20 07:49

    FPGA所有IO狀態(tài)進(jìn)行分析

    設(shè)計、引腳分配產(chǎn)生非常重要的影響。這篇專題就針對FPGA從上電開始 ,配置程序,到正常工作整個過程中所有IO狀態(tài)進(jìn)行分析?! 臅r間階段可以分為兩部分,第一階段是從FPGA上電開始直
    發(fā)表于 01-08 17:29

    怎么給FPGA的I/O引腳初始狀態(tài)默認(rèn)設(shè)為低電平?

    實驗中發(fā)現(xiàn)在如果在初始是不給FPGAIO引腳執(zhí)行操作,默認(rèn)的輸出時高電平,怎么回事呢?想設(shè)成是低電平,該怎么辦?
    發(fā)表于 04-23 14:49

    IO狀態(tài)切換說明.pdf

    IO狀態(tài)切換說明
    發(fā)表于 04-01 18:50 ?22次下載
    <b class='flag-5'>IO</b>口<b class='flag-5'>狀態(tài)</b>切換說明.pdf

    一文詳解Spartan-6系列IO Tile結(jié)構(gòu)

    對Spartan-6系列FPGA來說,一個IO Tile包括2個IOB、2個ILOGIC、2個OLOGIC、2個IODELAY。 圖 1Spartan-6系列IO Tile結(jié)構(gòu)圖 圖
    的頭像 發(fā)表于 07-14 06:50 ?8394次閱讀
    一文詳解Spartan-6系列<b class='flag-5'>IO</b> Tile<b class='flag-5'>結(jié)構(gòu)</b>

    改變單片機(jī)IO默認(rèn)電平

    c51單片機(jī)上電后io默認(rèn)的電平默認(rèn)都是高電平,因為只不過P0沒有內(nèi)部上拉電阻,是弱上拉,不加外部上拉電阻的話只能驅(qū)動外部的門電路。P1到P3都有上拉電阻,是強(qiáng)上拉,可以直接驅(qū)動外部的接口電路。
    發(fā)表于 11-21 16:08 ?1.3w次閱讀
    改變單片機(jī)<b class='flag-5'>IO</b>口<b class='flag-5'>默認(rèn)</b>電平

    FPGA上電后IO默認(rèn)狀態(tài)

    在進(jìn)行FPGA硬件設(shè)計時,引腳分配是非常重要的一個環(huán)節(jié),特別是在硬件電路上需要與其他芯片通行的引腳。Xilinx FPGA從上電之后到正常工作整個過程中各個階段引腳的狀態(tài),會對硬件設(shè)計、引腳分配產(chǎn)生非常重要的影響。這篇專題就針對
    發(fā)表于 11-28 14:41 ?1.6w次閱讀
    <b class='flag-5'>FPGA</b>上電后<b class='flag-5'>IO</b>的<b class='flag-5'>默認(rèn)</b><b class='flag-5'>狀態(tài)</b>

    LPC單片機(jī)IO默認(rèn)狀態(tài)、復(fù)位狀態(tài)、未初始化時輸出高電平處理

    由STM32切換到LPC1788,發(fā)現(xiàn)LPC的IO未初始化時輸出高電平,初始化后才能拉低,這樣和STM32的設(shè)計就不兼容了。分析查LPC數(shù)據(jù)手冊后,發(fā)現(xiàn):復(fù)位狀態(tài)為輸入模式,上拉模式。后面也有具體
    發(fā)表于 11-17 09:21 ?2次下載
    LPC單片機(jī)<b class='flag-5'>IO</b>口<b class='flag-5'>默認(rèn)</b><b class='flag-5'>狀態(tài)</b>、復(fù)位<b class='flag-5'>狀態(tài)</b>、未初始化時輸出高電平處理

    FPGA 結(jié)構(gòu)分析 -IO 資源

    工作方式; IO串并轉(zhuǎn)換資源:分析IO資源如何實現(xiàn)串并轉(zhuǎn)換。 其中第二、三系列是對第一系列中的部分內(nèi)容進(jìn)行更進(jìn)一步的詳細(xì)描述。本篇是對于第一個系列——IO資源進(jìn)行部分描述,共分為幾個章節(jié)進(jìn)行具體闡述。
    的頭像 發(fā)表于 12-13 13:20 ?1885次閱讀