在做实验之前应该先计算好理论数据,这是很重要的,可以防止一些低级错误和在出问题的时候能够清晰知道根源
usb2.0部分:
理论上,USB2.0传输速度最高可达到480Mbps,即60MB/s,如果几台设备共用一个USB通道,
主控制芯片会对每台设备可支配的带宽进行分配控制,所以USB2.0实际传输速度不超过30MB/s
对于我们数据1000帧来说,一帧为2088(一路ccd有2088个点数据)*2(2路)=4176个16进制数据=8k多个bit,那么1000帧大约一秒8M
有人问为什么不采用usb3.0,首先肯定usb3.0的优点,是传输的速度快,但是,我这个项目是工业控制项目,需要稳定的传输,在3.0上面传输
是用差分信号,D+和D-之间的压差在3.0上是很小的,对于外来的干扰比2.0差,因为2.0是满足需求的,所以采用2.0传输。
调试软件:usbtrack,用来监视我的usb枚举等过程
fpga部分:
最重要的部分是时间,我才用了50M对ccd操作,100M作为主要控制信号,120M作为sdram的操作信号
在50M下可以轻松跑下1000帧数据,因为20ns为一个clk,跑完一个数据需要16个周期,2088个点下,2088*20*16=668160=0.668ms,1000帧是1ms一个,也就是我多了0.221ms多的余量
经过计算在极限情况下可以跑到1500帧多。由于50M为最小时钟,所以ccd那里处理好,其余就不是问题
电脑硬盘部分:
机械硬盘读写速度平均60---80M每秒。固态硬盘不同品牌型号之间,差距非常大,平均大约在150---300M每秒在实际情况下肯定会打折扣,
选用固态硬盘可以避免因为读写速度不够造成的缓冲慢问题
调试软件:CrystalDiskMark,测试我电脑实际速度