亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        HIMAC調(diào)度的C語言實現(xiàn)

        2016-10-17 05:40:08戴曙光
        電子科技 2016年9期
        關(guān)鍵詞:信息管理

        趙 騫,戴曙光

        (上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)

        ?

        HIMAC調(diào)度的C語言實現(xiàn)

        趙騫,戴曙光

        (上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)

        針對目前HINOC的MAC層協(xié)議由FPGA仿真調(diào)試時實現(xiàn)代碼量大,仿真過程繁瑣且修改成本較高等問題,提出一種基于C語言的HIMAC調(diào)度的實現(xiàn)方法。通過C語言重構(gòu)接受調(diào)度與發(fā)送調(diào)度,完整地實現(xiàn)了EMAC幀和HIMAC幀的接收發(fā)送過程,解決了幀分片出隊問題,并大幅提高了開發(fā)效率。

        HINOC;HIMAC調(diào)度;C語言

        HINOC(High Performance Network Over Coax)技術(shù)[1]是利用有線電視同軸電纜的帶外信道組建多業(yè)務(wù)寬帶接入網(wǎng)的一種新接入技術(shù)。構(gòu)建HINOC網(wǎng)絡(luò)的目的是在當(dāng)前FTTB普遍應(yīng)用的前提下,利用有線電視網(wǎng)已有的同軸電纜線路和分配網(wǎng)絡(luò),連接光纖結(jié)點到住戶,組建最后100 m范圍內(nèi)的寬帶接入網(wǎng)。與國際上類似的EOC(Ethernet Over Coax)[2]產(chǎn)品相比,HINOC更符合我國的網(wǎng)絡(luò)要求與現(xiàn)狀,起始帶寬設(shè)計為8 MHz的整數(shù)倍(n×8 MHz),這樣既符合我國現(xiàn)有電視頻道的8 MHz的帶寬要求,又能滿足今后寬帶業(yè)務(wù)不斷增長的需求。文獻(xiàn)[3]中,為提高傳輸速率,MAC層的部分功能需要由硬件完成。軟件部分需用到FPGA,但在仿真調(diào)試階段,F(xiàn)PGA實現(xiàn)較為復(fù)雜,仿真過程繁瑣。在設(shè)計調(diào)試階段利用C語言編寫代碼,可節(jié)省時間成本以及硬件成本,設(shè)計思路與在FPGA上實現(xiàn)完全相同。本文描述了一種HIMAC調(diào)度的C語言實現(xiàn)方法,已達(dá)到較好的調(diào)試仿真功能,避免直接用FPGA仿真在器件上產(chǎn)生的消耗。

        1 HINOC網(wǎng)絡(luò)

        HINOC[4]網(wǎng)絡(luò)由位于樓道的頭端設(shè)備(HINOC Bridge,HB)和位于戶內(nèi)的(HINOC Modem,HM)構(gòu)成。邏輯拓?fù)洳捎命c到多點。其中HB處于中心控制地位,各HM可與HB通信并受其控制,各HM之間不能直接通信。HINOC系統(tǒng)上下行數(shù)據(jù)采用時分傳輸,系統(tǒng)設(shè)計簡單,物理層只包含4種幀結(jié)構(gòu),分別為上行探測幀(Pd幀)、下行探測幀(Pu幀)和上/下行數(shù)據(jù)幀(Du/Dd幀)。4種幀均采用OFDM(正交頻分復(fù)用)技術(shù)進(jìn)行數(shù)據(jù)傳輸??紤]到系統(tǒng)頻帶利用率與實現(xiàn)復(fù)雜度等制約因素,一個OFDM符號包含256個子載波。在實際應(yīng)用中,可以是多個家庭共享一個HINOC信道,也可以為每個家庭分配一個HINOC信道。每個用戶家庭均分配HINOC信道是典型的信道分配模式,每個用戶在這種分配模式下可得到該信道的全部接入速率。未來根據(jù)用戶需要還可進(jìn)一步擴(kuò)展用戶家庭接入速率,使每一個用戶能享有多個HINOC信道的帶寬。HINOC網(wǎng)絡(luò)邏輯圖如圖1所示。

        圖1 HINOC網(wǎng)絡(luò)邏輯圖

        2 HIMAC整體工作流程

        HIMAC[5]工作流程分為EMAC幀入隊流程和HIMAC幀發(fā)送流程。

        EMAC幀入隊流程如下:(1)EMAC數(shù)據(jù)源進(jìn)入HIMAC;(2)分組處理提取幀信息(幀長、目的MAC、源MAC和源端口號)后向接收調(diào)度申請入隊;(3)接收調(diào)度根據(jù)EMAC的源MAC和源端口號建立查找表項,并根據(jù)目的MAC查找相應(yīng)的目的端口號;(4)總調(diào)度讀取接收調(diào)度的信息(幀長、目的端口號和優(yōu)先級等);(5)總調(diào)度向緩存管理模塊申請BD地址,緩存管理模塊返回存儲EMAC幀的BD地址;(6)若申請緩存成功,總調(diào)度將EMAC幀的首BD地址和入隊隊列號等信息給隊列管理,隊列管理修改隊尾信息;(7)總調(diào)度將最終的入隊指令信息交給總線模塊;(8)總調(diào)度根據(jù)入隊指令將EMAC幀從分組處理搬移到緩存中。

        HIMAC幀發(fā)送流程如下[6]:(1)HIPHY將組幀指令交給序號處理模塊,組幀指令包含目的ID號,HIMAC幀長,組幀個數(shù)等信息;(2)序號處理模塊將組幀指令交給總調(diào)度模塊;(3)總調(diào)度查詢出隊隊列信息(按照先出高優(yōu)先級,后出低優(yōu)先級,先出碎片,后出完整EMAC幀原則),若隊列不為空,則隊列管理返回當(dāng)前隊列頭節(jié)點的首BD地址;(4)總調(diào)度根據(jù)隊列頭節(jié)點的首BD地址去緩存管理模塊查詢,緩存管理返回即將出隊EMAC的所有BD地址,出隊后隊列管理修改隊頭信息,緩存管理并釋放相應(yīng)的緩存;(5)總調(diào)度將最終的出隊指令信息交給總線模塊;(6)總線模塊根據(jù)出隊指令將緩存中的數(shù)據(jù)搬移到組幀模塊;(7)組幀模塊組好HIMAC幀,將HIMAC幀寫入HIPHY的發(fā)送緩存區(qū)。

        3 HIMAC調(diào)度模塊

        調(diào)度模塊[7]是HIMAC內(nèi)部的核心模塊之一,在整個HIMAC中起著重要的作用。它連接著轉(zhuǎn)發(fā)表模塊、隊列管理模塊、內(nèi)部總線控制模塊、分組處理模塊、HIMAC數(shù)據(jù)發(fā)送控制FIFO等,在這些模塊之間進(jìn)行信息的控制、傳遞,最終有序、正確地完成EMAC幀的接收和發(fā)送、HIMAC幀[8]的組幀和拆幀等工作。調(diào)度機(jī)制設(shè)計結(jié)構(gòu)[9]如圖2所示,主要由中心調(diào)度、緩存管理、隊列管理3個模塊組成,其中中心調(diào)度模塊控制幀入隊/出隊、緩存分配/釋放、反饋重傳處理、分片信息生成等過程,緩存管理模塊負(fù)責(zé)緩存分配和釋放操作,隊列管理模塊管理隊列中EMAC幀之間的關(guān)系。

        圖2 調(diào)度機(jī)制設(shè)計結(jié)構(gòu)

        4 HIMAC 調(diào)度C實現(xiàn)

        4.1接收調(diào)度

        接收調(diào)度設(shè)計思路:

        (1)通過Poll信號的跳轉(zhuǎn)輪詢HIMAC端口和EMAC端口的以太網(wǎng)數(shù)據(jù),分別判斷來自HB的HIMAC端口和EMAC端口或是HM的HIMAC端口以及EMAC端口,將即將入隊的EMAC幀信息(幀長、優(yōu)先級和目的節(jié)點)交給中心調(diào)度處理;

        (2)在查找表模塊[10],先學(xué)習(xí),后查找,根據(jù)EMAC幀的源MAC地址和源端口號,建立查找表項,根據(jù)EMAC幀的目的MAC地址進(jìn)行查表。

        以下是輪詢部分代碼:

        if(!poll&&!que_fp_rx_fifo_h.empty()) //poll=0來自himac端口的情況

        {

        pfp_rx_fifo_tmp=

        (pfp_rx_fifo)malloc(sizeof(fp_rx_fifo));

        pthread_mutex_lock(

        &que_fp_rx_fifo_h_mutex);

        pfp_rx_fifo_tmp=

        que_fp_rx_fifo_h.front();

        que_fp_rx_fifo_h.pop();

        pthread_mutex_unlock(

        &que_fp_rx_fifo_h_mutex);

        in_port_num=0;

        src_port=pfp_rx_fifo_tmp->src_port_h;

        }

        else if(poll&&!que_fp_rx_fifo_e.empty()) //poll=1來自emac端口的情況

        {

        pfp_rx_fifo_tmp=

        (pfp_rx_fifo)malloc(sizeof(fp_rx_fifo));

        pthread_mutex_lock(

        &que_fp_rx_fifo_e_mutex);

        pfp_rx_fifo_tmp=

        que_fp_rx_fifo_e.front();

        que_fp_rx_fifo_e.pop();

        pthread_mutex_unlock(

        &que_fp_rx_fifo_e_mutex);

        in_port_num=1;

        src_port=85;

        }

        4.2總調(diào)度

        總調(diào)度是中心調(diào)度、入隊出隊控制、隊列管理、緩存分配的頂層文件,其中緩存分配和隊列管理作為子模塊和其相連,包含了EMAC幀入隊、EMAC幀出隊、處理重傳反饋、HIMAC幀出隊、釋放緩存區(qū)等狀態(tài)。

        總調(diào)度設(shè)計思路:

        (1)先從tx_fifo中獲取目的HM_ID、HIMAC幀序號、HIMAC幀長、是否包含EIF子幀等信息,這時將HIMAC幀長減去首部、CRC、EIF子幀長(若有EIF 子幀)賦給remainByteNumber(剩余字節(jié)數(shù));

        (2)從獲取的目的HM_ID由高到低輪詢dequeueInfo,若此HM_ID對應(yīng)的3個優(yōu)先級中的碎片長度不為0,說明上次此隊列出隊未出完整,有剩余碎片沒出,將此剩余碎片的長度和remainByteNumber 比較,如果剩余的碎片長度不小于后者,則此HIMAC幀只能容納一個碎片,更新dequeueInfo和dequeueResultFifo,輪詢結(jié)束;若剩余的碎片長度小于后者,則此碎片作為HIMAC幀的頭部EMAC碎片出隊,輪詢完頭部碎片情況,繼續(xù)輪詢完整的EMAC幀情況,由高到低輪詢3個優(yōu)先級的隊列情況,如果查詢到的EMAC幀大于remainByteNumber,說明此EMAC幀的頭一部分可作為尾部碎片出,直接轉(zhuǎn)到尾部輪詢;若查詢到的EMAC幀小于等于remainByteNumber,說明此EMAC作為HIMAC幀的一部分出隊,繼續(xù)輪詢完整的EMAC幀的隊列情況。對于滿足要求的EMAC幀,在輪詢過程中,無論碎片還是完整的,將此EMAC幀的相關(guān)信息寫到dequeueResultFifo里面,同時更新dequeueInfo;

        (3)輪詢之后,首先判斷是否空幀,如果輪詢之后沒有幀出隊,remainByteNumber保持一個定值不變,滿足這個要求則是空幀。如果是空幀,將結(jié)果寫到SR_FIFO;如果不是空幀,執(zhí)行從出隊結(jié)果FIFO中讀出的指令。每執(zhí)行一次對應(yīng)一個EMAC幀,每次將EMAC的第一個64 Byte塊的首地址交給緩存管理進(jìn)行查詢,緩存管理返還所有64 Byte塊的首地址和最后一個64 Byte塊有效長度,調(diào)度根據(jù)dequeueResultFifo中記錄的需要這些64 Byte塊的哪些和每個64 Byte塊多少有效數(shù)據(jù)來判斷緩存管理返還的信息哪些是需要的,并把需要的信息寫到sr_fifo里。在所有dequeueResultFifo中的數(shù)據(jù)執(zhí)行完HIMAC幀出隊過程結(jié)束;

        (4)EMAC幀出隊狀態(tài),將EMAC幀出隊發(fā)往EMAC端口。將EMAC隊列號交給隊列管理,隊列管理返還第一個64 Byte塊地址和長度信息,調(diào)度將此地址交給緩存區(qū)管理,緩存管理反饋此EMAC幀所有64 Byte塊的首地址和最后一個64 Byte塊的有效長度,調(diào)度將相關(guān)信息寫到SR_FIFO中;

        (5)釋放緩存區(qū)狀態(tài),釋放緩存管理里面的內(nèi)存。將第一個64 Byte塊的首地址和釋放請求交給緩存區(qū)管理,緩存管理根據(jù)第一個64 Byte塊的首地址,將這一EMAC的所有64 Byte塊的地址均刪除。

        判斷高中低優(yōu)先級中是否存在分片程序如下:

        if(dequeueInfo[dequeueDestNodeId_HighPri]!=0) //若高優(yōu)先級隊列中存在分片, 出隊分片信息

        dequeuefronthigh_pri();

        else if(dequeueInfo[dequeueDestNodeId_MidPri]!=0)// 若中優(yōu)先級隊列中存在分片,出隊分片信息

        dequeuefrontmid_pri();

        else if(dequeueInfo[dequeueDestNodeId_LowPri] !=0)// 若低優(yōu)先級隊列中存在分片,出隊分片信息

        dequeuefrontlow_pri();

        else

        dequeue_whole_frame();//若三個優(yōu)先級隊列均未分片,則出隊整幀

        整幀出隊部分程序如下:

        if(Queue_location_address !=0) //若高優(yōu)先級隊列中有整幀存在,出隊此幀

        dequeue_whole_high_pri(Queue_location_address);

        else

        {

        Queue_location_address=

        Queue_location_RAM[dequeueDestNodeId_MidPri]->emac_current_address;//查詢位置記憶ram,得到中優(yōu)先級對列的整幀地址信息

        if(Queue_location_address !=0) //若中優(yōu)先級隊列中有整幀存在,出隊此幀

        dequeue_whole_mid_pri(Queue_location_address);

        else

        {

        Queue_location_address=

        Queue_location_RAM[dequeueDestNodeId_LowPri]->EMAC_current_address ;

        //查詢位置記憶ram,得到低優(yōu)先級對列的整幀地址信息

        if(Queue_location_address !=0) //若低優(yōu)先級隊列中有整幀存在,出隊此幀

        {

        dequeue_whole_low_pri(Queue_location_address);//若低優(yōu)先級隊列中還有分片,繼續(xù)出分片

        }

        else

        dequeue_tail_frag();//如果3個優(yōu)先級隊列均沒有整幀,則開始組HIMAC尾部

        }

        5 結(jié)束語

        HINOC作為我國擁有自主研發(fā)產(chǎn)權(quán)的新型寬帶技術(shù),具有重要的科研價值。本文介紹了HINOC網(wǎng)絡(luò)、HIMAC的整體工作流程和HIMAC調(diào)度機(jī)制,分別介紹了接受調(diào)度與中心調(diào)度的C語言設(shè)計思路并展示了部分代碼。C語言優(yōu)秀的硬件結(jié)合能力與高效率的特點,可以大幅節(jié)省協(xié)議設(shè)計調(diào)試階段的工作量。另外,用C語言代替FPGA實現(xiàn)HIMAC調(diào)度,雖目前目的僅為仿真測試,但為轉(zhuǎn)化成System C等軟硬件結(jié)合語言做了鋪墊。

        [1]國家廣播電影電視總局廣播科學(xué)研究院,北京大學(xué),西安電子科技大學(xué).高性能同軸電纜接入網(wǎng)(HINOC)物理層傳輸模式及媒質(zhì)接入控制協(xié)議[M].北京:國家廣播電影電視總局廣播科學(xué)研究院,2010.

        [2]歐陽鋒,崔競飛.HINOC技術(shù)概述和進(jìn)展[J].電視技術(shù),2011,35(12):11-13.

        [3]龔晨亮,邱智亮.HIMAC協(xié)處理器的調(diào)度方案[J].網(wǎng)絡(luò)新媒體技術(shù),2013,2(5):35-38.

        [4]崔金.HiNOC網(wǎng)絡(luò)MAC協(xié)議研究[D].西安:西安電子科技大學(xué),2009.

        [5]潘偉濤,邱智亮.一種HIMAC硬件協(xié)處理器的設(shè)計與FPGA實現(xiàn)[J].電子器件,2012,35(2):221-226.

        [6]馮振威.基于嵌入式平臺的HINOC MAC驅(qū)動程序的設(shè)計[D].西安:西安電子科技大學(xué),2011.

        [7]王煒濤.基于嵌入式平臺的HINOC協(xié)議MAC層軟件設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2011.

        [8]張輝,曹麗娜.現(xiàn)代通信原理與技術(shù)[M].3版.西安:西安電子科技大學(xué)出版社,2013.

        [9]李建東,盛敏.通信網(wǎng)絡(luò)基礎(chǔ)[M].北京:高等教育出版社,2004.

        [10]齊立龍.HINOC網(wǎng)絡(luò)MAC層調(diào)度算法的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2010.

        C Language Implementation of HIMAC Scheduling

        ZHAO Qian, DAI Shuguang

        (School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)

        This paper introduces a way of realizing HIMAC scheduling module using C language to maximize efficiency of design and debugging in view of the difficulty of HINOC’s MAC layer protocol realized by FPGA. The function of receiving schedule and sending schedule by C language realizes the process how EMAC and HIMAC receive and send frames. And the solution of the problem of dequeuing frame shards improves the efficiency of development.

        HINOC; HIMAC scheduling; C language

        2015- 12- 18

        趙騫(1992-),男,碩士研究生。研究方向:網(wǎng)絡(luò)通信等。戴曙光(1957-),男,教授,博士生導(dǎo)師。研究方向:工業(yè)光電檢測技術(shù)與裝置等。

        10.16180/j.cnki.issn1007-7820.2016.09.017

        TN949.194

        A

        1007-7820(2016)09-061-04

        猜你喜歡
        信息管理
        棗前期管理再好,后期管不好,前功盡棄
        加強(qiáng)土木工程造價的控制與管理
        如何加強(qiáng)土木工程造價的控制與管理
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        “這下管理創(chuàng)新了!等7則
        雜文月刊(2016年1期)2016-02-11 10:35:51
        人本管理在我國國企中的應(yīng)用
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        管理的另一半
        信息
        健康信息
        祝您健康(1987年3期)1987-12-30 09:52:32
        亚洲国产综合精品中文| 亚洲免费观看在线视频| 精品人妻VA出轨中文字幕| 国产三级精品三级在线观看粤语 | 亚洲欧美欧美一区二区三区| 亚洲一区二区三在线播放| 全亚洲高清视频在线观看| 综合色就爱涩涩涩综合婷婷| 国产乱妇乱子在线视频| 久久久久成人精品免费播放| 久久开心婷婷综合中文| 人妻少妇看a偷人无码| 久久人人爽人人爽人人av| 久久免费视亚洲无码视频| 视频在线播放观看免费| 图片小说视频一区二区| 国产一区二区精品久久| 亚洲V在线激情| 中文字幕亚洲中文第一 | 在线播放免费播放av片| 欧美人与动zozo| 亚洲自偷自拍另类第一页| 大尺度无遮挡激烈床震网站| 亚洲国产精品成人无码区| 精品亚洲女同一区二区| 色婷婷在线一区二区三区| 亚洲无线一二三四区手机| 少妇熟女视频一区二区三区| 无码三级国产三级在线电影| 日本少妇一区二区三区四区| 高清不卡一区二区三区| 国产精品亚洲专区无码web| 亚洲综合偷拍一区二区| 少妇久久久久久被弄高潮| 老妇肥熟凸凹丰满刺激| 精品人妻av一区二区三区不卡| 二区免费在线视频观看| 国产精品一区二区久久乐下载| 国产欧美日韩综合一区二区三区 | 精品人妻av一区二区三区四区| 久久综合亚洲色hezyo国产|