FPGA设计——inout端口
2021/10/11 23:17:53
本文主要是介绍FPGA设计——inout端口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近在把zedboard的项目工程搬到性能更好的器件上,除了改zynq核和相应管教外,还需要改几个inout端口和差分LVDS端口。本篇便对inout端口做一个小结。
FPGA设计中,大家常用的一般时input和output端口,且在vivado中默认为wire型。而inout端口,正如其名,即可以做输入,也可以做输出端口。其基础是一个三态门构建,由一个控制信号控制输入和输出。
用verilog描述为:
module three_state( din, ctr, dout ); input din,ctr; ouput dout; assign dout = (ctr)?1'bz:din; endmodule
三态门表示存在高电平,低电平和高阻态三种状态,由control信号控制。也即inout端口(三态门)可以输出三种状态。当输出为高阻态时,可认为输出悬空,对下一级输入没有影响,或者说下一级输入悬空(没有输入)。
但是inout是如何在control的控制下切换输入输出的呢?先看看下面的代码。
//代码选自ad9361 no-os HDL,为ADI工程师编写 module ad_iobuf ( dio_t, dio_i, dio_o, dio_p); parameter DATA_WIDTH = 1; input [(DATA_WIDTH-1):0] dio_t; input [(DATA_WIDTH-1):0] dio_i; output [(DATA_WIDTH-1):0] dio_o; inout [(DATA_WIDTH-1):0] dio_p; genvar n; generate for (n = 0; n < DATA_WIDTH; n = n + 1) begin: g_iobuf assign dio_o[n] = dio_p[n]; assign dio_p[n] = (dio_t[n] == 1'b1) ? 1'bz : dio_i[n]; end endgenerate endmodule
端口 | 含义 |
dio_t | 视为control |
dio_t | 视为din |
dio_o | 视为dout |
dio_p | 主角,控制端口方向 |
各端口含义如上表所示,该段代码含义为如果dio_t为高电平,dio_p=输入dio_i;也即dio_o = dio_i,此时为output属性;
当dio_t为低电平时,dio_p为高阻态,只有输入端口畅通,此时为input属性;注意了,此时output已经全为高阻态了,但是!inout端口,out虽然被阻了,in还是能用呀,dio_p可以被外界驱动,当成input端口,也即dio_o继续输出dio_p输入的值。
最开始我也是怀疑的,等我做个仿真康康。
这篇关于FPGA设计——inout端口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南