FPGA中实现三态缓冲器

摘要:
目录1.为什么要使用三态逻辑电路2.如何在FPGA中实现三态逻辑线路3.FPGA中I2C总线的接口处理4.如何在三态逻辑回路中输出高电平5.如何避免在I2C三态缓冲器中输出高电平时1.为什么要在信息的双向传输中使用三态电路。图12.如何在FPGA中实现三态逻辑电路最近,一位学生问如何实现三态缓冲器/逆变器(如下图所示)?如果三态缓冲器在I2C输出1时输出1,则它可能被总线上的其他设备短路到0输出。I2C输出1由缓冲器的外部上拉电阻器获得,因此不存在短路。

目录

1. 为何要使用三态逻辑电路

信息双向传输的时候需要(I2C属于半双工)。 也就是引脚定义为inout的时候。
图1
img

2. FPGA里面如何实现三态逻辑电路

最近有学生问tri-state buffer / Inverter(如下图)怎么实现?有两种办法:
图2
image-20210409162050483

  1. 用Verilog语句 Vo = ( Enable) ?~A: 1'bz ; 实现该硬件电路:
    图3
    img

  2. 或是直接在Quartus 工具里面调用 74240 :
    图4
    img

3. FPGA中I2C总线的接口处理

Intel 的 IP 文档:

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_embedded_ip.pdf
图5
img
所以我在我的工程里面添加了altera_avalon_i2c IP以后,我的top.v文件要这样处理:
图6
image-20210409174325939

4. 三态逻辑电路如何输出高电平

可能大家会好奇,上面I2C三态逻辑 直接给了1'b0,怎么输出高电平1呢?

图7
img
dir 是1时, out = sda,dir 是 0 时,三态门输出高阻, 也就是电阻无限大 相当于断开, 然后 外部加上拉电阻,于是输出是1。

所以FPGA和外设之间要有个上拉电阻。
图8
img

5. I2C的 三态缓冲器避免输出高电平

原则是: I2C输出1 的时候三态缓冲器应该是输出 highz。 I2C输出0 的时候三态缓冲器输出0。
如果I2C输出1的时候 三态缓冲器输出1 了, 则可能会和总线上其他设备 输出的0 短路。

而I2C的输出1 由缓冲器外部上拉电阻得到就不会存在短路情况。

所以只需要给 1'b0 , 当要I2C输出0的时候 三态缓冲器输出0 。 I2C要输出1的时候,直接关掉三态缓冲器使能。

如果图7 拿I2C 的应用举例的话,实际要更进一步保证不能输出1才行,底层代码也没处理输出 1的话, 那这种方式做成的 i2c 只适用于 一个master 对一个 slave。 多个master的时候可能会出现短路烧掉IO。

免责声明:文章转载自《FPGA中实现三态缓冲器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇修改MySQL的默认数据存储引擎Java运行时栈帧结构下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

故障排查:vsftpd无法用浏览器访问

CentOS6上设置的ftp服务器突然无法使用浏览器访问,但可以使用xftp等工具正常访问。据推测,阿里云的安全组设置之前已经过修改,这可能与1)修改vsftpd的配置,在被动模式下手动指定一个随机连接端口,并添加以下内容:passv_min_port=50000pasv_max_port=60000 02)如果只打开端口20和21,设置阿里云安全组控制端口...

《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv

矩阵和图像的操作cvAnd函数其结构voidcvAnd;程序实例#include#include#includeintmain{IplImage*src1,*src2,*src3;src1=cvLoadImage;src2=cvLoadImage;src3=cvLoadImage;cvAnd;cvShowImage;cvShowImage;cvShowIma...

Github仓库重命名

1.在Github上重命名仓库,转到您自己的仓库,找到Setting标记,然后单击Options中的Settings以设置Repositoryname。2.修改本地仓库信息。由于远程仓库名称已更改,因此本地对应的仓库名称也应更改。1.检查当前远程仓库的信息$gitremote-v列出了所有远程仓库信息,包括网站地址。2.修改本地对应远程仓库的地址。修改后,使...

差分方程的零输入响应与零状态响应

差分方程的迭代分析方法有以下缺点:没有闭合解,不利于数学分析。某个时间的输出只能从头开始计算。本文介绍了差分方程的零输入响应和零状态响应分析方法。对于系统,这种分析方法可以很好地表达系统响应的物理意义=Y[-1]=0$Input Y[n]。回顾零输入响应和零状态响应的迭代计算,我们发现以下规则:$egin{align*}y[0]&=-&qqu...

plsql 导出查询结果

单击青色按钮,表示所查询的所有数据都将导出到指定文件,而不仅仅是以下列表中显示的数据行;无需单击“获取最后一页”按钮。注意:选择导出到excel文件时,需要注意默认导出为*。xlsx格式。您可以选择*。xls格式,但*。xls格式只能容纳65536行数据。如果要导出的数据超过最大值,则必须更改为*。xlsx格式!如果您仍然使用此格式,后面的数据将覆盖以前的数...

js 浏览器窗口 刷新、关闭事件

当前页面不会直接关闭,可以点击确定按钮关闭或刷新,也可以取消关闭或刷新。...