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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于SDH芯片的S19202的輪詢合路的設(shè)計(jì)

          基于SDH芯片的S19202的輪詢合路的設(shè)計(jì)

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


          采用這種改進(jìn)的DRR算法下,可以保證在變長(zhǎng)包的情況下,各個(gè)接口的整包緩存隊(duì)列在報(bào)文合路時(shí)公平的帶寬,確保合路調(diào)度的穩(wěn)定運(yùn)行。

          DRR整包輪詢合路的基本工作過程為:輪詢4個(gè)整包緩存隊(duì)列,每讀取一個(gè)整包都判斷該包是否是協(xié)議包,如果是協(xié)議包,則按照上交CPU報(bào)文格式送協(xié)議FIFO,如果是需要轉(zhuǎn)發(fā)的報(bào)文,則按照轉(zhuǎn)發(fā)報(bào)文格式送數(shù)據(jù)報(bào)文FIFO。

          調(diào)度機(jī)輪詢到某個(gè)隊(duì)列時(shí),為該隊(duì)列的儲(chǔ)蓄計(jì)數(shù)器加上40;然后判斷該隊(duì)列是否為空,如果為空,則馬上轉(zhuǎn)向下一個(gè)隊(duì)列;如果非空,則判斷當(dāng)前該隊(duì)列是否有整包,如果當(dāng)前該隊(duì)列無整包,則轉(zhuǎn)到下一個(gè)隊(duì)列;否則,如果該隊(duì)列目前有整包則輸出該隊(duì)列的隊(duì)頭包到合路隊(duì)列,同時(shí)該路的儲(chǔ)蓄計(jì)數(shù)器的值要減去輸出報(bào)文的長(zhǎng)度;然后重復(fù)上述過程,直到該隊(duì)列無整包或者隊(duì)列的儲(chǔ)蓄計(jì)數(shù)器的值小于40時(shí)跳轉(zhuǎn)到下一隊(duì)列服務(wù),其詳細(xì)工作流程如圖2 所示:


          圖2 改進(jìn)的DRR合路調(diào)度流程圖

          DRR合路調(diào)度單元已在ALTERA公司的quartusII4.1環(huán)境下用VHDL編程實(shí)現(xiàn),其仿真波形如圖3所示:


          圖3 DRR合路調(diào)度單元仿真波形圖

          仿真結(jié)果顯示這種采用分片輪詢和欠賬輪詢的結(jié)合的合路調(diào)度策略可以達(dá)到性能需求,確保變長(zhǎng)分組合路調(diào)度的公平性和穩(wěn)定性。

          3、 結(jié)束語(yǔ)

          根據(jù)的特點(diǎn)和性能要求,通過在FPGA內(nèi)部編程實(shí)現(xiàn)分片輪詢和改進(jìn)式欠賬輪詢結(jié)合的調(diào)度策略,保證了4X2.5G線路接口卡輸入端各個(gè)接口合路的公平性和穩(wěn)定性。經(jīng)測(cè)試該性能穩(wěn)定,整個(gè)工作流程簡(jiǎn)單實(shí)用,符合要求。

          本文引用地址:http://www.ex-cimer.com/article/173068.htm

          上一頁(yè) 1 2 下一頁(yè)

          評(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); })();