專利名稱:一種帶事件捕獲功能的通用目的輸入輸出電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電子技術(shù)領(lǐng)域,特別涉及一種帶事件捕獲功能的通用目的輸入輸出 (GPIO,General-Purpose Input Output)電路。
背景技術(shù):
在嵌入式系統(tǒng)中常常有數(shù)量眾多,但是結(jié)構(gòu)卻相對(duì)簡(jiǎn)單的外部設(shè)備和電路,對(duì)這 些設(shè)備,有的需要CPU輸出控制信號(hào),有的需要被用作CPU的輸入信號(hào)。并且,這些設(shè)備和 電路往往結(jié)構(gòu)和功能都比較簡(jiǎn)單,不需要使用復(fù)雜的輸入輸出接口規(guī)范,例如,外部的數(shù)碼 管,指示燈,以及輸入按鍵等設(shè)備,一般只需要一位或幾位控制信號(hào),因此在微控制芯片上 一般都會(huì)提供數(shù)量不等的通用目的輸入輸出(GPIO)端口。如圖1所示,為現(xiàn)有技術(shù)中基本GPIO端口電路的結(jié)構(gòu)圖。該GPIO端口包括方向 寄存器110、設(shè)置數(shù)據(jù)寄存器120、清除數(shù)據(jù)寄存器130、輸入數(shù)據(jù)寄存器140、輸出數(shù)據(jù)寄存 器150、第一輸入同步觸發(fā)器170、第二輸入同步觸發(fā)器160和三態(tài)緩沖器180。用戶可以通 過寫0或1到方向寄存器110來決定該GPIO端口被用做輸入或輸出端口。如果將端口配 置為輸出,則用戶可以通過寫輸出寄存器150來控制該端口的輸出驅(qū)動(dòng)值;如果將端口配 置為輸入,則用戶可以讀輸入寄存器140來查看輸入數(shù)據(jù)的值。GPIO端口由方向寄存器110控制其輸入輸出方向,方向寄存器110的值控制三態(tài) 緩沖器180,如果方向寄存器110的值為0,則三態(tài)緩沖器180使能,輸出數(shù)據(jù),此時(shí)GPIO端 口用做輸出端口 ;如果方向寄存器110的值為1,則三態(tài)緩沖器180關(guān)閉,輸出高阻狀態(tài),此 時(shí)GPIO端口用做輸入端口。如果將GPIO端口設(shè)置為輸出端口,則用戶可以寫設(shè)置數(shù)據(jù)寄存器120和清除數(shù)據(jù) 寄存器130來控制GPIO端口輸出的狀態(tài);用戶寫1到設(shè)置數(shù)據(jù)寄存器120則將輸出數(shù)據(jù) 寄存器150的值置為1,輸出狀態(tài)被驅(qū)動(dòng)為高電平,用戶寫1到清除數(shù)據(jù)寄存器130則將輸 出數(shù)據(jù)寄存器150的值置為0,輸出狀態(tài)被驅(qū)動(dòng)為低電平。如果將GPIO端口設(shè)置為輸入端 口,外部輸入的數(shù)據(jù)首先將經(jīng)過兩個(gè)同步觸發(fā)器(第一輸入同步觸發(fā)器170和第二輸入同 步觸發(fā)器160)進(jìn)行同步,這兩個(gè)同步觸發(fā)器均由D觸發(fā)器構(gòu)成;輸入數(shù)據(jù)被同步后寫入到 輸入數(shù)據(jù)寄存器140,用戶可以讀輸入數(shù)據(jù)寄存器140來查看當(dāng)前GPIO端口的輸入值。值 得注意的是,當(dāng)GPIO端口設(shè)置為輸出端口時(shí),從三態(tài)緩沖器180輸出的數(shù)據(jù)也將會(huì)經(jīng)過兩 個(gè)同步觸發(fā)器被寫入到輸入數(shù)據(jù)寄存器140,此時(shí)輸入數(shù)據(jù)寄存器140的值并不代表輸入數(shù) 據(jù),而只是當(dāng)前輸出寄存器經(jīng)過兩個(gè)同步觸發(fā)器延時(shí)后的數(shù)值;當(dāng)GPIO端口被設(shè)置為輸入端 口時(shí),因?yàn)槿龖B(tài)緩沖器180的隔離作用,輸出數(shù)據(jù)寄存器150的值不會(huì)對(duì)輸入數(shù)據(jù)產(chǎn)生影響。現(xiàn)有技術(shù)存在的缺點(diǎn)是,目前基本GPIO端口的功能有限,不具備事件捕獲的功 能。
發(fā)明內(nèi)容
本發(fā)明的目的旨在解決上述技術(shù)缺陷,提出了帶事件捕獲功能的通用目的輸入輸出電路。為達(dá)到上述目的,本發(fā)明一方面提出了一種帶事件捕獲功能的通用目的輸入輸出 GPIO電路,包括GPI0基本電路模塊;和與所述GPIO基本電路模塊相連的事件捕獲模塊, 所述事件捕獲模塊接收通過所述GPIO基本電路模塊輸入的輸入數(shù)據(jù),并接收用戶指令, 以及根據(jù)所述用戶指令對(duì)所述輸入數(shù)據(jù)的邊沿進(jìn)行檢測(cè),并根據(jù)所述檢測(cè)結(jié)果輸出中斷信號(hào)。本發(fā)明擴(kuò)展了基本GPIO端口的功能,使之具有事件捕獲的功能,并且能夠檢測(cè)出 GPIO端口上更復(fù)雜的信號(hào)變化行為。另外,在本發(fā)明的優(yōu)選實(shí)施例中,本發(fā)明的第一事件捕 獲模式模塊和第二事件捕獲模式模塊實(shí)現(xiàn)了對(duì)GPIO信號(hào)的復(fù)雜處理,相比基本的GPIO電 路,可以根據(jù)用戶的需求進(jìn)行靈活的配置,檢測(cè)更復(fù)雜的外部信號(hào)的變化,產(chǎn)生中斷從而使 CPU響應(yīng)外部事件。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變 得明顯,或通過本發(fā)明的實(shí)踐了解到。
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變 得明顯和容易理解,其中圖1為現(xiàn)有技術(shù)中基本GPIO端口電路的結(jié)構(gòu)圖;圖2為本發(fā)明實(shí)施例一的帶事件捕獲功能的GPIO電路結(jié)構(gòu)圖;圖3為本發(fā)明實(shí)施例二的事件捕獲模塊結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例三的事件捕獲模塊結(jié)構(gòu)圖;和圖5為本發(fā)明實(shí)施例的帶事件捕獲功能的GPIO電路結(jié)構(gòu)圖。
具體實(shí)施例方式下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終 相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附 圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。實(shí)施例一,如圖2所示,為本發(fā)明實(shí)施例一的帶事件捕獲功能的GPIO電路結(jié)構(gòu)圖。該帶事件 捕獲功能的GPIO電路包括GPIO基本電路模塊200,和與GPIO基本電路模塊200相連的事 件捕獲模塊300,事件捕獲模塊300接收通過GPIO基本電路模塊輸入的輸入數(shù)據(jù),并接收用 戶指令,以及根據(jù)用戶指令對(duì)輸入數(shù)據(jù)的邊沿進(jìn)行檢測(cè),并根據(jù)所述檢測(cè)結(jié)果輸出中斷信號(hào)。以下對(duì)GPIO基本電路模塊200中的各個(gè)模塊的功能及GPIO基本電路模塊200的
工作過程進(jìn)行簡(jiǎn)單介紹。其中GPIO信號(hào)端口 1,GPI0信號(hào)與外部電路的輸入輸出端口,此端口為雙向端口,當(dāng)方 向寄存器2為0時(shí)用做輸出端口,方向寄存器2為1時(shí)用做輸入端口 ;方向寄存器2,位寬為1位,用戶可以對(duì)其寫入0或1,輸出為dir,dir的值等于用 戶寫入的方向寄存器2的值,用來控制GPIO端口用做輸出或輸入端口 ;
設(shè)置數(shù)據(jù)寄存器3,位寬為1位,輸出為Set_data,用戶可以對(duì)設(shè)置數(shù)據(jù)寄存器3 寫數(shù)據(jù),如果用戶對(duì)設(shè)置數(shù)據(jù)寄存器3寫入1,則輸出Set_data將會(huì)產(chǎn)生一個(gè)時(shí)鐘周期的高 電平,用戶寫0到設(shè)置數(shù)據(jù)寄存器3不會(huì)產(chǎn)生任何影響;清除數(shù)據(jù)寄存器4,位寬為1位,輸出為clr_dara,用戶可以對(duì)清除數(shù)據(jù)寄存器4 寫數(shù)據(jù),如果用戶對(duì)清除數(shù)據(jù)寄存器4寫入1,則輸出Clr_data將會(huì)產(chǎn)生一個(gè)時(shí)鐘周期的高 電平,用戶寫0到設(shè)置數(shù)據(jù)寄存器4不會(huì)產(chǎn)生任何影響;輸出數(shù)據(jù)寄存器5,位寬為1位,輸入為set_data和Clr_data,輸出為data,如果 輸入一個(gè)高電平脈沖的set_data,則輸出數(shù)據(jù)寄存器5的值被修改為1,如果輸入一個(gè)高電 平脈沖的clr_data,則輸出數(shù)據(jù)寄存器5的值被修改為0,輸出data為輸出數(shù)據(jù)寄存器5 的值;三態(tài)輸出緩沖7,輸入為data和dir,輸出為gpio_data,dir控制三態(tài)輸出緩沖7 的輸出值,如果dir為1,則輸出gpio_data為高阻狀態(tài),此時(shí)GPIO端口被用做輸入端口,輸 出輸出數(shù)據(jù)寄存器5的值data不會(huì)影響GPIO端口上的信號(hào)值,如果dir為0,則輸出gpio_ data的值等于data,此時(shí)GPIO端口被用做輸出端口 ;第一輸入同步觸發(fā)器8,輸入為gpi0_data,輸出為synl,第一輸入同步觸發(fā)器8由 一個(gè)D觸發(fā)器構(gòu)成,操作為在每個(gè)時(shí)鐘上升沿采樣輸入數(shù)據(jù)gpio_data,然后輸出到synl ;第二輸入同步觸發(fā)器9,輸入為synl,輸出為syn2,第二輸入同步觸發(fā)器9由一個(gè) D觸發(fā)器構(gòu)成,操作為在每個(gè)時(shí)鐘上升沿采樣輸入數(shù)據(jù)synl,然后輸出到syn2 ;輸入數(shù)據(jù)寄存器6,位寬為1位,輸入為syn2,輸入數(shù)據(jù)寄存器6用來保存syn2輸 入的值,用戶可以讀輸入數(shù)據(jù)寄存器6來查看當(dāng)前GPIO端口輸入數(shù)據(jù)的值。GPIO基本電路模塊200的工作過程如下方向寄存器2和三態(tài)輸出緩沖7控制GPIO信號(hào)端口 1的輸入輸出;如果方向寄存 器2為1,則三態(tài)輸出緩沖7輸出高阻狀態(tài),此時(shí)GPIO被用做輸入端口,輸入信號(hào)經(jīng)過兩個(gè) 同步觸發(fā)器之后被寫入到輸入數(shù)據(jù)寄存器6,用戶可以讀輸入數(shù)據(jù)寄存器6查看此時(shí)輸入 信號(hào)的值;如果方向寄存器2為0,則三態(tài)輸出緩沖7將輸出輸出數(shù)據(jù)寄存器5的值,GPIO 被用做輸出端口;設(shè)置數(shù)據(jù)寄存器3、清除數(shù)據(jù)寄存器4和輸出數(shù)據(jù)寄存器5被用來控制輸出數(shù)據(jù)的 值,當(dāng)GPIO端口被用做輸出端口時(shí),輸出的值等于輸出數(shù)據(jù)寄存器5的值,用戶不能直接對(duì) 輸出數(shù)據(jù)寄存器5進(jìn)行操作,而是通過寫入1到設(shè)置數(shù)據(jù)寄存器3或清除數(shù)據(jù)寄存器4來 控制輸出數(shù)據(jù)的值;寫1到設(shè)置數(shù)據(jù)寄存器3,則設(shè)置數(shù)據(jù)寄存器3會(huì)發(fā)送一個(gè)高電平脈沖 給輸出數(shù)據(jù)寄存器5,從而將輸出數(shù)據(jù)寄存器5的值設(shè)置為1 ;寫1到清除數(shù)據(jù)寄存器4,則 清除數(shù)據(jù)寄存器4會(huì)發(fā)送一個(gè)高電平脈沖給輸出數(shù)據(jù)寄存器5,從而將輸出數(shù)據(jù)寄存器5的 值設(shè)置為0 ;對(duì)設(shè)置數(shù)據(jù)寄存器3和清除數(shù)據(jù)寄存器4寫0不會(huì)改變輸出數(shù)據(jù)寄存器5的 值;GPIO信號(hào)端口 1上的信號(hào)經(jīng)過第一同步觸發(fā)器8和第二同步觸發(fā)器9之后,便與 GPIO的內(nèi)部時(shí)鐘保持同步,此同步信號(hào)被送到輸入數(shù)據(jù)寄存器6,同時(shí)也送入給事件捕獲 模塊300。實(shí)施例二,如圖3所示,為本發(fā)明實(shí)施例二的事件捕獲模塊結(jié)構(gòu)圖。但是需要說明的是,本領(lǐng)域技術(shù)人員能夠根據(jù)實(shí)施例一中事件捕獲模塊的功能,采用多種結(jié)構(gòu)實(shí)現(xiàn),因此實(shí)施例二 的事件捕獲模塊的結(jié)構(gòu)僅為本發(fā)明的一種方案,其他結(jié)構(gòu)也應(yīng)包含在本發(fā)明的保護(hù)范圍之 內(nèi)。如圖3所示,事件捕獲模塊300包括接收GPIO基本電路模塊200的輸入數(shù)據(jù)的邊 沿檢測(cè)邏輯模塊14,分別與邊沿檢測(cè)邏輯模塊14相連的設(shè)置上升沿觸發(fā)寄存器10、清除上 升沿觸發(fā)寄存器11、設(shè)置下降沿觸發(fā)寄存器12和清除下降沿觸發(fā)寄存器13,和與邊沿檢測(cè) 邏輯模塊14相連的脈沖生成器27。其中,設(shè)置上升沿觸發(fā)寄存器10、清除上升沿觸發(fā)寄存 器11、設(shè)置下降沿觸發(fā)寄存器12和清除下降沿觸發(fā)寄存器13由用戶進(jìn)行配置,如下表所 示,為本發(fā)明實(shí)施例的邊沿檢測(cè)的功能配置表。
邊沿檢測(cè)邏輯設(shè)置上升沿觸發(fā) 寄療器清除上升沿觸發(fā) 寄存器設(shè)置F降沿觸發(fā) 寄存器清除下降沿觸發(fā) 寄存器檢測(cè)信號(hào)上升沿1υ01檢測(cè)信號(hào)下降沿0110檢測(cè)信號(hào)上升下降沿1010不檢測(cè)信號(hào)的邊沿變化0101在本發(fā)明的一個(gè)實(shí)施例中,還包括與脈沖生成器27相連的中斷狀態(tài)寄存器28,用 于記錄當(dāng)前中斷狀態(tài)。邊沿檢測(cè)邏輯模塊14根據(jù)設(shè)置上升沿觸發(fā)寄存器10、清除上升沿觸發(fā)寄存器11、 設(shè)置下降沿觸發(fā)寄存器12和清除下降沿觸發(fā)寄存器13的配置情況對(duì)輸入數(shù)據(jù)進(jìn)行檢測(cè), 并將產(chǎn)生的事件觸發(fā)脈沖evt_plUS發(fā)送至脈沖生成器27,脈沖生成器27生成相對(duì)的中斷 信號(hào)into其中,設(shè)置上升沿觸發(fā)寄存器10,位寬為1位,輸出為Set_riS,用戶可以對(duì)設(shè)置上 升沿觸發(fā)寄存器10寫入數(shù)據(jù),用戶對(duì)設(shè)置上升沿觸發(fā)寄存器10寫入1,將使其輸出一個(gè)時(shí) 鐘周期的高電平set_ris,其他情況下輸出set_ris為低電平;清除上升沿觸發(fā)寄存器11,位寬為1位,輸出為clr_ris,用戶可以對(duì)清除上升沿 觸發(fā)寄存器11寫入數(shù)據(jù),用戶對(duì)清除上升沿觸發(fā)寄存器11寫入1,將使其輸出一個(gè)時(shí)鐘周 期的高電平clr_ris,其他情況下輸出clr_ris為低電平;設(shè)置下降沿觸發(fā)寄存器12,位寬為1位,輸出為set_fal,用戶可以對(duì)設(shè)置下降沿 觸發(fā)寄存器12寫入數(shù)據(jù),用戶對(duì)設(shè)置下降沿觸發(fā)寄存器12寫入1,將使其輸出一個(gè)時(shí)鐘周 期的高電平set_fal,其他情況下輸出set_fal為低電平;清除下降沿觸發(fā)寄存器13,位寬為1位,輸出為clr_fal,用戶可以對(duì)清除下降沿 觸發(fā)寄存器13寫入數(shù)據(jù),用戶對(duì)清除下降沿觸發(fā)寄存器13寫入1,將使其輸出一個(gè)時(shí)鐘周 期的高電平clr_fal,其他情況下輸出clr_fal為低電平;邊沿檢測(cè)邏輯模塊14,輸入為 syn2,set_ris, clr_ris, set_fal, clr_fal,輸出為 事件觸發(fā)脈沖evt_plus,邊沿檢測(cè)邏輯模塊14可以根據(jù)set_ris,clr_ris, set_fal, clr_ fal的不同配置對(duì)輸入信號(hào)syn2進(jìn)行檢測(cè),可以檢測(cè)syn2的上升沿或下降沿變化,當(dāng)檢測(cè) 到符合條件的觸發(fā)事件時(shí),輸出一個(gè)時(shí)鐘周期的高電平脈沖evt_plUS,其他情況輸出evt_plus保持低電平;脈沖生成器 27,輸入為 mode_sel,evt_plus, cmp_plus,輸出為 int_state, int, m0de_sel選擇最終生成的中斷脈沖是來自事件捕獲模式一模塊還是事件捕獲模式二模塊, 如果選擇事件捕獲模式一,則將evt_plUS的值輸出作為中斷信號(hào);如果選擇事件捕獲模式 二,則將cmp_pluS的值輸出作為中斷信號(hào),中斷信號(hào)instate同時(shí)輸出到中斷狀態(tài)寄存 器28 ;中斷狀態(tài)寄存器28,輸入為int_state,該寄存器用來記錄GPIO產(chǎn)生中斷的狀態(tài), 用戶可以讀中斷狀態(tài)寄存器來查看當(dāng)前中斷狀態(tài),如果為1,則表示已經(jīng)發(fā)生一個(gè)中斷,如 果為0,則表示無中斷發(fā)生。實(shí)施例三,在本發(fā)明的實(shí)施例中,事件捕獲模塊300還可包括第一事件捕獲模式模塊和/或 第二事件捕獲模式模塊,其中,在本發(fā)明的較為優(yōu)選的實(shí)施例中,事件捕獲模塊300包括第 一事件捕獲模式模塊和第二事件捕獲模式模塊,因此以下實(shí)施例以同時(shí)包括第一事件捕獲 模式模塊和第二事件捕獲模式模塊為例進(jìn)行描述,但是本領(lǐng)域技術(shù)人員應(yīng)該明白的是,在 本發(fā)明的其他實(shí)施例中可以僅包括第一事件捕獲模式模塊或第二事件捕獲模式模塊。如圖4所示,為本發(fā)明實(shí)施例三的事件捕獲模塊結(jié)構(gòu)圖。如圖5所示,為本發(fā)明實(shí) 施例的帶事件捕獲功能的GPIO電路結(jié)構(gòu)圖。如圖所示,事件捕獲模塊300還包括第一事件 捕獲模式模塊15和第二事件捕獲模式模塊16。第一事件捕獲模式模塊15用于記錄觸發(fā)事 件發(fā)生的時(shí)間,第二事件捕獲模式模塊16用于根據(jù)邊沿檢測(cè)邏輯模塊14產(chǎn)生的事件觸發(fā) 脈沖和第二預(yù)設(shè)值向脈沖生成器27輸出中斷脈沖。事件捕獲模塊300還包括與脈沖生成器27相連的事件捕獲模式選擇寄存器26,用 于根據(jù)用戶的配置選擇第一事件捕獲模式或第二事件捕獲模式。其中,事件捕獲模式選擇寄存器26,位寬為1位,輸出為m0de_Sel,用戶可以寫數(shù) 據(jù)到該寄存器,用來選擇所使用的事件捕獲模式,事件捕獲模式選擇寄存器26的值輸出到 mode_selο在本發(fā)明的一個(gè)實(shí)施例中,第一事件捕獲模式模塊15,輸入為evt_plUS,此模塊 包括一個(gè)計(jì)數(shù)使能寄存器17,標(biāo)尺計(jì)數(shù)器18,標(biāo)尺寄存器19,第一比較器20,32位計(jì)數(shù)器 21和一個(gè)定時(shí)寄存器22,當(dāng)GPIO工作于第一事件捕獲模式時(shí),第一事件捕獲模式模塊15 用來記錄輸入觸發(fā)事件發(fā)生的時(shí)間,用戶可以更清楚的了解到GPIO端口上信號(hào)的變化情 況。其中,計(jì)數(shù)使能寄存器17,位寬為1位,輸出為COimt_en,用戶可以寫數(shù)據(jù)到計(jì)數(shù) 使能寄存器17,如果用戶寫1到計(jì)數(shù)使能寄存器17,則輸出COimt_en變?yōu)楦唠娖?;?biāo)尺計(jì)數(shù)器18,輸入為count_en,輸出為scale_cnt,當(dāng)輸入count_en為高電平 時(shí),標(biāo)尺計(jì)數(shù)器18加計(jì)數(shù),每個(gè)時(shí)鐘周期計(jì)數(shù)值加1,輸出SCale_Cnt反映當(dāng)前標(biāo)尺計(jì)數(shù)器 18的計(jì)數(shù)值;標(biāo)尺寄存器19輸出為sCale_reg,用戶可以寫此寄存器,其值輸出到SCale_reg,第一比較器20,輸入為scale_cnt和scale_reg,輸出為cmp_plus,比較器對(duì)兩個(gè) 輸入的值進(jìn)行比較,當(dāng)兩者相等時(shí),輸出一個(gè)高電平cmp_pluS;32位計(jì)數(shù)器21,輸入為evt_ plus,當(dāng)輸入evt_plUS為一個(gè)高電平脈沖時(shí),停止計(jì)數(shù),此時(shí)32位計(jì)數(shù)器21的值被寫入到定時(shí)寄存器22,用戶可以讀定時(shí)寄存器22得到發(fā)生觸發(fā)事件的時(shí)間。第一事件捕獲模式模塊15的功能為,記錄第一個(gè)觸發(fā)事件到來的時(shí)間;整個(gè)計(jì)數(shù) 器包括一個(gè)標(biāo)尺計(jì)數(shù)器18和一個(gè)32位計(jì)數(shù)器19,用戶寫1到計(jì)數(shù)使能寄存器17開始計(jì) 數(shù),則每個(gè)時(shí)鐘周期標(biāo)尺計(jì)數(shù)器18加1計(jì)數(shù),每當(dāng)標(biāo)尺計(jì)數(shù)器18的計(jì)數(shù)值等于用戶所設(shè)置 的標(biāo)尺寄存器19的值(第一預(yù)設(shè)值)時(shí),第一比較器20就輸出一個(gè)高電平脈沖,32位計(jì) 數(shù)器21加1計(jì)數(shù);當(dāng)?shù)谝皇录东@模式模塊15接收到邊沿檢測(cè)邏輯模塊14輸入的事件觸 發(fā)脈沖時(shí),標(biāo)尺計(jì)數(shù)器18和32位計(jì)數(shù)器21就停止計(jì)數(shù),同時(shí)將32位計(jì)數(shù)器21的值寫入 到定時(shí)寄存器22。這樣,用戶就可以讀定時(shí)寄存器22來查看事件觸發(fā)的時(shí)間,定時(shí)寄存器 22的值乘上標(biāo)尺寄存器18的值就可以得到計(jì)數(shù)使能到事件觸發(fā)所經(jīng)過的時(shí)鐘周期數(shù),再 乘上時(shí)鐘周期值就可以得到精確的事件觸發(fā)時(shí)間。在本發(fā)明的一個(gè)實(shí)施例中,第二事件捕獲模式模塊16,輸入為evt_plUS,輸出為 cmp_plus,此模塊可以對(duì)輸入的evt_pluS觸發(fā)事件進(jìn)行計(jì)數(shù),當(dāng)?shù)絹淼膃vt_pluS觸發(fā)事件 數(shù)量與用戶所規(guī)定的相等時(shí),就輸出一個(gè)時(shí)鐘周期高電平的cmp_pluS,第二事件捕獲模式 二模塊16包括一個(gè)觸發(fā)事件計(jì)數(shù)器23,一個(gè)計(jì)數(shù)比較寄存器24和一個(gè)第二比較器25。其中,觸發(fā)事件計(jì)數(shù)器23,此計(jì)數(shù)器大小為32位計(jì)數(shù)器,輸入為evt_plUS,輸出為 evt_cnt,當(dāng)用戶選擇第二事件捕獲模式時(shí),觸發(fā)事件計(jì)數(shù)器23用來對(duì)輸入的evt_plUS進(jìn) 行計(jì)數(shù),每當(dāng)?shù)絹硪粋€(gè)高電平脈沖的evt_plUS時(shí),觸發(fā)事件計(jì)數(shù)器23就加1計(jì)數(shù),計(jì)數(shù)值 輸出至Ij evt_cnt ;計(jì)數(shù)比較寄存器24,位寬為32位,用戶可以寫數(shù)據(jù)到計(jì)數(shù)比較寄存器24,輸出為 此寄存器的值evt_cmp ; 第二比較器25,輸入為evt_cnt和evt_cmp,輸出為cmp_plus,第二比較器25比較 兩個(gè)32位的輸入,如果相等,則輸出一個(gè)時(shí)鐘周期高電平的cmp_pluS。第二事件捕獲模式模塊16的功能為記錄捕獲的事件數(shù)量,當(dāng)捕獲事件數(shù)量等于 用戶所配置的計(jì)數(shù)比較寄存器24的值(第二預(yù)設(shè)值)時(shí),發(fā)出中斷脈沖;第二事件捕獲模 式模塊16接收由邊沿檢測(cè)邏輯模塊14輸入的事件捕獲脈沖,每到來一個(gè)事件捕獲脈沖觸 發(fā)事件計(jì)數(shù)器23就加1計(jì)數(shù),第二比較器25比較觸發(fā)事件計(jì)數(shù)器23和計(jì)數(shù)比較寄存器24 的值,當(dāng)兩者相等時(shí),輸出中斷脈沖到脈沖發(fā)生器27。在本發(fā)明的一個(gè)實(shí)施例中,事件捕獲模式選擇寄存器26和脈沖發(fā)生器27控制產(chǎn) 生最終輸出到CPU的中斷脈沖,當(dāng)事件捕獲模式選擇寄存器26的值為0時(shí),選擇第一事件 捕獲模式,脈沖發(fā)生器27直接輸出來自邊沿檢測(cè)邏輯模塊14的觸發(fā)事件脈沖;當(dāng)事件捕獲 模式選擇寄存器26的值為1時(shí),選擇第二事件捕獲模式,脈沖發(fā)生器27輸出來自第二事件 捕獲模式模塊16的觸發(fā)脈沖;除了輸出中斷脈沖到CPU之外,脈沖發(fā)生器27還將其寫入到 中斷狀態(tài)寄存器28,用來記錄中斷產(chǎn)生的狀態(tài),CPU處理完中斷后,用戶需要寫1到中斷狀 態(tài)寄存器28來清除中斷狀態(tài)。本發(fā)明擴(kuò)展了基本GPIO端口的功能,使之具有事件捕獲的功能,并且能夠檢測(cè)出 GPIO端口上更復(fù)雜的信號(hào)變化行為。本發(fā)明的第一事件捕獲模式模塊和第二事件捕獲模式 模塊實(shí)現(xiàn)了對(duì)GPIO信號(hào)的復(fù)雜處理,相比基本的GPIO電路,可以根據(jù)用戶的需求進(jìn)行靈活 的配置,檢測(cè)更復(fù)雜的外部信號(hào)的變化,產(chǎn)生中斷從而使CPU響應(yīng)外部事件。盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對(duì)這些實(shí)施例進(jìn)行多種變化、修改、替換 和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同限定。
權(quán)利要求
一種帶事件捕獲功能的通用目的輸入輸出GPIO電路,其特征在于,包括GPIO基本電路模塊;和與所述GPIO基本電路模塊相連的事件捕獲模塊,所述事件捕獲模塊接收通過所述GPIO基本電路模塊輸入的輸入數(shù)據(jù),并接收用戶指令,以及根據(jù)所述用戶指令對(duì)所述輸入數(shù)據(jù)的邊沿進(jìn)行檢測(cè),并根據(jù)所述檢測(cè)結(jié)果輸出中斷信號(hào)。
2.如權(quán)利要求1所述的帶事件捕獲功能的GPIO電路,其特征在于,所述事件捕獲模塊 包括接收所述輸入數(shù)據(jù)的邊沿檢測(cè)邏輯模塊;分別與所述邊沿檢測(cè)邏輯模塊相連的設(shè)置上升沿觸發(fā)寄存器、清除上升沿觸發(fā)寄存 器、設(shè)置下降沿觸發(fā)寄存器和清除下降沿觸發(fā)寄存器;和與所述邊沿檢測(cè)邏輯模塊相連的脈沖生成器。
3.如權(quán)利要求2所述的帶事件捕獲功能的GPIO電路,其特征在于,所述邊沿檢測(cè)邏輯 模塊根據(jù)所述設(shè)置上升沿觸發(fā)寄存器、清除上升沿觸發(fā)寄存器、設(shè)置下降沿觸發(fā)寄存器和 清除下降沿觸發(fā)寄存器的配置情況對(duì)所述輸入數(shù)據(jù)進(jìn)行檢測(cè),并將產(chǎn)生的事件觸發(fā)脈沖發(fā) 送至所述脈沖生成器,所述脈沖生成器生成相對(duì)的中斷信號(hào)。
4.如權(quán)利要求3所述的帶事件捕獲功能的GPIO電路,其特征在于,所述設(shè)置上升沿觸 發(fā)寄存器、清除上升沿觸發(fā)寄存器、設(shè)置下降沿觸發(fā)寄存器和清除下降沿觸發(fā)寄存器由用 戶進(jìn)行配置。
5.如權(quán)利要求1-4任一項(xiàng)所述的帶事件捕獲功能的GPIO電路,其特征在于,還包括與 所述邊沿檢測(cè)邏輯模塊相連的第一事件捕獲模式模塊,所述第一事件捕獲模式模塊用于記 錄觸發(fā)事件發(fā)生的時(shí)間。
6.如權(quán)利要求5所述的帶事件捕獲功能的GPIO電路,其特征在于,所述第一事件捕獲 模式模塊包括計(jì)數(shù)使能寄存器,用于根據(jù)用戶的設(shè)定開啟計(jì)數(shù);標(biāo)尺寄存器,用于保存第一預(yù)設(shè)值;與所述計(jì)數(shù)使能寄存器相連的標(biāo)尺計(jì)數(shù)器,所述標(biāo)尺計(jì)數(shù)器用于計(jì)數(shù);分別與所述標(biāo)尺寄存器和標(biāo)尺計(jì)數(shù)器相連的第一比較器,所述第一比較器在所述標(biāo)尺 計(jì)數(shù)器的計(jì)數(shù)值等于所述標(biāo)尺寄存器的預(yù)設(shè)值時(shí)輸出高電平脈沖;與所述第一比較器相連的32位計(jì)數(shù)器,所述32位計(jì)數(shù)器根據(jù)所述比較器輸出的高電 平脈沖進(jìn)行計(jì)數(shù),并將計(jì)數(shù)結(jié)果寫入定時(shí)寄存器。
7.如權(quán)利要求5所述的帶事件捕獲功能的GPIO電路,其特征在于,還包括分別與所述 邊沿檢測(cè)邏輯模塊和所述脈沖生成器相連的第二事件捕獲模式模塊,所述第二事件捕獲模 式模塊用于根據(jù)所述邊沿檢測(cè)邏輯模塊產(chǎn)生的事件觸發(fā)脈沖和第二預(yù)設(shè)值向所述脈沖生 成器輸出中斷脈沖。
8.如權(quán)利要求7所述的帶事件捕獲功能的GPIO電路,其特征在于,所述第二事件捕獲 模式模塊包括接收所述邊沿檢測(cè)邏輯模塊生成的事件觸發(fā)脈沖的觸發(fā)事件計(jì)數(shù)器,所述觸發(fā)事件計(jì) 數(shù)器用于根據(jù)所述事件觸發(fā)脈沖進(jìn)行計(jì)數(shù);計(jì)數(shù)比較寄存器,用于保存所述第二預(yù)設(shè)值;和分別與所述觸發(fā)事件計(jì)數(shù)器和計(jì)數(shù)比較寄存器相連的第二比較器,當(dāng)所述觸發(fā)事件計(jì) 數(shù)器的計(jì)數(shù)值達(dá)到所述第二預(yù)設(shè)值之后,所述第二比較器輸出所述中斷脈沖。
9.如權(quán)利要求7所述的帶事件捕獲功能的GPIO電路,其特征在于,還包括與所述脈沖 生成器相連的事件捕獲模式選擇寄存器,用于根據(jù)用戶的配置選擇第一事件捕獲模式或第 二事件捕獲模式。
10.如權(quán)利要求1所述的帶事件捕獲功能的GPIO電路,其特征在于,還包括與所述脈沖 生成器相連的中斷狀態(tài)寄存器,用于記錄當(dāng)前中斷狀態(tài)。
全文摘要
本發(fā)明提出一種帶事件捕獲功能的通用目的輸入輸出GPIO電路,包括GPIO基本電路模塊;和與所述GPIO基本電路模塊相連的事件捕獲模塊,所述事件捕獲模塊接收通過所述GPIO基本電路模塊輸入的輸入數(shù)據(jù),并接收用戶指令,以及根據(jù)所述用戶指令對(duì)所述輸入數(shù)據(jù)的邊沿進(jìn)行檢測(cè),并根據(jù)所述檢測(cè)結(jié)果輸出中斷信號(hào)。本發(fā)明擴(kuò)展了基本GPIO端口的功能,使之具有事件捕獲的功能,并且能夠檢測(cè)出GPIO端口上更復(fù)雜的信號(hào)變化行為。
文檔編號(hào)G06F13/32GK101923525SQ201010250508
公開日2010年12月22日 申請(qǐng)日期2010年8月11日 優(yōu)先權(quán)日2010年8月11日
發(fā)明者葉劍飛, 李兆麟, 李圣龍, 王芳, 鄭慶偉, 陳佳佳, 魏熾頻 申請(qǐng)人:清華大學(xué)