您好、欢迎来到现金彩票网!
当前位置:秒速快3平台 > 双向通信 >

实现单片机与FPGA的双向并口通信

发布时间:2019-06-03 23:25 来源:未知 编辑:admin

  这个暑假我在进行电子竞赛的培训,对于这个问题找到了一些相关的资料,可以提供一些帮助。

  如果是这方面的高手的话,其实会发现这个原理很简单,只要理解一些I/O口的设置就能完成了。但是如果对于单片机或者FPGA的I/O口的电路不理解的话可能就会走许多的歪路了。

  首先,还是要理解所谓的推挽输出与漏极输出两者的区别。先说说漏极开路(OD),它与集电极开路(OC)是一致的,就是把下图的三极管改成CMOS管就是了。

  集电极开路(OC)输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。对于图1,当左端的输入为“0”时,前面的三极管截止(即集电极C跟发射极E之间相当于断开),所以5V电源通过1K电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1”时,前面的三极管导通,而后面的三极管截止(相当于开关断开)。

  图2中的开关受软件控制,“1”时断开,“0”时闭合。很明显可以看出,当开关闭合时,输出直接接地,所以输出电平为0。而当开关断开时,则输出端悬空了,即高阻态。这时电平状态未知,如果后面一个电阻负载(即使很轻的负载)到地,那么输出端的电平就被这个负载拉到低电平了,所以这个电路是不能输出高电平的。也就是说这个输出端的电平是受负载的影响的。这样是很不稳定的,要避免这种情况。最多的就是使用上拉电阻。

  再看图三。图三中那个1K的电阻即是上拉电阻。如果开关闭合,则有电流从1K电阻及开关上流过,但由于开关闭和时电阻为0(方便我们的讨论,实际情况中开关电阻不为0,另外对于三极管还存在饱和压降),所以在开关上的电压为0,即输出电平为0。如果开关断开,则由于开关电阻为无穷大(同上,不考虑实际中的漏电流),所以流过的电流为0,因此在1K电阻上的压降也为0,所以输出端的电压就是5V了,这样就能输出高电平了。但是这个输出的内阻是比较大的(即1K),如果接一个电阻为R的负载,通过分压计算,就可以算得最后的输出电压为5*R/(R+1000)伏,即5/(1+1000/R)伏。所以,如果要达到一定的电压的话,R就不能太小。如果R真的太小,而导致输出电压不够的话,那我们只有通过减小那个1K的上拉电阻来增加驱动能力(所谓的驱动力,往往与电流有关的)。但是,上拉电阻又不能取得太小,因为当开关闭合时,将产生电流,由于开关能流过的电流是有限的,因此限制了上拉电阻的取值,另外还需要考虑到,当输出低电平时,负载可能还会给提供一部分电流从开关流过,因此要综合这些电流考虑来选择合适的上拉电阻。

  P.S:说到OC门的话,大家都能想到三态门,那么就不得不提起它的“线与”功能了,这个功能是很方便的。操作上面也很简单。如下附图:

  另一种输出结构是推挽输出。推挽输出的结构就是把上面的上拉电阻也换成一个开关,当要输出高电平时,上面的开关通,下面的开关断;而要输出低电平时,则刚好相反。比起OC或者OD来说,这样的推挽结构高、低电平驱动能力都很强。如果两个输出不同电平的输出口接在一起的话,就会产生很大的电流,有可能将输出口烧坏。而上面说的OC或OD输出则不会有这样的情况,因为上拉电阻提供的电流比较小。如果是推挽输出的要设置为高阻态时,则两个开关必须同时断开(或者在输出口上使用一个传输门),这样可作为输入状态,有些单片机的一些IO口就是这种结构。

  总结:从上面也可以知道了,I/0输出有两种方式。那么现在的难点就是如何让I/0口输入数据。其实上面已经讲过了,就是只需要把输出设置为高阻状态就可以了。那么有些新人就会问了,都设成高阻状态了,数据还怎么输入啊?这其实是一个误区,其根本是没有理解I/O口的结构。

  如果我们将一个读数据用的输入端接在输出端(这就是上面疑惑的答案了),这样就是一个IO口了(51的IO口就是这样的结构,其中P0口内部不带上拉,而其它三个口带内部上拉),如图4所示。当我们要使用输入功能时,只要将输出口设置为1即可,也就是要把下面的z=1,这样就相当于那个开关断开,而对于P0口来说,就是高阻态了。

  到现在为止,已经把输入输出端口原理已经讲明了了。如果理解了上面所讲的,那么写程序也就是的把对应的端口进行设置就OK了,比较简单的。如果不明白,可以问我,QQ或者邮件都可以,最后我会留下联系方式的。

http://raggedydreams.com/shuangxiangtongxin/124.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有