【INOUT端口】

inout端口

  • [1 使用场景](#1 使用场景)
  • [2 内部模块禁用INOUT](#2 内部模块禁用INOUT)
  • [3 使用要点](#3 使用要点)
  • [4 验证要点](#4 验证要点)
  • [4 什么是芯片I/O PAD](#4 什么是芯片I/O PAD)

inout端口--module端口除了input和output接口,还有就是较为常用的inout端口;
在具体Verilog设计中,inout端口用于实现双向数据传输,即可以作为输入,也可以作为输出;
具体综合成电路就是所谓的三态门;第三态就是高阻态(类似断开连接,不驱动信号线);
inout引脚:
输出模式:使能三态门,驱动外部信号;
输入模式:高阻态,读取外部信号,

1 使用场景

使用场景:主要使用在芯片的顶层引脚PIN,而极少用于内部模块间的信号连接。主要是为了减少芯片封装的引脚数量(QFP-64仅仅有64个PIN);

2 内部模块禁用INOUT

  • 多驱动源易导致短路 ;I/O总线仲裁;
  • 时序收敛:方向切换路径较难满足建立/保持时间; I/O PAD单元预制缓冲;
  • 物理布局:标准单元库无专用三态门 ;I/O专用库支持;

3 使用要点

1.inout端口必须声明为wire类型;

2.使用assign语句赋值:inout端口的赋值必须使用assign语句,不能在always块中赋值;

3.使用专门三态表达式:根据控制信号来选择具体的值或者高阻态;

verilog 复制代码
module top_chip (
    inout [7:0] GPIO,     // 双向引脚
    input       GPIO_DIR  // 方向控制
);

    // 三态驱动器(仅连接I/O Pad)
    assign GPIO = GPIO_DIR ? internal_tx_data : 8'bz;

    // 输入接收器
    always @(posedge clk) begin
        internal_rx_data <= GPIO;
    end

    // 内部模块仅用单向信号
    core_module u_core (
        .data_in(internal_rx_data),
        .data_out(internal_tx_data),
        .dir(GPIO_DIR)
    );
endmodule

4 验证要点

对SoC验证来说,面对顶层INOUT的端口,在进行验证时,需特别注意什么:

我们正在处理一个可能被用作INOUT端口的信号waddr.在验证中,对INOUT端口施加激励需要特别注意方向控制、冲突避免和采样时机。以下是针对这类端口验证的关键要点:

核心要点:

方向控制(Direction Control):

  • 必须为INOUT端口定义一个方向控制信号(如dir_waddr),用于指示当前是输入还是输出模式。
  • 当dir_waddr=1时,DUT驱动waddr(输出模式),验证平台应将其视为输入(即从DUT读取数据),且不能驱动该线。
  • 当dir_waddr=0时,DUT不驱动waddr(输入模式),验证平台负责驱动该端口。

三态行为模拟(Tri-state Modeling):

在DUT输出模式下,验证平台必须释放对waddr总线的驱动(置为高阻态'z'),否则会发生总线冲突(两个源同时驱动同一线路)。

在测试平台中使用条件驱动:仅在方向为输入模式时驱动数据。

冲突检测(Contention Detection):

在仿真中,如果检测到当dir_waddr=1(DUT输出模式)时测试平台仍然在驱动waddr(非'z'),必须报错(使用断言或运行时检查)。

当dir_waddr=0且DUT意外驱动waddr(非'z'),也应报错。

输入模式(Input Mode)激励:

当端口配置为输入模式(dir_waddr=0)时,测试平台需提供有效的激励数据(即驱动waddr为特定地址值)。

输出模式(Output Mode)采样:

当端口配置为输出模式(dir_waddr=1)时,测试平台应在恰当的时钟边沿采样waddr的值(比如时钟上升沿后若干时间)。

采样值与预期值比较(如通过DUT操作后的地址)。

测试场景:

测试平台应覆盖以下场景:

a. 输出模式:DUT成功驱动地址,测试平台读取正确。

b. 输入模式:测试平台驱动地址,DUT正确响应(比如根据地址访问内存,并在rdata上输出对应数据)。

c. 方向切换测试:在数据传输过程中切换方向,观察冲突处理和恢复机制。

d. 高阻态处理:当端口处于高阻态时,确保总线能被其他设备正确驱动。

4 什么是芯片I/O PAD

I/O PAD是ASIC后端设计的重要单元:用来将芯片中的逻辑信号电平转换为芯片外部的信号电平;

即I/O pad是与芯片外部PCB板上连接的;I/O PIN是与芯片内部逻辑相连的;

一般功能有:

  • 驱动电路:驱动能力--2mA(芯片)-->64mA(PCB)
  • 电平转换器:将逻辑电压:(0.8v~1.2V)-->外部接口电压(3.3v/5v);
  • ESD保护电路结构:
  • 焊盘:绑定连接封装引脚等;
相关推荐
林清海笙4 个月前
【集成电路版图设计学习笔记】1. Introduction to Layout Design
ic·cadence·集成电路·版图设计
seu他山之石5 个月前
插爆区域引小buf搬出去
linux·ic
尼德兰的喵6 个月前
【读书笔记·VLSI电路设计方法解密】问题46:什么是bug覆盖率
bug·ic·芯片
CRyyc8 个月前
供应ETA85601暴力风扇,高速风筒桥驱
ic·电子元器件·集成电路ic
YHPsophie8 个月前
HT7183:16V, 4.5A的DC-DC升压转换器,常用在数码相机里
单片机·嵌入式硬件·ic·dc-dc·升压转换器
中古传奇8 个月前
【IC面试问题:UCIE PHY LSM && AXI && Cache】
面试·ic
tlog9 个月前
【verilog教程】verilog带参数例化
linux·fpga开发·ic·fpga·asic
tlog9 个月前
【verilog教程】verilog函数
linux·fpga开发·ic·fpga·asic
tlog9 个月前
【verilog教程】verilog任务
linux·fpga开发·ic·fpga·asic