基于PCI9054的數據轉換模塊設計
通過設置其DMA控制器內部的寄存器即可實現兩總線之間的數據傳輸。PCI9054的DMA傳輸過程可由以下幾個步驟實現:
1)設置方式寄存器:設置DMA通道的傳輸方式,寄存器DMAMODE0或者DMAMODE1;
2)設置PCI地址寄存器:設置PCI總線側的地址空間起始地址;
3)設置LOCAL地址寄存器:設置LOCAL總線側的地址空間起始地址;
4)設置傳輸計數寄存器:以字節位單位設置每次DMA數據傳輸量;
5)設置描述寄存器:設置DMA傳輸的方向,0表示數據從PCI總線到Local總線,1表示數據從Local總線到PCI總線;
6)設置命令/狀態寄存器:啟動或停止DMA操作。
當應用程序啟動開始模擬后,驅動程序收到應用程序開始模擬的命令后,同時填寫PCI9054的門鈴寄存器(PCI端偏移地址:60H)產生LO-CAL端的中斷通知硬件接收DMA的數據,FPGA收到中斷后,清除中斷,同時判斷收到開始模擬的命令。硬件準備好以后發中斷告訴主機已經準備好,同時填寫PCI9054的門鈴寄存器(PCI端偏移地址:64H)產生PCI端的中斷通知硬件已經準備好,主機收到中斷后,清除中斷,填寫啟動DMA開始寄存器,把計算機內存空間的數據通過PCI總線傳輸到PCI9054的LOCAL端,FPGA接收LOCAL端的數據存入數據緩沖區,同時由FPGA控制讀取緩沖區中的數據經并串轉換用LVDS信號形式發送。當DMA結束后產生主機PCI中斷,主機收到中斷后清除中斷,并等待硬件準備好中斷來后清中斷填寫下一個DMA開始,直到模擬數據模擬完為止。本文引用地址:http://www.104case.com/article/191304.htm
4 WDM驅動程序設計
4.1 WDM驅動程序簡介
WDM驅動程序是一種PnP驅動程序,它同時還遵循電源管理協議,并能在Windows 98和Windows 2000間實現源代碼級兼容。WDM驅動程序還細分為類驅動程序(class driver)和迷你驅動程序(minidriver),類驅動程序管理屬于已定義類的設備迷你驅動程序向類驅動程序提供廠商專有的支持。在WDM驅動程序模型中,每個硬件設備至少有兩個驅動程序。其中一個驅動程序稱為功能(function)驅動程序,了解使硬件工作的所有細節,負責初始化I/O操作,處理I/O操作完成時所帶來的中斷事件,為用戶提供一種設備適合的控制方式。另一個驅動程序稱為總線(bus)驅動程序,它負責管理硬件與計算機的連接。例如,PCI總線驅動程序檢測插入到PCI槽上的設備并確定設備的資源使用情況,它還能控制設備所在PCI槽的電流開關。
4.2 驅動程序開發環境及設計
項目開發中選擇的是Numega公司的Driverstudio驅動程序開發工具包,它是建立在Windows Driver Development Kit之上的驅動程序開發工具,包含了VtoolsD、DriverWorks、DriverNetWorks和SoftICE等開發工具。DriverWorks用于開發普通設備的WDM驅動程序,SoftICE提供了強大的調試工具。在安裝Driverstudio之前,還需要安裝相應操作系統的DDK,如XPDDK和VC6.0工具。
在Driverstudio驅動程序向導里可以輕易方便地建立起PCI9054的驅動程序框架,而且Driverstudio還提供了PCI9054驅動程序中大量類函數的接口,降低了開發難度,縮短了程序編寫時間。調試程序可以使用SoftICE和Driver Moniter,極為方便查錯及優化程序設計。
5 結束語
本文通過介紹PCI總線接口協議芯片PCI9054的性能、特點,分析Windows的WDM驅動程序的特點,對所設計的數據轉換模塊結構進行了詳細說明,提出了雙SBAM結構數據緩存器的應用方案。應用結果表明,該設計可滿足數字視頻帶寬20 MHz以內的高速串行數據流(INDS數據流)的轉換與傳輸,保證了硬件內存大容量讀取的高速、實時性。
評論