首页 > 代码库 > As input tri-stated
As input tri-stated
前些日子正好看到了riple兄的《一波三折——危险的“未分配”引脚》一文,颇受启发。正好最近也遇上了类似的问题,也可谓一波三折,还好最后摆平了,要不煮熟的鸭子可就要飞了。
最重要的是又让自己长经验了。以前培训的时候就听老师提到FPGA设计中闲置的管脚一定要置输入三态(As input tri-stated)。而且印象深刻,算是牢记在心,只可惜没有活学活用,知道有危害,但是真真到开发设计的时候就是记不得了。真可谓应了那句“不见棺材不掉泪”,有些事总是需要自己亲身经历一回才会好好吸取教训。还好,我的问题是在只差一步就玩完的时候发现了。
事情发生的其实也很蹊跷,很让人摸不着头脑的。问题大体是这样的,本来那块控制板的样品已经交给客户测试了,基本没有什么大问题了,在我们自己搭的测试平台上运行很稳定的,反正是发现不了什么问题,不过我想这和测试环境不够复杂有关系吧(接口端的MCU除了进行数据传输基本不干别的活),后来板子被拿到另一块板子上一测试,那块板的蜂鸣器会莫名其妙的滴答滴答的响,不接控制器就不会响,一接上去工作就叫,让我很是郁闷。明明MCU和CPLD接口除了P0,P2和WR,RD外再没有别的,而蜂鸣器接的都不是这些口,在P1口上,那为什么这样毫不相干的管脚居然会有意想不到的关联呢?
第一回我和以前接口时序上不太稳定但是用了以后蜂鸣器不叫的代码对比了一下,只是在WR信号的判断上动了下手脚,结果问题好像就解决了,其实那时还没有意识到会是闲置管脚带来的问题,然后就以为万事大吉了。
昨日里产品要交付了,结果慌忙中代码烧写的版本老不对劲,最后只得找老版本按上回的更改重新改写然后编译,烧的CPLD中在自己的测试平台上依然没有出问题。换到有蜂鸣器的板子上问题复现了,这回我一上来直接找闲置管脚了,我一口咬定就是它了。呵呵,果然,quartus ii中默认的设置是:As output driving ground,那么这样的设置很有可能就是蜂鸣器不正常的直接导火索。将这个设置更改后重新编译下载,蜂鸣器怪怪静下来了,问题解决了,多次测试均正常。 引自特权同学
As input tri-stated