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

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

3天内不再提示

双向IO与IOB详解

FPGA技术驿站 来源:FPGA技术驿站 2024-09-18 10:39 次阅读

典型的全双工(Full Duplex)系统如下图所示,芯片1和芯片2之间有彼此独立的数据传输线,这意味着芯片1和芯片2可以同时给对方发送数据而不会发生冲突。SPI/UART采用的就是全双工通信方式。半双工系统则不同,芯片1和芯片2之间只有一条专用的且被彼此共享的数据传输线。这就要求芯片1和芯片2必须协商好,当前谁发送数据,谁接收数据。如果两者同时发送数据就会导致发送冲突,从而造成数据丢失。I2C采用的就是半双工通信方式。

wKgaombqPVCAYUurAAAQgYY5cBs627.jpg

wKgZombqPVCAF-zxAAAUpdyYQm4735.jpg

在上面两张图片中,其中的三角形代表输入/输出缓冲器(IBUF/OBUF),在半双工系统中,多了一个控制信号TxEn,该信号控制的是三态缓冲器。这里我们先看一下三态缓冲器的真值表,如下图所示。可以看到TxEn为1时三态缓冲器输出等于输入,为0时,输出为高阻。当芯片1和芯片2的TxEn均为高时,两者均会驱动数据传输线发送数据,造成冲突。这在半双工系统中是一定要避免的。

wKgaombqPVCAdFxWAAAx5i896AQ450.jpg

无论是VHDL还是Verilog/SystemVerilog,都提供了相应的语句描述三态缓冲器,而综合工具也可将其正确地推断出来。下面给出了三态缓冲器对应的VHDL代码和Verilog代码。其中io_data被声明为双向信号。需要注意的是尽管VHDL不区分大小写,但高阻态则必须用大写Z来表示,Verilog中大小写均可。

VHDL代码

wKgZombqPVCAH4foAAA08SenqNc918.jpg

Verilog/SystemVerilog代码

wKgZombqPVCAVwOSAAAsam0vIwo456.jpg

当前主流的FPGA结构中,三态缓冲器只存在于IOB(Input/Output Block)中。因此,对应的双向IO一定要放在设计的顶层、。如果在子模块中使用了三态缓冲器,如下图的I2C子模块,因为综合工具判断其出现在子模块中,所以会将三态缓冲器移除使其成为普通输出,从而造成功能错误。

wKgaombqPVCAQ9MkAAAquJtMsgs104.jpg

我们看一个案例,相应的VHDL代码和SystemVerilog代码如下图所示。双向端口bio均通过关键字inout定义。bio作为输入时和信号b相关,作为输出时和信号a相关。信号a由寄存器输出,信号b连接输出寄存器的输入端。这两组寄存器都可以放置在IOB内。

wKgaombqPVCAFwEAAAF9JPcqaTk896.jpg

wKgaombqPVCANyVCAABRCX9w28w254.jpg

通过如下图所示约束可将这两组寄存器放置在IOB内,这里属性IOB的作用对象是通过命令get_cells获取的寄存器对象。通过命令report_datasheet可查看是否放置成功。如显示FDRE(IO)则说明该寄存器在IOB内。

wKgZombqPVCAXLDLAAAn5f7HaS4916.jpg

wKgZombqPVGAWHkYAADI5clP4zc945.jpg

也可以通过report_io_reg查看寄存器是否在IOB内。

wKgZombqPVCAAEWpAAAIVFTxS8o653.jpg

wKgaombqPVGAAnGkAAFHkeCLZFU995.jpg

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

    关注

    1625

    文章

    21663

    浏览量

    601666
  • 芯片
    +关注

    关注

    453

    文章

    50360

    浏览量

    421634
  • 缓冲器
    +关注

    关注

    6

    文章

    1914

    浏览量

    45445
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109970

原文标题:双向IO与IOB

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是准双向IO和开漏输出?上拉电阻的好处和选择原则

    单片机IO口内部的结构,主要是三种:准双向IO、开漏输出、强推挽输出
    的头像 发表于 11-09 16:27 1563次阅读
    什么是准<b class='flag-5'>双向</b><b class='flag-5'>IO</b>和开漏输出?上拉电阻的好处和选择原则

    FPGA中双向端口IO的研究

    [attach]***[/attach]FPGA中双向端口IO的研究针对现 场 可 编 程 门 阵 列 芯 片 的 特 点 研 究 中 双 向 端 口 的 设 计同 时 给出 仿真初始化双向端口 的方法 采用这种
    发表于 08-12 12:00

    无法将符号组合到单个IOB

    的符号和/或与输入,输出,或一致的性质类型的IO组件双向使用,不包含需要更具体的IO组件类型的其他符号或属性。每个下面的约束指定了一个非法物理站点类型IOB的组分:符号
    发表于 10-10 11:49

    DCM/IOB不合适

    嗨,我的项目合成确定,但在奇怪的错误实现中断:地点:1012- 已发现时钟IOB / DCM组件对未放置在最佳时钟IOB / DCM站点对。时钟组件放置在现场。如果将时钟IO / DCM站点放置
    发表于 05-10 09:29

    IOB / BUFGCTRL时钟元件对发生错误

    IO可以使用IOB和时钟缓冲器之间的快速路径。具有时钟功能的IOB站点,在其设备的一半(TOP或BOTTOM)中具有专用于BUFGCTRL站点的快速路径。您可能想要分析存在此问题的原因并进行更正。这
    发表于 09-06 10:33

    不兼容的IOB被锁定到同一个银行11冲突的IO标准是什么

    锁定IOB的列表:fmc_imageon_vita_receiver_0_io_vita_spi_mosi_pin hdmi_data [23
    发表于 07-14 15:53

    stm32单片机准双向IO口配置介绍

    我们在开始学习51内核的单片机的时候就知道,p0口的引脚都是双向IO口,P1,P2,P3的IO口需要双向使用时需要外接上拉电阻,故称为准双向
    发表于 02-21 07:00

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

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

    《Linux设备驱动开发详解》第11章、内存与IO访问

    《Linux设备驱动开发详解》第11章、内存与IO访问
    发表于 10-27 11:27 6次下载
    《Linux设备驱动开发<b class='flag-5'>详解</b>》第11章、内存与<b class='flag-5'>IO</b>访问

    《Linux设备驱动开发详解》第9章、Linux设备驱动中的异步通知与异步IO

    《Linux设备驱动开发详解》第9章、Linux设备驱动中的异步通知与异步IO
    发表于 10-27 11:33 0次下载
    《Linux设备驱动开发<b class='flag-5'>详解</b>》第9章、Linux设备驱动中的异步通知与异步<b class='flag-5'>IO</b>

    《Linux设备驱动开发详解》第8章、Linux设备驱动中的阻塞与非阻塞IO

    《Linux设备驱动开发详解》第8章、Linux设备驱动中的阻塞与非阻塞IO
    发表于 10-27 11:35 9次下载
    《Linux设备驱动开发<b class='flag-5'>详解</b>》第8章、Linux设备驱动中的阻塞与非阻塞<b class='flag-5'>IO</b>

    FPGA中IOB寄存器的使用教程详细说明

    一个fpga主要是由可编程输入输出单元(图中的IOB模块),可编程逻辑单元(CLB模块),块RAM(图中的BRAM,也属于内嵌硬件),数字时钟管理(DCM,也属于内嵌硬件),还有一些内嵌的专用的硬件模块(DSP),IOB寄存器就在图中的
    发表于 12-28 17:13 19次下载

    FPGA中IOB寄存器的使用心得

     一个fpga主要是由可编程输入输出单元(图中的IOB模块),可编程逻辑单元(CLB模块),块RAM(图中的BRAM,也属于内嵌硬件),数字时钟管理(DCM,也属于内嵌硬件),还有一些内嵌的专用的硬件模块(DSP),IOB寄存器就在图中的
    发表于 12-28 17:13 9次下载

    xilinx FPGA的IOB使用教程说明

    xilinx FPGA的资源一般指IOB,CLB,BRAM,DCM,DSP五种资源。其中IOB就是input/output block,完成不同电气特性下对输入输出信号的的驱动和匹配要求。
    发表于 12-29 16:59 12次下载
    xilinx FPGA的<b class='flag-5'>IOB</b>使用教程说明

    关于stm32单片机准双向IO口配置

    我们在开始学习51内核的单片机的时候就知道,p0口的引脚都是双向IO口,P1,P2,P3的IO口需要双向使用时需要外接上拉电阻,故称为准双向
    发表于 12-24 19:19 19次下载
    关于stm32单片机准<b class='flag-5'>双向</b><b class='flag-5'>IO</b>口配置