2 发端计算机与UWB通信系统接口的实现
2.1 发送端USB接口方案
如图4所示,控制电路收发端计算机传送的数据,将其存入USB芯片内部512 bit的FIFO中,同时产生表示FIFO空或非空的状态信号u_flagc,当u_flagc为高电平表示FIFO非空,反之即空。1 kBFIFO模块是用来进行数据缓冲,同时产生写满wrfull的标志信号与表示FIFO中还有多少bit数据未读出的信号usedw。USB发送端状态检测与控制模块用于检测相应状态的标志信号,以产生异步读取USB接口FIFO中数据的信号u_slrd,在u_slrd的上升沿将USB接口FIFO中的l bit读出,同时将数据写入到l kBFIFO中。数据打包模块是将数据按照帧格式打包处理。
若u_flagc=1表示USB设备中有数据。FPGA控制电路从USB芯片中读取数据,接下来判断FPGA控制电路的缓存是否还有空间,如果缓存未满,则将从USB芯片中读得的数据写入FPGA缓存中。在实际调试中发现,wrfull为高电平不会出现,因为在有效时间段内,读取数据的速率要比写入快。
2.3数据组帧模块
完成将数据组帧和短包发送功能。当1 kB FIFO中数据有512 bit时,进行数据打包发送,即首先发送帧头数据E25F35,接着发送表示帧长度的数据,最后发送512 bit的帧数据。当传输文件的最后一帧数据不足512 bit时,才用短包发送功能。首先将剩余数据打包,先发送帧头数据,再发送剩余数据大小,最后发送剩余数据。
数据流在物理层上是以帧为单位进行传送的,因此将数据送入物理层之前必须对数据进行组帧。数据帧结构,如图7所示。
24 bit代表这个包的包头,其值为E25F35。9 bit代表这个包中有效数据的bit数。512×8 bit代表512 bit数据,其中有效数据的个数由包头前面的9 bit所标识。接收端只有在检测到包头E25F35后,才会处理包头前面的9 bit和包头后面的512×8 bit。