searchone
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1617回复:2

关于dsp与usbn读写时序的困绕

楼主#
更多 发布于:2005-01-05 19:32
各位帮忙想想这个问题出在哪里?
使用的是9604芯片,在枚举时查看各个寄存器数据总不对,所以不能顺利进行下去,现在终于发现问题,却想不明白:
1:当使用write_usb(VGE)后,确实发现3。3V引脚电压变高,并可以通过write_usb(0)使之变低,那么,是否证明了写时序一定正确了?
2:使用循环读写如下
{
   write_usb(NAKMASK,0x0F);--- a
   write_usb(MAVMASK,0xFF);--- b
   printout(read_usb(NAKMASK)); ---c
}
发现,最终从NAKMASK读出的数据其实是与它靠得最近的一次写操作写入的数据,如上面由c处读出的数据成了b处写入的数据。
  因为dsp中的时序都是用很多条读写组合出来满足9604的要求的,所以若前面写没有问题,那么就改了读,我考虑的可能原因是:
   上次写入数据进DATA_IN积存器时改变了DATA_OUT 积存器的值,而接下来的读由于写了地址后等待时间不够,所以读出的仍然是上次写入的但是还没有来得及随新地址改变的值,所以加入了一条指令延长了地址和读的时间,结果出现读出的数据是默认值。也就是说对于任何积存器,此时读出来的是上点后的值,如FNH的值为11000000,MAVMASK也无论前面(b处)写入的是什么值,读出的都是00001100的。

   那么从这里好象又是:改后的读出不存在什么问题吧?因为它能读出随地址改变的默认积存器值,那么为什么只读默认的而不是刚写进去的值呢?难道又是写出了问题没有真正的写进去?而不改的只读上次写的也不对。
   这里陷入逻辑矛盾了,也不明白究竟读写谁不对了啊
  
   另外我的dsp读写信号能提供的电平变化时间最小是100ns,是不是这样的速度也不够?但是可以用空指令nop产生需要的10ns的延迟。
   请各位大哥帮忙分析一下了,这个中间究竟是什么问题我想不明白了:)倘若寄存器都不能保存我写的数据,那我怎么能正常操作啊:)
 



[编辑 -  1/5/05 by  searchone]
tomjin
驱动牛犊
驱动牛犊
  • 注册日期2002-12-16
  • 最后登录2006-03-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-06 09:44
我没有用过9604,但我在应用D12和DSP连接的时候,在读写时序的调整上费了不少时间!我想你说的问题还是在时序上,我是将涉及USB接口的信号引入CPLD,人为改变读写控制信号的宽度,使usb控制信号满足datasheet上的时序要求的!
searchone
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-07 19:12
谢谢回复
现在问题终于解决
是因为信号电平不够,现在加大了电源电压:看来这个东西设计上有点缺陷了呵呵
游客

返回顶部