一種基于FPGA的棧空間管理器的研究和設(shè)計(jì)
2棧空間管理器總體結(jié)構(gòu)
為了節(jié)約RAM開銷,從總體結(jié)構(gòu)上構(gòu)建了一款具有LIFO及自檢功能的??臻g管理器。棧空間管理器結(jié)構(gòu)包括一個(gè)雙端口存儲(chǔ)單元、狀態(tài)控制邏輯模塊、地址產(chǎn)生邏輯模塊、中斷判斷邏輯。其中狀態(tài)控制邏輯模塊由空/滿標(biāo)志產(chǎn)生邏輯、二進(jìn)制運(yùn)算邏輯和標(biāo)志寄存器組3部分組成;地址產(chǎn)生邏輯模塊由讀/寫地址邏輯、中斷棧邏輯和地址寄存器組3部分組成。
由圖2可知,狀態(tài)控制邏輯模塊的工作過程為:從標(biāo)志寄存器組中讀出當(dāng)前任務(wù)棧的使用量fcount信號(hào)值,fcount信號(hào)值傳送至二進(jìn)制運(yùn)算邏輯。在讀/寫控制信號(hào)有效的情況下,二進(jìn)制運(yùn)算邏輯有效,修改fcount信號(hào)值,修改后的值作為USED的輸出值,同時(shí)寫回到標(biāo)志寄存器的對(duì)應(yīng)fcount位中。修改后的信號(hào)值也作為空/滿標(biāo)志產(chǎn)生邏輯的輸入信號(hào),空/滿標(biāo)志產(chǎn)生邏輯生成Full/Empty標(biāo)志,并把該標(biāo)志位寫回到標(biāo)志寄存器對(duì)應(yīng)位Full/Empty中。其中標(biāo)志寄存器freg的結(jié)構(gòu)如圖3所示,初始值為0000001000000000B。
中斷判斷邏輯由輸入信號(hào)INT與標(biāo)志寄存器位IntNesting值決定是否有效。如果有中斷發(fā)生,則中斷棧邏輯有效,中斷棧邏輯生成讀/寫地址,否則讀/寫地址邏輯有效,生成相應(yīng)的讀/寫地址。
在讀/寫控制信號(hào)有效的情況下,從堆棧地址寄存器組中讀出當(dāng)前任務(wù)的地址,經(jīng)過讀/寫地址邏輯或中斷棧邏輯產(chǎn)生堆棧地址指針,作為HOS堆棧空間的入棧/出棧地址。執(zhí)行入棧時(shí),在同步時(shí)鐘和入??刂菩盘?hào)有效的情況下,中斷判斷邏輯判斷是否存在中斷或中斷嵌套,如果沒有,則由寫地址邏輯生成入棧地址;否則由中斷棧邏輯生成寫地址。同理,執(zhí)行出棧時(shí),在同步時(shí)鐘和出??刂菩盘?hào)有效的情況下,中斷判斷邏輯判斷是否存在中斷或中斷嵌套,如果沒有,則讀地址邏輯生成出棧地址;否則中斷棧邏輯生成出棧地址。
評(píng)論