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