新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種基于FPGA的棧空間管理器的研究和設(shè)計(jì)

一種基于FPGA的棧空間管理器的研究和設(shè)計(jì)

作者: 時間:2010-09-21 來源:網(wǎng)絡(luò) 收藏

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

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


  
  在地址產(chǎn)生邏輯設(shè)計(jì)時,先對堆棧地址寄存器組賦初值,該模擬系統(tǒng)管理8個任務(wù),有9個堆棧地址寄存器,分別為8個任務(wù)堆棧地址寄存器和1個堆棧地址寄存器。
  
  當(dāng)任務(wù)優(yōu)先級Prio信號和中斷使能int_en信號同時驅(qū)動多路選擇器時,堆棧地址指針SP從堆棧地址寄存器組中選擇存放在Pregx中的當(dāng)前任務(wù)的地址,在設(shè)計(jì)的器中,SP指向??臻g的下一個存儲單元的地址。如果入??刂菩盘栍行В瑒tSP作為??臻g的尋址地址,寫入數(shù)據(jù),SP加1;如果出??刂菩盘栍行?,則SP減1,改變后的SP值作為??臻g的尋址地址,讀出數(shù)據(jù)。操作完成后,改變后的SP值寫回到對應(yīng)的堆棧地址寄存器組Pregx中。
  
  4仿真結(jié)果分析
  
  本器容量為10KB,寬度為16bit。在ISE8.2i開發(fā)軟件中進(jìn)行了綜合和仿真,設(shè)計(jì)中使用了294個Slices芯片、396個觸發(fā)器芯片、274個inputLUTs、60個boundedIOBs、1個塊BRAMs。
  
  仿真時,輸入十進(jìn)制數(shù)的數(shù)據(jù),圖6為系統(tǒng)時序仿真波形圖。

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


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



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉