昨天不是说调试出一片AD9858有信号了么,于是组长一大早问我进展的时候,我就演示给她看,奇怪的是没有输出,捣鼓了一阵子,终于出来了想要的频率信号,但再改变频率控制字的时候又不行了,总是在随机的频率点上跳变,原本兴奋的心情,一下子跌到谷底!
这时候过来一个高手,给了一些建议,但我一点头绪都抓不到,心情也很烦躁。组长认为是硬件的问题,而我自信我的板子没有问题,我认为问题出在软件上。组长坚持她的意见,让我一次又一次的Run程序,她抓9858数据、地址、WR和FUD引脚的信号,结果很显然,肯定是一塌糊涂,她让我换片9858试试,我当时还是觉得是软件问题,并且快要吃午饭了,就没有换。
中午连午觉都没有睡,向高手讨教了一下,下午接着检查,反复检查了9858的引脚输入,没有问题,排除了硬件的出问题的可能。这时候师兄看了看我FPGA往9858写的程序,认为我的程序太繁琐(我在process里面加了时钟做敏感信号),说他有一次是把TS101的时序直接赋给了9858,任何额外的时序都没做,结果是对的(昨天谈到过:CPU、功能器件的WR时序是几乎一样的,但我为了谨慎,添加了额外的时序控制)。这个时候,高手过来看看我的DSP程序,建议我改一下写9858寄存器的方式。我按照他们的建议修改了,上电,一看,咦!!真的好了!!!看来,FPGA或者DSP的程序的确有问题。
紧张了一天的神经,终于可以轻松了,晚上请师兄吃饭,然后早点回家,洗洗衣服,这时,倦意才一起涌上来,感觉肋部都有些酸了,唉,做技术,苦啊!
这里,要提到我犯下的几个失误,一是,没有把9858的RD脚通过FPGA连到DSP上,否则可以利用TS101的外部数据读写功能直接看送给9858的频率控制字对不对,就不用逻辑分析仪那么麻烦了;二是,考虑问题一上来可以尽量简单,过分谨慎反而不好。
下面把我调试用的部分程序写一些,希望能对大家有所帮助。
代码:TS101写9858频率控制字程序.c
include
include
include
#define FPGA 0x8000000
#define Addr 0x00
int i , ii;
int FTW[34]={ ............};
main()
{
_buildin_sysreg_write(_SYSCON,0x.........);
_buildin_sysreg_write(_SQCTL,0x..........);
for(ii=0;ii<34;ii++)
{
*((int *)(FPGA+Addr+ii))=FTW[ii];
}
_buildin_sysreg_write(_SQCTL,0x..........);
}
因为是凭记忆写的,难免有错误,并且,具体的值都记不大清楚了,大家包涵。
用户200351 2009-3-17 13:47
用户70196 2007-8-6 10:44
你好
我也在搞这个 可 一直没有出结果。能不能 给你打电话阿???
用户1308143 2007-6-24 16:21
对了,忘记一件事,我还不知道,控制字是怎么计算出来的
用户1308143 2007-6-24 16:20
用户87958 2007-3-25 20:21
用户87958 2007-3-25 20:21
用户1455312 2007-1-10 22:14
ash_riple_768180695 2007-1-10 19:00