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

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 基于網(wǎng)絡(luò)編碼的多信源組播通信系統(tǒng),包括源代碼,原理圖等 (三)

          基于網(wǎng)絡(luò)編碼的多信源組播通信系統(tǒng),包括源代碼,原理圖等 (三)

          作者: 時(shí)間:2018-08-31 來源:網(wǎng)絡(luò) 收藏

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

          4、Packing

          ① 子模塊列表

          Sub module name

          quantity

          Description

          Packing FIFO

          1

          Receive and store processed packets before being packed in “packing center”

          Packing center

          1

          Packing payload with all sorts of heads

          ② 內(nèi)部結(jié)構(gòu)圖

          圖3.2-8 Packing內(nèi)部結(jié)構(gòu)圖

          ③ 本模塊輸入輸出信號(hào)列表及說明

          Signal name

          Bit width

          I/O

          Description

          Data_router_packingfifo

          73

          input

          Input data bus from “payload router”. Bit 64 is set to “0” to indicate this is an uncoded packet

          Wr_en_router_packingfifo

          1

          Input

          Write enable

          Rdy_router_packingfifo

          1

          Output

          1=module “packing FIFO” is ready to receive from payload router, 0=otherwise

          Router_status

          3

          input

          Input FSM state signal to coordinate with the control of “packing FIFO”

          Empty_packingfifo

          1

          output

          1=FIFO packing is empty,0=otherwise

          Data_converter_packingfifo

          73

          input

          Input data bus from “m72to64 converter”. Bit 64 is set to “1” to indicate this is a coded packet

          Wr_en_converter_packingfifo

          1

          Input

          Write enable

          Rdy_converter_packingfifo

          1

          Output

          1=module “packing FIFO” is ready to receive from m72to64 converter, 0=otherwise

          Empty_converterfifo

          1

          Input

          1=FIFO converter is empty,0=otherwise

          Data_center_legacyfifo_1

          64

          Input

          Input data bus from “FIFO ctrl legacy 1”

          Rd_en_center_legacyfifo_1

          1

          output

          Read enable

          Data_center_packinginfo_1

          14

          Input

          Input data bus from “FIFO ctrl packinginfo 1”

          Rd_en_center_packinginfo_1

          1

          output

          Read enable

          Data_center_legacyfifo_2

          64

          Input

          Input data bus from “FIFO ctrl legacy 2”

          Rd_en_center_legacyfifo_2

          1

          output

          Read enable

          Data_center_packinginfo_2

          14

          Input

          Input data bus from “FIFO ctrl packinginfo 2”

          Rd_en_center_packinginfo_2

          1

          output

          Read enable

          Rand_num_center_1

          8

          input

          Input random number from “m64×64 multiplier 1”

          Rand_num_center_2

          8

          input

          Input random number from “m64×64 multiplier 2”

          Out_data_out_0

          64

          output

          Output data bus to “output arbiter”

          Out_ctrl_out_0

          8

          Output

          Output ctrl bus to “output arbiter”

          Data_val_out_0

          1

          Output

          1=data from packing center to output arbiter is valid, 0=otherwise

          Rdy_out_0

          1

          Input

          1=output arbiter is ready to receive from packing center, 0=otherwise

          clk

          1

          Input

          System clock running at 125 MHz

          Rst_n

          1

          input

          System asynchronous reset signal

            ④ 功能描述及數(shù)據(jù)流

            本模塊為封裝模塊。子模塊packing FIFO構(gòu)建與coding模塊的數(shù)據(jù)接口,將接收并緩存編碼數(shù)據(jù)包以及未編碼數(shù)據(jù)包(使用額外第64位數(shù)據(jù)標(biāo)志該包是否編碼,該位為“1”說明編碼,該位為“0”說明未編碼)。

            子模塊packing center是主封裝模塊。它根據(jù)packing FIFO中讀出的數(shù)據(jù)判斷需要哪些包頭信息,然后向control模塊中相應(yīng)FIFO讀取需要的包頭信息,并依次封裝成NCP數(shù)據(jù)包,發(fā)送到output arbiter。

           ?、?關(guān)鍵時(shí)序及狀態(tài)機(jī)

            Packing center狀態(tài)機(jī)

            第一層狀態(tài)機(jī):packing_center_status

            

            圖3 .2-9 packing_center_status狀態(tài)機(jī)

            第二層狀態(tài)機(jī):

            coded_process

            

            圖3 .2-10coded_process狀態(tài)機(jī)

            uncoded_process

            

            圖3.2-11 uncoded_process 狀態(tài)機(jī)

          5、Output arbiter

          ① 本模塊輸入輸出信號(hào)列表及說明

          Signal name

          Bit width

          Input or output

          Description

          Out_data_out_0

          64

          input

          input data bus from “packing center”

          Out_ctrl_out_0

          8

          Input

          input ctrl bus from “packing center”

          Data_val_out_0

          1

          Input

          1=data from packing center to output arbiter is valid, 0=otherwise

          Rdy_out_0

          1

          output

          1=output arbiter is ready to receive from packing center, 0=otherwise

          Out_data_out_1

          64

          input

          input data bus from “input arbiter 1”

          Out_ctrl_out_1

          8

          Input

          input ctrl bus from “input arbiter 1”

          Data_val_out_1

          1

          Input

          1=data from input arbiter 1 to output arbiter is valid, 0=otherwise

          Rdy_out_1

          1

          output

          1=output arbiter is ready to receive from input arbiter 1, 0=otherwise

          Out_data_out_2

          64

          input

          input data bus from “input arbiter 2”

          Out_ctrl_out_2

          8

          Input

          input ctrl bus from “input arbiter 2”

          Data_val_out_2

          1

          Input

          1=data from input arbiter 2 to output arbiter is valid, 0=otherwise

          Rdy_out_2

          1

          output

          1=output arbiter is ready to receive from input arbiter 2, 0=otherwise

          Out_data_mac

          64

          output

          output data bus to “MAC Layer”

          Out_ctrl_mac

          8

          Output

          output ctrl bus to “MAC Layer”

          Data_val_mac

          1

          Output

          1=data from output arbiter to MAC layer is valid, 0=otherwise

          Rdy_mac

          1

          Input

          1=MAC layer is ready to receive from output arbiter, 0=otherwise

          clk

          1

          Input

          System clock running at 125MHz

          Rst_n

          1

          input

          System asynchronous reset signal

            ② 功能描述及數(shù)據(jù)流

            本模塊為輸出仲裁模塊。為協(xié)調(diào)多路輸出通道,避免沖突而設(shè)計(jì)。入端構(gòu)建與input arbiter的兩路端口和與packing的一路端口,出端構(gòu)建與MAC層的輸出端口。將選通并維護(hù)唯一一條輸入通道直至該數(shù)據(jù)包全部發(fā)送完畢。采用輪詢方式檢查三路輸入通道以避免沖突。

           ?、?關(guān)鍵時(shí)序及狀態(tài)機(jī)

            

            圖3.2-12 Output arbiter狀態(tài)機(jī)

            3.3 轉(zhuǎn)發(fā)路由器詳細(xì)設(shè)計(jì)方案

            3.3.1轉(zhuǎn)發(fā)路由器系統(tǒng)整體模塊圖

            

            圖3.3-1總體模塊圖

            系統(tǒng)模塊功能說明:該模塊有兩個(gè)子模塊input_arbiter模塊和forward模塊構(gòu)成,其中前者為標(biāo)準(zhǔn)模塊;后者為自定義模塊,接受來自MAC層的數(shù)據(jù)包,經(jīng)過相關(guān)處理輸出數(shù)據(jù)包,實(shí)現(xiàn)將未編碼的IP數(shù)據(jù)包封裝成NCP數(shù)據(jù)包并進(jìn)行轉(zhuǎn)發(fā)以及將其它非IP數(shù)據(jù)包或NCP數(shù)據(jù)包進(jìn)行直接轉(zhuǎn)發(fā)的功能。

            3.3.2系統(tǒng)中各單元模塊的功能與時(shí)序

            Input_arbiter模塊

           ?、?Input_arbiter模塊的內(nèi)部結(jié)構(gòu)圖如圖3.3-2

            

            圖3.3-2 input_arbiter模塊

          ② 本模塊的輸入輸出信號(hào)列表及說明(如下例)

          信號(hào)名稱

          位寬 bits

          I/O

          描述

          in_data_n(n:0、1、2、3)

          64

          input

          從MAC層輸入的data數(shù)據(jù)

          in_ctrl_n(n:0、1、2、3)

          8

          input

          從MAC層輸入的ctrlbus數(shù)據(jù)

          in_wr_n(n:0、1、2、3)

          1

          input

          從MAC層輸入的數(shù)據(jù)寫使能信號(hào)(1為有效)

          in_rdy_n(n:0、1、2、3)

          1

          output

          輸出至MAC層的準(zhǔn)備信號(hào)(1為準(zhǔn)備完畢,可以寫入)

          out_data

          64

          output

          輸出至forward模塊的data數(shù)據(jù)

          out_ctrl

          8

          output

          輸出至froward模塊的ctrl數(shù)據(jù)

          out_wr

          1

          output

          輸出至forward模塊的寫使能信號(hào)(1為寫使能有效)

          out_rdy

          1

          input

          從forward模塊輸入的準(zhǔn)備信號(hào)(1為準(zhǔn)備好,可以寫入)

            本模塊的功能描述以及內(nèi)部數(shù)據(jù)處理的過程

            功能描述:從MAC層的接口傳來的數(shù)據(jù)信號(hào)寫入到receivefifo中,每個(gè)接口接一個(gè)fifo,通過本模塊的仲裁,循環(huán)查詢每個(gè)fifo,如果每個(gè)fifo不為空則輸出該fifo的數(shù)據(jù)到forward 模塊。本次實(shí)驗(yàn)只用到接口1,其他接口實(shí)際上是沒有數(shù)據(jù)輸入,然而為了以后的可拓展設(shè)計(jì),采取循環(huán)查詢每個(gè)fifo,這樣可以從每個(gè)接口進(jìn)行數(shù)據(jù)讀入數(shù)據(jù),更合理。

           ?、?關(guān)鍵時(shí)序和狀態(tài)機(jī)轉(zhuǎn)化圖

            

            圖3.3-3 input_arbiter時(shí)序圖

            2、forward模塊

            ① forward模塊的內(nèi)部結(jié)構(gòu)圖如圖3.3-4

            

            圖3.3-4

          ②本模塊的輸入輸出信號(hào)列表及說明(如下例)

          信號(hào)名稱

          位寬 bits

          I/O

          描述

          out_data

          64

          input

          從input_arbiter模塊輸出的data數(shù)據(jù)

          out_ctrl

          8

          input

          從input_arbiter模塊輸出的ctrl數(shù)據(jù)

          out_wr

          1

          input

          從input_arbiter模塊輸出的寫使能信號(hào)(1為寫使能有效)

          out_rdy

          1

          input

          輸出至input_arbiter模塊的準(zhǔn)備使能信號(hào)(1為準(zhǔn)備使能有效)

          out_data_n(n:0、1、2、3)

          64

          output

          輸出至MAC層的data數(shù)據(jù)

          out_ctrl_n(n:0、1、2、3)

          8

          output

          輸出至MAC層的ctrlbus數(shù)據(jù)

          out_wr_n(n:0、1、2、3)

          1

          output

          輸出至MAC層的數(shù)據(jù)寫使能信號(hào)(1為有效)

          out_rdy_n(n:0、1、2、3)

          1

          intput

          從MAC層輸入的準(zhǔn)備信號(hào)(1為準(zhǔn)備完畢,可以寫入)

            ③ 本模塊的功能描述以及內(nèi)部數(shù)據(jù)處理的過程

            (1)Forward模塊下子模塊Ip_Packet_Arbiter 定義6個(gè)寄存器變量分別為:Reg_0—Reg_5 寬度為64bit, 6個(gè)寄存器變量:Ctrl_0—Ctrl_5寬度為8bit.分別存儲(chǔ)數(shù)據(jù)包的前48個(gè)字節(jié)數(shù)據(jù)和CtrlBus信息。以便對(duì)包頭進(jìn)行解析,并進(jìn)行判斷所屬的類型。

            (2)判斷屬于哪一類型的數(shù)據(jù)包,如果是非IP數(shù)據(jù)包則從Ip_packet_Arbiter模塊發(fā)送一個(gè)信號(hào)Ip_Packet_Check的信號(hào)到Transmit模塊,通過data信號(hào)線和ctrl信號(hào)線將數(shù)據(jù)傳送到Transmit模塊并轉(zhuǎn)發(fā)到各個(gè)接口;

            (3)如果屬于iP數(shù)據(jù)包則進(jìn)一步判斷是屬于編碼后的數(shù)據(jù)包還是未編碼的數(shù)據(jù)包,如果是編碼后的數(shù)據(jù)包則和①做同樣處理,如果是未編碼的數(shù)據(jù)包,則進(jìn)行相應(yīng)的處理(更改modulheader、MAC的目標(biāo)地址、Ip包頭、添加NCP包頭操作),然后將組合好的數(shù)據(jù)包頭和Ctrlbus 和Ip_Packet_Check信號(hào)一起送到Transmit模塊。在Transmit模塊通過收到的Ip_Packet_Check信號(hào)進(jìn)行判斷是否需要對(duì)存放數(shù)據(jù)進(jìn)行重新的封裝并進(jìn)行相應(yīng)處理,然后進(jìn)行轉(zhuǎn)發(fā)操作。整個(gè)過程的流程圖如圖3.3-5

            

            圖3.3-5

            ④關(guān)鍵時(shí)序和狀態(tài)機(jī)轉(zhuǎn)化圖

            

            圖3.3-6

           ?、?froward模塊下子模塊Transmit的狀態(tài)機(jī)以及描述如圖3.3-7

            

            圖3.3-7

            對(duì)整個(gè)狀態(tài)機(jī)工作條件進(jìn)行詳細(xì)的描述如下:

            當(dāng)滿足滿足計(jì)數(shù)器counter=0的條件時(shí),進(jìn)入IDLE狀態(tài);counter計(jì)數(shù)器不改變并且不是包頭的起始信號(hào)時(shí)則保持在該狀態(tài);如果counter=1,發(fā)現(xiàn)包頭起始信號(hào)則保存該字段的值,并設(shè)置counter=2;

            當(dāng)滿足計(jì)數(shù)器counter=2時(shí),并且是包的中間值信號(hào)時(shí)則跳轉(zhuǎn)到READ狀態(tài);根據(jù)counter計(jì)數(shù)器的值有條件的保存在該狀態(tài);counter自加;

            當(dāng)滿足計(jì)數(shù)器counter=3時(shí),判斷MAC字段中上層協(xié)議的類型標(biāo)志,如果為IP數(shù)據(jù)包繼續(xù)保持在READ狀態(tài),counter+1;當(dāng)counter=4時(shí) 進(jìn)行判斷數(shù)據(jù)包中協(xié)議字段的如果為未編碼的IP數(shù)據(jù)包則保存在該狀態(tài),counter+1;

            當(dāng)滿足counter=3時(shí)判斷上層協(xié)議類型標(biāo)志為非IP數(shù)據(jù)包,則直接跳轉(zhuǎn)到SEND狀態(tài);如果為已經(jīng)編碼的IP數(shù)據(jù)包既NCP數(shù)據(jù)包,則調(diào)整到SEND狀態(tài);

            當(dāng)counter=7的時(shí)候,跳轉(zhuǎn)到ADDNCPHEADER狀態(tài);數(shù)據(jù)處理完畢后state=SEND;

            當(dāng)暫存的數(shù)據(jù)包沒有發(fā)送完之前則保持在該狀態(tài);

            當(dāng)state=SEND時(shí),跳轉(zhuǎn)到SEND狀態(tài);

            當(dāng)暫存的數(shù)據(jù)包的字段發(fā)送完畢后,跳轉(zhuǎn)到CONSENCTIVEPASS(持續(xù)發(fā)包)狀態(tài)時(shí);

            判斷包尾的結(jié)束標(biāo)志,如果不是包尾的結(jié)束標(biāo)志則保持在該狀態(tài);

            判斷包尾的結(jié)束標(biāo)志,如果是包尾的結(jié)束標(biāo)志,則發(fā)最后一個(gè)字段,并跳轉(zhuǎn)到IDLE(起始狀態(tài));



          關(guān)鍵詞: 通信

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