當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計自動化

摘 要: 詳細(xì)論述了4位RISC MCU中斷系統(tǒng)的Verilog設(shè)計實現(xiàn)過程。該MCU采用PIC兩級流水線結(jié)構(gòu),含4個中斷源,2級優(yōu)先級。最后通過整體的RISC MCU IP核對其中斷系統(tǒng)進行完整的程序測試,完成功能與時序的仿真與驗證。

關(guān)鍵詞: verilog;PIC;RISC MCU;仿真;中斷

微控制器(MCU)包括核心指令譯碼電路、寄存器/存儲器模塊和一組輸入/輸出(I/O)模塊。當(dāng)I/O模塊處于操作進行時,I/O模塊中斷機制使微處理器可以忙于執(zhí)行其他指令,取消MCU對端口的不必要等待時間,從而大大提高了MCU的執(zhí)行效率[1]

在微控制器或微處理器的設(shè)計中,控制信號的設(shè)計是最復(fù)雜的,而在控制信號的設(shè)計中,中斷系統(tǒng)的設(shè)計又是最困難的部分[1]。本文以自主所開發(fā)的4位RISC MCU IP核為載體,采用自上而下的設(shè)計方法,給出了其中斷系統(tǒng)的Verilog硬件描述語言的具體實現(xiàn)過程。該系統(tǒng)可以作為一個功能部件, 直接在微控制器中加以運用, 對各種復(fù)雜中斷系統(tǒng)的設(shè)計具有很好的借鑒意義。

1 中斷系統(tǒng)總體設(shè)計

本系統(tǒng)所處的載體是由自身所研發(fā)的、采用數(shù)據(jù)總線和指令總線相互分離的哈佛雙總線和Microchip技術(shù)公司的微控制器PIC的兩級流水線機制[2]。中斷系統(tǒng)的主要功能與MCS-51相同,有4個中斷請求源,2個中斷優(yōu)先級,可實現(xiàn)2級中斷服務(wù)程序嵌套。整個中斷系統(tǒng)結(jié)構(gòu)圖如圖1所示。具體的設(shè)計主要包含以下四個設(shè)計過程[3]

(1)微控制器如何識別發(fā)生了哪個中斷;

(2)出現(xiàn)多個中斷時, 微處理器優(yōu)先處理哪個中斷;

(3)微控制器如何處理中斷嵌套;

(4)微控制器如何處理中斷執(zhí)行周期。

其中,(1)是中斷源的問題,(4)是中斷響應(yīng)時間的考慮,(2)和(3)歸結(jié)起來就是中斷優(yōu)先級單元的設(shè)計。

1.1 中斷源

系統(tǒng)的4個中斷源分別是:外部中斷SE(由I/O提供);片內(nèi)的定時/計數(shù)器T0的溢出中斷請求ST;片內(nèi)基準(zhǔn)定時器BT0的溢出中斷請求SB;液晶驅(qū)動模塊的中斷請求SL和中斷系統(tǒng)相關(guān)的特殊功能寄存器及有中斷允許控制寄存器IE,中斷優(yōu)先級控制寄存器IP和中斷請求標(biāo)志寄存器IF。IF、IE、IP寄存器中的中斷源排位順序一致,它們都可通過字節(jié)的指令操作來進行讀寫,MCU復(fù)位時,全部為0。當(dāng)MCU同時收到幾個同一優(yōu)先級的中斷請求時,由同級內(nèi)的優(yōu)先查詢順序確定哪個中斷請求得到響應(yīng)。各中斷源得相應(yīng)中斷入口地址、默認(rèn)同級優(yōu)先級及IF/IE/IP寄存器的各位名稱如表1所示。

IE的相應(yīng)位置1,表明相應(yīng)的中斷源為允許,為0時,則是屏蔽;IF的相應(yīng)位置1,表明相應(yīng)的中斷源有請求,為0,則沒有中斷源請求;IP的相應(yīng)位為1,表明相應(yīng)的中斷源為高優(yōu)先級中斷,為0,則為低優(yōu)先級中斷。該部分的相關(guān)Verilog代碼如下(以基準(zhǔn)定時中斷為例):

//基準(zhǔn)定時模塊中斷源信號(高電平脈沖)的系統(tǒng)時鐘同步;

always@(sysclk) begin

int_base1<=int_base;

int_base2<=int_base1;end

assign SB=!int_base1&int_base2;

//中斷請求標(biāo)志位:可由中斷源SB觸發(fā),也可通過對IF

//的字節(jié)操作對其置位或清零,其余情況下則保持原狀態(tài)

//不變。

assign FB=(resetn==0)? 1′b0:

(SB==1)? 1′b1:

(IF_wr)?IF[2]:

LF;

//把中斷請求標(biāo)志位寫回中斷請求暫存寄存器IF_out,若有

//對IF進行寫操作(IF_wr=1),則把IF_out寫回。

assign IF_out={FB,F(xiàn)T,F(xiàn)E,F(xiàn)L};

//中斷請求響應(yīng)條件位

assign FB_f=FB&IE[2];

1.2 中斷優(yōu)先級設(shè)計

系統(tǒng)設(shè)置有2個中斷優(yōu)先級,對于每一個中斷請求源可編程為高優(yōu)先級中斷或低優(yōu)先級中斷。中斷系統(tǒng)中有2個不可尋址的優(yōu)先級狀態(tài)編碼器,一個指出MCU是否有高優(yōu)先級的中斷信號,另一個指出MCU是否有低優(yōu)先級的中斷信號??筛鶕?jù)這兩個編碼器的值來判斷系統(tǒng)所處的中斷狀態(tài)。此部分為設(shè)計的重點。

如圖1所示,把高、低優(yōu)先級的中斷分別歸類到高優(yōu)先級編碼器(encoder2)和低優(yōu)先級編碼器(encoder1),無中斷時,兩編碼器值都為零。若有一個不為零或兩個都不為零,則會產(chǎn)生一中斷信號(int_out),且會根據(jù)兩優(yōu)先編碼器的值來確定中斷入口地址(int_pc)、中斷嵌套(int_nesting)、中斷嵌套返回(int_nest_back)等信號,并將它們送入PC與堆棧處理模塊。當(dāng)然PC與堆棧模塊也會產(chǎn)生相應(yīng)的反饋信號以處理多種中斷情況。相關(guān)的重點實現(xiàn)代碼如下:

//低優(yōu)先級編碼器的輸入端選擇

assign encoder1_in[0]=(int_pri[0]==0)?FL:1′b0;

  assign encoder1_in[1]=(int_pri[1]==0)?FE:1′b0;

  assign encoder1_in[2]=(int_pri[2]==0)?FT:1′b0;

  assign encoder1_in[3]=(int_pri[3]==0)?FB:1′b0;

//高優(yōu)先級編碼器的輸入端選擇

  assign encoder2_in[0]=(int_pri[0]==1)?FL:1′b0;

  assign encoder2_in[1]=(int_pri[1]==1)?FE:1′b0;

  assign encoder2_in[2]=(int_pri[2]==1)?FT:1′b0;

  assign encoder2_in[3]=(int_pri[3]==1)?FB:1′b0;

//低優(yōu)先級編碼器的實現(xiàn):無中斷時,值為0,進中斷時優(yōu)先

//編碼賦值。其中把值寄存一次,用以辨別中斷源變化時的

//編碼狀態(tài),做為中斷嵌套等多種中斷情況的信號辨別條

//件;高優(yōu)先級編碼器的實現(xiàn)與低優(yōu)先級類同,結(jié)果為out2

//和out2_pre。

always@(encoder1_in or out1)

begin

out1_pre<=out1;

casex(encoder1_in)

4′b0000:out1=3′b000;

4′b0001:out1=3′b001;

4′b001x:out1=3′b010;

4′b01xx:out1=3′b011;

4′b1xxx:out1=3′b100;

default:out1=3′b000;

endcase

end

//根據(jù)高低編碼器出來的結(jié)果辨別優(yōu)先級,即該跳轉(zhuǎn)的中斷

//向量地址。先僅取用到的5位數(shù),用時再與前面補零;其

//中也已包含了同級默認(rèn)優(yōu)先級的功能;

assign int_pc= (out2==3′b100) ? 4′b0011:

(out2==3′b011) ? 4′b0101:

(out2==3′b010) ? 4′b0111:

(out2==3′b001) ? 4′b1001:

(out1==3′b100) ? 4′b0011:

(out1==3′b011) ? 4′b0101:

(out1==3′b010) ? 4′b0111:

(out1==3′b001) ? 4′b1001:

4′b0000;

//中斷信號的產(chǎn)生,int_out_clear為PC和堆棧模塊的反饋信

//號;

assign int_out=(int_out_clear==1)? 1′b0:

((out2!=3′b000)||(out1!=3′b000))? 1′b1:1′b0;

//中斷嵌套信號的條件是通過兩編碼器輸出結(jié)果的變化推

//斷出來的,且已通過驗證證明是正確的。中斷嵌套返回的

//方法與此同,不細(xì)述。

assign

int_nest=(((out1!=3′b000)&(out2_pre==3′b000)&(out2!=

3′b000))==1′b1)?1′b1:1′b0;

//int_nest為一辨別信號,將其轉(zhuǎn)換為系統(tǒng)脈沖信號;

always@(posedge sysclk) begin

int_nest1<=int_nest;

int_nest2<=int_nest1;

if(!int_nest2&int_nest)

int_nesting<=1;

else int_nesting<=0;end

1.3 中斷響應(yīng)

中斷延遲是MCU的一個重要參數(shù), 通常是指在最壞情況下響應(yīng)中斷的最長時間。因系統(tǒng)屬于RISC單周期指令,也就不存在CISC中存在的指令未執(zhí)行完而被打斷的情況。當(dāng)然MCU也是在現(xiàn)行一條指令執(zhí)行完畢即下一個指令周期的Q1才開始響應(yīng)中斷的,并不是在一條指令執(zhí)行期間響應(yīng)中斷,這樣MCU才能正確返回斷點繼續(xù)執(zhí)行原來的程序。由此也可知道系統(tǒng)大部分時刻中斷響應(yīng)時間為1個指令周期;除非正在執(zhí)行的指令是現(xiàn)場保護(入棧)、現(xiàn)場恢復(fù)(出棧),則需要等這些指令執(zhí)行完之后,再去響應(yīng)新的中斷請求,這一點本系統(tǒng)是通過軟件程序來實現(xiàn)。軟件程序的具體編寫步驟與MCS-51相似,見參考文獻[4]。

1.4 PC與堆棧模塊

PC與堆棧模塊通過接收來自中斷優(yōu)先級模塊的信號處理多種中斷情況的發(fā)生,并產(chǎn)生相應(yīng)的反饋信號,且完成了現(xiàn)場保護(入棧)、現(xiàn)場恢復(fù)(出棧)、PC預(yù)取值等重要操作。除了跳轉(zhuǎn)地址須等指令周期的Q4外,其余的大部分操作皆于Q1時刻完成。

always@(posedge clk1 or posedge int_nesting or negedge resetn) begin

if(resetn==0)

……

//中斷嵌套信號需把int_out_clear清零,以辨別新中斷信號;

//當(dāng)有中斷信號后的下一個Q1,置int_out_clear為1;中斷

//返回指令RTI時置其為0;其余時刻保持不變。

else if(int_nesting) int_out_clear<=0;

else begin

pc_plus1<=pc_fetch+1;

pc<=pc_fetch;

casex({int_out,inst[15:12]})

5′b1xxxx:begin

int_out_clear<=1

//pc_int:中斷發(fā)生標(biāo)志;pc_pop:中斷返回標(biāo)志

pc_int<=1;

pc_pop<=0;

//中斷嵌套返回時刻并不執(zhí)行壓棧操作,而應(yīng)返回原壓棧值

if(int_nest_back==0)

……//壓棧

5′b01111:begin

pc_pop<=1;

pc_int<=0;

int_out_clear<=0;

……//進棧

default:begin

pc_pop<=0;

pc_int<=0;end

//預(yù)取值地址的辨別

assign pc_fetch=(resetn==0) ? 12′b0000_0000_0000:

(pc_pop==1) ? pc_fetch_pop:

(int_nest_back&pc_int) ? pc_fetch_pop:

(pc_int==1) ? {8′b00000000,int_pc}:

(sys_jmp==1) ? pc_jmp:

pc_plus1;

2 系統(tǒng)的測試與驗證

本中斷系統(tǒng)屬于自主設(shè)計的RISC MCU IP核的子模塊,其功能與時序仿真也是在整個IP核上進行的。經(jīng)過六個含中斷程序的下載驗證和不斷完善,整個中斷系統(tǒng)是完全正確且可行的。功能仿真時,采取了將測試向量(匯編代碼)通過虛擬ROM進行驗證的方式;時序仿真則是利用Altera公司的LPM ROM/RAM模塊完成。前者的平臺是modelsim 6.0se,后者是quartus6.0。現(xiàn)舉例詳細(xì)說明:設(shè)置IE為0111,IP為0110。步驟如下:

(1)運行主程序,等待中斷信號;

(2)先獲得液晶中斷源SL并執(zhí)行相應(yīng)的中斷源程序,但在其中斷程序未執(zhí)行完之前,又來外部中斷源SE,此時因中斷源有高低優(yōu)先級之別,應(yīng)有中斷嵌套狀況;

(3)系統(tǒng)轉(zhuǎn)而執(zhí)行外部中斷程序,但又在外部中斷程序未執(zhí)行完之前,獲得定時/計數(shù)器中斷源ST,此時因中斷源同是高優(yōu)先級中斷,故不予理睬,但定時/技術(shù)中斷器請求信號卻一直保持,直至外部中斷程序完畢后,系統(tǒng)緊接著響應(yīng)定時/技術(shù)器中斷;

(4)定時/技術(shù)器中斷程序執(zhí)行完畢后,系統(tǒng)返回液晶中斷程序繼續(xù)執(zhí)行;

(5)待液晶中斷程序執(zhí)行完后,系統(tǒng)跳回主程序。

具體的仿真結(jié)果完全符合功能要求,時序圖如圖2所示。

隨著微電子技術(shù)的飛速發(fā)展,微控制器以其性能好、體積小、價格優(yōu)、功能齊全等突出優(yōu)點被廣泛應(yīng)用于家用電器、計算和外設(shè)、通訊、工業(yè)控制、自動化生產(chǎn)、智能化設(shè)備以及儀器儀表等領(lǐng)域,在國內(nèi)具有良好的應(yīng)用前景,其設(shè)計也日益受到人們的重視。中斷系統(tǒng)是微控制器設(shè)計的難點,本文介紹的中斷系統(tǒng)設(shè)計方法具有很好的借鑒意義。采用這種用Verilog實現(xiàn)的自頂向下的方法,使問題在RTL級就暴露出來,便于及時修改,大大減少了開發(fā)時間。包含上述中斷系統(tǒng)的4位RISC MCU IP核也已測試及驗證成功。

參考文獻

[1] 胡永華,高明倫,王銳.微處理器中中斷電路的高層設(shè)計[J].微電子學(xué)與計算機,2001,(4).

[2] 2004 Microchip Technology Inc.PICmicro中檔單片機系列參考手冊.http://www.microchip.com,2004,9.

[3] 朱良辰,胡越黎,冉峰.高速MCU核中并行優(yōu)先級中斷系統(tǒng)的設(shè)計與實現(xiàn)[J].微電子學(xué),2004,34(4):482.

[4] 張毅剛.單片機原理與應(yīng)用(第1版)[M].北京:高等教育出版社,2004,(1):112.

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉