i2c_SLAVE

2023-11-01

 driver:

driver通过I2C的接口与DUT相连,负责接收DUT通过接口传来的地址数据等读写信息并作出反应。将sequencer中传来的trans中的数据驱动到总线上并根据设置的ack和nack作出回应,将总线上写来的数据存到trans中并将其返回,整体思路如下图所示。有三个线程分别负责监控start的产生、stop的产生、数据的分析及回应。下图仅仅为数据分析线程。监控start产生的线程判断try_get旗语中的key是否是1 ,是的话,那么就表示这是start,如果是0,那么就是监控到restart;监控stop产生的线程里面将旗语的keyput回去,则表示全部结束。旗语负责线程同步,识别是start还是restart。

数据分析线程中,等待start或者restart的产生,然后收集总线上的第一个byte(8位)数据,接着casex分析第一个byte数据地址并分别作出回应。

如果是保留地址,那么就在i2c_if.SCL的上升沿后拉高sda_slave(拉高SDA)回应NACK。结束。

如果是general_call,将命令赋值给trans.cmd,回应ACK,接着收集第二个byte数据并回应ACK,然后收集总线上发送的SDA数据。(这里第二个byte数据的具体作用和含义需要更复杂的功能,在此处难以实现,因此验证中主机将第二个byte发送完毕后就发送STOP结束)

如果是START_BYTE,将start_flag标志置0后continue,接着从forever头开始执行,等待START。

如果是HS_MODE,按照协议回NACK,然后continue,接着从forever头开始执行,等待START。

如果是DEVICE_ID,回ACK,然后判断读写位是1还是0,是0 的话,continue,接着从forever头开始执行,等待START。是1的话,将device id的3byte值驱动到总线上。

如果是10bitADDR,先判断地址高两位是否一致,不一致则回复NACK,一致的话,回复ACK并判断读写位,是写,则接收第二byte数据判断是否匹配,不匹配则回复NACK,匹配的话,就回复ACK并释放总线,(如果是读,那么这里主机会产生RS,收集数据这里就不会执行)接收总线上传来的数据。是读,那么就直接将trans.data的数据驱动到总线上。

如果是7bitADDR,先判断地址匹配,不匹配回复NACK。匹配回复ACK,如果是写,释放总线,接收SDA上数据。如果是读,就将trans.data上的数据驱动到总线上。

线程执行顺序一般是监控START的线程先执行(其中为forever循环体,一直在监控,没有break),监控到START,然后分析数据线程执行,此线程中有break,可能提前终止,最后是监控STOP 的线程,当此线程执行时,里面会将收集到的mon_data都赋值给trans.data,并将旗语的key放回,return结束。三个线程有任意一个结束就disable全部结束。

monitor:

monitor的整体思路与driver,只是monitor中不必考虑ACK和NACK的回复,以及监控总线数据的时候,只需要关心cmd命令类型,以及data和addr,并将其收集在trans中后发送给scoreboard和coverage model。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

i2c_SLAVE 的相关文章

  • 餐饮便利店服装店线下零售场景都有刷脸支付需求

    此前 支付宝已经开始打通江浙沪数个城市之间的二维码乘车 前几天也在北欧促成了两大移动支付APP的互通 如今刷脸支付还未普及 但是刷脸支付的前景可谓一片大好 未来包括超市 便利店 药房 服装店等等的众多线下零售场景都会有刷脸支付的需求 常见蜻
  • MySQL之Innodb锁机制:Next-Key Lock 浅谈

    阅读 InnoDB存储引擎 第六章涉及锁的三种算法 整理结合转载文档 https www cnblogs com zhoujinyi p 3435982 html 数据库使用锁是为了支持更好的并发 提供数据的完整性和一致性 InnoDB是一
  • 6个步骤,告诉你如何用树莓派和机器学习DIY一个车牌识别器!(附详细分析)...

    作者 Robert Lucian Chiriac 翻译 天道酬勤 编辑 Carol 出品 AI科技大本营 ID rgznai100 几个月前 作者开始考虑让汽车能够具备检测和识别物体的能力 他很喜欢这个主意 因为已经见识到了特斯拉的能力 并
  • (渗透学习)理解java反序列化漏洞原理---层序渐进

    没真正学过java 对很多概念理解的不清晰 所以下面所有都是参考资料结合我自己的理解 可能存在错误 1 为什么要序列化 因为只有字节数据才能进行存储和传输 所以为了使对象 如class类 能够存储 传输 就需要将对象转成字节的形式 存储 把
  • tomcat显示启动成功,访问不了

    问题阐述 解压tomcat成功之后 发现访问不了 问题分析 1 开通了防火墙 但是没有放开8080端口号 查看防火墙状态 firewall cmd state 显示running表示防火墙是开启状态 执行放开8080端口的命令 firewa
  • 三个月后,快手To B怎么样了?

    未来 如何独立作战和走出快手的TOC 客户资源圈 或将成为快手TOB新的十字路口 作者 斗斗 编辑 皮爷 出品 产业家 人口红利终结 流量红利终结 超常规的高速增长终结 TOC模式的路越来越难走了 快手与抖音作为短视频行业 的两大巨头 主要

随机推荐

  • Linux下的TCP通信

    Linux下的TCP通信 今天我们介绍如何编写Linux下的TCP程序 关于UDP程序可以参考这里 http blog csdn net htttw article details 7519971 本文绝大部分是参考 Linux程序设计 第
  • Java算法给定一个整数数组,找出其中两个数相加等于目标值

    给定一个整数数组 找出其中两个数相加等于目标值 例如 给定数组及目标值 nums 2 7 11 15 target 9 因为nums 0 nums 1 2 7 9 返回 0 1 使用辅助空间 使用哈希表 时间复杂度是O n 空间复杂度 O
  • 半监督目标检测yolo+FixMatch

    目前实验发票印章检测 只需1张训练集即可达到0 921 mAP 5 如果用31张训练集可达到0 952 mAP 5 无标签数据均使用600张 待填坑 敬请期待
  • tkinter窗口切换

    方法1 按钮 Frame 步骤 1 1创建主桌面 import tkinter as tk root tk Tk 1 2 创建不同的Frame 相当于不同的桌布 分别用来创建不同的窗口 face1 tk Frame root face2 t
  • Java面试官最爱问的volatile关键字

    在Java的面试当中 面试官最爱问的就是volatile关键字相关的问题 经过多次面试之后 你是否思考过 为什么他们那么爱问volatile关键字相关的问题 而对于你 如果作为面试官 是否也会考虑采用volatile关键字作为切入点呢 为什
  • 如何建立chrony服务器

    Chrony由两个程序组成 分别是chronyd和chronyc chronyd是一个后台运行的守护进程 用于调整内核中运行的系统时钟和时钟服务器同步 它确定计算机增减时间的比率 并对此进行补偿 chronyc提供了一个用户界面 用于监控性
  • 生成 Linux 运行时间报告的 Bash 脚本

    出于一些原因 你可能需要每月收集一次 Linux 系统运行时间报告 Magesh Maruthamuthu 出于一些原因 你可能需要每月收集一次 Linux 系统运行时间报告 如果是这样 你可以根据需要使用以下 bash 脚本 之一 我们为
  • Effect Hook

    1 数据获取 设置订阅以及手动更改 React 组件中的 DOM 都属于副作用 2 可以把 useEffect Hook 看做 componentDidMount componentDidUpdate 和 componentWillUnmo
  • 关于 Windows 10 下安装 Linux 过程及报 'WSL...' 错误的解决办法

    今天下午在群里看到有朋友发有关 Windows 10 下按安装 Linux 系统 的消息 小白我很是激动啊 Linux 贴近工作 Windows 贴近生活 割舍不下 虽然可以在Windows下安装虚拟机 但是真的很占空间 0 0 而这个消息
  • 逻辑回归、激活函数sigmoid、损失及优化、案例代码实现

    一 逻辑回归 逻辑回归 Logistic Regression 是机器学习中的一种分类模型 是一种分类算法 与回归之间有一定的联系 由于算法的简单和高效 在实际中应用非常广泛 应用场景 广告点击率 是否为垃圾邮件 是否患病 金融诈骗 虚假账
  • Java-API简析_java.lang.Float类(基于 Latest JDK)(浅析源码)

    版权声明 未经博主同意 谢绝转载 请尊重原创 博主保留追究权 https blog csdn net m0 69908381 article details 131129886 出自 进步 于辰的博客 因为我发现目前 我对Java API的
  • Sqoop的简单使用案例和一些常用命令及参数

    Sqoop的简单使用案例 1 导入数据 在Sqoop中 导入 概念指 从非大数据集群 RDBMS 向大数据集群 HDFS HIVE HBASE 中传输数据 叫做 导入 即使用import关键字 1 1 RDBMS到HDFS 1 确定Mysq
  • java——编程案例

    文章目录 案例1 买飞机票 案例2 找素数 案例3 开发验证码 案例4 数组元素的复制 案例5 评委打分 案例6 数字加密 案例7 模拟双色球 案例1 买飞机票 import java util Scanner public class T
  • stm32ftp服务器实现文件传输,stm32 ftp服务器

    stm32 ftp服务器 内容精选 换一换 客户端压力机硬件要求如表1所示 负载均衡节点 LVS 硬件要求如表2所示 缓存节点 Nginx ATS 硬件要求如表3所示 源站节点 Nginx 硬件要求如表4所示 操作系统要求如表5所示 软件要
  • MSN下载2010最新版

    转载的 哈哈 我的笔记 MSN 最新微软官网下载地址 NLP伪原创技术早期并不是很受欢迎 基于主动学习的伪原创句法识别研究 这几年专注于Web开发 Web界面设计的心得在这篇文章中已经与大家分享 做项目时 如何做比较美观大方的数据输入窗体
  • apisix高性能网关-中文开发文档

    2020年6月12日13 48 33 github https github com apache incubator apisix 目前此项目已有成为apache孵化项目 官方中文文档 https github com apache in
  • 拓展人脉,把握机会,摆脱“孔乙己的长衫”

    孔乙己的长衫 学历究竟成为敲门砖还是枷锁 孔乙已是鲁迅笔下人物 穷困流倒还穿着象征读书人的长衫 迁腐 麻木 最近 大家自我调佩是 当代孔乙己 学历成为思想负担 找工作时高不成低不就 我将从以下几个方面来说一说我对这方面的看法 我认为 在当今
  • 1. 两数之和

    目录 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出现 你可以按
  • 数据结构--计算表达式完整版(涉及乘方)

    思路 两个栈 数据栈与符号栈 在描述优先级时 我们将加减描述为 I级 乘除为 II既 乘方为 III级 1 在之前的只有加减乘除的计算表达式里 就有了初步思路 当我们要计算的时候 局部计算函数 数字栈与符号栈 分别在数字栈顶取出两个操作数
  • i2c_SLAVE

    driver driver通过I2C的接口与DUT相连 负责接收DUT通过接口传来的地址数据等读写信息并作出反应 将sequencer中传来的trans中的数据驱动到总线上并根据设置的ack和nack作出回应 将总线上写来的数据存到tran