一文彻底掌握inout双向端口

inout端口信号在FPGA中应用还是很广泛的,特别是一些总线通信、数据交互的场景,比如i2c、spi等等。

一、inout的基本概念

Inout 端口的实现基础是三态门。

089bb6362fdd4f718d5602b2e8a81702.webp

 三态门具有三种输出状态,即高电平、低电平以及高阻态(Z)。

高阻态是 Inout 端口实现双向功能的关键所在,通过C来控制三态门的导向变化。

当C=0时,三态门输出处于高阻态(Z)时,它相当于与外部电路断开连接,此时该端口可以作为输入端口接收外部信A。

当C=1时,三态门切换到导通状态,使得信号能够顺利传输到外部,即B = A。

二、inout 端口特点

1、inout信号只能声明成wire类型。

2、inout端口赋值,可以通过?:条件表达式或原语来实现。

3、inout端口一般建议只在顶层模块使用。

三、inout端口的处理

1、assign形式

 

module inout_test
(
      input   clk,
      input   rst,
      inout   data_inout
)

reg data_out;
wire data_in;

wire control;


assign  data_inout = control ? data_out : 1'bz ;


assign  data_in   =   data_inout ;


endmodule

 

2、原语

 

module inout_test
(
      input   clk,
      input   rst,
      inout   data_inout
)

wire data_out;
wire data_in;

wire control;

IOBUF #(
 .DRIVE(12),
 .IBUF_LOW_PWR("TRUE"),  
 .IOSTANDARD("DEFAULT"),
.SLEW("SLOW")
) IOBUF_inst (
 .O(data_out),
 .IO(data_inout),  
 .I(data_in),
 .T(control)
);

endmodule

 

四、仿真测试

仿真测试激励中,inout端口声明为wire型。

需要分别模拟input和output的行为,以测试模块为基准:

在测试模块读取数据时,赋值有效数据;

在测试模块发送数据时,赋值为高阻态。

reg data_inout_en;
wire data_inout;
reg data_in;


assign data_inout = data_inout_en ? data_in : 1'bz;

640?wx_fmt=jpeg

如果需要更多学习资料和源码,想要学习FPGA实战入门进阶,请阅读下面这篇文章:
 

FPGA实战入门真的难吗?看这里,少走弯路,少踩坑。

掌握Ubuntu,您可以采取以下步骤: 1. 下载Ubuntu镜像:您可以从官方网站下载Ubuntu的最新版本。根据您的硬件架构选择合适的版本。 2. 创建启动U盘:使用免费的win32diskimager工具将下载的Ubuntu镜像烧录到U盘上。这样您就可以通过U盘启动安装Ubuntu。将U盘插入计算机,并按照工具的指示进行操作。 3. 安装Ubuntu:将启动U盘插入需要安装Ubuntu的计算机,重新启动计算机。在启动时,选择从U盘启动。按照屏幕上的提示进行Ubuntu的安装过程。您可以选择安装到硬盘上,或者选择试用Ubuntu而不进行实际安装。 4. 更新系统:在安装完成后,建议您更新系统以获取最新的补丁和软件包。打开终端并运行以下命令:sudo apt update && sudo apt upgrade 5. 安装必要的软件:根据您的需求,可以安装各种软件。例如,如果您需要进行深度学习开发,可以安装CUDA和PaddlePaddle。 6. 学习命令行操作:Ubuntu是一个基于Linux的操作系统,使用命令行是非常常见的。您可以学习一些基本的Linux命令,例如文件和目录操作、软件包管理等。 7. 探索图形界面:Ubuntu提供了直观的图形界面,您可以通过点击图标和菜单来执行各种操作。尝试打开不同的应用程序,了解它们的功能和用法。 通过以上步骤,您将能够快速上手并掌握Ubuntu操作系统。记得多练习和实践,以加深对Ubuntu的理解和熟练度。祝您成功!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA入门到精通

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值