⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmc3386_tx_pl3.v

📁 VERILOG五POSPHY LEVEL3电路描述
💻 V
📖 第 1 页 / 共 3 页
字号:
  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 + -