FPGA_单引脚输入输出-三态

FPGA_单引脚输入输出-三态

以常见的I2C协议通讯方式讲解,SDA线既可以接收数据也可以发送数据, I2C 发送写控制命令,在空闲状态时,我们给 I2C 数据方向控制(sda_dir)信号赋值高电平,将 sda 总线的方向设置为主机 FPGA 输出数据。至于我们为什么要定义一个 I2C 数据方向控制信号,是因为数据线 SDA 是双向的,如下图所示,为了避免主机、从机同时操作数据线,可以在 FPGA内部可以使用三态门结构避免此事件发生。

在这里插入图片描述

sda_dir 表示 I2C 数据方向,为 1 时表示主机(FPGA)输出信号,为 0 时 FPGA 输出高阻态,表示释放控制权。如下图所示:

在这里插入图片描述

所以在 I2C 单次写操作,既每次 FPGA 输出数据时,在进行数据传输之前都需要先将 sda_dir 信号拉高,在数据传输完成后再将 sda_dir 信号拉低,将 SDA 总线的控制权交给从机发送响应数据。

实现方式

assign i2c_sda = i2C_sda_dir?(i2C_sda_out?1'1bz:0): 1'1bz;

相关推荐

  1. :C语言-输入输出

    2023-12-09 12:30:04       30 阅读
  2. Xilinx(AMD) 7系列FPGA配置说明

    2023-12-09 12:30:04       24 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-09 12:30:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-09 12:30:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-09 12:30:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-09 12:30:04       20 阅读

热门阅读

  1. ERC20 | ERC-20/ERC-721/ERC-1155/ERC-3525 区别

    2023-12-09 12:30:04       41 阅读
  2. 内容运营常用的ChatGPT通用提示词模板

    2023-12-09 12:30:04       52 阅读
  3. 2023年泰国加密市场概览

    2023-12-09 12:30:04       25 阅读
  4. c# 判断是否连接公网

    2023-12-09 12:30:04       39 阅读
  5. linuxc语udp发送程序

    2023-12-09 12:30:04       33 阅读
  6. ubuntu 如何修改主机名称

    2023-12-09 12:30:04       33 阅读
  7. Ubuntu 20.04安装禅道开源版

    2023-12-09 12:30:04       35 阅读
  8. ubuntu server 20.04 备份和恢复 系统 LTS

    2023-12-09 12:30:04       35 阅读
  9. useradd 在Linux原生应用开发过程中的简单应用

    2023-12-09 12:30:04       30 阅读
  10. pytorch学习入门之 Variable(变量)

    2023-12-09 12:30:04       37 阅读
  11. 【算法】蓝桥杯2013国C 横向打印二叉树 题解

    2023-12-09 12:30:04       37 阅读