以太网 mac层传输 verilog 测试程序

module mac_tes(
    rst_n       ,
    en          ,
    gmii_rxc    ,//125M
    gmii_gtxc   ,
    gmii_tx_en  ,  
    gmii_tx_err ,  
    gmii_tx_dat 
);

input       rst_n   ;

input       gmii_rxc    ;

output      gmii_tx_err ;
output      gmii_tx_en  ;
output[7:0] gmii_tx_dat ;
output      gmii_gtxc   ;

reg       gmii_tx_en  ;
reg [7:0] gmii_tx_dat ;

reg [ (7-1):0]  cnt     ;
reg         flag        ;

wire        add_cnt ;
wire        end_cnt ;

wire        gmii_tx_en1 ;

assign gmii_gtxc = gmii_rxc ;

assign gmii_tx_err = 1'b0;

always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        gmii_tx_en_tmp <= 0;
    end
    else if(gmii_tx_en1)begin
        gmii_tx_en_tmp <= 1;
    end
    else if(end_cnt)begin
        gmii_tx_en_tmp <= 0;
    end
end
assign gmii_tx_en1 = gmii_tx_en==0 && en==1;

always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        gmii_tx_en <= 0;
    end
    else begin
        gmii_tx_en <= gmii_tx_en_tmp;
    end
end

always @(posedge clk or negedge rst_n) begin 
    if (rst_n==0) begin
        cnt <= 0; 
    end
    else if(add_cnt) begin
        if(end_cnt)
            cnt <= 0; 
        else
            cnt <= cnt+1 ;
   end
end
assign add_cnt = (gmii_tx_en);
assign end_cnt = add_cnt  && cnt == (64+8)-1 ;

always  @(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
        gmii_tx_dat <= 0;
    end
    else if(cnt>=0 && cnt<7)begin
        gmii_tx_dat <= 8'h55;
    end
    else if(cnt==7)begin
        gmii_tx_dat <= 8'hd5;
    end
    else if(cnt>=8 && cnt<14)begin //dst
        gmii_tx_dat <= 8'h12;
    end
    else if(cnt>=14 && cnt<20)begin //src
        gmii_tx_dat <= 8'h12;
    end
    else if(cnt==20)begin    //
        gmii_tx_dat <= 8'h00;
    end
    else if(cnt==21)begin
        gmii_tx_dat <= 8'h2e;
    end
    else begin
        gmii_tx_dat <= 8'hff;
    end
end

endmodule

  当使用千兆网phy芯片,并且使用的gmii 接口。  仅用于测试千兆网phy芯片能不能通信正常。

  在实际应用千兆网的过程中,需要实现arp协议,这样的话,才可以和上位机进行通信。

  

猜你喜欢

转载自www.cnblogs.com/cofin/p/9965801.html