"); //-->
在我们的DSP系统中,出现了一种非常奇怪的现象:系统加电复位(冷复位)后,XBUS总线的-XWE/-XWAIT信号一直为低(正常时应为高!),当DSP写XBUS总线时(异步I/O方式,使用-XCE0)没有正常的负脉冲,而在DSP读XBUS总线时(同步FIFO方式,使用-XCE2)却有连续的正脉冲,仔细分析好像是-XRE(或-XOE)的反相信号。导致DSP程序无法将数据写入外部设备。这种异常现象有如下几个特点:
(1)不是每次加电都出现,有时异常,有时正常,当系统加电工作时间长一点再关机加电,异常出现的频率较高,达50%左右。
(2)出现异常现象后,人工(按钮)热复位能复位DSP重新加载程序,但异常现象任然存在,不能消除。
(3)与关机开机的时间间隔有关,间隔时间短,异常出现的概率就高。通过分析发现如果关机后3.3V上残留电压大于0.5V就开机,出现异常的概率就较高。
(4)与DSP程序及软件配置无关,清除DSP程序加电也会出现,即加电后-XWE一直为低。只是因无DSP程序,没有读操作也就不会出现连续正脉冲。
(5) 由于我们的系统XBUS是接到FPGA中的,且是内层走线无法断开,因此只能在FPGA中将-XWE的引脚定义去掉使其与FPGA内部逻辑分离,或者将FPGA程序清除。但异常现象任然存在,因此可基本断定与FPGA无关。
(6) 异常现象在几块板子中都出现,有的在常温下出现,有的在低温下出现,出现的概率也不一样,有的高,有的低。
(7) 同样的电路连接及相同批次的器件,在另一个系统中就没有出现这种异常现象,只是该系统是采用2块板叠层结构,电源部分与主电路(DSP+FPGA)部分是分开的。此外,相同电路相同结构的前一批次系统也未出现这种异常现象,只是前一批次的系统没有1553B总线接口而已。
根据C6203B的数据手册,-XWE/-XWAIT是一个双功能引脚,当XBUS工作在异步I/O或同步FIFO模式时,是“写外设”使能输出信号,即:-XWE;当XBUS工作在同步主机主模式时,是“主设备”(即DSP)处于等待状态的输出指示信号,即-XWAIT。当XBUS工作在同步主机从模式或异步主机(从)模式时,该引脚不用或无定义。但不管是-XWE还是-XWAIT,加电复位后正常应该为高电平。由此可以推断,异常现象是加电复位后DSP的XBUS进入一个错误的工作模式,例如同步主机从模式或异步主机(从)模式。
在我们的系统中,XD[31:0]是TI要求正常配置XBUS总线的,同时TI要求处理了与XBUS主机口的相关信号,禁止主机口功能的。因此唯一可能是:DSP复位加载硬件配置时,与XBUS工作模式配置相关的某个引脚上出现毛刺干扰导致配置出错,例如:由于HMOD(XD11)=“0”(20K下拉电阻),正常时主机口是异步模式,毛刺干扰导致将主机口变为同步模式,或者因XARB(XD10)=“1” (20K上拉电阻),正常时主机口是主模式,毛刺干扰导致将主机口变为从模式。而当主机口是同步从模式或异步从模式时,-XWE/-XWAIT引脚不用是没有功能定义的,也许TI公司是将其作为一个内部测试引脚,根据异常现象推断就是-XRE(或-XOE)的反相信号(或差分负信号)。
还有一种可能是与DSP配置有关的引脚或外部上拉/下拉电阻虚焊引起的,但仔细检查并没有发现问题,而且几块板子不可能出现相同的虚焊点。不过,正是在检查虚焊过程中偶尔发现解决这个问题的办法,就是当异常现象出现后,只要用示波器的探头接触一下“XCLKIN”引脚,-XWE就会恢复正常状态(为高),DSP程序也就能正常写XBUS总线了。XCLKIN是XBUS主机口功能模块的时钟输入信号,不用时做上拉处理的。由此可以得到2种解决办法:
第一种:在XCLKIN的20K上拉电阻处焊一个0.1uF的电容到地。使其在加电复位时有一个延时的上升沿。
第二种,将XCLKIN引到FPGA上,由FPGA程序输出一个时钟信号即可。
由于TI没有提供更多的关于XBUS总线的技术资料,特别是关于内部电路功能模块的结构,因此出现这种异常现象及上述解决办法的技术机理还有待于进一步探讨。
此外,使用的C6203B的硬件(硅片)版本是3.1(C31),在TI的“硅版本3.1勘误表-SPRZ174L”一文中未提到这种情况,是不是该版本的一个BUG?
希望有高手提供更好的技术分析!
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。