<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

            
            2器總體結(jié)構(gòu)
            
            為了節(jié)約RAM開銷,從總體結(jié)構(gòu)上構(gòu)建了一款具有LIFO及自檢功能的器。器結(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)前的使用量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。

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


            
            中斷判斷邏輯由輸入信號(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)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();