专栏首页海风FPGA中的INOUT接口和高阻态

FPGA中的INOUT接口和高阻态

除了输入输出端口,FPGA中还有另一种端口叫做inout端口。如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接。但是,有时候半双工通信就能满足我们的要求,理论上来说只需要一条信道就足够了,而FPGA上实现这一功能的管脚就是inout端口。管脚相连时,input对应output,因此inout只能和inout连接(否则就不是inout了)。本文将概述FPGA的inout端口。

1. 三态门

三态门,故名思议就是这个期间具有三种状态。对于数字电路来说,三种状态是高电平、低电平和高阻态。Xilinx的《XST User Guide》上给出了三态门的Verilog HDL(以及VHDL)的描述,具体如下:

 1 // Tristate Description Using Concurrent Assignment
 2 
 3 // Combinatorial Always Block Can be Used too.
 4 
 5 module v_three_st_2 (T, I, O);
 6 
 7     input T, I;
 8 
 9     output O;
10 
11     assign O = (~T) ? I: 1’bZ;
12 
13 endmodule

三态门意味着,输出端口除了输出高、低电平之外还可以有第三种状态,这是inout端口实现的基础。

2. 高阻和悬空

三态门中有一个状态是高阻。高阻,即可以认为是没有输出,作为输出端口而言,对下级电路没有任何影响。悬空是针对输入端口来说的,也就是说没有接输入。这也就意味着,实际上高阻和悬空是一个状态,在HDL语言里都表示为Z。

也就是说,一个输出端口在高阻态的时候,其状态是由于其相连的其他电路决定的,可以将其看作是输入。

3. INOUT

从上一节内容中可以看出,当三态门的输出处于高阻状态的时候,取值由外部电路决定,也就是说,这一时刻是可以作为输入。INOUT端口的描述和示意图如下

 1 module inout_def(clk,data_inout)
 2 input clk;
 3 inout data_inout;
 4 reg data_out; 
 5 reg data_out_control; 
 6 //define data_out
 7 
 8 //define data_out_control
 9 
10 //assign data_inout 
11 assign data_inout=data_out_control?data_out:1'bz;  
12 
13 //assign data_in
14 wire data_in;
15 assign data_in=(!data_out_control)&data_inout;
16 
17 endmodule

4. PULLUP和PULLDOWN

如果两个INOUT都处于高阻态,那么接收到的信号到底是什么状态呢?这实际上等效为两个INPUT端口连接,也就等效为INPUT端口悬空。

这应该是取决于外围的驱动,添加的上拉或者下拉电阻,一般而言,FPGA添加的是上拉电阻,也就意味着此时chipscope采集的数据是高电平.

FPGA管脚内部可以配置弱上拉或下拉电阻来实现Z状态下的控制。分别采用PULL UP和PULL DOWN约束实现,UCF、NCF语法如下

1      NET "pad_net_name" PULLUP;
2 
3     //Configures the I/O to use a Pullup constraint.
4 
5      DEFAULT PULLUP = TRUE;
6 
7     //Configures the Pullup constraint to be used globally.

这一部分内容有待进一步验证。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MATLAB仿真总结

    工作区存在的变量可能会对脚本运行产生影响,故代码(脚本)开头需要添加如下命令

    sea-wind
  • Xilinx命名规则

    Xilinx的ug112第一章中介绍了Xilinx公司的FPGA命名规则。一般而言,大的FPGA的上表面是这个样子的。

    sea-wind
  • FPGA学习之基本结构

    从PLD的发展历程来看,按照结构区分,前后共有4种可编程逻辑器件类型:PLA、PAL、CPLD和FPGA。PLA——PAL——CPLD是继承的关系,...

    sea-wind
  • FPGA中的INOUT接口和高阻态

    除了输入输出端口,FPGA中还有另一种端口叫做inout端口。如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接。但是,有...

    瓜大三哥
  • 深入浅出谈「大数据」| MTdata小讲堂

    美图数据技术团队
  • datatables,表格

    windseek
  • 12种用于Python数据分析的Pandas技巧

    本文将介绍12种用于数据分析的Pandas技巧,为了更好地描述它们的效果,这里我们用一个数据集辅助进行操作。

    崔庆才
  • 超全的pandas数据分析常用函数总结:下篇

    基础知识在数据分析中就像是九阳神功,熟练的掌握,加以运用,就可以练就深厚的内力,成为绝顶高手自然不在话下!

    朱小五
  • go实现利用最大堆寻找最小k个数

    昨天分享了寻找最小k个数的算法是,那么有没有更为迅速的方法呢?今天就来分享关于如何使用最大堆进行解决。

    陌无崖
  • R分类算法-Logistic回归算法

    逻辑回归 Logistic Regression 所谓LR,就是一个被Logistic方程归一化后的线性回归,可以将非线性的问题转化为线性问题。 优点: ...

    Erin

扫码关注云+社区

领取腾讯云代金券