ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

FPGA设计——inout端口

2021-10-11 22:31:38  阅读:221  来源: 互联网

标签:dio FPGA 端口 WIDTH input DATA 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输入的值。

最开始我也是怀疑的,等我做个仿真康康。

 

标签:dio,FPGA,端口,WIDTH,input,DATA,inout
来源: https://www.cnblogs.com/johor-yangmumu/p/15395296.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有