基于SoPC的自感知運動圖像采集系統設計
(1)接口電路模塊。在各種存儲設備中,SD卡不僅小巧,而且功耗很低,另外市面上常見SD卡的容量可達到2 GB以上,因此非常適合用于對體積和功耗要求嚴格的嵌入式圖像存儲。該設計選用APACER公司的一款高速SD卡(傳輸速率為150X,容量4 GB)。為了增強系統的可擴展性,該設計在FPGA芯片中嵌入Altera公司新近推出的第二代高性能NiosⅡ軟核處理器,其處理能力超過200 MIPS,并在NiosⅡ中完成SD卡驅動程序設計。前端的采集緩存電路與NiosⅡ系統之間的數據和控制信號由定制的接口模塊完成。
定制IP核DATAIN_FIFO是在SoPC Builder環境下完成(如圖7所示),DATAIN_FIFO寫端口的時鐘信號、寫請求信號同步于SDRAM控制模塊的ReadFIFO1,而DATAIN_FIFO的讀端口的時鐘、讀請求信號則由CPU控制。以上信號除了waitrequest之外,都由Avalon交換結構自動產生和控制。waitrequest信號可以直接連接到異步FIFO的rdempty輸出,當FIFO讀空之后,waitrequest有效,插入等待周期,一直到從端口的數據準備好才輸出readdata。開始和結束采集控制信號由DETEcT信號和DMA中斷信號決定,確保采集到的數據剛好為一幀320×240圖像。
由于NiosⅡ系統提供了成熟的SPI接口,所以設計中采用SPI總線協議模式來讀寫SD卡。因為MMC卡在復位階段要求SPI的時鐘頻率要小于等于400 kHz,為了提高讀寫速度,本設計設計的接口不再兼容MMC卡,其設置SPI的SCK引腳的輸出頻率在數據傳輸時設為25 MHz。本文引用地址:http://www.104case.com/article/152285.htm
(2)BMP圖像文件創建程序。為提高程序運行速度。并考慮到該系統的實際需要,程序只實現了寫BMP圖像文件功能。程序主要由SD卡操作驅動接口函數和文件系統層組成。
驅動函數目的是為文件系統層提供所需的SD卡初始化函數和SD卡寫多塊數據函數。圖8是SD卡寫函數流程圖示意圖。當寫函數接收到主程序的寫文件指令后,就向SD卡發送多塊寫命令,卡將發送給主機一個應答令牌,并且等待主機發送一個發送數據塊來,當應答R1為0時,說明可以發送數據,塊大小設置為512 B。數據塊之后附有16位的CRC校驗,因為CRC校驗計算占用了很大部分發送的時間,該系統采用自定義用戶指令對這部分進行了加速處理。
要使寫入SD卡的數據在裝有Windows或Linux操作系統的上位機中得到正確訪問,需要在SD卡上創建它們支持的文件系統。考慮到FAT12目前已經很少使用,在此設計的文件系統只支持FAT16和FAT32。并且將整個卡作為一個分區處理。
圖9是系統的軟件工作主要流程圖。在主程序中,系統啟動后,先進行初始化操作,包括中斷初始化、文件系統初始化和SD卡底層驅動的初始化。隨后系統進入主循環等待狀態,一旦檢測到DETECT_PIO電平的變化就暫停SDRAM數據寫入,以防SDRAM緩存的圖像數據被覆蓋,同時根據當前的時間創建一個BMP格式的文件,然后往里填寫文件頭和文件信息頭,隨后連續寫一幀RGB數據。文件創建完畢后系統繼續處于檢測等待狀態,并恢復SDRAM數據寫入。
5 系統評價
該設計在自制核心實驗板上(見圖10)進行了軟、硬件仿真和調試,調試環境參數設定如下:采集時鐘頻率為25 MHz,NiosⅡ時鐘頻率為100 MHz、每幀圖像大小為320×240像素。調試結果如下:系統采集速度在60幀/s左右。對五米之內場景動態變化的響應時間在5 ms左右,SD卡保存單幀圖像時間約為9 s(每幀圖像數據量是153 600 B),連續工作一個星期無任何故障發生。結果表明該系統圖像采集和處理速度超過一般的以軟件實現為主的嵌入式圖像采集方案(如ARM處理器系統)。由于核心處理器采用單芯片方案,采集系統比較穩定,同時其功耗大大低于多芯片方案。
6 結 語
在此提出一種基于SoPC技術的圖像檢測、采集和儲存的一體化單芯片控制新型系統集成方案,并實現了原型系統,該系統的主要特點是處理速度快、功耗低、穩定可靠。
該設計可以在進一步工作中移植嵌入式操作系統μCLinux,以實現復雜的多任務操作。因此該設計既可作為獨立的解決方案應用于便攜式原位觀測系統中,同時以其良好的擴展性,也可作為一個子系統應用于大型圖像處理系統的前端部分。
評論