• 
    

    
    

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

      基于FPGA的??臻g管理器的研究和設(shè)計

      2010-08-12 12:05:02李巖賈小梨
      電子技術(shù)應(yīng)用 2010年7期
      關(guān)鍵詞:堆棧嵌套管理器

      李巖,賈小梨

      (哈爾濱理工大學計算機科學與技術(shù)學院,黑龍江哈爾濱150080)

      航空航天、工業(yè)控制、汽車電子和核電站建設(shè)等領(lǐng)域的高速發(fā)展,對嵌入式操作系統(tǒng)實時性的要求越來越高。同時,由于FPGA的集成度和速度的不斷提高,使嵌入式操作系統(tǒng)硬件化實現(xiàn)成為發(fā)展趨勢。硬實時操作系統(tǒng)中的堆棧管理對系統(tǒng)的實時性和可靠性起著至關(guān)重要的作用,而傳統(tǒng)操作系統(tǒng)內(nèi)核是將每個任務(wù)的堆??臻g直接進行最大化處理,導致大量存儲空間浪費,另外采用通用RAM尋址方式也不能滿足對被切換任務(wù)信息的快速保護。

      基于上述問題,本文提出了一種堆棧空間結(jié)構(gòu),設(shè)計了一款具有自動檢驗功能的??臻g管理器,并在Xilinx公司的集成開發(fā)環(huán)境FPGA系統(tǒng)上實現(xiàn)。

      1 堆??臻g結(jié)構(gòu)

      堆棧空間是按先進后出(LIFO)原則分配的連續(xù)存儲器空間,可以滿足保護任務(wù)切換信息和中斷響應(yīng)時保護處理器狀態(tài)和任務(wù)參數(shù)數(shù)據(jù)的需要[1],且對每個任務(wù)分配一個單獨的任務(wù)棧和一個響應(yīng)系統(tǒng)中斷任務(wù)的中斷嵌套棧[2]。如圖1所示,??臻g劃分為n個任務(wù)棧和1個中斷嵌套棧。

      任務(wù)棧主要保護被切換任務(wù)的信息。它存放的數(shù)據(jù)有:任務(wù)代碼首地址、任務(wù)參數(shù)、任務(wù)中定義的局部變量、被調(diào)用函數(shù)的參數(shù)和局部變量及任務(wù)中各個函數(shù)的返回地址。中斷嵌套棧存放被中斷任務(wù)的數(shù)據(jù),包括發(fā)生中斷時需要保存的上下文、中斷嵌套時需要保存的上下文和中斷服務(wù)程序的局部變量。

      在硬實時操作系統(tǒng)中,當發(fā)生中斷或中斷嵌套時,堆棧地址指針從任務(wù)棧切換到中斷嵌套棧。當所有的中斷服務(wù)程序全部執(zhí)行完成后,堆棧地址指針從中斷嵌套棧切換到任務(wù)棧,繼續(xù)執(zhí)行該被中斷的任務(wù)。這種管理方式同以往操作系統(tǒng)采用被中斷任務(wù)的數(shù)據(jù)保存到相應(yīng)任務(wù)堆棧的方法相比,更有效節(jié)約了堆??臻g開銷[3,4]。

      2 棧空間管理器總體結(jié)構(gòu)

      為了節(jié)約RAM開銷,從總體結(jié)構(gòu)上構(gòu)建了一款具有LIFO及自檢功能的棧空間管理器。棧空間管理器結(jié)構(gòu)包括一個雙端口存儲單元、狀態(tài)控制邏輯模塊、地址產(chǎn)生邏輯模塊、中斷判斷邏輯。其中狀態(tài)控制邏輯模塊由空/滿標志產(chǎn)生邏輯、二進制運算邏輯和標志寄存器組3部分組成;地址產(chǎn)生邏輯模塊由讀/寫地址邏輯、中斷棧邏輯和地址寄存器組3部分組成。

      由圖2可知,狀態(tài)控制邏輯模塊的工作過程為:從標志寄存器組中讀出當前任務(wù)棧的使用量fcount信號值,fcount信號值傳送至二進制運算邏輯。在讀/寫控制信號有效的情況下,二進制運算邏輯有效,修改fcount信號值,修改后的值作為USED的輸出值,同時寫回到標志寄存器的對應(yīng)fcount位中。修改后的信號值也作為空/滿標志產(chǎn)生邏輯的輸入信號,空/滿標志產(chǎn)生邏輯生成Full/Empty標志,并把該標志位寫回到標志寄存器對應(yīng)位Full/Empty中。其中標志寄存器freg的結(jié)構(gòu)如圖3所示,初始值為0000001000000000B。

      中斷判斷邏輯由輸入信號INT與標志寄存器位IntNesting值決定是否有效。如果有中斷發(fā)生,則中斷棧邏輯有效,中斷棧邏輯生成讀/寫地址,否則讀/寫地址邏輯有效,生成相應(yīng)的讀/寫地址。

      在讀/寫控制信號有效的情況下,從堆棧地址寄存器組中讀出當前任務(wù)的地址,經(jīng)過讀/寫地址邏輯或中斷棧邏輯產(chǎn)生堆棧地址指針,作為HOS堆??臻g的入棧/出棧地址。執(zhí)行入棧時,在同步時鐘和入??刂菩盘栍行У那闆r下,中斷判斷邏輯判斷是否存在中斷或中斷嵌套,如果沒有,則由寫地址邏輯生成入棧地址;否則由中斷棧邏輯生成寫地址。同理,執(zhí)行出棧時,在同步時鐘和出??刂菩盘栍行У那闆r下,中斷判斷邏輯判斷是否存在中斷或中斷嵌套,如果沒有,則讀地址邏輯生成出棧地址;否則中斷棧邏輯生成出棧地址。

      3 棧空間管理器設(shè)計

      為了快速、有效地保護被切換任務(wù)的信息,并滿足自動檢驗功能的要求,在??臻g管理器設(shè)計中設(shè)計了2個邏輯模塊,分別為狀態(tài)控制邏輯模塊和地址產(chǎn)生邏輯模塊。狀態(tài)控制邏輯模塊主要生成入棧/出棧控制信號和Used信號,地址產(chǎn)生邏輯模塊主要生成有效的入棧/出棧地址?;趯?臻g管理器總體結(jié)構(gòu)工作過程的闡述,在Xilinx公司設(shè)計的XUP Virtex II Pro系列的芯片上設(shè)計一個模擬??臻g管理器,模擬管理8個任務(wù),任務(wù)棧的深度為64,寬度為16 bit,中斷嵌套棧的深度為128,寬度為16 bit,容量為10 KB的堆??臻g。在設(shè)計管理器中,保證管理器快速綜合,使占用FPGA的資源盡可能少,存儲單元的選擇是關(guān)鍵,該系統(tǒng)采用的是FPGA上一個18 KB的Block RAM資源,使用ISE 8.2i提供的雙端口RAM存儲模塊的IP核。如果選擇其他方法,如用觸發(fā)器和寄存器搭建存儲單元,則綜合時間長,且占用大量FPGA的Slices資源。

      由于熔煉工藝決定了陽極板的化學成分,化驗結(jié)果分析有滯后性,因此,一定程度上陽極板的物理外觀以及極板懸垂度將會比較直觀的影響陰極銅質(zhì)量,而陽極板裝槽后可依據(jù)陰極銅結(jié)晶狀況適時調(diào)整工藝參數(shù),以免造成陰極銅后期質(zhì)量波動。

      在實際嵌入式系統(tǒng)應(yīng)用中,根據(jù)系統(tǒng)要求,可計算出??臻g深度和寬度,具體的深度和寬度在VHDL代碼中修改即可。

      3.1 狀態(tài)控制邏輯模塊設(shè)計

      由于狀態(tài)標志寄存器的空/滿狀態(tài)標志位決定??臻g入棧/出棧操作,所以如何設(shè)計空/滿狀態(tài)標志位是關(guān)鍵。為了保護的數(shù)據(jù)能正確入棧與出棧,防止存儲器出現(xiàn)向上溢出或向下溢出,保證在滿的情況下,不能進行push操作;在空的狀態(tài)下,不能進行pop操作??刂菩盘柕漠a(chǎn)生過程如圖4所示。

      在狀態(tài)控制邏輯模塊設(shè)計時,prio_int信號驅(qū)動4個多路選擇器,選擇對應(yīng)狀態(tài)標志寄存器組中的各位段,分別有full信號值、empty信號值、fcount信號值和intNesting信號值。empty/full信號和push/pop信號作為組合邏輯輸入信號產(chǎn)生相應(yīng)的push_en/pop_en有效控制信號,該控制信號決定??臻g是否執(zhí)行入棧/出棧操作。

      在push_en/pop_en控制信號有效的情況下,驅(qū)動二進制運算邏輯加/減1,輸出運算結(jié)果。輸出的信號值有3個用途:(1)作為空/滿標志狀態(tài)產(chǎn)生邏輯的輸入信號,該信號邏輯產(chǎn)生empty/full信號;(2)寫回到fregx對應(yīng)的fcount位中;(3)作為Used輸出信號值,表示當前任務(wù)?;蛑袛嗲短讞5氖褂们闆r。

      在產(chǎn)生empty、full信號邏輯模塊設(shè)計時,采用了對輸入信號的每一位進行組合邏輯判斷的方法,使該信號分兩路,一路作為與門組合邏輯的輸入信號產(chǎn)生full信號。如果輸入信號的每一位都為1,則full信號置1,其他情況置0;另一路作為或門非組合邏輯的輸入信號產(chǎn)生empty信號。如果輸入信號的每一位都為0,則empty置1,其他情況置0。在整個邏輯模塊設(shè)計中,采用組合邏輯設(shè)計,目的是縮短工作時延,提高系統(tǒng)工作頻率。

      3.2 地址產(chǎn)生邏輯模塊設(shè)計

      堆棧地址指針SP決定了堆棧空間單元的數(shù)據(jù)正確入棧和出棧,堆棧地址指針SP的獲得在于如何驅(qū)動讀/寫邏輯模塊和中斷棧模塊。為了確保被保護數(shù)據(jù)的有效性和實時性,防止出現(xiàn)不確定狀態(tài),須在時序同步的狀態(tài)下,對數(shù)據(jù)進行操作,如圖5所示。

      在地址產(chǎn)生邏輯設(shè)計時,先對堆棧地址寄存器組賦初值,該模擬系統(tǒng)管理8個任務(wù),有9個堆棧地址寄存器,分別為8個任務(wù)堆棧地址寄存器和1個中斷嵌套棧堆棧地址寄存器。

      當任務(wù)優(yōu)先級Prio信號和中斷使能int_en信號同時驅(qū)動多路選擇器時,堆棧地址指針SP從堆棧地址寄存器組中選擇存放在Pregx中的當前任務(wù)的地址,在設(shè)計的??臻g管理器中,SP指向??臻g的下一個存儲單元的地址。如果入??刂菩盘栍行В瑒tSP作為??臻g的尋址地址,寫入數(shù)據(jù),SP加1;如果出??刂菩盘栍行?,則SP減1,改變后的SP值作為??臻g的尋址地址,讀出數(shù)據(jù)。操作完成后,改變后的SP值寫回到對應(yīng)的堆棧地址寄存器組Pregx中。

      4 仿真結(jié)果分析

      仿真時,輸入十進制數(shù)的數(shù)據(jù),圖6為系統(tǒng)時序仿真波形圖。

      (1)當INT無效時,即系統(tǒng)中不存在中斷或中斷嵌套。在push有效的情況下,置prio信號值為2,data_in信號值分別為32 768、57 908。仿真時,輸出結(jié)果為:used信號值分別為1、2,而ostcbstkptr信號值分別為128、129;同理,在pop有效情況下,置prio信號值為2,觀察仿真結(jié)果為:dout_out信號值分別為32 768、57 908,used的信號值分別為1、0,ostcbstkptr信號值分別為129、128。由此可得,在無中斷處理的條件下,根據(jù)任務(wù)的優(yōu)先級prio,按LIFO原則在任務(wù)棧中寫入和讀出數(shù)據(jù),并且每次的有效操作同時修改當前任務(wù)的used和ostcbstkptr信號值。

      (2)當INT有效時,即系統(tǒng)中產(chǎn)生中斷或存在中斷嵌套。在push有效的情況下,置prio信號值為6及data_in信號值為8192,觀察仿真結(jié)果為:used信號值依次為1、2、3、4,ostcbstkptr信號值依次為576、577、578、579;同理,在pop有效情況下,置prio為6,此時的仿真結(jié)果:data_out信號值為8192,used信號值依次輸出4、3、2、1,ostcbstkptr信號值依次輸出579、578、577、576。由此可得,當系統(tǒng)中產(chǎn)生中斷或存在中斷嵌套,按LIFO原則在中斷嵌套棧中寫入和讀出數(shù)據(jù),并且每次有效操作同時修改中斷嵌套棧的used和ostcbstkptr的值。

      由以上結(jié)果分析可知,該實驗驗證了??臻g管理器的正確性,符合系統(tǒng)設(shè)計的要求。

      本文分析了堆??臻g結(jié)構(gòu)及對被切換任務(wù)相應(yīng)數(shù)據(jù)信息的保護,并對堆??臻g進行了合理的結(jié)構(gòu)劃分。實驗數(shù)據(jù)表明了該系統(tǒng)的可行性和穩(wěn)定性。棧空間管理器能有效節(jié)約硬實時操作系統(tǒng)分配堆??臻g的時間,減少RAM存儲空間。從硬件角度上看,簡化了設(shè)計,降低了成本,具有一定的使用價值。目前只在實驗平臺上仿真,下一步擬將??臻g管理器的IP核應(yīng)用于硬實時操作系統(tǒng),以提高操作系統(tǒng)的運行效率。

      [1]LABROSSE J J.嵌入式實時操作系統(tǒng)μC/OS-II[M],第2版.北京:北京航空航天大學出版社,2003.

      [2]楊少軍,李杭生.μC/OS-II任務(wù)棧處理的改進設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2004(5):73-74.

      [3]尹震宇,趙海,王金英,等.一種嵌入式處理器上的設(shè)計[J].計算機工程,2008(3):268-270.

      [4]崔建華,孫紅勝,王保進.硬件實時操作系統(tǒng)的設(shè)計和實現(xiàn)[J].電子技術(shù)應(yīng)用,2008(5):34-37.

      [5]田耘,徐文波.Xilinx FPGA開發(fā)實用教程[M].北京:清華大學出版社,2008.

      [6]張光建,劉政.基于樹結(jié)構(gòu)的μC/OS-II任務(wù)棧空間計算方法及應(yīng)用[J].計算機應(yīng)用,2009,29(4):1165-1167.

      猜你喜歡
      堆棧嵌套管理器
      例析“立幾”與“解幾”的嵌套問題
      基于嵌套Logit模型的競爭性選址問題研究
      應(yīng)急狀態(tài)啟動磁盤管理器
      Windows文件緩沖處理技術(shù)概述
      嵌入式軟件堆棧溢出的動態(tài)檢測方案設(shè)計*
      基于堆棧自編碼降維的武器裝備體系效能預測
      高集成度2.5A備份電源管理器簡化鋰離子電池備份系統(tǒng)
      快速導出QQ群消息
      電腦迷(2014年2期)2014-04-29 19:21:13
      一種基于區(qū)分服務(wù)的嵌套隊列調(diào)度算法
      計算機工程(2014年6期)2014-02-28 01:25:29
      無背景實驗到有背景實驗的多重嵌套在電氣專業(yè)應(yīng)用研究
      河南科技(2014年23期)2014-02-27 14:19:17
      东阿县| 泗洪县| 米泉市| 平江县| 南投县| 扎囊县| 莱阳市| 志丹县| 阳曲县| 林西县| 奉新县| 长葛市| 福海县| 高碑店市| 桃园县| 达尔| 静海县| 芮城县| 合山市| 安乡县| 大洼县| 南投市| 博爱县| 大悟县| 长垣县| 定陶县| 周宁县| 林西县| 东安县| 洞头县| 察哈| 泰顺县| 四子王旗| 黎城县| 云南省| 太湖县| 府谷县| 安溪县| 岳池县| 阿荣旗| 潞西市|