基于PCI 和FPGA 的InSAR 基线测量实时采集系统(二)
扫描二维码
随时随地手机看文章
相关资料:
基于PCI和FPGA的InSAR基线测量实时采集系统(一)
2. 3 FPGA 核心逻辑控制
基于FPGA 的时序逻辑控制模块是本系统的核心设计,能够实现对相机和激光测距仪的模式设置、相机和激光测距仪的数据同步控制、多个传感器数据的缓存与整理,对外部高速缓存的控制以及与PLX9656 的通信。 系统采用Altera 公司的Stratix Ⅱ系列EP2S60F1020 器件,配置芯片选用EPC16.
1) 传感器触发设置
本设计中,2个传感器的工作模式通过主机端进行设置,通过PCI 总线将模式设置字符串传到FPGA 中,通过串口控制器实现与相机和激光测距仪的通信,从而完成对相机和激光测距仪的配置。 且相机和激光测距仪收到配置命令后也通过串口控制器把应答信息传到FPGA 中,再通过PCI 总线传到主机上。为了实现与激光测距仪的同步控制,相机选择软件外触发模式,此模式下需要在FPGA 内产生一个频率为20 Hz 的EXSYNC 触发信号送给CCD 相机进行曝光读取数据,EXSYNC 的低电平宽度为10 μs,相机的曝光时间由主机端进行参数设置。
2) 数据同步控制
把EXSYNC 触发信号同时送给激光测距仪和相机,来实现2 个传感器的输出同步。 因为2个传感器的测量速度不同,相机的输出帧频为20 帧/ s,激光测距仪的输出频率为50 Hz,所以数据同步的设计关键在于如何记录同时刻的单帧图像数据和激光测距仪数据,2 个传感器同步采集的时序关系图如图2 ( a) 所示,CLK 100 Hz 是取2 个频率的最小公倍数,可以根据FPGA 的内部资源使用情况来设定,Data_lrf_sel 为选择的激光数据,其中I 表示该时刻的数据无效,V 表示该时刻的数据有效。数据同步方案为相机数据进入FPGA 后,在2 个双口RAM 中进行整理缓存,激光测距仪经过串口接收器把数据传入FPGA 内,本设计的串口接收器带有FIFO 缓存,数据经过缓存后接送入双口RAM 中进行进一步缓存; 按照图2 ( a) 所示的时序关系图生成双口RAM 的写使能WEN 信号,WEN 信号有效时把此时刻的激光数据写入双口RAM 中; 当读使能信号有效时,首先从双口RAM 中的激光测距仪数据到FIFO 中,接着读取相应帧的图像数据到FIFO 中; FIFO 半满后,激光测距仪数据和相机数据一起送到外部的SDRAM中进行进一步缓存,仿真时序图如图2 ( b) 所示。由图2 的仿真结果可知,本文同步设计方案能够有效地减少2 个传感器之间的延时,采集2 个传感器的相对同步数据。 虽然不是严格意义上的同步,但已能满足柔性基线测量系统的需求。
图2 CCD 相机和激光测距仪同步采集设计及仿真时序图
Fig. 2 Timing diagram and simulation results of synchronous acquisition using CCD camera and laser rangefinder
3) 数据缓存与整理
本系统中采用的缓存方案为首先把图像数据、控制信号进行3 级锁存,因为实验相机输出的图像数据为2 个TAP 的数据,分别把2 个TAP 的数据送入FPGA 内部的2 个双口RAM 中进行缓存,左边TAP 的数据按照顺序地址存储,右边TAP 的数据按照逆序地址存储,从而将2 个TAP的数据拼接成完整的图像。 当使能信号有效时,把2 个双口RAM 的数据送入到FIFO 中进一步缓存,当FIFO 数据半满后,把FIFO 的数据通过SDRAM 接口控制器送入到外部的SDRAM 存储器中去。
4) PCI 逻辑接口
本系统通过PCI 本地逻辑接口来完成FPGA与PLX9656 的通信。 系统加电启动后,PLX9656的内部寄存器由PCI 总线的RST#信号复位; 同时PLX9656 输出局部复位信号LRESET,并检查EEPROM 是否存在。 如果采用本地端DMA 方式控制,则整个握手过程如下: 首先当SDRAM 缓存中的数据达到设定值后,LINTI # 信号有效,PLX9656 向主机端发送中断请求信号; 若CPU 响应中断,则在中断相应程序内发出DMA 读命令、要读的字节数和地址信息等。 PLX9656 申请本地总线,使LHOLD 信号有效。 FPGA 驱动LHOLDA信号有效来响应PLX9656 的请求,PLX9656 将PCI 地址空间映射到本地地址空间。 接着通过设置寄存器来启动DMA 传输,PLX9656 有效ADS#( 地址选通信号) 、访问地址出现在LA 地址总线上。 再次FPGA 有效READY # 信号,同时使能SDRAM 控制接口的读使能有效信号,数据开始出现在LD 数据总线上。 当数据的最后一个字节开始传输时,PLX9656 驱动BLAST#信号有效,同时FPGA 无效READY #信号。 最后使SDRAM 的读使能是信号无效,PLX9656 驱动LHOLD 无效,释放本地总线,接着FPGA 也驱动LHOLDA 无效,结束一次数据的传输。 DMA 传输的时序仿真图如图3 所示。
图3 本地总线到PCI 总线的DMA 传输时序仿真图
Fig. 3 Simulation results of DMA transmissionfrom local bus to PCI bus