新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種基于FPGA的棧空間管理器的研究和設計

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

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

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

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


          
          在地址產生邏輯設計時,先對堆棧地址寄存器組賦初值,該模擬系統管理8個任務,有9個堆棧地址寄存器,分別為8個任務堆棧地址寄存器和1個堆棧地址寄存器。
          
          當任務優先級Prio信號和中斷使能int_en信號同時驅動多路選擇器時,堆棧地址指針SP從堆棧地址寄存器組中選擇存放在Pregx中的當前任務的地址,在設計的器中,SP指向棧空間的下一個存儲單元的地址。如果入棧控制信號有效,則SP作為棧空間的尋址地址,寫入數據,SP加1;如果出棧控制信號有效,則SP減1,改變后的SP值作為棧空間的尋址地址,讀出數據。操作完成后,改變后的SP值寫回到對應的堆棧地址寄存器組Pregx中。
          
          4仿真結果分析
          
          本器容量為10KB,寬度為16bit。在ISE8.2i開發軟件中進行了綜合和仿真,設計中使用了294個Slices芯片、396個觸發器芯片、274個inputLUTs、60個boundedIOBs、1個塊BRAMs。
          
          仿真時,輸入十進制數的數據,圖6為系統時序仿真波形圖。

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


          
          (1)當INT無效時,即系統中不存在中斷或中斷嵌套。在push有效的情況下,置prio信號值為2,data_in信號值分別為32768、57908。仿真時,輸出結果為:used信號值分別為1、2,而ostcbstkptr信號值分別為128、129;同理,在pop有效情況下,置prio信號值為2,觀察仿真結果為:dout_out信號值分別為32768、57908,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的值。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乳山市| 丰原市| 晋江市| 封丘县| 军事| 吐鲁番市| 海安县| 鸡东县| 通化市| 海城市| 乌鲁木齐县| 大丰市| 平山县| 平南县| 鄄城县| 积石山| 桃源县| 苏尼特右旗| 哈巴河县| 元朗区| 建德市| 两当县| 漳州市| 易门县| 丰原市| 杨浦区| 柳江县| 体育| 牙克石市| 襄樊市| 红安县| 沾益县| 荔波县| 伊宁市| 西宁市| 连山| 洛南县| 广安市| 福安市| 江源县| 平凉市|