应用CPLD解决信号跳变时的抖动问题..doc

应用CPLD解决信号跳变时的抖动问题..doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
应用CPLD解决信号跳变时的抖动问题.

应用CPLD解决信号跳变时的抖动问题 alZou (XXXXXXXXXX公司) 摘要:数字信号在跳变时有时会出现抖动,本文介绍应用XX公司自主研发的XXXXXXX系列芯片开发电子产品时如何解决数字信号在跳变时出现抖动的问题。 关键词: CPLD;抖动 问题的提出 2004年下半年,公司先后给我下了两个开发任务: 1,为配合公司市场部推销公司自主研发的XXXXXXX系列CPLD芯片,公司要求搞一个CPLD演示产品; 2,针对公司自主研发的EPROM芯片(具体型号我忘了,请审稿的同志帮忙填上;另外,如果发现有需要修改的的地方,审稿的同志有自主修改权,修改后可以不用我再看了),公司要求搞一个EPROM烧录器。 我是个多一事不如少一事的人,就决定将两个项目合成一个搞了。市场上好一点的EPROM烧录器一般都是用单片机实现的,我决定用XXXXXXX代替单片机,开发一款EPROM烧录器,当然同时也可达到演示CPLD芯片应用的目的。 EPROM烧录器的原理框图如下: CPLD与PC机之间通过并口连接,完成通信功能。 由于PC机并口的资源有限,只有一个八位的数据端口,而EPROM芯片仅地址线一般就有十几条。因此,需要进行端口扩展,将一个八位的数据端口扩展为两个地址端口(高八位地址和低八位地址)和一个数据端口。数据端口和地址端口扩展的实现基本上是一样的,为了简化问题,本文只讨论一个PC机的八位数据端口扩展成两个地址端口的问题。 我的基本思路是:为了节省并口资源,PC机与XXXXXXX之间的地址下传用八条数据线和一条控制线完成。 PC端:高八位地址和低八位地址分两次送出,每次地址上线时,通过控制线的下降沿通知CPLD。PC端的程序流程图如下: CPLD端:在CPLD内部设置一个计数器,用于计下控制线下降沿到来的次数,如果是第一次,就将数据线锁存到高八位地址;如果是第二次,就将数据线锁存到低八位地址。CPLD端的程序流程图如下: CPLD端的VHDL代码如下: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity EPROM is port ( pc_data: in STD_LOGIC_VECTOR (7 downto 0); pc_control: in STD_LOGIC; reset: in STD_LOGIC; eprom_high_address: out STD_LOGIC_VECTOR(7 downto 0); eprom_low_address: out STD_LOGIC_VECTOR(7 downto 0) ); end EPROM; architecture EPROM of EPROM is SIGNAL count:STD_LOGIC_VECTOR(1 downto 0); begin PROCESS(reset,pc_control) BEGIN IF (reset =’0’) THEN count = “00”; ELSIF (pc_control EVENT AND pc_control =0) THEN IF (count=00) THEN eprom_high_address = pc_data; count = count + 1; ELSIF (count=01) THEN eprom_low_address = pc_data; count = 00; END IF; END IF; END PROCESS; end EPROM; 如此简单的问题加上如此简单的解决方案,我没想到在进行硬件调试时会出现问题。可是在进行硬件调试时,却怎么也达不到我的理想状态。比如PC机输出的两次地址是0x01和0x02,CPLD输出的地址要么是0x0202(总是重复两次低位地址),要么就是乱数。由于公司没有带存储功能的示波器,我对数据传输过程中的具体情况无法了解。在此情况下,要解决问题,我所能做的唯一的事情就是“我猜,我猜,我猜猜猜”了。好在作为人类的一员,我还没有失去联想。我猜想在控制信号跳变时,出现了抖动。具体波形如下: 哥德巴赫因为猜想而名垂青史,可是作为公司的一名技术人员,项目研发如果只停留在猜想阶段,可能月底领工资时就会打折扣了(事实上,那两个月我的工资也确实打了折扣)。 XX公司的办事作风向来是:有条件要上,没有条件创造条件也要上。作为

文档评论(0)

sdgr + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档