当前位置: 首页 > news >正文

【INOUT端口】

inout端口

  • 1 使用场景
  • 2 内部模块禁用INOUT
  • 3 使用要点
  • 4 验证要点
  • 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.使用专门三态表达式:根据控制信号来选择具体的值或者高阻态;

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) begininternal_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保护电路结构:
  • 焊盘:绑定连接封装引脚等;
http://www.dtcms.com/a/339326.html

相关文章:

  • HarmonyOS 中的 setInterval的基本使用
  • openssl生成自签名证书的方法
  • 飞算JavaAI颠覆传统:SpringBoot项目开发效率革命实录
  • 基于uni-app的成人继续教育教务管理系统设计与实现
  • 0.开篇简介
  • 微信小程序连接到阿里云物联网平台
  • LeetCode 135.分发糖果:双向遍历下的贪心策略应用
  • Kubernetes Pod 控制器
  • Effective C++ 条款50:了解new和delete的合理替换时机
  • 实践项目-1
  • jenkins自动化部署
  • 七十二、【Linux数据库】MySQL数据库MHA集群概述 、 部署MHA集群
  • 当MySQL的int不够用了
  • GTSAM中实现多机器人位姿图优化(multi-robot pose graph optimization)示例
  • 权限管理系统
  • 动手学深度学习(pytorch版):第四章节—多层感知机(7、8)数值稳定性和模型初始化
  • 《算法导论》第 31 章 - 数论算法
  • 个人介绍CSDNmjhcsp
  • Kubernetes集群安装部署--flannel
  • Vue 2 项目中快速集成 Jest 单元测试(超详细教程)
  • 云计算学习100天-第23天
  • github 上传代码步骤
  • 【Python】新手入门:python模块是什么?python模块有什么作用?什么是python包?
  • Day13_【DataFrame数据组合merge连接】【案例】
  • 嵌入式开发学习———Linux环境下网络编程学习(三)
  • 第5.5节:awk算术运算
  • RabbitMQ:交换机(Exchange)
  • LeetCode-17day:贪心算法
  • 95、23种设计模式之建造者模式(4/23)
  • 大模型 + 垂直场景:搜索/推荐/营销/客服领域开发新范式与技术实践