国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的中斷控制器設(shè)計*

2018-11-07 02:22吳志勇劉繼平郭元興
通信技術(shù) 2018年11期
關(guān)鍵詞:管腳外設(shè)中斷

吳志勇,劉繼平,郭元興

(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)

0 引 言

在嵌入式系統(tǒng)中,CPU與外設(shè)交互數(shù)據(jù)主要有3種方式:查詢、中斷和DMA。查詢方式是由CPU周期性地執(zhí)行查詢指令來讀取外設(shè)的狀態(tài)寄存器,根據(jù)設(shè)備的狀態(tài)來交互數(shù)據(jù)。這種方式效率低下,當(dāng)CPU連接的外設(shè)數(shù)量較多時,外設(shè)的數(shù)據(jù)無法得到實時處理。中斷和DMA方式克服了查詢方式的缺點(diǎn),提高了CPU的效率和數(shù)據(jù)處理的實時性。其中,DMA方式同樣需要使用中斷機(jī)制來實現(xiàn)。

然而,CPU的中斷資源有限。當(dāng)系統(tǒng)中連接CPU的外設(shè)數(shù)量多于CPU的中斷管腳數(shù)量時,需要采取某種方式將多個外設(shè)的中斷信號進(jìn)行復(fù)用。采用Intel 8259A等芯片可以實現(xiàn)中斷信號的復(fù)用,但在使用前需要CPU對其進(jìn)行配置。然而,將32路中斷信號復(fù)用成1路中斷信號需要使用5片8259A芯片級聯(lián),占用了較大的PCB板面積,也增加了系統(tǒng)設(shè)計的復(fù)雜性[1-2]。

此外,部分CPU在進(jìn)入中斷服務(wù)程序后或處于中斷屏蔽狀態(tài)時,無法通過中斷管腳繼續(xù)接收外設(shè)給入的中斷信號,有可能導(dǎo)致數(shù)據(jù)的丟失。

因此,設(shè)計一種適用于多外設(shè)系統(tǒng),能夠?qū)⒍嗦分袛嘈盘枏?fù)用且不受CPU中斷狀態(tài)影響的中斷控制器具有較高的實用價值。本文利用FPGA具有的研制周期短、設(shè)計成本低、設(shè)計靈活性高等特點(diǎn),設(shè)計了一種基于FPGA的中斷控制器。

1 中斷的原理

中斷是指CPU在執(zhí)行當(dāng)前程序的過程中,當(dāng)出現(xiàn)某些異常事件或某種外部請求時,CPU暫時停止執(zhí)行當(dāng)前程序,轉(zhuǎn)去執(zhí)行外設(shè)的服務(wù)程序。當(dāng)外設(shè)的服務(wù)程序執(zhí)行完畢后,再返回被暫停執(zhí)行的程序處繼續(xù)執(zhí)行。CPU對中斷響應(yīng)的流程如圖1所示[3]。

圖1 CPU對中斷響應(yīng)的流程

CPU一般至少有一個中斷信號輸入管腳,在每條指令的最后一個機(jī)器周期對中斷管腳的輸入信號進(jìn)行采樣,并對中斷做出響應(yīng)。根據(jù)不同的觸發(fā)方式,中斷可以分為電平觸發(fā)中斷和邊沿觸發(fā)中斷。電平觸發(fā)方式用一段持續(xù)的高電平或低電平表示中斷請求,要求中斷請求信號要有足夠長的保持時間,要保持到當(dāng)前指令的最后一個機(jī)器周期,以確保CPU采樣時中斷請求有效。邊沿觸發(fā)方式是以一個信號的上跳沿或下跳沿表示中斷請求,CPU對這個中斷請求進(jìn)行鎖存。

2 中斷控制器的設(shè)計

中斷控制器的作用是在有多個中斷源的系統(tǒng)中,可同時接受多個外部的中斷請求,進(jìn)行一定判別后,選中當(dāng)前優(yōu)先級最高的中斷請求送至CPU的中斷輸入端。當(dāng)CPU響應(yīng)中斷并進(jìn)入中斷處理程序后,該控制器仍負(fù)責(zé)對外部中斷的管理[4]。

本文采用Verilog HDL語言,設(shè)計了一種能夠?qū)?2路中斷信號復(fù)用成1路中斷信號的控制器,其系統(tǒng)結(jié)構(gòu)如圖2所示。

圖2 中斷控制器的系統(tǒng)結(jié)構(gòu)

中斷控制器主要包含了中斷信號計數(shù)模塊、中斷信號產(chǎn)生模塊和中斷信號清除模塊。INT_i[31:0]為32路外設(shè)產(chǎn)生的中斷信號,其中INT_i[0]的優(yōu)先級最高,INT_i[31]的優(yōu)先級最低??刂破鬏敵龅闹袛嘈盘朓NT_o接CPU的中斷管腳,CPU通過mask信號來設(shè)置當(dāng)前中斷管腳是否處于中斷屏蔽狀態(tài)。如果CPU當(dāng)前處于中斷屏蔽狀態(tài),INT_o將不會輸出有效中斷信號。CPU接收到INT_o中斷信號后,在中斷服務(wù)程序中需要讀取flag[4:0]標(biāo)志,以確定當(dāng)前中斷的中斷源。CPU在執(zhí)行完畢中斷服務(wù)程序后,需通過clear信號清除當(dāng)前中斷。中斷控制器能夠根據(jù)flag[4:0]的值來自動確定需要清除的中斷源。

2.1 中斷信號計數(shù)模塊

中斷信號計數(shù)模塊主要由32個相同的計數(shù)器構(gòu)成,將中斷信號INT_i進(jìn)行同步處理后輸入給計數(shù)器。計數(shù)器在有中斷信號INT輸入時執(zhí)行加計數(shù),在清除中斷信號decrease到來時執(zhí)行減計數(shù),從而實現(xiàn)對當(dāng)前中斷信號有效個數(shù)的鎖存。當(dāng)有效中斷信號個數(shù)大于0時,通過valid信號輸出高電平,其流程如圖3所示。

圖3 中斷信號計數(shù)器流程

2.2 中斷信號產(chǎn)生模塊

中斷信號產(chǎn)生模塊首先判斷mask信號是否有效,如果有效,表示CPU當(dāng)前正處于中斷屏蔽狀態(tài),此時中斷信號產(chǎn)生模塊不應(yīng)該輸出中斷信號INT_o給CPU。當(dāng)mask信號無效時,進(jìn)一步判斷計數(shù)器模塊的輸出值valid[31:0]是否有效。只要valid[31:0]中的某個比特有效,說明有中斷源需要處理,中斷信號產(chǎn)生模塊則輸出中斷信號INT_o到CPU的中斷管腳,同時對valid[31:0]信號中有效位的優(yōu)先級進(jìn)行判決,將優(yōu)先級最高的輸入中斷信號INT_i對應(yīng)的編碼輸出到flag[4:0]總線上,以便CPU獲取當(dāng)前中斷信號對應(yīng)的中斷源。中斷信號產(chǎn)生模塊在中斷清除信號clear有效后回到初始狀態(tài),其流程如圖4所示。

圖4 中斷信號產(chǎn)生模塊流程

2.3 中斷信號清除模塊

CPU在跳出中斷服務(wù)程序前需要通過clear信號清除當(dāng)前中斷,否則中斷信號產(chǎn)生模塊將一直處于等待clear信號有效的狀態(tài),無法進(jìn)行下一個中斷源的處理。同時,中斷信號計數(shù)模塊也需要clear的有效信號進(jìn)行減計數(shù),以確保在當(dāng)前中斷源處理完畢后,中斷計數(shù)模塊中鎖存的值始終為尚未處理的中斷源個數(shù)。中斷信號清除模塊通過讀取flag[4:0]的值來獲取當(dāng)前優(yōu)先級最高的中斷源,并產(chǎn)生相應(yīng)的脈沖信號給中斷計數(shù)模塊,其流程如圖5所示。

圖5 中斷信號清除模塊流程

3 中斷控制器在多外設(shè)系統(tǒng)中的應(yīng)用

本文在Xilinx的XC6SLX150T-3FGG676I FPGA上驗證設(shè)計的中斷控制器。在FPGA中,例化了32個模塊。這些模塊作為CPU的外設(shè)通過EMIF總線與CPU進(jìn)行數(shù)據(jù)交互。模塊產(chǎn)生的數(shù)據(jù)存儲于各自內(nèi)部的FIFO中,每產(chǎn)生一幀數(shù)據(jù),會給出一個中斷信號通知CPU讀取。只要各外設(shè)模塊產(chǎn)生的中斷信號不丟失,CPU就能夠正確讀取這些外設(shè)模塊產(chǎn)生的數(shù)據(jù)幀。多外設(shè)系統(tǒng)應(yīng)用的框圖如圖6所示。

在圖6的多外設(shè)系統(tǒng)應(yīng)用中,32個外設(shè)模塊產(chǎn)生的中斷信號通過中斷控制器復(fù)用成1路中斷信號輸出給CPU。它僅占用CPU的1個中斷輸入管腳,其余信號均占用的是資源相對較豐富的GPIO。當(dāng)CPU正在中斷服務(wù)程序中處理某個外設(shè)模塊的數(shù)據(jù)幀或者CPU正處于中斷屏蔽狀態(tài)時,中斷控制器能夠繼續(xù)接收外設(shè)模塊產(chǎn)生的中斷信號,然后計數(shù)并鎖存這些中斷信號,避免了由于中斷信號的丟失而導(dǎo)致數(shù)據(jù)幀的丟失,使得這些外設(shè)模塊能夠并發(fā)工作,提高了CPU和外設(shè)的工作效率。

經(jīng)過驗證,CPU能夠正確接收FPGA中32個外設(shè)模塊并發(fā)產(chǎn)生的數(shù)據(jù)幀,說明中斷控制器能夠正確工作,達(dá)到了預(yù)期效果。

圖6 多外設(shè)系統(tǒng)應(yīng)用

4 結(jié) 語

針對多外設(shè)系統(tǒng)的中斷復(fù)用問題,本文設(shè)計了一種能夠?qū)?2路中斷信號復(fù)用成1路中斷信號的中斷控制器,并在實際項目中進(jìn)行了應(yīng)用驗證,其具有如下特點(diǎn):

(1)上電后可直接使用,無需CPU對該中斷控制器進(jìn)行配置;

(2)使用CPU的1個中斷輸入管腳及若干個GPIO,就能夠?qū)崿F(xiàn)對多個外設(shè)中斷信號的響應(yīng),減少了對CPU中斷資源的占用;

(3)具備中斷信號鎖存功能,當(dāng)CPU進(jìn)入中斷服務(wù)程序中或正處于中斷屏蔽狀態(tài)時,中斷控制器能夠繼續(xù)接收外設(shè)的中斷信號并記錄這些中斷信號的個數(shù),待CPU能夠接收中斷信號后,將鎖存的中斷信號繼續(xù)發(fā)送給CPU,避免了外設(shè)中斷信號的丟失;

(4)采用Verilog硬件描述語言設(shè)計,當(dāng)需要復(fù)用更多路數(shù)的外設(shè)中斷信號時,僅需修改少量的代碼就可實現(xiàn),同時可將該中斷控制器封裝成IP核移植到多個FPGA平臺上,具有良好的推廣應(yīng)用價值。

猜你喜歡
管腳外設(shè)中斷
面向DSP+FPGA通用處理架構(gòu)檢測的硬件系統(tǒng)設(shè)計
“單片機(jī)中斷概述”微課教學(xué)設(shè)計
一種考慮GPS信號中斷的導(dǎo)航濾波算法
一種異步FIFO的Read/Write Data Flow Through功能測試方法?
Linux中斷線程化分析及中斷延時測試
略談如何利用三極管管腳間電阻值判斷其型號及管腳
跟蹤導(dǎo)練(二)(5)
外設(shè)天地行情
外設(shè)天地行情
外設(shè)天地行情
霞浦县| 阳曲县| 宁强县| 张家港市| 武陟县| 龙岩市| 元朗区| 伊宁县| 潜江市| 灌云县| 随州市| 内丘县| 长乐市| 永寿县| 灵寿县| 金山区| 连江县| 长岛县| 广安市| 永福县| 揭西县| 和田县| 屏东市| 大同市| 河间市| 镇宁| 文山县| 宁远县| 梅河口市| 新巴尔虎右旗| 赫章县| 登封市| 武定县| 宝清县| 那坡县| 湾仔区| 东阿县| 天峻县| 岫岩| 饶阳县| 东城区|