基于网络编码的多信源组播通信系统,包括源代码,原理图等
pkt_vld = 1;
pkt_dcoding = {src_num_sel,gen_num_sel};
end // end-- if(|cam_lookup_reslt)
else
state_next = GET_SRC_GEN_NUM; //could not find the pkt in cams.
end //end--if(rd_idle)
/* waiting for decoding completion, if needs the decoding factor pkt,
* then look up the factor in the remain cams */
LUP_DCOD_FACTOR1_FIRST: begin
if(decod_com) begin
state_next=GET_SRC_GEN_NUM;
end
if(need_pkt_vld) begin // need other packet to decode current packet
if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b110) begin
cmp_data = {pkt_need_src_gen,12'hfff};
cmp_data_mask_2 = {12'h0,CMP_DATA_MASK};
cmp_data_mask_1 = {12'h0,CMP_DATA_MASK};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b101) begin
cmp_data = {pkt_need_src_gen,12'hfff};
cmp_data_mask_2 = {12'h0,CMP_DATA_MASK};
cmp_data_mask_0 = {12'h0,CMP_DATA_MASK};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b011) begin
cmp_data = {pkt_need_src_gen,12'hfff};
cmp_data_mask_1 = {12'h0,CMP_DATA_MASK};
cmp_data_mask_0 = {12'h0,CMP_DATA_MASK};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b001) begin
cmp_data = {pkt_need_src_gen,12'hfff};
cmp_data_mask_0 = {12'h0,CMP_DATA_MASK};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b010) begin
cmp_data = {pkt_need_src_gen,12'hfff};
cmp_data_mask_1 = {12'h0,CMP_DATA_MASK};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b100) begin
cmp_data = {pkt_need_src_gen,12'hfff};
cmp_data_mask_2 = {12'h0,CMP_DATA_MASK};
end
state_next = LUP_DCOD_FACTOR1_SEC;
end
end
LUP_DCOD_FACTOR1_SEC: begin
state_next = GET_FACTOR1_RESLT;
cam_lookup_reslt_next = {match_2,match_1,match_0};
match_addr_temp_2_next = match_addr_2;
match_addr_temp_1_next = match_addr_1;
match_addr_temp_0_next = match_addr_0;
if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b110) begin
cmp_data = {12'hfff,pkt_need_src_gen};
cmp_data_mask_2 = {CMP_DATA_MASK,12'h0};
cmp_data_mask_1 = {CMP_DATA_MASK,12'h0};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b101) begin
cmp_data = {12'hfff,pkt_need_src_gen};
cmp_data_mask_2 = {CMP_DATA_MASK,12'h0};
cmp_data_mask_0 = {CMP_DATA_MASK,12'h0};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b011) begin
cmp_data = {12'hfff,pkt_need_src_gen};
cmp_data_mask_0 = {CMP_DATA_MASK,12'h0};
cmp_data_mask_1 = {CMP_DATA_MASK,12'h0};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b001) begin
cmp_data = {12'hfff,pkt_need_src_gen};
cmp_data_mask_0 = {CMP_DATA_MASK,12'h0};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b010) begin
cmp_data = {12'hfff,pkt_need_src_gen};
cmp_data_mask_1 = {CMP_DATA_MASK,12'h0};
end
else if((cam_lookup_reslt^~cam_lookup_reslt_pre)==3'b100) begin
cmp_data = {12'hfff,pkt_need_src_gen};
cmp_data_mask_2 = {CMP_DATA_MASK,12'h0};
end
end
/* --- get the factor pkt address from the cam, then reads the DRAM
- 一种基于电力线的家庭以太网络实现方法(10-10)
- 基于DSP和FPGA的机器人声控系统设计与实现 (04-16)
- 面向大众市场的千兆位级收发器(05-04)
- 利用以太网硬件在环路实现高带宽DSP仿真(05-04)
- 采用软处理器IP规避器件过时的挑战(05-04)
- WCDMA系统基带处理的DSP FPGA实现方案(01-02)