2 系统工作原理及主要控制信号说明
本文研究了如何在移动端GPS信息缺失的情况下,使用SPI协议建立FPGA与惯导芯片ADIS16003之间的通信,从而获取移动物体当前的加速度。DSP将通过EMIF接口读取此加速度,并根据之前有效的GPS信息推算出当前的概略GPS信息(经纬度、速度和时间等)。
2.1 工作原理
FPGA驱动ADIS16003惯导芯片工作包括初始启动和正常启动两种模式。
(1)初始启动模式
FPGA上电复位时自启动ADIS16003芯片,配置ADIS16003控制寄存器,并读取芯片测得的双轴轴向加速度初始值,存储到EMIF接口的0x068~0x069地址空间供DSP读取,用作误差校正之用(此模式工作在移动端处于静止状态时,且此模式仅由DSP读取1次)。
(2)正常启动模式
初始启动模式完成之后,FPGA将自动转入数据采集阶段,源源不断地通过SPI接口从ADIS16003芯片中采集双轴轴向瞬时加速度,以备DSP使用。加速度每秒采集8次,每隔0.125 s采集一次。每秒都将得到8组结果,分别为ax0ay0、ax1ay1、ay2ay2、ax3ay3、ax4ay4、ax5ay5、ax6ay6和ax7ay7,存储于FGPA内部的8个中间寄存器单元reg0~reg7(非EMIF接口,每个输出结果为12×2位,存储于32位的寄存器组中),并随着时间的推移不断地刷新。这么做的目的是确保这8个寄存器组中始终保存有最近1 s的移动物体加速度信息,以保证加速度信息的准确性和有效性。当CPU通过GPS接收天线检测到GPS信息丢失时,CPU通过PCI接口给FPGA配入spi_cmd_val信号(高电平有效),同时通过HPI接口给
DSP写入信息丢失前2 s的GPS信息(包括经纬度、速度和时间),作为定位基点。FPGA检测到spi_cmd_val信号有效后,立即将中间寄存器单元reg0~reg7中存储的瞬时加速度送入EMIF接口的0x060~0x067地址单元(32位),同时拉高int_spi_done信号,产生外部中断
(拉低DSP的
引脚)通知DSP从EMIF接口读取加速度信息,并通过后续软件算法进行信号处理,转化为移动端经纬度信息。再通过DSP的HPI接口上报给CPU,从而使高层获取移动端当前GPS信息,即完成了GPS位置信息的模拟。加速度存储格式如表1所列。其中包括初始和瞬时加速度值,共占用32位EMIF接口10个地址单元。
2.2 主要控制信号说明
①spi_cmd_data:ADIS16003芯片控制字(寄存器),8位,FPGA配入。
②spi_cmd_val:GPS信号缺失时ADIS16003启动信号,CPU发出,脉冲触发。
③spi_cmd_val_reg:ADIS16003启动信号寄存器,及时存储触发脉冲,持续一个时钟后清0。
④spi_data_i:ADIS16003串行输出信号,包括双轴轴向加速度,每个spi_clk时钟下降沿输出一位,16个时钟周期完成一次运算。
⑤spi_cs:SPI片选信号,低电平有效。
⑥spi_clk:SPI通信时钟信号,由主时钟分频得到,此处进行32分频。
⑦spi_data_o:ADIS16003控制字输入信号,8位串行输出,spi_clk时钟上升沿动作。
⑧spi_rdata:ADIS16003运算结果,12位,每个spi_clk下降沿输出一位,采取移位拼接方式(向左移),在第16个时钟下降沿输出一次完整的采集结果(每次采集至少需要16个时钟周期)。
⑨spi_state:SPI工作状态信号,0为IDLE,1为BUSY,2为DONE,采用有限状态机进行设计。
⑩spi_wr_cnt_o、spi_wr_cnt_i:十六进制计数器,时钟上升沿和下降沿分别计数。
上一页 [1] [2] [3] [4] 下一页