以太网 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 = 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协议,这样的话,才可以和上位机进行通信。
以上是关于以太网 mac层传输 verilog 测试程序的主要内容,如果未能解决你的问题,请参考以下文章