IR-UWB通信系统高速USB接口的设计与实现
扫描二维码
随时随地手机看文章
摘要: 采用高速USB接口连接计算机终端与UWB通信系统基带模块,设计并实现了USB接口电路,控制UWB通信系统基带模块与USB接口设备的数据传输,最终实现了终端电脑与UWB通信系统的数据传输。实际测试中,USB接口的速率约为300 MB/s,达到了USB2.0规范所规定的高速传输的要求。
关键词: UWB通信系统;USB接口;USB接口电路
IR-UWB(Ultra Wide Band Impulse Radio)无线通信是一种不用载波,而采用时间间隔极短的脉冲进行通信的方式,也称作脉冲无线电(Impulse Radio)、无载波(Cartier Free)通信。 2001年4月我国发布了“十五”863计划,其中把UWB无线通信关键技术以及共存与兼容技术列为有关通信技术主体研究项目,许多高校也将对UWB的研究作为重点科研项目,取得了很多进展。其中,某高校参与研发的UWB通信演示系统,要求可在室内10 m距离内传输流媒体,文中以该UWB通信演示系统为依托,分析了UWB通信系统与终端设备的接口需求,选用高速USB接口方案,运用FPGA技术实现了USB接口硬件控制电路及计算机终端与UWB通信系统基带模块的数据传输。
1 高速IR-UWB通信系统方案和实现
如图l,图2所示。IR-UWB通信系统由计算机端信源信宿、UWB发射机、UWB接收机、基带信号处理、超宽带收发天线组成。该系统中,传输信号中心频率达到3.5 GHz,UWB脉冲包络宽度在4~6 ns之间,频谱带宽不小于500 MHz,室内传输距离在10 m以内,发射信号谱型满足FCC频谱模板要求,其信道传输速率可以达到100 MB·S-1。
1.1 基带传输方案
基带部分是UWB通信设备的关键模块。它主要完成信道编解码、终端与通信系统的连接,如图3所示。
UWB通信系统已经实现,该通信系统发端采用内置信源,收端通过示波器观测数据是否达到指标要求。显然这样的方式无法反映UWB通信系统的性能,因此必须为该通信系统扩充终端接口。文中对高速USB接口进行了讨论。USB是一种应用在计算机领域的新型接口技术,最早由Compaq,Intel,Microsoft等多家公司于1994年11月共同提出,其目的是使用USB取代PC机现有的各种外围接口,使外设的连接具有单一化、即插即用、热插拔等特点。为了支持UWB通信系统100 MB/s的传输速率,并保证流媒体实时、流畅的传输,文中最终选用高速USB设备作为通信系统的扩展接口。USB2.0接口设备通过USB数据线与计算机相连,并且通过8位数据线与通信系统相连。在发送端,USB2.0接口设备的作用是采集计算机发送的数据,并转发到UWB通信系统的基带模块中;在接收端,UWB接收机将收到的数据经过基带处理,再通过USB2.0接口设备转发给计算机。
1.2 USB接口芯片分析与选用
文中选用EZ-USB FX2系列芯片作为USB接口芯片,并设计了USB接口电路。该电路控制USB芯片与UWB通信系统基带模块的数据传输,实现了计算机与UWB通信系统的互连。
USB2.0协议中规定,USB芯片支持3种传输速率,分别为1.5 MB·s-1低速传输、12 MB·s-1全速传输、480 MB·s-1高速传输。一般有3种常用的USB功能设备接口芯片:低速传输芯片CY7C630/1xxA、全速传输芯片EZ-USB系列和高速传输芯片EZ-USB FX2系列。为了支持UWB通信系统高达100 MB·s-1的传输速率,并且保证流媒体传输的实时性、流畅性,系统选用高速传输系列芯片CY7C68013作为USB接口芯片。
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。
组帧的流程,如图6所示。usedw表示1 kB FIFO内所存储的未读数据的bit数。若usedw≥512则表1 kB FIFO内有512个数据可以被打成一个完整的包。若usedw<512表示缓存中的数据不足一帧,这时判断1 kB FIFO中是否还有数据。若usedw>0,则表示FIFO内还有数据。 Timer_ count是一个特殊的计数器,它表示连续多少个时钟周期没有从USB读取过数据,当从USB读取数据时,它会被清零。若Time_count=1 024l贝0表示l 024个时钟周期都没有从USB读取过数据,便把1 kB FIFO中剩余的数据补零打包发送出去。
2.4发送端OSB接口电路实现
发送端USB接口电路,如图8所示。
2.5 发送端接口电路数据波形
图9是利用FPGA开发工具QuartusⅡ6.O提供的虚拟逻辑分析仪逻辑分析测试图。如图9所示,u_flagc是USB芯片中FIFO的空满信号,它表示USB的FIFO中是否有数据,若u_flagc为高电平表示有数据。bit_out是数据进行组帧打包后输出的比特流,比特流将送入通信系统的基带部分进行信道编码。bit_valid为高电平对应bit_out中的有效数据。rdusedw表示FPGA控制电路FIFO中的剩余数据。当FPGA控制电路FIFO中的数据满512 bit时,控制电路从FIF0中读取一帧数据。state表示状态机的状态转换,0表示等待状态,状态1时发送帧头数据,状态2时发送帧长数据,状态3时发送有效数据。
3 收端计算机与UWB通信系统接口的实现
3.1 接收端USB接口方案
如图10所示,数据解帧模块通过串行移位寄存器对比特流数据进行初步缓存,同时进行数据帧头检测,一旦检测到帧头,并且FIFO中有存储空间,就对缓存的比特流进行解帧处理,将解帧后的数据送入128 kB FIFO,否则一直检测帧头。128 kB FIFO模块用于进行数据缓冲,匹配前后模块之间速率。USB接收端状态检测与控制模块是用来检测相应状态的标志信号,产生同步写入USB接口FIFO中数据的信号u_ifclk和u_slwr,在u_ifclk的上升沿与u_slwr有效电平期间,将基带模块输出到总线上的数据写入USB接口芯片中。
3.2 接收端USB接口芯片控制电路
流程如图11所示。
若检测到USB的读取请求信号,便检测RAM的状态,若有数据,便将数据发给USB。u_flagb为高电平表示USB芯片可以接收数据,否则不可以接收数据。Usedw>0表示128 kB FIFO中有数据可以取,Usedw=0表示128 kB FIF0无数据可以取,此时向USB芯片写数据的控制信号处于无效状态。
3.3 检测帧头并存储数据到FIFO流程
流程如图12所示。首先将接收数据通过35 bit深度的移位寄存器进行数据缓存,同时在缓冲的比特流中检测帧头,一旦检测到帧头,便将帧长度数据取出,这时检测128 kB FIFO是否有存储空间,若有空间则将一帧数据进行接收存储,否则就丢弃该帧数据,重新检测帧头。在输入的比特流中若检测到“E25F35”,则认为它是帧头标志,并将其后共512 bit的有效数据写入RAM。若在有效数据中再次出现帧头标志“E25F35”则不进行帧头判断。
将数据写入128 kB FIFO的条件是:
(1)帧同步,即能够检测到有效的帧头数据E25F35;
(2)若frame_length表示帧长度数据,fifo_depth表示FIF0可以容纳的数据深度。128 kB FIFO中有frame_length的剩余空间可以容纳数据,否则丢掉该帧数据。
检测条件是usedw+frame_length<fifo_depth,其中usedw表示FIFO中未读数据的个数。
3.4 接收端USB接口电路实现
接收端USB接口电路,如图13所示。
3.5 接收端接口电路数据波形
图14是利用FPGA开发工具Quartus II 6.0提供的虚拟逻辑分析仪进行逻辑分析测试时的截图。如图14所示,dataout是基带模块输出到总线上的音视频数据,detect_state表示帧检测状态。0表示处于等待检测状态,从0跳转到1表示进入帧检测状态,从1跳转到2表示已经进入帧同步状态,从2跳转到3表示检测到数据,同时将数据写入到FIFO中。u_flagb表示USB芯片中FIFO空满的信号,u_flagb为高电平表示可以向USB芯片写数据。若u_flagb为低电平,表示USB芯片FIFO已满,不能再写入数据。u_ifelk为同步写时钟信号,u_slwr是控制写入信号,当u_slwr为低电平时,将dataout写入USB芯片。