kaiyun官方注册
您所在的位置: 首页> 可编程逻辑> 其他> FPGA教学——FPGA双向IO使用之三态门说明

FPGA教学——FPGA双向IO使用之三态门说明

2022-10-20
来源:FPGA之家
关键词: FPGA 双向IO 三态门

  在FPGA设计中,双向IO(输入输出引脚)是一个比较麻烦的东西,但是信号线用作总线等双向数据传输时就要用到inout类型。

  以下用液晶的的数据线用作双向IO示例:

微信截图_20221020160850.png

  说是双向IO端口,其实输入和输出不是同时进行的,需要有一个控制信号out_en来控制端口什么时候为输出,什么时候为输入。

  那这里就需要引入一个三态门结构电路。

  三态门结构

  那么三态门的结构是怎样的呢?

  三态门电路的输出结构和普通门电路的输出结构有很大的不同,因为它在电路中增加了一个输出控制端EN。

微信截图_20221020161010.png

  由上图看出,在单相三态门中,当EN=1时,对原电路无影响,电路的输出符合原来电路的所有逻辑关系,即A可以输出到B。当EN= 0时,电路内部的所有输出与外部将处于一种关断状态。

  因此,当FPGA的信号线存在双向IO时,可以有两个三态门来控制,一个控制输出,一个控制输入,结构如下:

微信截图_20221020161027.png

  当ENout=1,ENin=0时,双向三态门的电路传输方向是A->B;

  当ENout=0,ENin=1时,双向三态门的电路传输方向是B->A;

  模型分析

  下面简单做个简易模型来说明双向IO如何分别实现作为输入端口和输出端口的功能,模块图如下:

微信截图_20221020161045.png

  模型引脚定义

  (1)输入口A定义:当双向端口dinout作为输出口时,我们将A端口输入数据传到模块中,让数据从dinout口出来。

  (2)输出端口B定义:当当双向端口dinout作为输入口时,我们将dinout端口输入数据传到模块中,让数据从B口出来。

  (3)EN控制信号定义:当EN=1时,开通三态门,将dinout作为输出口使用,当EN=0时,把三态门置为高阻态,这时dinout作为输入口用。

  代码展示

微信截图_20221020161101.png

  编译分析后查看RTL视角逻辑电路,符合原有模型设计。

微信截图_20221020161134.png

  总结说明

  (1)FPGA内部不允许传递双向IO信号,只有FPGA对外部才能定义为双向IO端口,即只有在顶层输出的信号才可以被赋值为高阻态。

  (2)在结构化建模的过程中,一个模块一个功能的建模,当涉及到内部模块的端口是双向IO端口时,然后根据一个双向IO对应一个输入,一个输出和一个使能控制,把模块中双向IO的输出用输出端口代替,双向IO的输入用输入端口代替,引出使能信号,并把对应assign中赋值的高阻态z根据实际情况给出0或1,来解决FPGA内部双向IO连接问题。

 更多信息可以来这里获取==>>电子技术应用-AET<<

微信图片_20210517164139.jpg

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。
Baidu
map