新聞中心

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

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

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

  
  3器設(shè)計(jì)
  
  為了快速、有效地保護(hù)被切換任務(wù)的信息,并滿足自動(dòng)檢驗(yàn)功能的要求,在器設(shè)計(jì)中設(shè)計(jì)了2個(gè)邏輯模塊,分別為狀態(tài)控制邏輯模塊和地址產(chǎn)生邏輯模塊。狀態(tài)控制邏輯模塊主要生成入棧/出??刂菩盘柡蚒sed信號,地址產(chǎn)生邏輯模塊主要生成有效的入棧/出棧地址?;趯?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/??臻g管理">??臻g管理器總體結(jié)構(gòu)工作過程的闡述,在Xilinx公司設(shè)計(jì)的XUPVirtexIIPro系列的芯片上設(shè)計(jì)一個(gè)模擬棧空間管理器,模擬管理8個(gè)任務(wù),的深度為64,寬度為16bit,的深度為128,寬度為16bit,容量為10KB的堆??臻g。在設(shè)計(jì)管理器中,保證管理器快速綜合,使占用的資源盡可能少,存儲單元的選擇是關(guān)鍵,該系統(tǒng)采用的是上一個(gè)18KB的BlockRAM資源,使用ISE8.2i提供的雙端口RAM存儲模塊的IP核。如果選擇其他方法,如用觸發(fā)器和寄存器搭建存儲單元,則綜合時(shí)間長,且占用大量的Slices資源。
  
  在實(shí)際嵌入式系統(tǒng)應(yīng)用中,根據(jù)系統(tǒng)要求,可計(jì)算出棧空間深度和寬度,具體的深度和寬度在VHDL代碼中修改即可。
  
  3.1狀態(tài)控制邏輯模塊設(shè)計(jì)
  
  由于狀態(tài)標(biāo)志寄存器的空/滿狀態(tài)標(biāo)志位決定??臻g入棧/出棧操作,所以如何設(shè)計(jì)空/滿狀態(tài)標(biāo)志位是關(guān)鍵。為了保護(hù)的數(shù)據(jù)能正確入棧與出棧,防止存儲器出現(xiàn)向上溢出或向下溢出,保證在滿的情況下,不能進(jìn)行push操作;在空的狀態(tài)下,不能進(jìn)行pop操作??刂菩盘柕漠a(chǎn)生過程如圖4所示。

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


  
  在狀態(tài)控制邏輯模塊設(shè)計(jì)時(shí),prio_int信號驅(qū)動(dòng)4個(gè)多路選擇器,選擇對應(yīng)狀態(tài)標(biāo)志寄存器組中的各位段,分別有full信號值、empty信號值、fcount信號值和intNesting信號值。empty/full信號和push/pop信號作為組合邏輯輸入信號產(chǎn)生相應(yīng)的push_en/pop_en有效控制信號,該控制信號決定??臻g是否執(zhí)行入棧/出棧操作。
  
  在push_en/pop_en控制信號有效的情況下,驅(qū)動(dòng)二進(jìn)制運(yùn)算邏輯加/減1,輸出運(yùn)算結(jié)果。輸出的信號值有3個(gè)用途:(1)作為空/滿標(biāo)志狀態(tài)產(chǎn)生邏輯的輸入信號,該信號邏輯產(chǎn)生empty/full信號;(2)寫回到fregx對應(yīng)的fcount位中;(3)作為Used輸出信號值,表示當(dāng)前的使用情況。
  
  在產(chǎn)生empty、full信號邏輯模塊設(shè)計(jì)時(shí),采用了對輸入信號的每一位進(jìn)行組合邏輯判斷的方法,使該信號分兩路,一路作為與門組合邏輯的輸入信號產(chǎn)生full信號。如果輸入信號的每一位都為1,則full信號置1,其他情況置0;另一路作為或門非組合邏輯的輸入信號產(chǎn)生empty信號。如果輸入信號的每一位都為0,則empty置1,其他情況置0。在整個(gè)邏輯模塊設(shè)計(jì)中,采用組合邏輯設(shè)計(jì),目的是縮短工作時(shí)延,提高系統(tǒng)工作頻率。



評論


相關(guān)推薦

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

關(guān)閉