子板与Virtex-5 FPGA内的基带模块通过两条120MHz的数据总线进行通信。通信(COMM)总线负责传输ADC样本,而到达时间总线负责传输与收到的脉冲相关的高分辨率时间戳。两条总线都会通过XC95144XV CPLD,虽然并非必需,但其仍不失为一个出色的调试工具。我们可以设定CPLD在通往FPGA的总线上输出一系列伪随机数字。然后我们利用CPLD输出来调节FPGA的输入时序并验证总线线路的完整性。如果在不了解传输数据序列的前提下验证总线线路将会非常困难。 在FPGA内部,基带模块(见图4)同时负责对发出的脉冲进行编码并解码收到的脉冲。而基带模块的传输相对简单,主要包括外部(CRC)和内部(卷积)编码。接收部分的实施还另外涉及一个信道估计器和一个定制的Viterbi解码器,因而要占用更多的资源。基带模块通过处理器局部总线(PLB)接口与处理器系统相连接。
图4:基带模块的接受(顶部)和传输链。
众所周知,可编程逻辑比软件更难调试,不过配置有集成逻辑分析器和总线分析器的ChipScopeTM Pro工具将能在调试期间为我们助上一臂之力。事实证明该逻辑分析器非常有用,因其可同时获取突发COMM和到达时间样本,从而为MATLAB模拟器提供真实环境下的数据。而总线分析器则有助于调试一些与基带模块PLB接口有关的问题。 处理器系统 处理器系统可通过Xilinx Platform Studio(XPS)设计工具中的基础系统构建器(Base System Builder)向导加以生成,这可使我们获得一个完美的起始工作系统。随后,我们逐步修改基本系统,以获得图1所示FPGA部分的系统。这些修改工作此外还涉及转换到差分时钟输入并将基带模块连接至PLB。 该软件应用运行在Xilkernel顶部的嵌入式MicroBlaze处理器中,Xilkernel是一种非常适用于小型应用的最小实时操作系统。该应用可分为同时运行的三个线程:UWB线程管理基带模块的配置和运行;在系统处于数据传输模式时,应用线程负责获取并播放音频内容; RS232线程负责与运行演示图形用户界面的外部PC进行通信。 由于XPS使用的GNU开发链在其他一些平台上也可应用,我们可以很方便地在主机PC(如使用Cygwin环境)上,而非在嵌入式目标上编译并测试与硬件无关的代码模块。这样一来,调试工作就变得非常容易了。只有最终的测试工作需要在嵌入式目标上完成,而采用如GDB之类的源代码级调试器会受益颇多。赛灵思的应用指南《XAPP1037》为我们提供了许多有用的软件调试技巧。 该系统当初预计的距离范围在25至30米之间,但受一些存在于UWB ASIC中的硬件问题的限制,目前的标称距离仅为3米。不过,我们还是能够同时展示该系统强大的通信和测距功能,而这些功能就是该项目的成功之处。 将来可能还要重新设计UWB ASIC以增加系统的操作距离并实施多点定位功能,将测距系统发展为真正的室内定位系统。 双向测距解说 在脉冲无线电UWB系统中应用的双向测距技术应用中,节点A和节点B之间的距离是通过下列技术确定的(见图):节点A向节点B发送测距请求,并启动高分辨率时钟(3.84GHz);节点B在信号传输延迟prop后收到测距请求,该延迟与节点A和B之间的距离成正比;节点B在已知的处理延迟proc后将测距答复发送回节点A。 在收到测距答复后,节点A在时间rtt停止时钟。随后,即可根据下面公式:
计算出单程信号传输延迟,再乘以光速后,就得到了A和B之间的距离。 3.84GHz时钟的260皮秒时间分辨率为可实现大约8厘米的空间分辨率。不过,由于无线信号在两个节点之间被传输了两次,因而可以4cm的分辨率确定距离。 在知道自身与三个非共线参考节点的距离之后,移动节点可计算出其2D位置。而使用4个非共面的参考节点,甚至可确定出其3D位置。 |