摘要: 串口传输常用于基于FPGA和DSP结构的信号处理板和外部设备之间的数据交换。以GPS RTK定位应用为基础,针对单个串口全双工传输不足以应对多种数据类型同时输入输出的情形,设计并实现了一种面向多串口不同类型数据的传输方案。该方案通过增加串口控制寄存器实现单个中断信号即可控制所有串口,采用乒乓交替读写实现数据持续高速输入。测试表明该方案可独立对各串口进行配置,可同时实现GPS定位结果、差分GPS修正数据与外界的交换以及用户控制命令的输入,并且可减少硬件调试时间,节约硬件资源。
通用异步接收/发送器(UART)是一种通用串行数据总线,用于异步通信,可以实现全双工通信。UART IP核是用在外部设备和Atera FPGA芯片上的SOPC间进行串行通信的一种实现方式。它可以替代RS-232实现芯片与外设的输入/输出(I/O)操作。
GPS RTK(Real Time Kinematic)可以即时提供厘米级的定位解。在进行动态定位时,基准站将精确已知的GPS坐标和观测数据实时用微波链路传给流动站,在流动站实时进行差分处理,得到基准站和流动站坐标差;坐标差加上基准站坐标得到流动站每个点坐标。基准站向终端用户接收机提供的信息包括对GPS卫星钟、星历数据、用户测量伪距和载波相位等参数的修正。
本文所用的信号处理板可以作为GPS RTK基站使用,可以与其他基站组网接收差分修正数据定位或者本身的高精度单点定位输出定位结果和差分修正数据。作为基准站,不仅要实时输出精确定位信息,而且需要与外界进行差分数据交换。由于同一时间需要大量持续差分数据的输入与输出和用户控制指令的输入,设计采用了3个串口。
1 硬件结构
信号处理板为FPGA+DSP结构,具有多路A/D、D/A转换器件。中频信号经A/D采样后进入FPGA完成去载波,PRN码相关运算,IQ变换等操作后由DSP芯片进行定位解算。通过串口输入的用户控制指令任意选择串口对GPS定位结果的输出和GPS差分修正数据的输入输出。
图1 信号处理板框图
FPGA芯片上配置了3个串口,分别为UART0、UART1、UART2,由SOPC Builder分配相对应的存储映射空间和中断请求。每个模块均使用默认的基地址,并分别设定UART0、UART1、UART2的数据输入中断请求号为IRQ1,IRQ2,IRQ3。另外,DSP芯片可能在任意时刻通过3个串口发送不同数据。
如果DSP对每个串口发送数据时均向NIOS II CPU发出中断申请,则需要3根PIO管脚,占用太多针脚资源。本实现方案通过增加个串口控制寄存器,仅占用1根PIO管脚。
同时,对和DSP芯片进行交互控制的PIO信号分配中断请求号为IRQ0。
每个UART口都有输入、输出两块RAM作为缓存,数据位宽为16bits。其中,串口输入缓存命名为ReadFromMemInterface,串口输出缓存命名为WriteToMemIntedace(见图2)。需要注意的是实际传输数据时,外部设备的串口参数的数据位长度设置为8 bits,因此需要在串口的软件处理进行字与字节的转换。
图2 NIOS II CPU的地址映射