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

Posted cofin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太网 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 = 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 测试程序的主要内容,如果未能解决你的问题,请参考以下文章

从零开始 verilog 以太网交换机MAC发送控制器的设计与实现

计算机基础之网络

计算机网络-数据链路层局域网(LAN)

计算机网络-数据链路层局域网(LAN)

TCP/UDP 协议

网络编程1