今天早上醒来,突然想起当年调试数字采集板的经验,借此分享一下吧。

        当时,是给客户用公司自研的ADC,做一个8通道数字采集板。

        突然,忍不住想吐槽一下。
        当时,本来第一次拜访客户的时候,客户说我们ADC的电源域有点复杂,所以就让我们把ADC的原理图做好,然后给他们参考。
        我也手欠,画原理图的时候,顺便把FPGA的那部分也给整了上去,体现出ADC和FPGA的连接接口。

        等第二次拜访客户的时候,客户说,既然FPGA画上去了,那就按照我们现在的要求,把原理图整体完善一下吧,等原理图OK了,我们这边来画版图。

        完善完原理图,想让客户评审的时候,客户又说,你用的是cadence,我们这边用的都是pads,软件不兼容。要不你们把版图也画了吧。

        心里顿时万马奔腾~~~

        都说,销售的本质就是服务。但是,我是真没有那个意识,因为干活的都是我啊!
        而且,我真是太讨厌画PCB版图了,主要是怕没画好,回来板砖一块。

        板子加工回来,先是拿到贴片厂贴片,贴片厂没反馈有问题,很好,第一关算过了,没有出现由于封装错误导致的焊接问题。

        板子贴片回来后,测试电源输出。
        说到电源输出,当时设计的时候,也真是很纠结。
        到底要不要直接将DCDC的输出与FPGA的供电管脚直连呢?直连吧,万一万一电压输出不对,FPGA不就坏了么?不直连吧,那电流又这么大,磁珠的内阻可能都能把电压拉下来。
        当时还想着,要不在板子上画个细小的长缝,先上电测电压,测试过了,在用焊锡给连接起来。后来想想,实在太麻烦。
        最后,还是直连了。顶多也就烧个一块FPGA,等第一次调试过了,后面的就好了。

        在加电前,我测试了一下DCDC的分压电阻,确定阻值对了以后,加电。
        忐忐忑忑地测试完每路电压后,才放下一颗心。
        第二关,电源关过了。

        然后,FPGA同事帮忙编写好测试程序。
        同事打开烧写软件,往FPGA里灌程序,程序烧写成功了。
        第三关,FPGA大概率是能正常工作的了,算过了。

        然后,开始对时钟芯片进行配置。
        从我们不太高端的示波器的测试结果来看,频率是对了。
        但是,204B不通。

        一下子,头就大了。因为我和FPGA同事其实都是第一次调204B,不熟的哦。
        虽然,我当时看了很多204B的原理相关的资料,但是都是纸上谈兵,没有实操过。
        204B整个系统,虽然对外的接口也就那么几根线,其实内部是非常复杂的。
        真是汗,发现对204B原理已经不太记得了。

        反正当时,检查完设置,觉得应该没问题。然后又研究204B联通的大概步骤。
        后来用FPGA内部的ILA核,把数据抓出来,都是BCBC。

        咨询204B的芯片设计人员,说BCBC就代表SYNC信号没有收到。
        其实,这个在手册上也看到过。
        刚听到这话的时候,也没啥反应。

        但等我坐回调试位置上时,就像香港破案片里的刑警一样,突然灵光一现,好像知道哪有问题了。
        SYNC信号没有收到,但是用示波器测试,FPGA已经发送SYNC信号了呀?

        这时拿原来的ADC评估板+TI的接收板,进行测试。
        发现TI的接收板,是给AB和CD两路都给了SYNC信号。
        ADC可以选择将其中一路设为SYNC信号源,FPGA给对应一路供就行了,所以应该现在的设置,理论上是没问题的。

        但是理论和实际永远都有鸿沟的嘛!
        所以就抱着试试看的态度,把两路SYNC都给上,发现竟然通了。
        后来一查,发现是芯片人员给的寄存器配置,把两个搞反了。也就是说,按照文件配置,想配置成给AB SYNC信号,但其实ADC内部设置的是给CD SYNC信号。所以就导致204B没通。
        到这里,第四关算过了,204B通了。

        然后,开始测试两块ADC的同步性能。
        板子要求8通道都是同步的。
        可是,测试的时候,发现两块ADC的同步性,一会好,一会差,每次采出的数,计算出来的相位差都不一样。
        头又开始大了。

        想着,是不是时钟芯片出来的信号不同步啊。但是手头又没有高端示波器,来测试500MHz左右的时钟信号的同步性。
        去饮水机,到了杯水,边喝边想。
        我不是有高速ADC嘛,把板子稍微改一下,想办法把时钟信号引到输入端来,这样保证板子上的通路基本上是等长的。然后再把从板子上输入端输出来的信号,给到ADC的评估板进行测试。
        测试结果显示,时钟也是同步的。

        然后又是到处找原因,感觉把能想到的可能性都试了一遍,发现还是不好使。
        那到底哪里出现问题了呢?
        我坐在调试间,对着FPGA抓出来的数据看,发现有时候两个ADC的数据,在时钟节拍上有点错乱,但是如果光看数据的话,是都对上的。也就是说,很有可能是FPGA抓数据的时候出了些问题。

        然后把FPGA同事叫过来,把程序修改了一下。
        原来是用了两个204B的core,每个core对应4个lane;后来直接用一个204B的core,每个core对应8个lane。

        但我觉得问题应该不是因为用了多个core的问题,要不然,如果想做16路同步板的话,岂不是就做不了了,应该不会这样。毕竟每个core,最多只能带8个lane。
        不管怎样,终于通关了,同步性能也OK了。


本文由编辑推荐,原出处:https://www.eet-china.com/mp/a156394.html