CCD系統下基于FPGA的PCI圖像采集卡設計與實現
4 VxWorks下驅動軟件的編寫
VxWorks是一種高可靠、微內核、可裁剪的實時嵌入式操作系統,由于它具有高效的實時任務調度、中斷管理等優點,成為了航空、航天、醫療、通信等領域首選的實時操作系統。PCI圖像采集卡的驅動就是基于VxWorks實時操作系統進行開發的。
4.1 PCI設備驅動開發
每個PCI設備都有一容量為256字節并具有特定結構的地址空間,前64個字節包含PCI接口的信息,也成為PCI配置頭。其余的192個字節可以由板卡的設計自己定義。為了讓VxWorks支持PCI驅動,需要對BSP中的sysLib.c文件進行修改,使得系統支持初始化配置支持庫和中斷支持庫,以提供對PCI設備配置空間的訪問租PCI中斷復用功能的支持。
設備驅動程序初始化PCI圖像采集卡的流程一般如下:根據PCI設備的廠商ID和設備ID號來找到PCI設備的總線號、設備號和功能號;根據總線號、設備號和功能號來映射PCI設備的地址空間;并且配置中斷線性寄存器;最后使能PCI內存空間。其他寄存器要根據具體應用來配置。
4.2 數據采集方式
由于前端數據量很大,所以簡單的單次傳輸不能滿足系統的整體需求。必須用DMA方式進行傳送。通知數據可以讀取通常有兩種模式,查詢模式和中斷模式。由于查詢模式要大量消耗CPU資源,所以采用DMA結合中斷模式進行數據采集。
對數據的采集使用乒乓操作。當寫滿一片SRAM中就發中斷給CPU,通知數據已經準備好,這個時候驅動程序就開始讀取數據,同時前端數據繼續寫入另一片SRAM,寫滿后再次發送中斷。如此反復,直到PCI圖像采集卡接收到應用程序的停止傳送數據命令。
4.3 中斷的運用和管理
在VxWorks中,中斷的響應速度非常快。經測量,在我們的系統中PCI圖像采集卡從發出中斷到進入中斷處理函數的時間為7 μs。通過函數intConnect把中斷處理函數和中斷向量掛接起來。
在VxWorks中,中斷服務程序擁有獨立于各種任務的程序上下文,所以中斷服務程序不能執行需要任務上下文的函數。
5 結果驗證
我們對整個系統進行了驗證,CCD成像系統把采集的圖像數據經變化,如加上校驗和傳送給PCI圖像采集卡。用邏輯分析儀對PCI的一些關鍵信號進行了測量。如圖5所示。本文引用地址:http://www.104case.com/article/190453.htm
從圖中不難看出,PCI圖像采集卡一直處于數據傳輸狀態,經測試,傳輸速度完全滿足系統的要求。在應用程序中對圖像數據進行了存盤,并計算校驗和,發現校驗和正確。
6 結論
本文設計的PCI圖像采集卡以FPGA為核心,在PCI核的基礎上用邏輯實現了PCI圖像采集卡Initiator下的突發模式傳輸,從而實現了視頻數據的高速傳輸。為了傳輸的穩定性和可靠性,使用低壓差分信號技術進行圖像數據的接收和控制數據的發送。最后在VxWorks平臺上實現了PCI圖像采集模塊的驅動編寫。經過測試,圖像數據傳輸穩定可靠,傳輸速率也能滿足系統的整體需求。
評論