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

📄 m_bus.v

📁 VERILOG五POSPHY LEVEL3电路描述
💻 V
📖 第 1 页 / 共 4 页
字号:
      //ge3_da_mac
      ge3_da_mac_0[15:0]<=16'b0000_0000_0000_00000;
      ge3_da_mac_1[15:0]<=16'b0000_0000_0000_00000;
      ge3_da_mac_2[15:0]<=16'b0000_0000_0000_00000;
      //ge3_sa_mac
      ge3_sa_mac_0[15:0]<=16'b0000_0000_0000_00000;
      ge3_sa_mac_1[15:0]<=16'b0000_0000_0000_00000;
      ge3_sa_mac_2[15:0]<=16'b0000_0000_0000_00000;
    end
  else if(~fpga_csb && ~pmc_wrb)
    begin
      case(pmc_addr[12:0])
        13'd0:reset_sel[15:0]     <=data_in_from_mpc_d[15:0];
        13'd1:header_len_sel[15:0]<=data_in_from_mpc_d[15:0];
        13'd2:crc_len_sel[15:0]   <=data_in_from_mpc_d[15:0];
        //ge0_da_mac
        13'd3:ge0_da_mac_0[15:0] <=data_in_from_mpc_d[15:0];
        13'd4:ge0_da_mac_1[15:0] <=data_in_from_mpc_d[15:0];
        13'd5:ge0_da_mac_2[15:0] <=data_in_from_mpc_d[15:0];
        //ge0_sa_mac
        13'd6:ge0_sa_mac_0[15:0] <=data_in_from_mpc_d[15:0];
        13'd7:ge0_sa_mac_1[15:0] <=data_in_from_mpc_d[15:0];
        13'd8:ge0_sa_mac_2[15:0] <=data_in_from_mpc_d[15:0];
        //ge1_da_mac
        13'd9: ge1_da_mac_0[15:0]<=data_in_from_mpc_d[15:0];
        13'd10:ge1_da_mac_1[15:0]<=data_in_from_mpc_d[15:0];
        13'd11:ge1_da_mac_2[15:0]<=data_in_from_mpc_d[15:0];
        //ge1_sa_mac
        13'd12:ge1_sa_mac_0[15:0]<=data_in_from_mpc_d[15:0];        
        13'd13:ge1_sa_mac_1[15:0]<=data_in_from_mpc_d[15:0];
        13'd14:ge1_sa_mac_2[15:0]<=data_in_from_mpc_d[15:0];
        //ge2_da_mac
        13'd15:ge2_da_mac_0[15:0]<=data_in_from_mpc_d[15:0];
        13'd16:ge2_da_mac_1[15:0]<=data_in_from_mpc_d[15:0];
        13'd17:ge2_da_mac_2[15:0]<=data_in_from_mpc_d[15:0];
        //ge2_sa_mac
        13'd18:ge2_sa_mac_0[15:0]<=data_in_from_mpc_d[15:0];
        13'd19:ge2_sa_mac_1[15:0]<=data_in_from_mpc_d[15:0];
        13'd20:ge2_sa_mac_2[15:0]<=data_in_from_mpc_d[15:0];
        //ge3_da_mac
        13'd21:ge3_da_mac_0[15:0]<=data_in_from_mpc_d[15:0];
        13'd22:ge3_da_mac_1[15:0]<=data_in_from_mpc_d[15:0];
        13'd23:ge3_da_mac_2[15:0]<=data_in_from_mpc_d[15:0];
        //ge3_sa_mac
        13'd24:ge3_sa_mac_0[15:0]<=data_in_from_mpc_d[15:0];
        13'd25:ge3_sa_mac_1[15:0]<=data_in_from_mpc_d[15:0];
        13'd26:ge3_sa_mac_2[15:0]<=data_in_from_mpc_d[15:0];
        
        default:;
      endcase
    end
  else if(reset_time_cnt[7:0]>=8'd255)
    begin
      reset_sel[15:0]     <=16'b0;
      header_len_sel[15:0]<=header_len_sel[15:0];
      crc_len_sel[15:0]   <=crc_len_sel[15:0];
      
      //ge0_da_mac
      ge0_da_mac_0[15:0] <=ge0_da_mac_0[15:0];
      ge0_da_mac_1[15:0] <=ge0_da_mac_1[15:0];
      ge0_da_mac_2[15:0] <=ge0_da_mac_2[15:0];
      //ge0_sa_mac
      ge0_sa_mac_0[15:0] <=ge0_sa_mac_0[15:0];
      ge0_sa_mac_1[15:0] <=ge0_sa_mac_1[15:0];
      ge0_sa_mac_2[15:0] <=ge0_sa_mac_2[15:0];
      //ge1_da_mac
      ge1_da_mac_0[15:0] <=ge1_da_mac_0[15:0];
      ge1_da_mac_1[15:0] <=ge1_da_mac_1[15:0];
      ge1_da_mac_2[15:0] <=ge1_da_mac_2[15:0];
      //ge1_sa_mac       
      ge1_sa_mac_0[15:0] <=ge1_sa_mac_0[15:0];        
      ge1_sa_mac_1[15:0] <=ge1_sa_mac_1[15:0];
      ge1_sa_mac_2[15:0] <=ge1_sa_mac_2[15:0];
      //ge2_da_mac       
      ge2_da_mac_0[15:0] <=ge2_da_mac_0[15:0];
      ge2_da_mac_1[15:0] <=ge2_da_mac_1[15:0];
      ge2_da_mac_2[15:0] <=ge2_da_mac_2[15:0];
      //ge2_sa_mac       
      ge2_sa_mac_0[15:0] <=ge2_sa_mac_0[15:0];
      ge2_sa_mac_1[15:0] <=ge2_sa_mac_1[15:0];
      ge2_sa_mac_2[15:0] <=ge2_sa_mac_2[15:0];
      //ge3_da_mac       
      ge3_da_mac_0[15:0] <=ge3_da_mac_0[15:0];
      ge3_da_mac_1[15:0] <=ge3_da_mac_1[15:0];
      ge3_da_mac_2[15:0] <=ge3_da_mac_2[15:0];
      //ge3_sa_mac       
      ge3_sa_mac_0[15:0] <=ge3_sa_mac_0[15:0];
      ge3_sa_mac_1[15:0] <=ge3_sa_mac_1[15:0];
      ge3_sa_mac_2[15:0] <=ge3_sa_mac_2[15:0];
    end
  else
    begin
      reset_sel[15:0]     <=reset_sel[15:0];
      header_len_sel[15:0]<=header_len_sel[15:0];
      crc_len_sel[15:0]   <=crc_len_sel[15:0];
      
      //ge0_da_mac
      ge0_da_mac_0[15:0] <=ge0_da_mac_0[15:0];
      ge0_da_mac_1[15:0] <=ge0_da_mac_1[15:0];
      ge0_da_mac_2[15:0] <=ge0_da_mac_2[15:0];
      //ge0_sa_mac                           
      ge0_sa_mac_0[15:0] <=ge0_sa_mac_0[15:0];
      ge0_sa_mac_1[15:0] <=ge0_sa_mac_1[15:0];
      ge0_sa_mac_2[15:0] <=ge0_sa_mac_2[15:0];
      //ge1_da_mac                           
      ge1_da_mac_0[15:0] <=ge1_da_mac_0[15:0];
      ge1_da_mac_1[15:0] <=ge1_da_mac_1[15:0];
      ge1_da_mac_2[15:0] <=ge1_da_mac_2[15:0];
      //ge1_sa_mac                           
      ge1_sa_mac_0[15:0] <=ge1_sa_mac_0[15:0];        
      ge1_sa_mac_1[15:0] <=ge1_sa_mac_1[15:0];
      ge1_sa_mac_2[15:0] <=ge1_sa_mac_2[15:0];
      //ge2_da_mac                           
      ge2_da_mac_0[15:0] <=ge2_da_mac_0[15:0];
      ge2_da_mac_1[15:0] <=ge2_da_mac_1[15:0];
      ge2_da_mac_2[15:0] <=ge2_da_mac_2[15:0];
      //ge2_sa_mac                           
      ge2_sa_mac_0[15:0] <=ge2_sa_mac_0[15:0];
      ge2_sa_mac_1[15:0] <=ge2_sa_mac_1[15:0];
      ge2_sa_mac_2[15:0] <=ge2_sa_mac_2[15:0];
      //ge3_da_mac                           
      ge3_da_mac_0[15:0] <=ge3_da_mac_0[15:0];
      ge3_da_mac_1[15:0] <=ge3_da_mac_1[15:0];
      ge3_da_mac_2[15:0] <=ge3_da_mac_2[15:0];
      //ge3_sa_mac                           
      ge3_sa_mac_0[15:0] <=ge3_sa_mac_0[15:0];
      ge3_sa_mac_1[15:0] <=ge3_sa_mac_1[15:0];
      ge3_sa_mac_2[15:0] <=ge3_sa_mac_2[15:0];
    end
end

//mpc_csb_d
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
  if(~h_reset_n)
    begin
      pmc_rdb_d <=1'b1;
      pmc_wrb_d <=1'b1;
    end
  else if(~s_reset_n)
    begin
      pmc_rdb_d <=1'b1;
      pmc_wrb_d <=1'b1;
    end
  else
    begin
      pmc_rdb_d <=pmc_rdb;
      pmc_wrb_d <=pmc_wrb;
    end
end

//mpc_data
assign mpc_data[15:0] = (~pmc_rdb_d) ? data_out_to_mpc[15:0] : 16'bzzzz_zzzz_zzzz_zzzz;
//data_in_from_mpc
assign data_in_from_mpc[15:0] = mpc_data[15:0];
//data_out_to_mpc
assign data_out_to_mpc[15:0]=(~fpga_csb_d)?rd_fpga_data_tmp[15:0]:data_in_from_pmc[15:0];


//pmc_data
assign pmc_data[15:0] = (~pmc_wrb || ~pmc_wrb_d) ? data_out_to_pmc[15:0] : 16'bzzzz_zzzz_zzzz_zzzz;
//data_in_from_pmc
assign data_in_from_pmc[15:0] = pmc_data[15:0];
//data_out_to_pmc
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
  if(~h_reset_n)
    begin
      data_out_to_pmc[15:0]<=16'b0;
    end
  else if(~s_reset_n)
    begin
      data_out_to_pmc[15:0]<=16'b0;
    end
  else
    begin
      data_out_to_pmc[15:0]<=data_in_from_mpc[15:0];
    end
end 

//data_in_from_mpc_d
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
  if(~h_reset_n)
    begin
      data_in_from_mpc_d[15:0]<=16'b0;
    end
  else if(~s_reset_n)
    begin
      data_in_from_mpc_d[15:0]<=16'b0;
    end
  else
    begin
      data_in_from_mpc_d[15:0]<=data_in_from_mpc[15:0];
    end
end 

//pmc_ale
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
  if(~h_reset_n)
    begin
      pmc_ale<=1'b1;
    end
  else if(~s_reset_n)
    begin
      pmc_ale<=1'b1;
    end
  else
    begin
      pmc_ale<=1'b1;
    end
end 

//header_length
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
  if(~h_reset_n)
    begin
      header_length<=1'b0;
    end
  else if(~s_reset_n)
    begin
      header_length<=1'b0;
    end
  else
    begin
      header_length<=header_len_sel[0];
    end
end 

//crc_length
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
  if(~h_reset_n)
    begin
      crc_length<=1'b1;
    end
  else if(~s_reset_n)
    begin
      crc_length<=1'b1;
    end
  else
    begin
      crc_length<=crc_len_sel[0];
    end
end 

//ge0_da_mac,ge0_sa_mac
//ge1_da_mac,ge1_sa_mac
//ge2_da_mac,ge2_sa_mac
//ge3_da_mac,ge3_sa_mac
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
  if(~h_reset_n)
    begin
      ge0_da_mac[47:0]<=48'b0;
      ge0_sa_mac[47:0]<=48'b0;
      
      ge1_da_mac[47:0]<=48'b0; 
      ge1_sa_mac[47:0]<=48'b0; 

      ge2_da_mac[47:0]<=48'b0; 
      ge2_sa_mac[47:0]<=48'b0; 

      ge3_da_mac[47:0]<=48'b0; 
      ge3_sa_mac[47:0]<=48'b0; 
    end
  else if(~s_reset_n)
    begin
      ge0_da_mac[47:0]<=48'b0;
      ge0_sa_mac[47:0]<=48'b0;
      
      ge1_da_mac[47:0]<=48'b0; 
      ge1_sa_mac[47:0]<=48'b0; 

      ge2_da_mac[47:0]<=48'b0; 
      ge2_sa_mac[47:0]<=48'b0; 

      ge3_da_mac[47:0]<=48'b0; 
      ge3_sa_mac[47:0]<=48'b0; 
    end
  else
    begin
      ge0_da_mac[47:0]<={ge0_da_mac_2[15:0],ge0_da_mac_1[15:0],ge0_da_mac_0[15:0]};
      ge0_sa_mac[47:0]<={ge0_sa_mac_2[15:0],ge0_sa_mac_1[15:0],ge0_sa_mac_0[15:0]};
      
      ge1_da_mac[47:0]<={ge1_da_mac_2[15:0],ge1_da_mac_1[15:0],ge1_da_mac_0[15:0]}; 
      ge1_sa_mac[47:0]<={ge1_sa_mac_2[15:0],ge1_sa_mac_1[15:0],ge1_sa_mac_0[15:0]}; 

      ge2_da_mac[47:0]<={ge2_da_mac_2[15:0],ge2_da_mac_1[15:0],ge2_da_mac_0[15:0]};  
      ge2_sa_mac[47:0]<={ge2_sa_mac_2[15:0],ge2_sa_mac_1[15:0],ge2_sa_mac_0[15:0]};  

      ge3_da_mac[47:0]<={ge3_da_mac_2[15:0],ge3_da_mac_1[15:0],ge3_da_mac_0[15:0]};  
      ge3_sa_mac[47:0]<={ge3_sa_mac_2[15:0],ge3_sa_mac_1[15:0],ge3_sa_mac_0[15:0]};  
    end
end 

//lose_pkt_cnt
always @(posedge sys_clk_100m or negedge h_reset_n or negedge s_reset_n)
begin
  if(~h_reset_n)
    begin
      lose_pkt_cnt_ch0[15:0] <=16'b0;
      lose_pkt_cnt_ch1[15:0] <=16'b0;
      lose_pkt_cnt_ch2[15:0] <=16'b0;
      lose_pkt_cnt_ch3[15:0] <=16'b0;
      lose_pkt_cnt_ch4[15:0] <=16'b0;
      lose_pkt_cnt_ch5[15:0] <=16'b0;
      lose_pkt_cnt_ch6[15:0] <=16'b0;
      lose_pkt_cnt_ch7[15:0] <=16'b0;
      lose_pkt_cnt_ch8[15:0] <=16'b0;
      lose_pkt_cnt_ch9[15:0] <=16'b0;
      lose_pkt_cnt_ch10[15:0]<=16'b0;
      lose_pkt_cnt_ch11[15:0]<=16'b0;
      lose_pkt_cnt_ch12[15:0]<=16'b0;
      lose_pkt_cnt_ch13[15:0]<=16'b0;
      lose_pkt_cnt_ch14[15:0]<=16'b0;
      lose_pkt_cnt_ch15[15:0]<=16'b0;
    end
  else if(~s_reset_n)
    begin
      lose_pkt_cnt_ch0[15:0] <=16'b0;
      lose_pkt_cnt_ch1[15:0] <=16'b0;
      lose_pkt_cnt_ch2[15:0] <=16'b0;
      lose_pkt_cnt_ch3[15:0] <=16'b0;
      lose_pkt_cnt_ch4[15:0] <=16'b0;
      lose_pkt_cnt_ch5[15:0] <=16'b0;
      lose_pkt_cnt_ch6[15:0] <=16'b0;
      lose_pkt_cnt_ch7[15:0] <=16'b0;
      lose_pkt_cnt_ch8[15:0] <=16'b0;
      lose_pkt_cnt_ch9[15:0] <=16'b0;
      lose_pkt_cnt_ch10[15:0]<=16'b0;
      lose_pkt_cnt_ch11[15:0]<=16'b0;
      lose_pkt_cnt_ch12[15:0]<=16'b0;
      lose_pkt_cnt_ch13[15:0]<=16'b0;
      lose_pkt_cnt_ch14[15:0]<=16'b0;
      lose_pkt_cnt_ch15[15:0]<=16'b0; 
    end
  else
    begin
      lose_pkt_cnt_ch0[15:0] <=lose_pkt_cnt_0[15:0] ;
      lose_pkt_cnt_ch1[15:0] <=lose_pkt_cnt_1[15:0] ;
      lose_pkt_cnt_ch2[15:0] <=lose_pkt_cnt_2[15:0] ;
      lose_pkt_cnt_ch3[15:0] <=lose_pkt_cnt_3[15:0] ;
      lose_pkt_cnt_ch4[15:0] <=lose_pkt_cnt_4[15:0] ;
      lose_pkt_cnt_ch5[15:0] <=lose_pkt_cnt_5[15:0] ;
      lose_pkt_cnt_ch6[15:0] <=lose_pkt_cnt_6[15:0] ;
      lose_pkt_cnt_ch7[15:0] <=lose_pkt_cnt_7[15:0] ;
      lose_pkt_cnt_ch8[15:0] <=lose_pkt_cnt_8[15:0] ;
      lose_pkt_cnt_ch9[15:0] <=lose_pkt_cnt_9[15:0] ;
      lose_pkt_cnt_ch10[15:0]<=lose_pkt_cnt_10[15:0];
      lose_pkt_cnt_ch11[15:0]<=lose_pkt_cnt_11[15:0];
      lose_pkt_cnt_ch12[15:0]<=lose_pkt_cnt_12[15:0];
      lose_pkt_cnt_ch13[15:0]<=lose_pkt_cnt_13[15:0];
      lose_pkt_cnt_ch14[15:0]<=lose_pkt_cnt_14[15:0];
      lose_pkt_cnt_ch15[15:0]<=lose_pkt_cnt_15[15:0];
    end
end 

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -