|
本篇文章主要介紹在FPGA設計中如何使用本GXFPGA驅動創建一個中斷事件/請求。
中斷作為硬件與軟件握手和同步的手段而被廣泛使用,可用于表示硬件進程的完成或軟件執行過程中的請求。Gx3500 & GX3700/GX3700e用戶可編程FPGA板卡都支持這一特性,并向FPGA設計者開放專用的硬件中斷引腳;軟件方面,三個API函數用于中斷管理和設置。
在開始編程設計之前,請進行以下準備:
l 檢查并更新Gx3500 & GX3700/GX3700e最新固件。FPGA包含設備的核心固件,FPGA版本必須為B003及其以上。使用虛擬軟面板(GxFpgaPanel.exe)對GX3500進行初始化后,點擊About按鈕,點擊Upgrade Firmware按鈕,然后瀏覽選擇用于更新的固件文件(.RPD文件)。
l 檢查并安裝最新的GXFPGA(.exe)驅動(1.2或更高版本)。
用戶可以 以下兩種方式中選擇一種方式處理硬件中斷:
l 無論中斷事件/請求何時發生,都調用回調(callback)函數(GxFpgaSetEvent)。
l 等待,直到中斷事件/請求發生或超時(GxFpgaWaitOnEvent)
GxFpgaSetEvent(SHORT nHandle, SHORT nEventType, BOOL bEnable, Gt_EventCallback procCallback, PVOID pvUserData, PSHORT pnStatus)
此函數用于控制是否捕捉中斷事件/請求,并設置用于處理中斷事件/請求的回調函數。
nEventType:捕捉的事件/請求類型。通常此值必須設置為 GT_EVENT_INTERRUPT。bEnable:布爾量,控制啟用或關閉中斷事件/請求的創建。
procCallBack:一個回調函數(函數指針)。
pvUserData:一個指向用戶數據(標量或結構體)的指針,在中斷事件/請求發生時,會傳遞給回調函數。
注意:回調函數原型必須符合以下形式,函數名可以任意。
GxFpgaCallBack(SHORT nHandle, SHORT nEventType, PVOID pvUserData)
GxFpgaWaitOnEvent(SHORT nHandle, SHORT nEventType, LONG lTimeout, PSHORT pnStatus)
此函數會阻止程序的執行,并等待中斷事件/請求的發生。
nEventType:捕捉的事件/請求類型。通常此值必須設置為 GT_EVENT_INTERRUPT。
lTimeout:超時(ms),用于設置等待中斷事件/請求的時間,若在此時間內中斷事件/請求沒有發生則繼續執行程序。
GxFpgaDiscardEvents(SHORT nHandle, SHORT nEventType, PSHORT pnStatus)
此函數用于清除所有掛起的中斷請求。
nEventType:捕捉的事件/請求類型。通常此值必須設置為 GT_EVENT_INTERRUPT。
在進行FPGA設計時,可使用IRQ(見GX3500用戶手冊或GX3700/GX3700e用戶手冊的Pin Assignment Table)引腳創建一個硬件中斷事件/請求。IRQ引腳輸入信號為上升沿時,創建中斷事件/請求
5. 例程/范例
GXFPGA 驅動包含一個例程,演示如何進行中斷事件/請求編程。參閱…\GxFpga\Examples\C文件夾內的GxFpgaExampleC.cpp與GxFpgaExampleIRQx250ms.rpd(FPGA設計文件) 。
在例程中,每250ms創建一個中斷事件/請求。