【学术论文】光电扫描测量网络信号采集模块设计
基于光电扫描的坐标定位系统是近年来新兴的一种坐标测量方法,具有精确度高、不易受周围环境干扰等优点,因此在日本尼康公司生产的室内GPS(indoor GPS,iGPS)设备、天津大学精密测试技术及仪器实验室研发的工作空间测量定位系统(workspace Measuring and Positioning System,wMPS)中都得到了广泛的应用[1]。然而,基于光电扫描的定位系统对光脉冲信息处理要求的实时性极高,如何迅速并准确地将光脉冲信息转变为电脉冲信息,并从中获得相应光平面的信息,对保证系统的定位精度有着极为重要的意义。
本文基于Xilinx公司推出的Zynq-7000系列全可编程片上系统,采用ARM+FPGA架构的Zynq芯片,提出了一种新型的将光平面信息检测与区分的方法,在FPGA中设计逻辑电路来实现对光平面的电脉冲信息捕获与锁存,并设计基于AXI总线协议的IP核,以此来对光平面信息进行高效的识别、处理与传输。
wMPS基本原理及信号采集模块架构
1.1 wMPS工作基本原理
wMPS是一种新型的基于光电扫描的测量系统,其组成如图1所示。
发射站向四周发射两束扫描光以及一束同步光,接收器接收到光脉冲的信息并将其转变为电脉冲,前端处理器接收电脉冲后将其按照周期进行区分,获得其角度信息,并上传给计算机最终完成坐标解算[2]。
当系统由两台及以上的发射站组成时,则可以使用类似经纬仪的测量原理来测量接收器在全局坐标系下的坐标[3]。其测量原理如图3所示。
当空间内某一处的接收器Rx:(x,y,z)能同时接收到两发射站Tx1以及Tx2的光信息时,在计算出接收器在每个发射站坐标系下的水平角α1、α2与垂直角β1、β2后,假设已知发射站的坐标为Tx1:(0,0,0)与Tx2:(x,0,0),则可通过如下公式计算接收器的坐标:
在大型测量网络中,接收器常常会同时接收多个发射站的光信息,其光脉冲示意图如图4所示。为了利用光平面的信息解算出接收器的全局坐标,前端处理器需要记录每一个电脉冲上升沿和下降沿到来的时间,以脉冲宽度来区分出同步光信号与扫描光信号[4],最终精确求解接收器的全局坐标。
1.2 前端处理器总体架构
前端处理器是wMPS测量系统的最重要的组成部分,它是系统安全、稳定、准确运转的重要保证。如何将来自大尺寸空间中发射站的光信息如实地记录与准确地区分,同时具有一定的扩容能力,对于整个wMPS系统是至关重要的。
基于Zynq芯片的wMPS前端处理器主要由两部分组成:可编程逻辑(Programmable Logic,PL)部分和作为ARM控制的处理系统(Processing System,PS)部分。它们之间通过AXI总线进行通信,PL部分擅长做逻辑运算以及并行性强的任务,而PS部分擅长做串行以及控制偏多的任务[5]。因此在PL中设计逻辑电路来实现信号的采集与存储,而PS 部分则负责后续对光平面脉冲的分类与处理,使得整个前端处理器的运算效率达到最大。基于Zynq的前端处理器架构如图5所示。
信号采集模块逻辑设计
在PL部分中的信号采集模块划分如下:
(1)光平面信息检测与存储部分。当光电接收单元接收到发射站的同步光信号和扫描光信号时,将转化为相应的电脉冲传递给PL部分,PL部分通过3个状态机将相应脉冲的上升沿、下降沿以及对应的时间记录,并传给FIFO进行保存。
(2)光平面信息传输接口部分。光平面的信息存储在FIFO逻辑电路中,而PL部分与PS部分的通信基于AXI总线协议,因此需要设计相应的逻辑电路来实现信息的读取与传输。
IP核是具有知识产权的集成电路芯核,是经过反复验证的具有特定功能的模块,与芯片制造工艺无关,可移植到不同的半导体工艺中。Xilinx公司提供了许多免费且功能强大的IP核给开发人员使用。在wMPS前端处理的PL部分设计中,也采用了许多Xilinx提供的IP核,这使得开发流程简洁许多,并且正确性与可靠性得到了保证。其中测量同步控制模块采用Xilinx提供的基于AXI总线的GPIO模块,计数器采用Xilinx的二进制模块,以及与上位机交互的通信模块。因此关于这些部分本文不再进行讨论,主要讨论信号捕捉与计时存储模块以及基于AXI总线的FIFO接口模块的IP核设计。
2.1 信号捕捉与计时存储模块
wMPS前端处理器PL部分最核心的工作就是对来自接收器的电脉冲进行捕捉以及锁存时间值,其主要逻辑结构如图6所示。通过3个协同工作的状态机来分别完成捕捉边沿信号、产生标志位以及锁存时间值3个任务。
图7所示为捕捉边沿信号的状态机状态转换图。状态机缓冲来自接收器的电脉冲信号,输出Trig与Trig_n。Trig_En初始时为0,进入IDLE状态。当开始测量时,Trig_En被置1,此时若输入为0(IN=0),则进入REDY状态。当IN为1时,进入上升沿状态(POSEDGE_IN),Trig置1。一个时钟周期后将Trig信号再拉低,进入等待(DELAY)状态。等到IN为0时,再进入下降沿状态(NEGEDGE_IN),此时将Trig_n拉高一个周期。再根据输入IN的状态进行判断进入空闲状态(IDLE)还是上升沿状态(POSEDGE_IN)。
图8所示为脉冲捕捉计时状态机转换图,包含空闲(IDLE)、等待(WAIT)、捕捉(CAPT)3种状态。当脉冲捕捉状态机没有接收到PS部分指令时,处于空闲状态;当收到来自PS部分指令后,且脉冲捕捉状态机处于非复位状态时,跳转至等待状态;当Trig或者Trig_n输出有一个为1时,进行信号捕捉,将FIFO写使能信号置1,同时将30位计数器的时间值记录下来,TP_Capt为计数器捕捉瞬间的时间值,将其写入FIFO存储。在工作状态下(Trig_En=1&&Rst_n=1),每次时钟上升沿到来时,若是Trig或Trig_n中有一个信号有输入,则捕获信号触发的时间值(30位),并写入FIFO,否则处于等待期间。
图9为事件捕捉状态机转换图,包含空闲(IDLE)、等待(WAIT)、上升沿(RIS)、延迟(DELAY)、下降沿(FAL)沿5种状态。当接收到PS指令后,从空闲状态跳转至等待状态,TP_Type保持上一状态的信号。当来自边沿信号捕捉状态机的输出Trig为1时,进入RIS状态,TP_Type被标记为上升沿(01)。下一时钟周期到来时对Trig_n的信号进行判断,若为1,则TP_Type被标记为下降沿(10);否则TP_Type保持住,直到Trig_n信号为1时再标记为下降沿。而当状态机位于下降沿状态时,若下个周期Trig信号为1,则跳转回上升沿状态,TP_Type改变相应标记;否则状态机跳转回等待状态,TP_Type继续保持上一状态。
2.2 基于AXI总线的FIFO接口模块设计
为提高wMPS前端处理器的工作效率,本文基于AXI总线通信协议,定制FIFO的接口模块,利用硬件逻辑控制读取工作,缩短读取时间来提高系统的工作效率。
图10为FIFO接口模块的内部结构,它包括以下几部分:FIFO读取逻辑、AXI总线接口以及多个控制寄存器。其中AXI总线接口是Xilinx公司提供的标准通信协议,该模块在AXI总线与用户逻辑之间提供双向的接口[6]。模块中有3个寄存器,其中寄存器0用来从AXI总线上接收指令,寄存器1与寄存器2分别用来存储FIFO存储的数据与FIFO的标志位数据。使用这样的方式读取FIFO中的数据,仅需2个时钟周期即可完成,极大地提高了前端处理器的工作效率。
wMPS前端处理器PL部分逻辑仿真
为了验证前端处理器PL部分的逻辑功能的完整性与可靠性,分别对设计的信号捕捉与计时存储模块以及基于AXI总线的FIFO接口模块进行仿真验证。
3.1 信号捕捉与计时存储模块仿真
使用Vivado提供的仿真器,输入信号为随机产生的宽度随机的脉冲信号,观察dout中读出的数据以及相应的FIFO标志位,验证设计的正确性。仿真波形如图11所示。
由图11可以清晰地观察到,输出的数据dout以及FIFO的标志位FIFO_Flag均在两个时钟周期后跳转,即系统的延迟仅仅为两个时钟周期,满足设计需求。
3.2 FIFO接口模块仿真
由于FIFO接口模块为基于AXI总线定制,若是直接仿真,不易满足时序要求,因此使用Xilinx的ISE,利用总线仿真模型(Bus Function Model,BFM)对FIFO接口模块进行仿真,通过FIFO端口写入数据, 并从寄存器中读取并观察输出信号。基于BFM的FIFO接口模块仿真如图12所示,可以观察到,用户IP可以正确输出读FIFO时序,两个周期就可以读出FIFO中的内容。因此从接收器检测到脉冲信号到PS部分读取电脉冲信息,仅需4个时钟周期,延迟极小,满足系统应用要求。
结论
本文提出了一种新型的将电脉冲信息检测并区分的方法,基于Zynq芯片解决了室内定位系统中光脉冲信号难以区分的难题。仿真验证表明,该设计的时钟延迟极小,具有很高的精度,可以满足现有wMPS系统对测量精度的要求,同时在其余基于光电扫描的室内定位系统中应用前景极高。