基于PCI 和FPGA 的InSAR 基線測量實時采集系統(tǒng)(二)
相關資料:
基于PCI和FPGA的InSAR基線測量實時采集系統(tǒng)(一)
2. 3 FPGA 核心邏輯控制
基于FPGA 的時序邏輯控制模塊是本系統(tǒng)的核心設計,能夠實現(xiàn)對相機和激光測距儀的模式設置、相機和激光測距儀的數(shù)據(jù)同步控制、多個傳感器數(shù)據(jù)的緩存與整理,對外部高速緩存的控制以及與PLX9656 的通信。 系統(tǒng)采用Altera 公司的Stratix Ⅱ系列EP2S60F1020 器件,配置芯片選用EPC16.
1) 傳感器觸發(fā)設置
本設計中,2個傳感器的工作模式通過主機端進行設置,通過PCI 總線將模式設置字符串傳到FPGA 中,通過串口控制器實現(xiàn)與相機和激光測距儀的通信,從而完成對相機和激光測距儀的配置。 且相機和激光測距儀收到配置命令后也通過串口控制器把應答信息傳到FPGA 中,再通過PCI 總線傳到主機上。為了實現(xiàn)與激光測距儀的同步控制,相機選擇軟件外觸發(fā)模式,此模式下需要在FPGA 內產(chǎn)生一個頻率為20 Hz 的EXSYNC 觸發(fā)信號送給CCD 相機進行曝光讀取數(shù)據(jù),EXSYNC 的低電平寬度為10 μs,相機的曝光時間由主機端進行參數(shù)設置。
2) 數(shù)據(jù)同步控制
把EXSYNC 觸發(fā)信號同時送給激光測距儀和相機,來實現(xiàn)2 個傳感器的輸出同步。 因為2個傳感器的測量速度不同,相機的輸出幀頻為20 幀/ s,激光測距儀的輸出頻率為50 Hz,所以數(shù)據(jù)同步的設計關鍵在于如何記錄同時刻的單幀圖像數(shù)據(jù)和激光測距儀數(shù)據(jù),2 個傳感器同步采集的時序關系圖如圖2 ( a) 所示,CLK 100 Hz 是取2 個頻率的最小公倍數(shù),可以根據(jù)FPGA 的內部資源使用情況來設定,Data_lrf_sel 為選擇的激光數(shù)據(jù),其中I 表示該時刻的數(shù)據(jù)無效,V 表示該時刻的數(shù)據(jù)有效。數(shù)據(jù)同步方案為相機數(shù)據(jù)進入FPGA 后,在2 個雙口RAM 中進行整理緩存,激光測距儀經(jīng)過串口接收器把數(shù)據(jù)傳入FPGA 內,本設計的串口接收器帶有FIFO 緩存,數(shù)據(jù)經(jīng)過緩存后接送入雙口RAM 中進行進一步緩存; 按照圖2 ( a) 所示的時序關系圖生成雙口RAM 的寫使能WEN 信號,WEN 信號有效時把此時刻的激光數(shù)據(jù)寫入雙口RAM 中; 當讀使能信號有效時,首先從雙口RAM 中的激光測距儀數(shù)據(jù)到FIFO 中,接著讀取相應幀的圖像數(shù)據(jù)到FIFO 中; FIFO 半滿后,激光測距儀數(shù)據(jù)和相機數(shù)據(jù)一起送到外部的SDRAM中進行進一步緩存,仿真時序圖如圖2 ( b) 所示。由圖2 的仿真結果可知,本文同步設計方案能夠有效地減少2 個傳感器之間的延時,采集2 個傳感器的相對同步數(shù)據(jù)。 雖然不是嚴格意義上的同步,但已能滿足柔性基線測量系統(tǒng)的需求。
圖2 CCD 相機和激光測距儀同步采集設計及仿真時序圖
Fig. 2 Timing diagram and simulation results of synchronous acquisition using CCD camera and laser rangefinder
3) 數(shù)據(jù)緩存與整理
本系統(tǒng)中采用的緩存方案為首先把圖像數(shù)據(jù)、控制信號進行3 級鎖存,因為實驗相機輸出的圖像數(shù)據(jù)為2 個TAP 的數(shù)據(jù),分別把2 個TAP 的數(shù)據(jù)送入FPGA 內部的2 個雙口RAM 中進行緩存,左邊TAP 的數(shù)據(jù)按照順序地址存儲,右邊TAP 的數(shù)據(jù)按照逆序地址存儲,從而將2 個TAP的數(shù)據(jù)拼接成完整的圖像。 當使能信號有效時,把2 個雙口RAM 的數(shù)據(jù)送入到FIFO 中進一步緩存,當FIFO 數(shù)據(jù)半滿后,把FIFO 的數(shù)據(jù)通過SDRAM 接口控制器送入到外部的SDRAM 存儲器中去。
4) PCI 邏輯接口
本系統(tǒng)通過PCI 本地邏輯接口來完成FPGA與PLX9656 的通信。 系統(tǒng)加電啟動后,PLX9656的內部寄存器由PCI 總線的RST#信號復位; 同時PLX9656 輸出局部復位信號LRESET,并檢查EEPROM 是否存在。 如果采用本地端DMA 方式控制,則整個握手過程如下: 首先當SDRAM 緩存中的數(shù)據(jù)達到設定值后,LINTI # 信號有效,PLX9656 向主機端發(fā)送中斷請求信號; 若CPU 響應中斷,則在中斷相應程序內發(fā)出DMA 讀命令、要讀的字節(jié)數(shù)和地址信息等。 PLX9656 申請本地總線,使LHOLD 信號有效。 FPGA 驅動LHOLDA信號有效來響應PLX9656 的請求,PLX9656 將PCI 地址空間映射到本地地址空間。 接著通過設置寄存器來啟動DMA 傳輸,PLX9656 有效ADS#( 地址選通信號) 、訪問地址出現(xiàn)在LA 地址總線上。 再次FPGA 有效READY # 信號,同時使能SDRAM 控制接口的讀使能有效信號,數(shù)據(jù)開始出現(xiàn)在LD 數(shù)據(jù)總線上。 當數(shù)據(jù)的最后一個字節(jié)開始傳輸時,PLX9656 驅動BLAST#信號有效,同時FPGA 無效READY #信號。 最后使SDRAM 的讀使能是信號無效,PLX9656 驅動LHOLD 無效,釋放本地總線,接著FPGA 也驅動LHOLDA 無效,結束一次數(shù)據(jù)的傳輸。 DMA 傳輸?shù)臅r序仿真圖如圖3 所示。
圖3 本地總線到PCI 總線的DMA 傳輸時序仿真圖
Fig. 3 Simulation results of DMA transmissionfrom local bus to PCI bus