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