新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的棧空間管理器的研究和設計

        基于FPGA的棧空間管理器的研究和設計

        作者: 時間:2010-10-09 來源:網絡 收藏

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

          3.2 地址產生邏輯模塊設計

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


          在地址產生邏輯設計時,先對堆棧地址寄存器組賦初值,該模擬系統管理8個任務,有9個堆棧地址寄存器,分別為8個任務堆棧地址寄存器和1個中斷嵌套棧堆棧地址寄存器。

          當任務優先級Prio信號和中斷使能int_en信號同時驅動多路選擇器時,堆棧地址指針SP從堆棧地址寄存器組中選擇存放在Pregx中的當前任務的地址,在設計的中,SP指向的下一個存儲單元的地址。如果入棧控制信號有效,則SP作為棧空間的尋址地址,寫入數據,SP加1;如果出棧控制信號有效,則SP減1,改變后的SP值作為棧空間的尋址地址,讀出數據。操作完成后,改變后的SP值寫回到對應的堆棧地址寄存器組Pregx中。

          4 仿真結果分析

          本棧空間容量為10 KB,寬度為16 bit。在ISE 8.2i開發軟件中進行了綜合和仿真,設計中使用了294個Slices芯片、396個觸發器芯片、274個input LUTs、60個bounded IOBs、1個塊BRAMs。

          仿真時,輸入十進制數的數據,圖6為系統時序仿真波形圖。


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

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

          由以上結果分析可知,該實驗驗證了棧空間的正確性,符合系統設計的要求。

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


        上一頁 1 2 3 下一頁

        關鍵詞: FPGA 棧空間 管理器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 榆中县| 永年县| 大荔县| 南安市| 洛隆县| 平舆县| 得荣县| 蓬溪县| 高雄县| 抚顺市| 敦化市| 乌兰浩特市| 怀远县| 军事| 从化市| 昌黎县| 浦北县| 鲁山县| 历史| 金坛市| 英吉沙县| 湘潭市| 高邑县| 洛阳市| 六枝特区| 岳池县| 石景山区| 瑞昌市| 汝城县| 托克逊县| 朝阳县| 盐城市| 永嘉县| 利川市| 谷城县| 太仓市| 尖扎县| 赤水市| 武宁县| 城市| 德昌县|