<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

本文引用地址:http://dyxdggzs.com/article/201808/388146.htm

  3.4 解碼路由器詳細設計方案

  3.4.1 解碼路由器系統整體模塊圖

  如下圖3.4-1所示,為解碼路由器的整體模塊圖

  

  3.4-1 解碼路由器系統整體模塊圖

  3.4.2系統中各單元模塊的功能與時(shí)序

  1、Input_arbiter:采用輪詢(xún)策略,當fifo非空時(shí)從fifo接收數據,根據mac header判斷數據是否為IP數據包,若是,則將數據發(fā)送到DRAM讀寫(xiě)控制模塊,同時(shí)將信源號、代編號發(fā)送到CAM讀寫(xiě)控制模塊。

  可用一個(gè)兩狀態(tài)的狀態(tài)機實(shí)現:即輪詢(xún)判斷輸入和數據輸出:在FIFO非空時(shí)讀數據,并根據數據包的類(lèi)型發(fā)送到DRAM讀寫(xiě)控制器或output fifo中,若是IP數據包,同時(shí)將信源號、代編號發(fā)送給CAM讀寫(xiě)控制。

主要信號列表:

信號名稱(chēng)

位寬 bit

I/O

描述

Wr_vld_arb

1

寫(xiě)DRAM控制器有效

Out_data_0

64

輸出至DRAM的data

Out_ctrl_0

8

輸出至DRAM德ctrl

Src_gen_seq

24

信源號、代的編號

Cam_vld

1

寫(xiě)CAM控制器有效

Port_num_dram

2

數據的接收端口號

Out_data_1

64

輸出至output arbiter的data

Out_ctrl_1

8

輸出至output arbiter的ctrl

Wr_vld_1

1

輸出至output arbiter信號有效

2、output_arbiter

  

  圖3.4-2 output_arbiter結構圖

  本模塊的結構如圖3.4-2所示,由兩個(gè)輸入fifo和一個(gè)輸出仲裁器組成,兩個(gè)fifo緩存來(lái)自SRAM和input_arbiter的數據包,Output_arbiter的作用是將解碼后的數據發(fā)送到MAC層。由于對于非IP數據包我們并沒(méi)有對其進(jìn)行編碼,所以在解碼路由器中由input_arbiter判斷后直接輸出output_arbiter;對于編碼后的IP數據包,在解碼后先暫存到SRAM中,再發(fā)送出去。本模塊就是輪流判斷并接收來(lái)自SRAM和input_arbiter的數據,并將數據包發(fā)送到MAC層。

輸入輸出信號列表:

信號名稱(chēng)

位寬bits

I/O

描述

out_data_3

64

O

輸出至MAC層的數據總線(xiàn)

out_ctrl_3

8

O

輸出至MAC層的控制總線(xiàn)

out_wr_3

1

O

輸出有效

out_rdy_3

1

I

MAC層空閑標志

dcod_data_0

64

I

已經(jīng)解碼的IP數據包的數據總線(xiàn)

dcod_ctrl_0

8

I

已經(jīng)解碼的IP數據包的控制總線(xiàn)

wr_vld_0

1

I

寫(xiě)有效

wr_rdy_0

1

O

接收數據空閑標志

non_ip_data

64

I

非IP數據包數據總線(xiàn)

non_ip_ctrl

8

I

非IP數據包控制總線(xiàn)

wr_vld_1

1

I

寫(xiě)有效

wr_rdy_1

1

O

接收數據空閑標志

  3、decoded_reg_grp

  本模塊分別與decode_control_panel,decoder和SRAM_contrl相連接,主要作用是記錄信源的某代數據包是否已經(jīng)解碼,并將相應的解碼信息輸出給其他模塊,模塊結構如圖3.4-3:

  

  圖3.4-3:decoded_reg_grp模塊圖

端口列表:

信號名稱(chēng)

位寬bits

I/O

描述

rd_dcod_reg_req_0

1

I

讀取解碼標志位請求

rd_dcod_src_gen_0

12

I

要讀取的數據包的信源號和代編號

req_ack_vld_0

1

O

輸出有效

alredy_decod_0

1

O

解碼標志(“1”代表已經(jīng)解碼,“0”代表未解碼)

rd_dcod_reg_req_1

1

I

讀取解碼標志位請求

rd_dcod_src_gen_1

12

I

要讀取的數據包的信源號和代編號

req_ack_vld_1

1

O

輸出有效

alredy_decod_1

1

O

解碼標志(為1時(shí)代表已經(jīng)解碼,為0時(shí)未解碼)

set_req

1

I

置位請求

set_src_gen

12

I

需要置位的數據包(表示已經(jīng)解碼完畢)

set_info_vld

1

I

置位信息有效

set_ack

1

O

置位請求響應

reset_req

1

I

復位請求

reset_src_gen

12

I

需要復位的數據包(表示解碼后已發(fā)送完畢)

reset_info_vld

1

I

復位信息有效

reset_ack

1

O

復位請求響應

 ?、?讀解碼標志

  當decoder模塊或decode_control_panel讀取解碼標志時(shí),將查詢(xún)結果輸出,alredy_decod_0和alredy_decod_1為“1”時(shí)表示本次查詢(xún)的數據包已經(jīng)解碼,為“0”時(shí)表示未被解碼,以與decoder接口為例,讀取解碼標志的時(shí)序如圖3.4-4:

  

  圖3.4-4:讀解碼標志位時(shí)序圖

 ?、?寫(xiě)解碼標志位

  當decoder把一個(gè)數據包解碼成功后,就把相應的解碼標志位置1,當SRAM_control將一個(gè)數據包發(fā)送出去后,再將相應的解碼標志位置0,以置位為例,解碼標志位的寫(xiě)時(shí)序如圖3.4-5:

  

  圖3.4-5:置位解碼標志寄存器

  4、DRAM控制器:接收數據,并順序存儲到DRAM中去。

  注意:我們將DRAM分為三塊,分別對應于數據接收的三個(gè)信道,即第0個(gè)信道的數據存儲到DRAM的第0塊,第1個(gè)信道的數據存儲到DRAM的第1塊……信道號由port_num給出。由于DRAM是按照block讀寫(xiě)的,因此每個(gè)block大小為2034字節,位寬為144位。

  

  圖3.4-6:DRAM控制器模塊圖

① DRAM控制器與DRAM的接口與讀寫(xiě)時(shí)序:

Signal Group

Signal Name

Direction

Bits

Description

Request Negotiation

p_wr_req

from user logic to block-of-data rd/wr module

1

1=request for write transfer (data are from user logic to DRAM), 0=otherwise

Request Negotiation

p_wr_ptr

from user logic to block-of-data rd/wr module

PKT_MEM_PTR_WIDTH

the start address of DRAM for transfer. Each unit is 16-byte piece

Request Negotiation

p_wr_ack

from block-of-data rd/wr module to user logic

1

1=the arbiter acknowledges that the write requester can proceed, 0=otherwise

Data Transfer

p_wr_data_vld

from user logic to block-of-data rd/wr module

1

1=the write data is valid, 0=otherwise

Data Transfer

p_wr_data

from user logic to block-of-data rd/wr module

PKT_DATA_WIDTH

the data transferred from user logic to DRAM

Data Transfer

p_wr_full

from block-of-data rd/wr module to user logic

1

1=notify the user logic to pause transfer the next clock cycle until this signal is deasserted, 0=otherwise

Data Transfer

p_wr_done

from block-of-data rd/wr module to user logic

1

1=this is the last write and no more write will be accepted for this block-of-data, 0=otherwise

寫(xiě)DRAM時(shí)序如圖3.4-7:

圖3.4-7 寫(xiě)DRAM時(shí)序圖

讀端口:

Signal Group

Signal Name

Direction

Bits

Description

Request Negotiation

p_rd_req

from user logic to block-of-data rd/wr module

1

1=request for read transfer (data are from DRAM to user logic), 0=otherwise

Request Negotiation

p_rd_ptr

from user logic to block-of-data rd/wr module

PKT_MEM_PTR_WIDTH

the start address of DRAM for transfer. Each unit is 16-byte piece

Request Negotiation

p_rd_ack

from block-of-data rd/wr module to user logic

1

1=the arbiter acknowledges that the read requester can proceed, 0=otherwise

Data Transfer

p_rd_rdy

from block-of-data rd/wr module to user logic

1

1=block-of-data rd/wr module has data for user logic to read, 0=otherwise

Data Transfer

p_rd_en

from user logic to block-of-data rd/wr module

1

1=user logic reads out one word of data from the block-of-data rd/wr module, 0=otherwise

Data Transfer

p_rd_data

from block-of-data rd/wr module to user logic

PKT_DATA_WIDTH

data transferred from block-of-data rd/wr module to user logic

Data Transfer

p_rd_done

from block-of-data rd/wr module to user logic

1

1=this is the last read data and no more data will be read for this block-of-data, 0=otherwise

讀DRAM時(shí)序如圖3.4-8:

圖3.4-8 寫(xiě)DRAM時(shí)序圖

② 其他模塊對DRAM控制器的讀/寫(xiě)過(guò)程:

當DRAM讀寫(xiě)控制器將一個(gè)數據包讀/寫(xiě)完之后, 就將rd_idle/wr_rdy_arb置為1,當外部模塊需要對DRAM進(jìn)行讀寫(xiě)時(shí),首先要判斷這兩個(gè)信號是否有效,在有效的情況下進(jìn)行對數據的操作。.端口列表如下:

信號名稱(chēng)

位寬bits

I/O

描述

wr_vld_arb

1

I

Input_arbiter輸入有效

out_data_0

64

I

輸入的數據包的data_bus

out_ctrl_0

8

I

輸入數據包的ctrl_bus

port_num_dram

2

I

輸入信號的端口號,指明數據存放在DRAM的區域

wr_rdy_arb

1

O

寫(xiě)空閑信號

port_num_rd

2

I

讀取數據包的區域

addr_vld

1

I

讀地址有效

block_num_rd

8

I

數據包存放的block的起始地址

rd_idle

1

O

讀空閑信號

in_rdy

1

I

數據輸出輸出允許信號

out_data

64

O

讀出的數據包的data_bus

out_ctrl

8

O

輸出數據包的ctrl_bus

data_vld

1

O

輸出數據有效

(1)當decode_control_panel對DRAM控制器進(jìn)行讀操作時(shí),將信道號和block地址發(fā)送至DRAM控制器,接著(zhù)DRAM控制器從DRAM中讀取數據,當decoder空閑時(shí)將數據發(fā)送出去,時(shí)序圖如3.4-9所示:

圖3.4-9 對DRAM控制器的讀操作

(2)當DRAM控制器進(jìn)行寫(xiě)操作時(shí),將按照input_arbiter發(fā)送過(guò)來(lái)的端口號,按照地址大小順序寫(xiě)DRAM,時(shí)序圖如3.4-10:

圖3.4-10 對DRAM控制器的寫(xiě)操作

5、decode_control_panel

① 本模塊的內部結構圖如3.4-11所示,它由以下五個(gè)模塊組成:cam_info_save, decode_control_sm和3個(gè)CAM組成。

圖3.4-11:decode_control_panel內部結構圖

本模塊的輸入輸出端口定義表如下:

端口名稱(chēng)

位寬 bits

I/O

描述

port_num_cam

2

In

數據寫(xiě)入的CAM號,即信道號

Src_gen_seq

24

In

輸入數據包的信源號、代編號

Cam_vld

1

In

寫(xiě)有效

Cam_rdy

1

Out

寫(xiě)Cam準備好

rd_idle

1

In

DRAM準備好

block_num_rd

8

Out

讀DRAM的地址

addr_vld

1

Out

讀地址有效

port_num_rd

2

out

要讀取的DRAM的編號

Pkt_vld

1

Out

要解碼的數據包輸出有效標志

Pkt_decoding

12

out

正在解碼的數據包的信源號、代編號

Decod_com

1

In

數據包解碼完成標志

has_other_factor

1

Out

有另外一個(gè)解碼因子

Pkt_not_find

1

Out

所需要解碼數據包未找到

pkt_need_src_gen

12

In

解碼需要的數據包

need_pkt_vld

1

In

所需數據包有效

rd_dcod_reg_req_1

1

Out

讀解碼標志寄存器請求

req_ack_vld_1

1

In

標志位有效

Alredy_Decod_1

1

In

解碼標志位

rd_dcod_src_gen_1

12

out

查詢(xún)數據包是否已經(jīng)解碼

② cam_info_save:

該模塊的主要功能是將輸入的數據包的信源號和代的編號按地址大小順序存入到三個(gè)cam中,每個(gè)cam分別對應于三個(gè)數據輸入通道。每個(gè)CAM的大小是24bits×256,我們要求CAM的讀寫(xiě)操作可以同時(shí)進(jìn)行,寫(xiě)數據從DIN進(jìn)入,而讀(查詢(xún))的數據從CMP_DIN進(jìn)入,寫(xiě)操作時(shí)BUSY信號有效,表示不可以響應其他寫(xiě)請求,圖3.4-12是一個(gè)CAM的讀寫(xiě)操作時(shí)序:

圖3.4-12:CAM讀寫(xiě)過(guò)程



關(guān)鍵詞: 通信

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>