ClarkWang

 

USB2.0高速接口--UTMI接口芯片的测试总结

  这篇博客是我的第一篇博客,以前一直没有写博客的习惯,但是现在希望可以通过写博客的方式而记载下我的学习过程,并且起到和大家交流的作用。

  言归正传,我现在在一个IC设计公司做实习生,我的第一个任务是做该公司的UTMI芯片的握手和枚举测试。说实话一开始对公司的环境不熟悉,而且与其他员工的缺乏沟通,从而导致做这个任务的速度很慢。不过还好随着时间的推移,我对UTMI慢慢开始熟悉,虽然USB平时很常见,但是这个小东西确实很复杂,而且仅仅通过一个接口就可以把传输速度一下子提高到480M/s,果然很厉害啊。

  发完感叹,就要开始说说整个测试过程了,我用FPGA模拟UTMI的设备,然后与PC进行通信,让电脑认为我们的FPGA是个U盘。USB接上PC后,会检测DP/DM上的电压差,从而确定改USB设备室1.1接口还是2.0接口,在确认了是USB2.0后,会有一个握手过程,用来检测该USB设备是否支持高速(480M/s)的数据传输,在做握手过程的时候我做的很顺利,程序几乎是一次性过关。握手过后紧接着就是进行枚举过程,枚举过程就是让电脑认识该USB设备是个什么设备。需要FPGA根据PC发过来的数据进行判断从而返回各种数据包,整个包的发送过程由一个大状态机和一个用来检测PID的小状态机组成,在第一个状态里面,我们和PC发送数据都很正常,但是到了Set_address的时候,PC竟然什么都不做了,连SOF都不发送了,怎么想办法都解决不了,后来,由于没有USB逻辑分析仪,我将U盘与PC进行通信的过程利用FPGA进行监听,把数据套了出来,发现和我的过程没有区别,导致我现在不知道怎么办。因为现在这个事情完全已经超出了我的知识范围,也不知道到底是芯片的原因,还是自己程序的原因。公司老总说让我先放放,让台湾的先测,然后等结果。

  说实话,现在还是蛮失望的,花了那么长时间也没有达到目标。不过我在我第一个任务中,我确实学到了很多东西,比如代码的编写规范,写状态机的规范,USB协议等等。

  明天应该会接到新的任务,祝自己好运。

posted on 2010-08-22 17:42  ClarkWang  阅读(2041)  评论(0编辑  收藏  举报

导航