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