📄 pmc3386_tx_pl3.v
字号:
else
begin
ch6_pkt_unfinished <=ch6_pkt_unfinished;
end
end
//ch7_pkt_unfinished
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
if(~h_reset_n)
begin
ch7_pkt_unfinished <=1'b0;
end
else if(~s_reset_n)
begin
ch7_pkt_unfinished <=1'b0;
end
else if(ch7_fifo_sop && ch7_fifo_eop)
begin
ch7_pkt_unfinished <=1'b0;
end
else if(ch7_fifo_sop)
begin
ch7_pkt_unfinished <=1'b1;
end
else if(ch7_fifo_eop)
begin
ch7_pkt_unfinished <=1'b0;
end
else
begin
ch7_pkt_unfinished <=ch7_pkt_unfinished;
end
end
//rden_tmp(4,5,6,7)
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
if(~h_reset_n)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b0;
end
else if(~s_reset_n)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b0;
end
else
begin
case(ch_id_for_b2[1:0])
2'b00: begin
if(ch4_fifo_eop)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b01;
end
else if(ch4_fifo_aval && b2_dav && b2_dav_d)
begin
ch4_fifo_rden<=1'b1;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b00;
end
else if(ch4_pkt_unfinished)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b00;
end
else
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b01;
end
end
2'b01: begin
if(ch5_fifo_eop)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b10;
end
else if(ch5_fifo_aval && b2_dav && b2_dav_d)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b1;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b01;
end
else if(ch5_pkt_unfinished)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b01;
end
else
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b10;
end
end
2'b10: begin
if(ch6_fifo_eop)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b11;
end
else if(ch6_fifo_aval && b2_dav && b2_dav_d)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b1;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b10;
end
else if(ch6_pkt_unfinished)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b10;
end
else
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b11;
end
end
2'b11: begin
if(ch7_fifo_eop)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b00;
end
else if(ch7_fifo_aval && b2_dav && b2_dav_d)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b1;
ch_id_for_b2<=2'b11;
end
else if(ch7_pkt_unfinished)
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b11;
end
else
begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b00;
end
end
default: begin
ch4_fifo_rden<=1'b0;
ch5_fifo_rden<=1'b0;
ch6_fifo_rden<=1'b0;
ch7_fifo_rden<=1'b0;
ch_id_for_b2<=2'b00;
end
endcase
end
end
//rden
//assign ch4_fifo_rden = ch4_fifo_rden_tmp && ~ch4_fifo_eop;
//assign ch5_fifo_rden = ch5_fifo_rden_tmp && ~ch5_fifo_eop;
//assign ch6_fifo_rden = ch6_fifo_rden_tmp && ~ch6_fifo_eop;
//assign ch7_fifo_rden = ch7_fifo_rden_tmp && ~ch7_fifo_eop;
//ch4_fifo_rden_d,5,6,7
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
if(~h_reset_n)
begin
ch4_fifo_rden_d <=1'b0;
ch5_fifo_rden_d <=1'b0;
ch6_fifo_rden_d <=1'b0;
ch7_fifo_rden_d <=1'b0;
ch4_fifo_rden_2d <=1'b0;
ch5_fifo_rden_2d <=1'b0;
ch6_fifo_rden_2d <=1'b0;
ch7_fifo_rden_2d <=1'b0;
end
else if(~s_reset_n)
begin
ch4_fifo_rden_d <=1'b0;
ch5_fifo_rden_d <=1'b0;
ch6_fifo_rden_d <=1'b0;
ch7_fifo_rden_d <=1'b0;
ch4_fifo_rden_2d <=1'b0;
ch5_fifo_rden_2d <=1'b0;
ch6_fifo_rden_2d <=1'b0;
ch7_fifo_rden_2d <=1'b0;
end
else
begin
ch4_fifo_rden_d <=ch4_fifo_rden;
ch5_fifo_rden_d <=ch5_fifo_rden;
ch6_fifo_rden_d <=ch6_fifo_rden;
ch7_fifo_rden_d <=ch7_fifo_rden;
ch4_fifo_rden_2d <=ch4_fifo_rden_d;
ch5_fifo_rden_2d <=ch5_fifo_rden_d;
ch6_fifo_rden_2d <=ch6_fifo_rden_d;
ch7_fifo_rden_2d <=ch7_fifo_rden_d;
end
end
//b2_ena
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
if(~h_reset_n)
begin
b2_ena <=1'b0;
b2_dat <=32'b0;
b2_sop <=1'b0;
b2_eop <=1'b0;
b2_err <=1'b0;
b2_par <=1'b0;
b2_mty <=2'b0;
end
else if(~s_reset_n)
begin
b2_ena <=1'b0;
b2_dat <=32'b0;
b2_sop <=1'b0;
b2_eop <=1'b0;
b2_err <=1'b0;
b2_par <=1'b0;
b2_mty <=2'b0;
end
else if(ch4_fifo_rden && ch4_fifo_rden_2d)
begin
b2_ena <=1'b1;
b2_dat <=ch4_fifo_data;
b2_sop <=ch4_fifo_sop;
b2_eop <=ch4_fifo_eop;
b2_err <=ch4_fifo_err;
b2_par <=ch4_fifo_par;
b2_mty <=ch4_fifo_mod;
end
else if(ch5_fifo_rden && ch5_fifo_rden_2d)
begin
b2_ena <=1'b1;
b2_dat <=ch5_fifo_data;
b2_sop <=ch5_fifo_sop;
b2_eop <=ch5_fifo_eop;
b2_err <=ch5_fifo_err;
b2_par <=ch5_fifo_par;
b2_mty <=ch5_fifo_mod;
end
else if(ch6_fifo_rden && ch6_fifo_rden_2d)
begin
b2_ena <=1'b1;
b2_dat <=ch6_fifo_data;
b2_sop <=ch6_fifo_sop;
b2_eop <=ch6_fifo_eop;
b2_err <=ch6_fifo_err;
b2_par <=ch6_fifo_par;
b2_mty <=ch6_fifo_mod;
end
else if(ch7_fifo_rden && ch7_fifo_rden_2d)
begin
b2_ena <=1'b1;
b2_dat <=ch7_fifo_data;
b2_sop <=ch7_fifo_sop;
b2_eop <=ch7_fifo_eop;
b2_err <=ch7_fifo_err;
b2_par <=ch7_fifo_par;
b2_mty <=ch7_fifo_mod;
end
else
begin
b2_ena <=1'b0;
b2_dat <=32'b0;
b2_sop <=1'b0;
b2_eop <=1'b0;
b2_err <=1'b0;
b2_par <=1'b0;
b2_mty <=2'b0;
end
end
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
if(~h_reset_n)
begin
b1_dav_d<=1'b0;
b2_dav_d<=1'b0;
end
else if(~s_reset_n)
begin
b1_dav_d<=1'b0;
b2_dav_d<=1'b0;
end
else
begin
b1_dav_d<=b1_dav;
b2_dav_d<=b2_dav;
end
end
//link_phy_pl3
/*
link_phy_pl3 link_phy_pl3 (
.a_tfclk(sys_clk_100m),
.a_treset_n(h_reset_n&&s_reset_n),
.a_dtpa(pmc3386_dtpa),
.a_tenb(pmc3386_tenb),
.a_tsx(pmc3386_tsx),
.a_tdat(pmc3386_tdat),
.a_tsop(pmc3386_tsop),
.a_teop(pmc3386_teop),
.a_terr(pmc3386_terr),
//.a_tprty(pmc3386_tprty_tmp),
.a_tmod(pmc3386_tmod),
.b_clk(sys_clk_100m),
.b_reset_n(h_reset_n&&s_reset_n),
.b1_dav(b1_dav),
.b1_ena(b1_ena),
.b1_dat(b1_dat),
.b1_sop(b1_sop),
.b1_eop(b1_eop),
.b1_err(b1_err),
//.b1_par(b1_par),
.b1_mty(b1_mty),
.b2_dav(b2_dav),
.b2_ena(b2_ena),
.b2_dat(b2_dat),
.b2_sop(b2_sop),
.b2_eop(b2_eop),
.b2_err(b2_err),
//.b2_par(b2_par),
.b2_mty(b2_mty)
);
*/
link_phy_pl3 link_phy_pl3 (
.h_reset_n(h_reset_n),
.s_reset_n(s_reset_n),
.sys_clk_100m(sys_clk_100m),
.a_dtpa(pmc3386_dtpa),
.a_tenb(pmc3386_tenb),
.a_tsx(pmc3386_tsx),
.a_tdat(pmc3386_tdat),
.a_tsop(pmc3386_tsop),
.a_teop(pmc3386_teop),
.a_terr(pmc3386_terr),
.a_tprty(pmc3386_tprty_tmp),
.a_tmod(pmc3386_tmod),
.b0_dav(b1_dav),
.b0_ena(b1_ena),
.b0_dat(b1_dat),
.b0_sop(b1_sop),
.b0_eop(b1_eop),
.b0_err(b1_err),
.b0_par(b1_par),
.b0_mty(b1_mty),
.b1_dav(b2_dav),
.b1_ena(b2_ena),
.b1_dat(b2_dat),
.b1_sop(b2_sop),
.b1_eop(b2_eop),
.b1_err(b2_err),
.b1_par(b2_par),
.b1_mty(b2_mty)
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -