特权同学

EPCS芯片的信号完整性问题

0
阅读(3727)

问题是针对Cyclone III EP3C系列(之所以不提具体型号,因为问题好像是共性的)。特权同学在使用Cyclone II系列器件时不会出现EPCS控制器下载的下述问题。

SOPC系统中添加EPCS控制器组件,在flash programmer中同时烧录.elf和.sof到EPCS中。通过JTAG接口进行烧录。遇到的问题和在ourdev论坛讨论得热火朝天的《被 Cyclone III搞得死去活来》(http://www.ourdev.cn/bbs/bbs_content_all.jsp?bbs_sn=3928335)一 贴基本一样。也难为缺氧小弟了,都大半年了问题依然没有很好的得到解决。不过特权同学也折腾了两个多月,这次不得不解决此问题了,所以一番理论à实践à理 论,最后的测试找到了主要问题。

由于CY3器件的EPCS控制器不像CY2一样自动分配管脚,需要用户手动分配一下。因此,当遇到数次下载不成功的时候,特权同学首先怀疑的是EPCS控 制器输出的几个管脚的时序出问题了,于是做了一些比较紧的时序约束。虽然众多资料中没有找到很明白的阐述CY3的EPCS管脚时序关系,但是后来翻看时序 图和实际管脚(主要是data和dclk管脚)的输出波形,发现他们存在问题的可能性不大。另外,特权同学还特意测试了EPCS控制器组件不同的驱动时钟 下,下载过程中输出的dclk的频率,如表1所示。

表1 SOPC系统中的EPCS控制器的驱动时钟频率与实际EPCS芯片驱动时钟频率的关系

EPCS控制器的驱动时钟频率

EPCS芯片驱动时钟频率

100M

60ns(16.7M)

50M

80ns(12.5M)

25M

80ns(12.5M)

5M

200ns(5M)

当特权同学以为是时序出问题的时候,时序约束可能也不太有根据,只是想当然的添加。但是逐渐的降低dclk的频率后,问题仍然没有太多改善。于是,时序问题的可能性需要先被排除了。        

但是,特权同学很意外的发现,下载期间用示波器探头触碰EPCS芯片的data和dclk引脚,下载成功率很高。在查看了《AN523: Cyclone III Configuration Interface Guidelines with EPCS Devices》后,在里面提到的一些需要注意的设计要点中,尤其是Board Design Constraints and Analysis一节中的提到的几个点非常有用。General Board Design Constraints里面提到了走线长度不要超过10 inches,dclk负载电容不可太大啊等等的问题好像都不存在我的板子上。而Signal Integrity Concerns里做了一些有或无终端匹配电阻的测试,结合特权同学之前遇到的示波器探头的事情,感觉这里面很有玄机。

再于是,特权同学专门拿一块板子来做烧录测试。当时的考虑是这样的,有一块母板,一块子板,母板上除了供电和FPGA芯片外,配置芯片EPCS不焊接,而 是把EPCS芯片的管脚全部引出到子板的芯片插座上。其实开始这么做只是想便于后面在dclk和data脚添加匹配电阻。但是没想到的是在不加匹配电阻的 时候,每次下载都是成功的,可谓屡试不爽。这时候,基本不用怀疑了,4个信号的飞线其实应该算是很好的“匹配电阻”,而之前示波器探头也多少客串了一回 “终端匹配电阻”的角色。

最后,特权同学为了完全确认这个假想。索性拿掉子板,母板上直接焊接芯片,恢复原来出问题的状况。重新烧录,基本很难成功。于是,请咱的刘工做了一个相当 有技术含量的活。如图1所示,在EPCS芯片的2脚(data)和6脚(dclk)与焊盘之间“飞”了一个33R的电阻(推荐时25R,不过手头只有 33R的)。


图1

如此这般之后,再次体会到了屡试不爽的感觉。问题还真出在这里。以往从来对信号终端的过冲睁一只眼闭一只眼,这回是领教了它的厉害了。

最后,将有或无匹配电阻的dclk和data采样波形“展示”一下。特权同学坚信,示波器也许无法原汁原味的采样到实际电路的波形(探头也是一个“匹配电阻”啊),但是下面的波形至少也是可以说明问题的。


图2 dclk无匹配电阻采样波形


图3 dclk加33R匹配电阻采样波形


图4 data无匹配电阻采样波形


图5 data加33R匹配电阻采样波形