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

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

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

雙向IO與IOB詳解

FPGA技術(shù)驛站 ? 來(lái)源:FPGA技術(shù)驛站 ? 2024-09-18 10:39 ? 次閱讀

典型的全雙工(Full Duplex)系統(tǒng)如下圖所示,芯片1和芯片2之間有彼此獨(dú)立的數(shù)據(jù)傳輸線,這意味著芯片1和芯片2可以同時(shí)給對(duì)方發(fā)送數(shù)據(jù)而不會(huì)發(fā)生沖突。SPI/UART采用的就是全雙工通信方式。半雙工系統(tǒng)則不同,芯片1和芯片2之間只有一條專用的且被彼此共享的數(shù)據(jù)傳輸線。這就要求芯片1和芯片2必須協(xié)商好,當(dāng)前誰(shuí)發(fā)送數(shù)據(jù),誰(shuí)接收數(shù)據(jù)。如果兩者同時(shí)發(fā)送數(shù)據(jù)就會(huì)導(dǎo)致發(fā)送沖突,從而造成數(shù)據(jù)丟失。I2C采用的就是半雙工通信方式。

wKgaombqPVCAYUurAAAQgYY5cBs627.jpg

wKgZombqPVCAF-zxAAAUpdyYQm4735.jpg

在上面兩張圖片中,其中的三角形代表輸入/輸出緩沖器(IBUF/OBUF),在半雙工系統(tǒng)中,多了一個(gè)控制信號(hào)TxEn,該信號(hào)控制的是三態(tài)緩沖器。這里我們先看一下三態(tài)緩沖器的真值表,如下圖所示??梢钥吹絋xEn為1時(shí)三態(tài)緩沖器輸出等于輸入,為0時(shí),輸出為高阻。當(dāng)芯片1和芯片2的TxEn均為高時(shí),兩者均會(huì)驅(qū)動(dòng)數(shù)據(jù)傳輸線發(fā)送數(shù)據(jù),造成沖突。這在半雙工系統(tǒng)中是一定要避免的。

wKgaombqPVCAdFxWAAAx5i896AQ450.jpg

無(wú)論是VHDL還是Verilog/SystemVerilog,都提供了相應(yīng)的語(yǔ)句描述三態(tài)緩沖器,而綜合工具也可將其正確地推斷出來(lái)。下面給出了三態(tài)緩沖器對(duì)應(yīng)的VHDL代碼和Verilog代碼。其中io_data被聲明為雙向信號(hào)。需要注意的是盡管VHDL不區(qū)分大小寫(xiě),但高阻態(tài)則必須用大寫(xiě)Z來(lái)表示,Verilog中大小寫(xiě)均可。

VHDL代碼

wKgZombqPVCAH4foAAA08SenqNc918.jpg

Verilog/SystemVerilog代碼

wKgZombqPVCAVwOSAAAsam0vIwo456.jpg

當(dāng)前主流的FPGA結(jié)構(gòu)中,三態(tài)緩沖器只存在于IOB(Input/Output Block)中。因此,對(duì)應(yīng)的雙向IO一定要放在設(shè)計(jì)的頂層、。如果在子模塊中使用了三態(tài)緩沖器,如下圖的I2C子模塊,因?yàn)榫C合工具判斷其出現(xiàn)在子模塊中,所以會(huì)將三態(tài)緩沖器移除使其成為普通輸出,從而造成功能錯(cuò)誤。

wKgaombqPVCAQ9MkAAAquJtMsgs104.jpg

我們看一個(gè)案例,相應(yīng)的VHDL代碼和SystemVerilog代碼如下圖所示。雙向端口bio均通過(guò)關(guān)鍵字inout定義。bio作為輸入時(shí)和信號(hào)b相關(guān),作為輸出時(shí)和信號(hào)a相關(guān)。信號(hào)a由寄存器輸出,信號(hào)b連接輸出寄存器的輸入端。這兩組寄存器都可以放置在IOB內(nèi)。

wKgaombqPVCAFwEAAAF9JPcqaTk896.jpg

wKgaombqPVCANyVCAABRCX9w28w254.jpg

通過(guò)如下圖所示約束可將這兩組寄存器放置在IOB內(nèi),這里屬性IOB的作用對(duì)象是通過(guò)命令get_cells獲取的寄存器對(duì)象。通過(guò)命令report_datasheet可查看是否放置成功。如顯示FDRE(IO)則說(shuō)明該寄存器在IOB內(nèi)。

wKgZombqPVCAXLDLAAAn5f7HaS4916.jpg

wKgZombqPVGAWHkYAADI5clP4zc945.jpg

也可以通過(guò)report_io_reg查看寄存器是否在IOB內(nèi)。

wKgZombqPVCAAEWpAAAIVFTxS8o653.jpg

wKgaombqPVGAAnGkAAFHkeCLZFU995.jpg

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

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600449
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    49927

    瀏覽量

    419589
  • 緩沖器
    +關(guān)注

    關(guān)注

    6

    文章

    1905

    瀏覽量

    45394
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1334

    瀏覽量

    109844

原文標(biāo)題:雙向IO與IOB

文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是準(zhǔn)雙向IO和開(kāi)漏輸出?上拉電阻的好處和選擇原則

    單片機(jī)IO口內(nèi)部的結(jié)構(gòu),主要是三種:準(zhǔn)雙向IO、開(kāi)漏輸出、強(qiáng)推挽輸出
    的頭像 發(fā)表于 11-09 16:27 ?1384次閱讀
    什么是準(zhǔn)<b class='flag-5'>雙向</b><b class='flag-5'>IO</b>和開(kāi)漏輸出?上拉電阻的好處和選擇原則

    FPGA中雙向端口IO的研究

    [attach]***[/attach]FPGA中雙向端口IO的研究針對(duì)現(xiàn) 場(chǎng) 可 編 程 門 陣 列 芯 片 的 特 點(diǎn) 研 究 中 雙 向 端 口 的 設(shè) 計(jì)同 時(shí) 給出 仿真初始化雙向端口 的方法 采用這種
    發(fā)表于 08-12 12:00

    無(wú)法將符號(hào)組合到單個(gè)IOB

    的符號(hào)和/或與輸入,輸出,或一致的性質(zhì)類型的IO組件雙向使用,不包含需要更具體的IO組件類型的其他符號(hào)或?qū)傩?。每個(gè)下面的約束指定了一個(gè)非法物理站點(diǎn)類型IOB的組分:符號(hào)
    發(fā)表于 10-10 11:49

    DCM/IOB不合適

    嗨,我的項(xiàng)目合成確定,但在奇怪的錯(cuò)誤實(shí)現(xiàn)中斷:地點(diǎn):1012- 已發(fā)現(xiàn)時(shí)鐘IOB / DCM組件對(duì)未放置在最佳時(shí)鐘IOB / DCM站點(diǎn)對(duì)。時(shí)鐘組件放置在現(xiàn)場(chǎng)。如果將時(shí)鐘IO / DCM站點(diǎn)放置
    發(fā)表于 05-10 09:29

    IOB / BUFGCTRL時(shí)鐘元件對(duì)發(fā)生錯(cuò)誤

    IO可以使用IOB和時(shí)鐘緩沖器之間的快速路徑。具有時(shí)鐘功能的IOB站點(diǎn),在其設(shè)備的一半(TOP或BOTTOM)中具有專用于BUFGCTRL站點(diǎn)的快速路徑。您可能想要分析存在此問(wèn)題的原因并進(jìn)行更正。這
    發(fā)表于 09-06 10:33

    不兼容的IOB被鎖定到同一個(gè)銀行11沖突的IO標(biāo)準(zhǔn)是什么

    鎖定IOB的列表:fmc_imageon_vita_receiver_0_io_vita_spi_mosi_pin hdmi_data [23
    發(fā)表于 07-14 15:53

    stm32單片機(jī)準(zhǔn)雙向IO口配置介紹

    我們?cè)陂_(kāi)始學(xué)習(xí)51內(nèi)核的單片機(jī)的時(shí)候就知道,p0口的引腳都是雙向IO口,P1,P2,P3的IO口需要雙向使用時(shí)需要外接上拉電阻,故稱為準(zhǔn)雙向
    發(fā)表于 02-21 07:00

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

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

    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第11章、內(nèi)存與IO訪問(wèn)

    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第11章、內(nèi)存與IO訪問(wèn)
    發(fā)表于 10-27 11:27 ?6次下載
    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)<b class='flag-5'>詳解</b>》第11章、內(nèi)存與<b class='flag-5'>IO</b>訪問(wèn)

    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第9章、Linux設(shè)備驅(qū)動(dòng)中的異步通知與異步IO

    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第9章、Linux設(shè)備驅(qū)動(dòng)中的異步通知與異步IO
    發(fā)表于 10-27 11:33 ?0次下載
    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)<b class='flag-5'>詳解</b>》第9章、Linux設(shè)備驅(qū)動(dòng)中的異步通知與異步<b class='flag-5'>IO</b>

    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第8章、Linux設(shè)備驅(qū)動(dòng)中的阻塞與非阻塞IO

    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解》第8章、Linux設(shè)備驅(qū)動(dòng)中的阻塞與非阻塞IO
    發(fā)表于 10-27 11:35 ?9次下載
    《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)<b class='flag-5'>詳解</b>》第8章、Linux設(shè)備驅(qū)動(dòng)中的阻塞與非阻塞<b class='flag-5'>IO</b>

    FPGA中IOB寄存器的使用教程詳細(xì)說(shuō)明

    一個(gè)fpga主要是由可編程輸入輸出單元(圖中的IOB模塊),可編程邏輯單元(CLB模塊),塊RAM(圖中的BRAM,也屬于內(nèi)嵌硬件),數(shù)字時(shí)鐘管理(DCM,也屬于內(nèi)嵌硬件),還有一些內(nèi)嵌的專用的硬件模塊(DSP),IOB寄存器就在圖中的
    發(fā)表于 12-28 17:13 ?19次下載

    FPGA中IOB寄存器的使用心得

     一個(gè)fpga主要是由可編程輸入輸出單元(圖中的IOB模塊),可編程邏輯單元(CLB模塊),塊RAM(圖中的BRAM,也屬于內(nèi)嵌硬件),數(shù)字時(shí)鐘管理(DCM,也屬于內(nèi)嵌硬件),還有一些內(nèi)嵌的專用的硬件模塊(DSP),IOB寄存器就在圖中的
    發(fā)表于 12-28 17:13 ?9次下載

    xilinx FPGA的IOB使用教程說(shuō)明

    xilinx FPGA的資源一般指IOB,CLB,BRAM,DCM,DSP五種資源。其中IOB就是input/output block,完成不同電氣特性下對(duì)輸入輸出信號(hào)的的驅(qū)動(dòng)和匹配要求。
    發(fā)表于 12-29 16:59 ?12次下載
    xilinx FPGA的<b class='flag-5'>IOB</b>使用教程說(shuō)明

    關(guān)于stm32單片機(jī)準(zhǔn)雙向IO口配置

    我們?cè)陂_(kāi)始學(xué)習(xí)51內(nèi)核的單片機(jī)的時(shí)候就知道,p0口的引腳都是雙向IO口,P1,P2,P3的IO口需要雙向使用時(shí)需要外接上拉電阻,故稱為準(zhǔn)雙向
    發(fā)表于 12-24 19:19 ?19次下載
    關(guān)于stm32單片機(jī)準(zhǔn)<b class='flag-5'>雙向</b><b class='flag-5'>IO</b>口配置