码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-11-15 21:13:23      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:nbsp   arp协议   传输   千兆   output   out   测试程序   else   style   

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 = 1b0;

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

endmodule

 

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

 

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

  

 

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

标签:nbsp   arp协议   传输   千兆   output   out   测试程序   else   style   

原文地址:https://www.cnblogs.com/cofin/p/9965801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!