FPGA中的INOUT接口和高阻态

摘要:
本文将概述FPGA的输入端口。对于数字电路,三种状态是高电平、低电平和高电阻。数据输出控制)和数据输入;1617端模块4.PULLUP和PULLDOWN如果两个INOUT都处于高电阻状态,接收到的信号是什么状态?这实际上相当于连接两个INPUT端口,这也相当于挂起INPUT端口。

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

1. 三态门

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

clipboard

 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

image

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.

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

免责声明:文章转载自《FPGA中的INOUT接口和高阻态》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇点双连通分量PHPSTORM 2016.2 注册下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Synplify9.6.2破解(转帖)

Synplify9.6.2破解(转帖)   转载自:http://www.cnblogs.com/mark-sun/archive/2012/02/26/2368773.html Abstract本文介紹如何破解Synplify Pro 9.6.2。 IntroductionStep 1:安裝Synplify Pro Step 2:選擇Float...

【资料】2021年最网红的FPGA开发板之一——DE10-Nano (SOC FPGA入门推荐!)

DE10-Nano开发板可谓2021年最网红的FPGA开发板之一,除了广泛用于物联网,边缘计算,硬件加速,AI 和 EDA教育课程外,还有不少发烧友将其用于网络上日渐风靡的开源复古游戏项目——Mister。可谓是跨越了学术界,工业界,科研界,无所不及。 友晶科技对板子提供的技术支持也是十分给力,不仅24小时官方邮件答复, 论坛值守,还不断不断的开发出配套...

FPGA配置方式

首先介绍下AS、PS、JTAG三种模式的区别。 AS模式: 烧到FPGA的配置芯片里保存的,FPGA器件每次上电时,作为控制器从配置器件EPCS主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现对FPGA的编程,该方法适用于不需要经常升级的场合; PS模式:EPCS作为控制器件,把FPGA当做存储器,把数据写人到FPGA中,实现对FPGA的编程...

FPGA前仿真后仿真

前仿真 后仿真 时序(综合后)仿真 时序仿真将时延考虑进去,包括综合后产生的(与、或、非)门时延,还有布局布线产生的时延。 综合(Synthesize),就是将HDL语言设计输入翻译成由与、或、非门和RAM、触发器等逻辑单元组成的网表。综合后可生成综合后仿真模型(Generate Post-Synthesis Simulation Model)。 综合后...

【FPGA篇章八】FPGA硬件加速:详述FPGA的硬件加速器设计思想

欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 硬件加速是指利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性。 硬件加速实质上是通过增加运算并行性达到加速的目的的。 常常采用流水线和硬件复制的方法。 1 流水线 1.1 适合流水线的场景 如果某个设计的处理流程分为若干步骤,而且整个数据处理是“单向流”的,前一个步骤的输出是下一个步骤的...

MCU与FPGA通信

1.MCU启动FPGA相应功能模块 通过译码器选择相应的功能模块,调用实现功能。 2.MCU与FPGA串口通信 SPI协议简单、可靠、易实现,速度快,推荐使用SPI。SPI为四线机制,包含MOSI、MISO、SCK、SSEL。 (SPI协议:http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_B...