首页 > 其他分享 >基于FPGA实现的自适应三速以太网

基于FPGA实现的自适应三速以太网

时间:2024-03-27 14:33:23浏览次数:43  
标签:FPGA 三速 txd 千兆 send rec data 以太网 百兆

一、三速以太网

千兆以太网PHY芯片是适配百兆和十兆的,十兆就不管了,我们的设计只适应千兆和百兆。
在这里插入图片描述
根据上图,我们是可以获取当前主机网口的速率信息的。

always@(posedge w_rxc_bufr)
begin
    if(w_rec_valid == 'd0) begin
        ro_speed <= w_rec_data[2:1];
        ro_link  <= w_rec_data[0];
    end else begin
        ro_speed <= ro_speed;
        ro_link  <= ro_link ;
    end
end

千兆网的设计我们前面的章节介绍的很详细了,至于百兆,主要区别就在于时钟速率从125Mhz变为了25Mhz,双沿采样变为单沿采样,所以我们只需要在ODDR和IDDR使用的时候注意单沿问题即可。
对于接收数据而言,上下沿采样到的数据是一样的,也就是说一次收到的数据高四位和低四位一样,完整的8bit数据需要前一拍数据后一拍数据拼接

always@(posedge w_rxc_bufr)
begin
    if(i_speed1000)
        ro_rec_data <= w_rec_data;
    else 
        ro_rec_data <= {w_rec_data[3:0],ro_rec_data[7:4]};
end

对于发送数据而言,r_tx_cnt_10_100信号是1bit的,不断在01变化,相当于一个时钟指示信号,通过这样的方式实现单沿传输,一个时钟只传输4bit,在下一个时钟再去传输延迟一拍数据的高4bit,这是因为用户进来的数据是8bit的。

genvar txd_i;
generate for(txd_i = 0 ;txd_i < 4 ; txd_i = txd_i + 1)
begin
    assign w_send_d1[txd_i] = i_speed1000 ? i_send_data[txd_i]     :  
                              r_tx_cnt_10_100 == 0 ? i_send_data[txd_i] : ri_send_data[txd_i + 4];

    assign w_send_d2[txd_i] = i_speed1000 ? i_send_data[txd_i + 4] : 
                              r_tx_cnt_10_100 == 0 ? i_send_data[txd_i] : ri_send_data[txd_i + 4];

    ODDR #(
        .DDR_CLK_EDGE    ("OPPOSITE_EDGE"       ),
        .INIT            (1'b0                  ),
        .SRTYPE          ("SYNC"                ) 
    ) 
    ODDR_u 
    (
        .Q               (o_txd[txd_i]          ),  
        .C               (w_txc                 ),
        .CE              (1                     ),
        .D1              (w_send_d1[txd_i]      ),    
        .D2              (w_send_d2[txd_i]      ),    
        .R               (0                     ),
        .S               (0                     ) 
    );
end
endgenerate

二、上板效果

网口速率在这里更改
在这里插入图片描述
wireshark抓包和网络调试助手回环检测,一切正常

在这里插入图片描述
VIVADO上板通过ILA抓包:数据与发送数据一致
注:JTAG进行抓信号时,ILA频率要大于JTAG频率2.5倍,对于千兆而言不用管,但是抓百兆数据信号时,要调整一下JTAG的时钟频率!!

在这里插入图片描述

标签:FPGA,三速,txd,千兆,send,rec,data,以太网,百兆
From: https://blog.csdn.net/m0_56222647/article/details/137014573

相关文章

  • FPGA学习DDR篇—MIG IP核使用
    文章目录一、MIGIP核配置详解1、第一页2、第二页3、第三页4、第四页5、第五页6、第六页7、第七页8、第八页9、第九页10、第十页二、MIG仿真一、MIGIP核配置详解1、第一页2、第二页3、第三页类型选择DDR34、第四页ClockPeriod:DDR3芯片运行的时钟速率,该数......
  • FPGA与以太网:概念知识
    参考:以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍-CSDN博客OSI七层模型、TCP/IP四层模型(超详细!!!!!)-CSDN博客TCP/IPLWIPFPGA笔记_rltcpnet和lwip-CSDN博客达芬奇Pro的以太网PHY芯片型号是YT8531(底板);TCP/IP四层模型TCP/IP(TransmissionControlProtocol/InternetProt......
  • E810-CQDA1 E810-CQDA2 E810-2CQDA2 E810-XXVDA2 E810-XXVDA4 英特尔®以太网800系列
    E810-CQDA1E810-CQDA2E810-2CQDA2E810-XXVDA2E810-XXVDA4英特尔®以太网800系列Linux性能调优指南(第二篇续)4.0性能故障处理4.1CPU利用率在工作负载运行时检查每个核心的CPU利用率。注意:与总体CPU利用率相比,每个核心的利用率与性能更相关,因为它提供了每个网络队列......
  • FPGA接口系列——UART
    FPGA接口系列——UART一、UART简介UART是一种采用异步串行通信方式的通用异步收发传输器。这里我们主要弄明白两个问题:①什么是串行通信,与并行通信有什么区别②同步串行通信和异步串行通信有什么区别③我们常说的UART和RS232以及RS485又有什么区别?串行通信和并行通信......
  • FPGA亚稳态学习总结
     首先是组合逻辑电路考虑的是竞争冒险,冒险会产生毛刺。重点研究如何去毛刺时序逻辑电路考虑的是时序不满足会产生的亚稳态问题:如何考量时序满不满足呢?根据不同的场景又有不同的说法。时序分析的两组基本概念建立时间与保持时间1.在同步系统和异步系统(跨时钟域传输)中有两个......
  • FPGA入门笔记009——UART串口发送模块设计
    #FPGA入门笔记009——UART串口发送模块设计1、UART通信原理​ 如图1为UART通信连接图,其中tx为输入,rx为输出。通过tx连接rx进行数据间的发送和接收。图1——UART通信连接图​ UART通信在使用前需要做多项设置,最常见的设置包括:数据位数、波特率大小、奇偶校验类型和停止位......
  • 基于EP4CE6F17C8的FPGA双数码管六十进制秒计数实例
    一、电路模块本例的电路模块与“基于EP4CE6F17C8的FPGA数码管动态显示实例”中的完全一样,此处就不再给出了。二、实验代码本例实现2个数码管循环显示00~59,显示间隔为1秒,代码使用Verilog编写,采用例化的形式,共有三个文件。先编写数码管实现显示字形解码的程序,模块名称为seg_deco......
  • FPGA图像处理——前置基础篇
    FPGA图像处理——前置基础篇本系列博客旨在结合FPGA来进行图像处理,致力于各种图像处理算法的实现,同时参考了博客原创作者——咸鱼FPGA的资料。以下是前置基础三节,我会以一个小白的角度去思考,解析学习过程中遇到的各种问题。1.Modelsim联合Matlab的图像仿真平台这是一个用于验......
  • fpga_fpga
    1电路 与c语言不同,verilog是并行执行语言,在看到一段简单的程序模块时,应该结合fpga内部逻辑模型,想到是什么样的功能电路。2时序 fpga的设计主要是以时序电路为主,它的所有动作都是在时钟一拍一拍的节奏下转变触发,即时钟是时序电路的控制者。 可以理解为时钟为心脏,功......
  • R-RJ45R08P-C000 以太网连接器 RJ45 弯插 带LED Ckmtw/灿科盟
    R-RJ45R08P-C000是一款RJ45连接器,主要用于以太网和其他数据传输应用。1.规格:R-RJ45R08P-C000 2.品牌:灿科盟实业(Ckmtw)3.封装:RJ45,8P/8C(8针/8槽)4.材质:塑料外壳,内部采用镀金或其他导电材料 5.插拔耐久性:≥500次 6.工作温度:-25°C~85°C 7.存储温度:-40°C~100°C ......