• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2018-11-07 02:22:16吳志勇劉繼平郭元興
      通信技術(shù) 2018年11期
      關(guān)鍵詞:服務(wù)程序外設(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è)的數(shù)據(jù)無法得到實(shí)時(shí)處理。中斷和DMA方式克服了查詢方式的缺點(diǎn),提高了CPU的效率和數(shù)據(jù)處理的實(shí)時(shí)性。其中,DMA方式同樣需要使用中斷機(jī)制來實(shí)現(xiàn)。

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

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

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

      1 中斷的原理

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

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

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

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

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

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

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

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

      2.1 中斷信號(hào)計(jì)數(shù)模塊

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

      圖3 中斷信號(hào)計(jì)數(shù)器流程

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

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

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

      2.3 中斷信號(hào)清除模塊

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

      圖5 中斷信號(hào)清除模塊流程

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

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

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

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

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

      4 結(jié) 語

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

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

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

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

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

      猜你喜歡
      服務(wù)程序外設(shè)管腳
      基于移動(dòng)終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計(jì)
      基于移動(dòng)終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計(jì)
      基于C#的進(jìn)程守護(hù)程序的設(shè)計(jì)
      視聽(2020年3期)2020-06-11 14:28:18
      基于圖像處理的異型電子元器件管腳偏移誤差檢測(cè)方法研究
      CMOS數(shù)字IC管腳電容的估算與測(cè)量
      水利工程施工監(jiān)理服務(wù)程序及質(zhì)量控制
      Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
      HC08芯片JVT測(cè)試方法的探究
      貼身呵護(hù) 必不可少的PSP外設(shè)
      外設(shè)天地行情
      长宁区| 曲沃县| 阿荣旗| 河西区| 文安县| 龙南县| 连云港市| 原平市| 微山县| 东方市| 大石桥市| 盈江县| 上思县| 方城县| 奉贤区| 潞西市| 应用必备| 琼结县| 交口县| 方正县| 綦江县| 商都县| 锡林浩特市| 故城县| 正宁县| 介休市| 珠海市| 荆州市| 芜湖市| 昌平区| 舟曲县| 水城县| 邢台县| 阜平县| 江津市| 金平| 海城市| 峨眉山市| 平邑县| 阳泉市| 江门市|