時間:2008-12-23 15:30:15來源:ronggang
圖2 高速數據輸出卡硬件結構框圖[/align]
在本系統中,將PCI 9054設定為C工作模式,即32位地址、32位數據、總線非復用工作模式。由于PCI 9054從上位機讀取數據均發送到FIFO一個設備,因此其Local端地址線不起任何作用,而數據線僅選用高12位。此外,在本設計中采用串行EEPROM 93LC56B對PCI 9054進行配置,在上電后,PCI 9054自動讀取93LC56B中的數據,設置相關寄存器,完成初始化操作。
鑒于本系統高速,大數據量的特點,一般常用的FIFO無法適應要求,因此選用了384K x 8 bit的視頻幀存儲器AL422B,作為數據緩沖。AL422B由3M位的DRAM組成,工作頻率最高可達50 MHz,有獨立的輸入、輸出接口及讀寫時鐘,可同時進行讀寫操作;/RE,/WR,/REST及/WRST四個輸入信號分別控制AL422B的讀、寫與讀指針、寫指針復位操作。本系統中,將兩片AL422B并聯,擴展為384K x 16 bit的FIFO存儲器。
整個過程的時序控制由可編程邏輯器件完成,它的工作包括:向PCI 9054發出定時中斷信號,由其向上位計算機申請中斷;控制數據緩沖器AL422B的讀寫時序,包括其初始化復位操作;產生PCI 9054所需的時序信號。
2 系統軟件開發
整個系統的軟件包括PCI 9054驅動程序與上位機應用程序,圖像數據預處理(格式轉換)程序及可編程邏輯器件CPLD的VHLD程序。在此,僅對PCI 9054驅動程序與應用程序的開發作以簡要介紹。
WinDriver是Jungo公司出品的開發工具包,它支持的總線結構包括PCI/CardBus/ISA/ISAPnP/EISA/CompactPCI和USB,可大大簡化生成硬件驅動程序和開發應用程序的過程。本次開發使用的是WinDriver 6.03版。
WinDriver已經內置了包括PCI 9054在內的多種PCI/USB接口芯片的驅動程序,因此只需將設計完成的PCI卡插入計算機,然后運行Windriver的向導程序,并在列表中選擇相應的PCI接口芯片,只要硬件接口連接正確,即可生成相應的 .inf文件。inf文件包含了設備類型、生產廠商、型號及拷貝文件的路徑等PCI硬件設備的信息,通過inf文件,Windows才可以找到PCI卡并完成對其驅動程序的安裝。
[align=center]
圖3 使用WinDriver生成PCI卡硬件設備信息文件(.inf文件)界面[/align]
上位機軟件開發采用用戶模式,其流程圖如圖4所示:
[align=center]
圖4 上位機軟件流程圖[/align]
由于AL422B并不象其它通用FIFO那樣能提供數據空、半滿、全滿等邏輯信號,因此只能根據其數據發送速率、FIFO容量及PCI總線速率,來設定一個定時中斷。這個定時中斷設定為數據輸出卡向外發送一幀數據所需的時間,約為14.8ms,即數據輸出卡每向外發送一幀數據,必定會從上位機緩沖區中讀入一幀數據。由于在啟動定時中斷前,數據輸出卡已經預先讀取一幀,因此,即便上位機對定時中斷的響應有一定延遲,也不會出現FIFO被讀空的情況。同時,由于FIFO的深度為384K,近似于3幀的數據量,因此也不可能出現FIFO被寫滿,而造成數據丟失的情況。定時中斷由卡上的CPLD根據輸入時鐘精確產生,在定時中斷服務程序中,程序依次讀取一幅完整光譜圖像中的一幀數據,若全部512幀數據被讀完,則指針歸零,從頭再次開始,以此保證光譜圖像數據的循環發送。下面給出了中斷服務程序的部分源代碼。WinDriver針對PCI 9054芯片,提供了大量API函數可供調用,因此使對PCI 9054的編程操作非常方便。
void WINAPI PLX_IntHandlerRoutine(P9054_HANDLE hPlx, P9054_INT_RESULT *intResult) ——中斷服務程序
{ DWORD dwIntStatus;
P9054_DMAReadWriteBlock(hPlx,0x0,(PVOID)pBuffer,SEND_BLOCK_SIZE,FALSE,P9054_MODE_WORD,P9054_DMA_CHANNEL_0);
—— 控制PCI 9054以DMA方式從上位機緩沖區讀取1幀數據
if(block_num
{ pBuffer=pBuffer+SEND_BLOCK_SIZE;
block_num++;
} ——每發送1幀數據后,數據指針向后移動一幀的數據量,已發送幀計數加1
else
{ pBuffer=Buffer; block_num=0; ——512幀發送完后,指針回零,從而實現512幀數據的循環讀取
}
……
dwIntStatus = P9054_ReadReg (hPlx, P9054_INTCSR);
P9054_WriteReg (hPlx, P9054_INTCSR, dwIntStatus | 0x00000d00);
——開中斷,中斷服務程序結束,等待下一次中斷
}
3. 測試結果和結論
將高速數據輸出卡安裝在計算機上,運行應用程序,即可使數據輸出卡進行工作。下圖是通過示波器采集的數據輸出卡上部分信號的時序圖。
[align=center]標簽:
上一篇:無速度傳感器控制礦用電力機...
傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(www.cdcst56.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-09-08
華為昇騰Atlas800iA2 910B服務器Deepsee...
2025-09-04
2025-08-06
2025-07-08
2025-06-30
2025-06-16