最新资讯

  • Tri Mode Ethernet MAC IP核详解

Tri Mode Ethernet MAC IP核详解

2025-05-09 17:00:54 1 阅读

  本文对 Vivado 的三速 MAC IP 核(Tri Mode Ethernet MAC,TEMAC)进行介绍。

  在自行实现三速以太网 MAC 控制器时,GMII/RGMII 接口可以通过 IDDR、ODDR 原语实现,然而实际使用中自己实现的模块性能不是很稳定(主要是时序约束问题),导致在不同板子上、不同编译版本的固件中,经常出现数据错乱的问题,这就不免需要重新修改设计,很是麻烦,因此尝试使用官方提供的 TEMAC IP 核,以期解决这一问题。

TEMAC 简介

  TEMAC 支持 10M、100M、1000M、2.5G 等多种速度,支持 RGMII、GMII、MII、SGMII、internal 等多种 PHY 接口。下图展示了 TEMAC 的功能框图

  其中 Transmit Engine 从 AXI-Stream TX 接口接收数据,并添加前导码 Preamble、帧起始界定符 SFD、帧校验序列 FSC 等,并在必要时(长度小于最小 MAC 帧长度)填充数据,因此在使用 TEMAC 时,MAC 帧的这几个部分就不需要我们自己添加了(不过其他的 MAC 帧部分,如目的MAC地址、源MAC地址、类型/长度、MAC数据段等部分,还是要用户按字节流给入 TEMAC 的)。流量控制模块 Flow Control 可发送和接收可编程的暂停帧。

  用户使用三个 AXI4 接口进行数据收发以及 MAC 控制器/ PHY 芯片配置,其中数据发送和接收使用 AXI4_Stream 接口,而配置接口使用 AXI4-Lite 接口,实现对 MAC 的配置和 MDIO 接口的读写。

  可选的帧过滤器 Frame Filter 用于过滤与一组可配置过滤器匹配的帧,一般用于过滤掉目的 MAC 地址与本设备不一致的帧,TEMAC 默认开启帧过滤器。

  统计计数器 Statistics Counters 用于记录 TX 和 RX 的帧数量,达到最大值后回绕,可配置为 32 或 64 位宽。

常用用户接口介绍

  • Transmitter Interface

    • CLK & RESET & ENABLE
      • tx_mac_aclk,output,TX Interface 接口的工作时钟,由 TEMAC 给出,(当物理接口为RGMII接口时,在三速下 tx_mac_aclk 均为 125M,不受 Speed Configuration 配置影响);
      • tx_reset,output,复位信号;
      • tx_enable,output,发送使能,1000M下恒为高,100M下占空比 1/10 (因为 tx_mac_aclk 恒为 125M)。
    • AXI4-Stream TX Interface
      • tx_axis_mac_tdata[7:0],input,要传输的帧数据;
      • tx_axis_mac_tvalid,input,数据有效信号;
      • tx_axis_mac_tready,output,握手信号,当数据被正确接收时,该信号被断言注意到而非指示 TEMAC TX 空闲,这与一般的 ready 握手信号工作原理不同,因此不能用于判断是否可以传递数据,而是判断数据是否被正确传输了,从而决定是重传本字节还是继续传输下一字节);
      • tx_axis_mac_tlast,input,帧结束信号;
      • tx_axis_mac_tuser,input,端口控制信号,指示发生一个错误;当在传输期间断言该信号时,则 MAC 会插入一个错误代码以损坏当前帧,中止传输并回到空闲状态。
    • TX Sideband Signal Pins
      • tx_ifg_delay[7:0],input,帧间隙 IFG 配置端口,在启用帧间隙调整功能时,帧发送开始时发送器会读取该端口以确定 IFG;
      • tx_collision,output,碰撞标志,全双工模式下恒输出 0(全双工时,实际生成 IP 时该接口不生成);
      • tx_retransmit,output,重传标志,当与 tx_collision 同时被断言时,该 MAC 帧应当被重新提交以重传,全双工模式下恒输出 0(全双工时,实际生成 IP 时该接口不生成);
      • tx_statisitics_vector[31:0],output,发送帧统计向量;
      • tx_statistics_valid,output,统计向量有效标志。
  • Receiver Interface

    • CLK & RESET & ENABLE
      • rx_mac_aclk,output,RX Interface 接口的工作时钟,由 TEMAC 给出,125M/25M/2.5MHz,受 TEMAC 接收器工作速度影响(Speed Configuration 寄存器);
      • rx_reset,output,复位信号;
      • rx_enable,output,接收使能,1000M下恒为高,100M 和 10M 下只有一半时间为高。
    • AXI4-Stream RX Interface
      • rx_axis_mac_tdata[7:0],output,接收到的帧数据;
      • rx_axis_mac_tvalid,output,数据有效信号;
      • rx_axis_mac_tlast,output,帧结束信号;
      • rx_axis_mac_tuser,output,控制信号,在帧接收结束时断言,以表明该帧有一个错误;
      • rx_axis_filter_tuser[x:0],output,帧过滤器输出。
    • RX Sideband Signal Pins
      • rx_statistics_vector[27:0],output,接收帧统计向量;
      • rx_statistics_valid,output,统计向量有效标志。
  • RGMII/GMII/MII Interafce

  根据 PHY 芯片的接口形式,在生成 IP 时进行选择,介绍略。

  • MDIO Interface

    PHY 芯片 MDIO 接口,介绍略。

  • 流量控制接口 Flow Control Interface

    • pause_req,input,时钟域 tx_mac_aclk,暂停请求,MAC 在当前数据包完成时发送一个暂停帧;
    • pause_val[15:0],input,暂停值,该值被插入到暂停帧的相应字段。
  • 速度指示接口 Speed Indication

    • speedis100,output,断言运行在 100M;

    • speedis10100,output,断言运行在 10M/100M;

  这两个速度指示端口由 MAC Speed Configuration register 的 Bits[13:12] 驱动。若 {speedis100, speedis10100} = 2’b10,表示 TEMAC 运行在 100M,若为 2’b01,表示运行在 10M,若为 2’b00,表示运行在 1000M(注意,TEMAC 不会自动切换工作连接速度)。

  • Optional RGMII Interface Signal Pinout

    • inband_link_status,output,断言 RGMII 连接状态;

    • inband_clock_speed,output,断言 RGMII 连接速度;

    • inband_duplex_status,output,断言 RGMII 全双工状态。

        实测表明,这三个信号可以实时指示实际连接的 PHY 网口状态,可根据这三个信号配置 MAC IP 的 MAC Speed Configuration register 寄存器,以实现三速以太网。

  • AXI4-Lite Interface (配置端口 Management Interface)

    • 写地址通道 AWC
      • s_axi_awaddr[11:0],input,写地址;
      • s_axi_awvalid,input,写地址有效信号;
      • s_axi_awready,output,写地址握手信号;
    • 写数据通道 DWC
      • s_axi_wdata[31:0],input,写数据;
      • s_axi_wvalid,input,写数据有效信号;
      • s_axi_wready,output,写数据握手信号;
    • 写回复通道 RC
      • s_axi_bresp[1:0],output,写回复;
    • s_axi_bvalid,output,写回复有效信号;
      • s_axi_bready,input,写回复握手信号;
    • 读地址通道 ARC
      • s_axi_araddr[11:0],input,读地址;
      • s_axi_arvalid,input,读地址有效信号;
      • s_axi_arready,output,读地址握手信号;
    • 读数据通道 DRC
      • s_axi_rdata[31:0],output,读数据;
      • s_axi_rvalid,output,读数据/回复有效信号;
      • s_axi_rready,input,读数据/回复握手信号;
      • s_axi_rresp[1:0],output,读回复。
  • Clocks

    • s_axi_aclk,input,AXI4-Lite Interface 的工作时钟;

    • refclk,input,idelayctrl 的时钟,200M - 300M;

    • gtx_clk,input,全局 125MHz 时钟,2.5G 以太网时为 312.5MHz 时钟;

    • gtx_clk90,input,与 gtx_clk 相差 9 0 ∘ 90^circ 90 的时钟;

    • rx_mac_aclk,output,物理接口 RX 时钟,312.5 MHz at 2.5 Gb/s,125 MHz at 1 Gb/s,25 MHz at 100 Mb/s,and 2.5 MHz at 10 Mb/s;

    • tx_mac_aclk,output,物理接口 TX 时钟,312.5 MHz at 2.5 Gb/s,125 MHz at 1 Gb/s,25 MHz at 100 Mb/s,and 2.5 MHz at 10 Mb/s。

    • gtx_clk_out,output,全局 125MHz 时钟,2.5G 以太网时为 312.5MHz 时钟;

    • gtx_clk90_out,output,与 gtx_clk_out 相差 9 0 ∘ 90^circ 90 的时钟;

        当为 A7 或 K7 系列芯片且接口为 RGMII 时,在 Shared Logic 配置下,可选择 IDELAYCTRL 包含在 Core 内部还是由外部给入;当共享逻辑由核心内部生成时,相比外部给入,额外多出 refclk、gtx_clk_out、gtx_clk90_out 三个时钟,而减少了 gtx_clk90 这个时钟,gtx_clk_out 和 gtx_clk90_out 可以被其他的 TEMAC 核心实例使用。

  • 复位信号

    • s_axi_resetn,input,AXI4-Lite 接口复位,s_axi_aclk 时钟域;

    • glbl_rstn,input,全局异步复位信号,gtx_clk 时钟域;

    • rx_axi_rstn,input,RX 时钟域复位信号,s_axi_aclk 时钟域;

    • tx_axi_rstn,input,TX 时钟域复位信号,s_axi_aclk 时钟域;

    • tx_reset,output,Active High,以太网 MAC 核心发出的 TX 软复位,tx_mac_aclk 时钟域;

    • rx_reset,output,Active High,以太网 MAC 核心发出的 RX 软复位,rx_mac_aclk 时钟域。

  • Interrupt Signals
    • mac_irq,output,s_axi_aclk 时钟域,中断控制器的中断输出,目前唯一的中断源是 MDIO。

核心寄存器

  通过 AXI4-Lite 可以配置核心寄存器,从而配置核心参数,实现流量控制等功能,每个寄存器占据 4 Bytes,因此寄存器地址均为 4 的倍数。以下列出几个常用的核心寄存器:

  • 统计向量寄存器

    一组统计接收和发送帧数量的寄存器,寄存器地址 0x200 到 0x364,详见数据手册;

  • MAC 配置寄存器

    • Receiver Configuration Word 0,寄存器地址 0x400,本地 MAC 地址 的 [31:0](源地址的 [47:32] 存放在 Receiver Configuration Word 1 寄存器),用于和传入的流量控制帧(暂停帧)进行匹配,MAC 地址按小端存放,即如果 MAC 地址为 AB-CD-EF-GH-MN-PQ,则寄存器 [47:0] 中应存入 PQ MN GH EF CD AB;应注意到该寄存器的 MAC 地址不用于对接收帧的过滤,接收过滤器应当在 Unicast Address Word 寄存器进行设置
    • Receiver Configuration Word 1,寄存器地址 0x404,该寄存器的 bits15-0 存放了本地 MAC 源地址的 [47:32],bit 31 为接收器 Reset,bit30 为接收器巨型帧接收使能,bit29 为带内 FSC 使能,bit28 为接收器使能,bit27 为 VLAN 接收使能,bit26 为半双工使能(0 全双工,1 半双工),bit25 为长度/类型错误校验失能(为 1 时不执行错误检查),bit24 为控制帧长度错误校验失能(为 1 时不执行错误检查);
    • Transmitter Configuration,寄存器地址 0x408,bit31 为发送器 Reset,bit30 为巨型帧发送使能,bit29 为带内 FSC 使能,bit27 为 VLAN 发送使能,bit26 为半双工使能(0 全双工,1 半双工),bit25 为帧间隙调整使能(若为 0,根据 IEEE 标准,发送机发出至少 12 长度的 IFG;若为 1,则在帧传输开始时读取端口 tx_ifg_delay 上的值,并根据帧相应地调整帧间间隙;注意,对于 TEMAC,在支持半双工时,默认 IFG=96,动态 IFG 时取 tx_ifg_delay 与 64 中的较大者,在仅支持全双工时,默认 IFG=96,动态 IFG 时取 tx_ifg_delay 和 32 中的较大者);
    • Flow Control Configuration,寄存器地址 0x40C,bit30 为暂停帧发送使能(为 0 时 pause_req 信号无作用),bit29 为暂停帧接收使能(为 0 时忽略接收到的暂停帧);
    • Speed Configuration,寄存器地址 0x410,bit31:30 为 MAC 速度配置,00 = 1Mbits/s,01 = 100Mbits/s,10 = 1Gbits/s,注意该寄存器的值不受 reset 影响读取 MDIO 获取当前连接速度(或根据 RGMII inband 信号获取当前连接状态),随后修改该寄存器,以适应网络通信速度TEMAC 核不会自动根据 rxc 速度切换速度模式);
    • RX Max Frame Configuration,寄存器地址 0x414,用于指定接收帧的最大帧长,bit16 为功能使能,bit14:0 为帧长设置;
    • TX Max Frame Configuration,寄存器地址 0x418,用于指定发送帧的最大帧长,bit16 为功能使能,bit14:0 为帧长设置;
    • Ability Register,寄存器地址 0x4FC,RO,可获取诸如统计向量、连接速度等的使能情况;
  • MDIO 相关寄存器

    • MDIO Setup,寄存器地址 0x500,bit6 为 MDIO Enable(只有当时钟分频值非 0 且本位为 1 时,MDIO 才可用),bit5:0 为时钟分频数 CLKDIV[5:0](默认为 0),MDC 的时钟频率计算公式如下
      KaTeX parse error: Expected 'EOF', got '_' at position 32: … rac{f_ ext{s_̲axi_clk}}{2 im…
      为防止 MDC 频率超出协议规范,MDC 应分频到小于 2.5MHz(考虑到这一点,s_axi_clk 不应取太高;实际上,s_axi_clk 除本处用于分频产生 MDC 外,仅用于配置端口 AXI4-Lite Interface,所以也不需要取太高的频率);注意到 CLKDIV 寄存器默认值为 0,因此必须首先配置该寄存器,才可以使用 MDIO 接口;

    • MDIO Control Word,寄存器地址 0x504,bit28:24 为 PHYADDR,bit20:16 为 REGADDR,bit15:14 为 OP(该字段决定启动 MDIO 时的访问类型,01:写,10:读),bit11 为 MDIO 启动(WO,写入 1 时将启动一次 MDIO 传输),bit7 为 MDIO ready(RO,为 1 时表示 MDIO 已启动并准备进行新的传输,也用于标识先前的任务是否完成,如读取数据是否有效);

    • MDIO Write Data,寄存器地址 0x508,bit15:0 为写入数据;

    • MDIO Read Data,寄存器地址 0x50C,RO,bit16 为 MDIO Ready(为 MDIO Control Word bit7 的复制),bit15:0 为读取数据;

      在使用配置接口进行 MDIO 读写时,写入流程如下:首先将待写入数据写到 MDIO Write Data 寄存器,随后对 MDIO Control Word 寄存器进行配置,设置好 PHYADDR 和 REGADDR,设置 OP 为 01,并置位 bit11 以启动 MDIO 写入事务,这将导致 MDIO ready 位被断言,并保持到写入事务结束;读取流程如下:设置 MDIO Control Word 寄存器,设置好 PHYADDR 和 REGADDR,设置 OP 为 10,并置位 bit11 以启动 MDIO 读取事务,这将导致 MDIO ready 位被断言,并保持到读取事务结束,当 MDIO ready 被重新断言时,可以从 MDIO Read Data 寄存器读取数据。

  • 帧过滤器相关寄存器

    • Unicast Address Word 0,寄存器地址 0x700,单播地址寄存器,[31:0] 存储单播 MAC 地址的 [31:0] 位,用于和传入的 MAC 帧进行匹配,一般而言,该 MAC 地址应和本地 MAC 地址相同(即与 Receiver Configuration Word 寄存器中的相同);

    • Unicast Address Word 1,寄存器地址 0x704,[15:0] 存储单播 MAC 地址的 [47:32];

    • Frame Filter Control,寄存器地址 0x708,bit31 为混杂模式使能(为 1 时所有 MAC 帧都将被传输给接收器,而不管目的地址是什么,默认为 1),bit3:0 为 Filter Index(指定当前访问的帧过滤器,支持 16 个不同的帧过滤器);

    • Frame Filter Enable,寄存器地址 0x70C,bit0 为帧过滤器使能,默认为 1,单独作用于每一个帧过滤器;

    • Frame Filter Value,寄存器地址 0x710、0x714、…、0x74C,分别对应 Bytes 3-0、Bytes 7-4、…、Bytes 63-60,默认 bit[47:0] 为 1(这个地址其实就是 MAC 广播地址,不过实际不起作用,因为过滤器默认接收所有广播帧),其他 bits 均为 0,可配置这些寄存器以额外接收其他的单播或多播地址;

    • Frame Filter Mask Value,寄存器地址 0x750、0x754、…、0x78C,分别对应 Bytes 3-0、Bytes 7-4、…、Bytes 63-60,默认 bit[47:0] 为 1,其他 bits 均为 0,该寄存器的每一位为对应相应帧过滤器位的掩码,位为 1 时将比对接收帧与帧过滤器的对应位,若不同,该帧将无法通过过滤器;

        每个帧过滤器包含 64Bytes(512bits),可用于适配任何前 64Bytes 与过滤器匹配的 MAC 帧(因此除了匹配 MAC 地址,帧过滤器还可以匹配不同协议类型甚至自定义的数据模式)。可以指定最多 16 个帧过滤器(可通过 Frame Filter Control 修改当前访问的帧过滤器以及它的使能状态,随后对 Frame Filter Value 和 Frame Filter Mask Value 寄存器进行配置,从而获得多个不同的帧过滤器)。

        当混杂模式位为 1 时,所有完好的帧都被标记为 Good,当混杂模式被关闭时,只有通过了帧过滤器的完好的帧才被标记为 Good。Xilinx 建议在设置帧过滤器前,先禁用帧过滤器,以免接收到意外的帧。

        rx_axis_filter_tuser 端口报告了当前帧为与过滤器的匹配情况(视为 “坏帧指示器”),当接收帧与过滤器匹配时,该信号将在 tlast 时被断言,表示该帧应当被丢弃。每额外生成一个帧过滤器,rx_axis_filter_tuser 将多生成 1 位,例如选择了 4 个帧过滤器时,将生成 5bit 位宽的 rx_axis_filter_tuser 信号,每个额外的位(高位)都是前一位的 else 情况。

      手册里关于帧过滤器 rx_axis_filter_tuser 的多处表述相互矛盾,须实际测试确定其真实的工作方式

TEMAC IP 例化设置

  一个常见的 TEMAC 接口例化:

tri_mode_ethernet_mac_0 tri_mode_ethernet_mac_inst(
	.s_axi_aclk				(s_axi_aclk),					// input wire s_axi_aclk
	.s_axi_resetn			(s_axi_resetn),					// input wire s_axi_resetn
	
	.gtx_clk				(gtx_clk),						// input wire gtx_clk
	.gtx_clk90				(gtx_clk90),					// input wire gtx_clk90
	.glbl_rstn				(glbl_rstn),					// input wire glbl_rstn
	
	.rx_axi_rstn			(rx_axi_rstn),					// input wire rx_axi_rstn
	.tx_axi_rstn			(tx_axi_rstn),					// input wire tx_axi_rstn
	
	.rx_statistics_vector	(rx_statistics_vector),			// output wire [27 : 0] rx_statistics_vector
	.rx_statistics_valid	(rx_statistics_valid),			// output wire rx_statistics_valid
	
	.rx_mac_aclk			(rx_mac_aclk),					// output wire rx_mac_aclk
	.rx_reset				(rx_reset),						// output wire rx_reset
	.rx_enable				(rx_enable),					// output wire rx_enable
	
	.rx_axis_filter_tuser	(rx_axis_filter_tuser),			// output wire [4 : 0] rx_axis_filter_tuser
	.rx_axis_mac_tdata		(rx_axis_mac_tdata),			// output wire [7 : 0] rx_axis_mac_tdata
	.rx_axis_mac_tvalid		(rx_axis_mac_tvalid),			// output wire rx_axis_mac_tvalid
	.rx_axis_mac_tlast		(rx_axis_mac_tlast),			// output wire rx_axis_mac_tlast
	.rx_axis_mac_tuser		(rx_axis_mac_tuser),			// output wire rx_axis_mac_tuser
	
	.tx_ifg_delay			(tx_ifg_delay),					// input wire [7 : 0] tx_ifg_delay
	.tx_statistics_vector	(tx_statistics_vector),			// output wire [31 : 0] tx_statistics_vector
	.tx_statistics_valid	(tx_statistics_valid),			// output wire tx_statistics_valid
	
	.tx_mac_aclk			(tx_mac_aclk),					// output wire tx_mac_aclk
	.tx_reset				(tx_reset),						// output wire tx_reset
	.tx_enable				(tx_enable),					// output wire tx_enable
	
	.tx_axis_mac_tdata		(tx_axis_mac_tdata),			// input wire [7 : 0] tx_axis_mac_tdata
	.tx_axis_mac_tvalid		(tx_axis_mac_tvalid),			// input wire tx_axis_mac_tvalid
	.tx_axis_mac_tlast		(tx_axis_mac_tlast),			// input wire tx_axis_mac_tlast
	.tx_axis_mac_tuser		(tx_axis_mac_tuser),			// input wire [0 : 0] tx_axis_mac_tuser
	.tx_axis_mac_tready		(tx_axis_mac_tready),			// output wire tx_axis_mac_tready
	
	.pause_req				(pause_req),					// input wire pause_req
	.pause_val				(pause_val),					// input wire [15 : 0] pause_val
	
	.speedis100				(speedis100),					// output wire speedis100
	.speedis10100			(speedis10100),					// output wire speedis10100
	
	.rgmii_txd				(rgmii_txd),					// output wire [3 : 0] rgmii_txd
	.rgmii_tx_ctl			(rgmii_tx_ctl),					// output wire rgmii_tx_ctl
	.rgmii_txc				(rgmii_txc),					// output wire rgmii_txc
	
	.rgmii_rxd				(rgmii_rxd),					// input wire [3 : 0] rgmii_rxd
	.rgmii_rx_ctl			(rgmii_rx_ctl),					// input wire rgmii_rx_ctl
	.rgmii_rxc				(rgmii_rxc),					// input wire rgmii_rxc
	
	.inband_link_status		(inband_link_status),			// output wire inband_link_status
	.inband_clock_speed		(inband_clock_speed),			// output wire [1 : 0] inband_clock_speed
	.inband_duplex_status	(inband_duplex_status),			// output wire inband_duplex_status
	
	.mdio					(mdio),							// inout wire mdio
	.mdc					(mdc),							// output wire mdc
	
	.s_axi_awaddr			(s_axi_awaddr),					// input wire [11 : 0] s_axi_awaddr
	.s_axi_awvalid			(s_axi_awvalid),				// input wire s_axi_awvalid
	.s_axi_awready			(s_axi_awready),				// output wire s_axi_awready
	
	.s_axi_wdata			(s_axi_wdata),					// input wire [31 : 0] s_axi_wdata
	.s_axi_wvalid			(s_axi_wvalid),					// input wire s_axi_wvalid
	.s_axi_wready			(s_axi_wready),					// output wire s_axi_wready
	
	.s_axi_bresp			(s_axi_bresp),					// output wire [1 : 0] s_axi_bresp
	.s_axi_bvalid			(s_axi_bvalid),					// output wire s_axi_bvalid
	.s_axi_bready			(s_axi_bready),					// input wire s_axi_bready
	
	.s_axi_araddr			(s_axi_araddr),					// input wire [11 : 0] s_axi_araddr
	.s_axi_arvalid			(s_axi_arvalid),				// input wire s_axi_arvalid
	.s_axi_arready			(s_axi_arready),				// output wire s_axi_arready
	
	.s_axi_rdata			(s_axi_rdata),					// output wire [31 : 0] s_axi_rdata
	.s_axi_rresp			(s_axi_rresp),					// output wire [1 : 0] s_axi_rresp
	.s_axi_rvalid			(s_axi_rvalid),					// output wire s_axi_rvalid
	.s_axi_rready			(s_axi_rready),					// input wire s_axi_rready
	
	.mac_irq				(mac_irq)						// output wire mac_irq
);

  该 IP 的配置如下:

该页配置 TEMAC 的工作速度,配置为 1G 时,后面可以继续选择对 10M/100M 的支持,而选择 2.5G 时则仅支持这一个速度。我们芯片是千兆以太网芯片,因此选择 1G。

PHY 接口按 PHY 芯片接口形式选择,我的千兆以太网芯片是 RGMII 接口的;MAC Speed 选择 Tri Speed 以支持 10M/100M/1000M 三速以太网;Management Type 选择 AXI4-Lite 接口形式,并配置合理的 AXI4-Lite 时钟(如前所说,该时钟不应取太高,以避免超过 MDC 频率限制,因此这里配置为 10M),以及可选择是否启用 MDIO 接口。

第三页是配置共享逻辑是否包含在核心内,这里我们保持默认,由外部给入 gtx_clk 和 gtx_clk90。

最后一页,默认不勾选 Half Duplex,即是全双工模式;可选择是否启用帧过滤器以及配置过滤器的数目,这里我们保持默认,生成 4 个过滤器;统计向量可选 32bit 或 64bit,如果不需要帧计数器,可以不勾选生成统计向量计数器。

  TEMAC 需要许可证才能生成比特流文件,否则只能进行仿真测试。许可证可以到 AMD 官网免费申请(限时许可证)。

TEMAC 配置及环回测试

收发时序

  接收器时序如下:

1000M 速度下,rx_mac_aclk 为 125MHz,tvalid 在每个有效数据周期为高;100M 和 10M 速度下,rx_mac_aclk 为 25MHz/2.5MHz,tvalid 在每个有效数据周期只有一半为高(这是由于此时每个 clk 仅传输 4bit,因此单个 8bit 数据需要 2 个 clk 才能完成传输);

对于 tlast 信号,由于需要进行 FSC 校验,因此实际上 tlast 以及其对应的 tvalid 会延迟几个周期才出现,如上图所示。当帧发生错误时,tuser 将在 tlast 同一周期被断言,以指示该帧应被丢弃。

  发射器时序如下:

在 1000M 下,RGMII/GMII/MII 三种接口下,其时序均如上图 Fig 3-22 所示,tx_mac_aclk 为 125M,注意 tready 在对前两个数据做出回应后,会进入一段持续数个周期的非应答状态;在 MII/GMII 接口下,100M、10M 速度下,tx_mac_aclk 分别为 25M、2.5M,因此每个数据占据 2 个时钟周期,tready 相应地也只有一半时间为高;而对于 RGMII 接口,25M/2.5M 速度下,tx_mac_aclk 保持 125M,相应的数据时钟周期分别为 10、100,tready 因此每 10、100 个 clk 才给出一次,但对于最开始的两个数据,会连续发出两个 tready,随后进入持续数个周期的非应答状态。

代码实现

  这篇文档比较长了,如何配置 TEMAC 以及进行自动协商三速环回测试(Verilog 实现),就放到下一篇博客进行介绍。


  • 参考文献

pg051_vivado_tri_mode_eth_mac.pdf

本文地址:https://www.vps345.com/9459.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 服务器安全 网络安全策略 防御服务器攻击 安全威胁和解决方案 程序员博客保护 数据保护 安全最佳实践 docker 容器 java-rabbitmq java 网络工程师 网络管理 软考 2024 2024年上半年 下午真题 答案 ubuntu Ollama Qwen2.5-coder 离线部署 deepseek DeepSeek-R1 API接口 llama 算法 opencv 自然语言处理 神经网络 语言模型 阿里云 网络 网络安全 网络协议 ssh RTSP xop RTP RTSPServer 推流 视频 模型联网 API CherryStudio 进程 操作系统 进程控制 Ubuntu python MCP php 开发语言 macos windows conda harmonyos 华为 前端 javascript typescript 计算机网络 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 vue.js spring boot nginx 数据库 centos oracle 关系型 安全 分布式 vscode 物联网 jellyfin nas chrome edge Deepseek Deepseek-R1 大模型 私有化部署 推理模型 jvm 虚拟机 英语 fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse fstab 数据库系统 经验分享 tcp/ip ip协议 Dify 开发环境 json YOLO 网络结构图 ubuntu 18.04 安装教程 云原生 ip 笔记 mcu c语言 单片机 tomcat 负载均衡 gnu USB转串口 CH340 人工智能 科技 ai 个人开发 zotero WebDAV 同步失败 代理模式 adb mysql android redis node.js kafka debian PVE DNS 深度学习 计算机视觉 卷积神经网络 后端 机器学习 计算机外设 电脑 mac 软件需求 opengl bug sublime text 编辑器 nlp audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 gcc centos 7 ui 微信 微信分享 鸿蒙 Image wxopensdk https remote-ssh GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 HarmonyOS Next DevEco Studio arm开发 架构 数据分析 oceanbase 传统数据库升级 银行 matplotlib fonts-noto-cjk windows 服务器安装 gateway c++ Clion Nova ResharperC++引擎 Centos7 远程开发 pip 智能路由器 外网访问 内网穿透 端口映射 rust腐蚀 嵌入式硬件 驱动开发 硬件工程 嵌入式实习 apache 开源 Cline C 环境变量 进程地址空间 numpy SRS 流媒体 直播 asm openvpn server openvpn配置教程 centos安装openvpn ssh漏洞 ssh9.9p2 CVE-2025-23419 c# 面试 并查集 leetcode udp 本地环回 bind jenkins gitee Hyper-V WinRM TrustedHosts cron crontab日志 运维开发 qt stm32项目 stm32 思科 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 pycharm ide AI编程 集成学习 集成测试 学习方法 学习 C# MQTTS 双向认证 emqx 大数据 spark hive react.js 前端面试题 持续部署 kylin ollama llm 性能优化 jdk intellij-idea 嵌入式 linux驱动开发 部署 多线程 QT 5.12.12 QT开发环境 Ubuntu18.04 媒体 websocket django 高级IO epoll vnc Docker Hub docker pull 镜像源 daemon.json Linux oracle fusion oracle中间件 策略模式 自动化 spring eureka Agent DeepSeek LLM CrewAI onlyoffice efficientVIT YOLOv8替换主干网络 TOLOv8 向日葵 http ESP32 github 网络药理学 生信 生物信息学 gromacs 分子动力学模拟 MD 动力学模拟 svn web安全 系统安全 bash pytorch postman 测试工具 多层架构 解耦 WSL2 Ubuntu22.04 虚拟化 开发人员主页 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 rust 数据结构 burp suite 抓包 ddos axure 富文本编辑器 WLAN kubernetes rancher outlook 错误代码2603 无网络连接 2603 ESXi WSL2 上安装 Ubuntu ssl 小程序 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 程序人生 前端框架 银河麒麟 kylin v10 麒麟 v10 html 腾讯云 aws googlecloud vSphere vCenter 软件定义数据中心 sddc 进程优先级 调度队列 进程切换 lvm 磁盘挂载 磁盘分区 浪潮信息 AI服务器 CPU 内存 主板 电源 网卡 yum docker-compose docker compose filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 AI大模型 大模型技术 本地部署大模型 dubbo transformer prometheus 监控k8s集群 集群内prometheus webrtc HCIE 数通 git elasticsearch rpc .netcore 聚类 命名管道 客户端与服务端通信 虚拟局域网 spring cloud compose devops 华为云 华为od golang powerpoint unix Cursor AIGC 人工智能生成内容 dify 低代码 爬虫 数据挖掘 网络用户购物行为分析可视化平台 大数据毕业设计 1024程序员节 jupyter 互信 链表 像素流送api 像素流送UE4 像素流送卡顿 像素流送并发支持 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 系统 黑苹果 VMware gpu算力 虚拟现实 java-ee perf linux内核 私有化 本地部署 vim vmware 卡死 VMware安装Ubuntu Ubuntu安装k8s k8s Alexnet IM即时通讯 QQ 企业微信 剪切板对通 HTML FORMAT milvus 僵尸进程 centos-root /dev/mapper yum clean all df -h / du -sh tcpdump Hive环境搭建 hive3环境 Hive远程模式 C语言 uni-app 3d 数学建模 etcd 数据安全 RBAC GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 seatunnel sqlserver sql ue4 着色器 ue5 虚幻 vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 vue protobuf 序列化和反序列化 安装 课程设计 JAVA Java pygame 游戏程序 ios 创意 社区 VMware创建虚拟机 grafana 进程信号 实时音视频 实时互动 cpu 实时 使用 Windsurf 机器人 go Flask FastAPI Waitress Gunicorn uWSGI Uvicorn AI 大模型应用 iftop 网络流量监控 flutter 远程工作 串口服务器 远程连接 rdp 实验 VMware安装mocOS macOS系统安装 jar gradle 权限 统信UOS 麒麟 bonding 链路聚合 KylinV10 麒麟操作系统 Vmware virtualenv camera Arduino 电子信息 MacOS录屏软件 xcode EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 产品经理 agi microsoft cursor vr Dell R750XS Linux PID iot 信息与通信 ip命令 新增网卡 新增IP 启动网卡 ros 话题通信 服务通信 温湿度数据上传到服务器 Arduino HTTP unity dell服务器 指令 yolov5 Linux的权限 Doris搭建 docker搭建Doris Doris搭建过程 linux搭建Doris Doris搭建详细步骤 Doris部署 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK rabbitmq kind maxkb ARG WebUI DeepSeek V3 log4j 鸿蒙系统 缓存 灵办AI 目标检测 程序员创富 ffmpeg 音视频 程序员 大模型入门 c hadoop mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 迁移指南 换源 国内源 Debian 微服务 Xinference RAGFlow trae IIS服务器 IIS性能 日志监控 大模型微调 磁盘清理 串口驱动 CH341 uart 485 智能手机 矩阵 selenium ansible 高效I/O RAGFLOW database 华为认证 交换机 YOLOv8 NPU Atlas800 A300I pro 自动化编程 银河麒麟服务器操作系统 系统激活 视频编解码 嵌入式系统开发 监控k8s 监控kubernetes 工业4.0 arm hibernate pillow 客户端 android studio .net 通信工程 毕业 Mermaid 可视化图表 自动化生成 安全威胁分析 wireshark 显示过滤器 ICMP Wireshark安装 WSL win11 无法解析服务器的名称或地址 UEFI Legacy MBR GPT U盘安装操作系统 微信开放平台 flask 微信公众平台 微信公众号配置 linux环境变量 zabbix list 模拟实现 豆瓣 追剧助手 迅雷 MacMini Mac 迷你主机 mini Apple rime 小艺 Pura X excel WebVM 自动化运维 流水线 脚本式流水线 ci/cd 防火墙 ufw 恒源云 express css html5 firefox wsl 系统架构 threejs 3D okhttp gitlab SenseVoice LDAP dns nftables AI写作 jmeter 软件测试 无人机 maven intellij idea 监控 open webui 5G 3GPP 卫星通信 华为证书 HarmonyOS认证 华为证书考试 命令 docker run 数据卷挂载 交互模式 多线程服务器 Linux网络编程 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 玩游戏 mariadb openwrt FTP 服务器 code-server nvm ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 selete keepalived postgresql 远程 执行 sshpass 操作 远程桌面 远程服务 快捷键 旋转屏幕 自动操作 区块链 政务 分布式系统 监控运维 Prometheus Grafana ros2 moveit 机器人运动 kamailio sip VoIP 大数据平台 CPU 使用率 系统监控工具 linux 命令 npm Trae IDE AI 原生集成开发环境 Trae AI chatgpt gpt-3 文心一言 设计模式 软件工程 环境配置 n8n dity make 工具 Carla 智能驾驶 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 TrueLicense Kylin-Server 国产操作系统 服务器安装 shell脚本免交互 expect linux免交互 实战案例 其他 键盘 rustdesk 主从复制 export import save load 迁移镜像 python2 ubuntu24.04 web3.py Chatbox 交互 pyqt 大屏端 基础环境 ux docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 OD机试真题 华为OD机试真题 服务器能耗统计 openstack Xen KVM linux上传下载 代码调试 ipdb redhat adobe 大语言模型 LLMs Python 网络编程 聊天服务器 套接字 TCP Socket docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos opcua opcda KEPServer安装 oneapi springsecurity6 oauth2 授权服务器 前后端分离 pdf P2P HDLC 一切皆文件 alias unalias 别名 dash 正则表达式 中间件 iis YOLOv12 安防软件 程序 编程 性能分析 安卓模拟器 多进程 wps 安卓 混合开发 环境安装 JDK iperf3 带宽测试 毕设 live555 rtsp rtp 远程控制 远程看看 远程协助 visualstudio 银河麒麟操作系统 国产化 深度求索 私域 知识库 命令行 基础入门 浏览器自动化 kali 共享文件夹 linux安装配置 rocketmq 三级等保 服务器审计日志备份 visual studio code 云桌面 微软 AD域控 证书服务器 京东云 ecmascript Invalid Host allowedHosts flash-attention 报错 Kali Linux 黑客 渗透测试 信息收集 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 图形化界面 api 腾讯云大模型知识引擎 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 目标跟踪 OpenVINO 推理应用 glibc rag ragflow ragflow 源码启动 产测工具框架 IMX6ULL 管理框架 云原生开发 K8S k8s管理系统 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors Google pay Apple pay Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer 压测 ECS 国产数据库 瀚高数据库 数据迁移 下载安装 Ubuntu Server Ubuntu 22.04.5 开发 vu大文件秒传跨域报错cors cuda cudnn anaconda mamba Vmamba ebpf uprobe 飞牛NAS 飞牛OS MacBook Pro harmonyOS面试题 webstorm Reactor C++ ROS2 xrdp 高德地图 鸿蒙接入高德地图 HarmonyOS5.0 ping++ thingsboard lio-sam SLAM Linux24.04 deepin OpenManus Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 vite odoo 服务器动作 Server action MQTT协议 消息服务器 代码 视觉检测 minicom 串口调试工具 强制清理 强制删除 mac废纸篓 源码剖析 rtsp实现步骤 流媒体开发 HiCar CarLife+ CarPlay QT RK3588 sqlite3 CLion ubuntu20.04 ros1 Noetic 20.04 apt 安装 开机黑屏 xml 生活 游戏引擎 Ark-TS语言 软件构建 GPU 虚拟显示器 ipython firewalld 读写锁 Wi-Fi 王者荣耀 asi_bench 计算生物学 生物信息 基因组 离线部署dify 重启 排查 系统重启 日志 原因 自动化任务管理 开机自启动 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 文件系统 路径解析 Ubuntu共享文件夹 共享目录 Linux共享文件夹 mybatis mongodb 本地化部署 GCC aarch64 编译安装 HPC 系统开发 binder 车载系统 framework 源码环境 Samba NAS HP Anyware llama3 Chatglm 开源大模型 springcloud iBMC UltraISO windows日志 DevOps 软件交付 数据驱动 应用场景 搜索引擎 frp 蓝耘科技 元生代平台工作流 ComfyUI 飞牛nas fnos 网易邮箱大师 硬件架构 计算机 域名服务 DHCP 符号链接 配置 qps 高并发 树莓派 VNC deepseek-r1 大模型本地部署 微信小程序 miniapp 真机调试 调试 debug 断点 网络API请求调试方法 AI-native Docker Desktop shell 磁盘监控 内网渗透 靶机渗透 服务器配置 tcp eclipse 图像处理 mq bcompare Beyond Compare FunASR ASR 端口号 开放端口 访问列表 playbook 剧本 file server http server web server 办公自动化 pdf教程 CentOS Stream CentOS ollama下载加速 NFS springboot burpsuite 安全工具 mac安全工具 burp安装教程 渗透工具 设置代理 实用教程 KingBase 大模型部署 镜像下载 freebsd 博客 数据集 WebServer pyautogui IO 中兴光猫 换光猫 网络桥接 自己换光猫 zip unzip Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 UOS 统信操作系统 rc.local 开机自启 systemd notepad GameFramework HybridCLR Unity编辑器扩展 自动化工具 IPMI gpt p2p 单元测试 功能测试 edge浏览器 tar fpga开发 Redis Desktop kvm 深度优先 图论 并集查找 换根法 树上倍增 隐藏文件 隐藏目录 管理器 通配符 fd 文件描述符 Termux Linux 维护模式 SSH 磁盘 空间 查错 llama.cpp DeepSeek行业应用 Heroku 网站部署 Dell HPE 联想 浪潮 远程过程调用 Windows环境 电视剧收视率分析与可视化平台 cd 目录切换 游戏机 hugo Netty 即时通信 NIO rclone AList webdav fnOS 雨云 NPS SWAT 配置文件 服务管理 网络共享 HTTP 服务器控制 ESP32 DeepSeek gaussdb nuxt3 信号处理 wsl2 实时内核 ubuntu24 vivado24 跨平台 kotlin iphone tensorflow ruoyi asp.net大文件上传 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 AI作画 crosstool-ng react next.js 部署next.js 聊天室 apt vmamba docker命令大全 宝塔 虚幻引擎 ocr virtualbox micropython esp32 mqtt DocFlow PX4 ROS 智慧农业 开源鸿蒙 团队开发 Linux的基础指令 思科模拟器 Cisco 服务器扩容没有扩容成功 历史版本 下载 输入法 su sudo sudo原理 su切换 算力 授时服务 北斗授时 xpath定位元素 etl 服务器管理 宝塔面板 配置教程 网站管理 职场和发展 k8s集群资源管理 自动驾驶 TCP服务器 qt项目 qt项目实战 qt教程 env 变量 论文阅读 MS Materials grep 群晖 飞牛 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP Open WebUI safari 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 Linux权限 权限命令 特殊权限 显示器 视频平台 录像 视频转发 性能测试 视频流 存储 r语言 数据可视化 nvidia 蓝牙 MAC SecureCRT langchain deep learning clickhouse Helm k8s集群 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 社交电子 技能大赛 分析解读 华为机试 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 VMware Tools vmware tools安装 vmwaretools安装步骤 vmwaretools安装失败 vmware tool安装步骤 vm tools安装步骤 vm tools安装后不能拖 vmware tools安装步骤 umeditor粘贴word ueditor粘贴word ueditor复制word ueditor上传word图片 ueditor导入word ueditor导入pdf ueditor导入ppt 自定义客户端 SAS 软件卸载 系统清理 统信 UOS1070e 全文检索 图搜索算法 SEO 实习 chfs ubuntu 16.04 漏洞 显示管理器 lightdm gdm 大模型面经 大模型学习 同步 备份 建站 框架搭建 vscode 1.86 网站搭建 serv00 回显服务器 UDP的API使用 服务器部署 本地拉取打包 copilot c/c++ 串口 vpn 直流充电桩 充电桩 matlab 远程登录 telnet 可信计算技术 压力测试 iNode Macos 信号 智能电视 nacos searxng 弹性计算 云服务器 裸金属服务器 弹性裸金属服务器 banner 支付 微信支付 开放平台 ArkTs ArkUI PPI String Cytoscape CytoHubba 宠物 毕业设计 免费学习 宠物领养 宠物平台 openEuler CNNs 图像分类 unity3d visual studio RustDesk自建服务器 rustdesk服务器 docker rustdesk 网络穿透 火绒安全 Nuxt.js web ftp lighttpd安装 Ubuntu配置 Windows安装 服务器优化 软链接 硬链接 升级 CVE-2024-7347 用户缓冲区 ELF加载 服务器繁忙 备选 网站 调用 示例 scapy cocoapods 毕昇JDK 小智 致远OA OA服务器 服务器磁盘扩容 Web服务器 多线程下载工具 PYTHON 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 firewall CORS 跨域 Zoertier 内网组网 金仓数据库 2025 征文 数据库平替用金仓 Docker Compose xfce uniapp perl Mac内存不够用怎么办 yolov8 昇腾 大模型训练/推理 推理问题 mindie cmake Ubuntu 22.04 MySql 算家云 算力租赁 蓝桥杯 Kali 渗透 边缘计算 桌面环境 AutoDL VR手套 数据手套 动捕手套 动捕数据手套 chromium dpi 半虚拟化 硬件虚拟化 Hypervisor TRAE 能力提升 面试宝典 技术 IT信息化 Web应用服务器 版本 进程程序替换 execl函数 execv函数 execvp函数 execvpe函数 putenv函数 Typore Windows 浏览器开发 AI浏览器 HistoryServer Spark YARN jobhistory av1 电视盒子 机顶盒ROM 魔百盒刷机 diskgenius sqlite pgpool openssl 密码学 ArkTS 移动端开发 VSCode 业界资讯 鲲鹏 端口测试 模拟退火算法 kernel 田俊楠 CosyVoice make命令 makefile文件 MQTT mosquitto 消息队列 wsgiref Web 服务器网关接口 ceph fork wait waitpid exit 联网 easyconnect 代理 echarts 信息可视化 网页设计 Cookie 代码托管服务 网络攻击模型 scikit-learn sonoma 自动更新 MDK 嵌入式开发工具 论文笔记 xshell termius iterm2 AISphereButler 强化学习 MAVROS 四旋翼无人机 neo4j 数据仓库 数据库开发 数据库架构 trea idea .net core 交叉编译 W5500 OLED u8g2 虚拟机安装 beautifulsoup ArcTS 登录 ArcUI GridItem 7z arkUI Claude eNSP 网络规划 VLAN 企业网络 java-rocketmq 做raid 装系统 BMC Jellyfin 显卡驱动 AnythingLLM AnythingLLM安装 大模型教程 Apache Beam 批流统一 案例展示 数据分区 容错机制 v10 软件 网页服务器 web服务器 Nginx chrome devtools chromedriver ukui 麒麟kylinos openeuler 容器技术 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm Linux Vim 序列化反序列化 h.264 ajax netlink libnl3 自动化测试 单例模式 VPS 双系统 拓扑图 samba top Linux top top命令详解 top命令重点 top常用参数 npu can 线程池 open Euler dde 内核 HarmonyOS OpenHarmony RTMP 应用层 SSE Xshell 华为OD 可以组成网络的服务器 curl wget big data ruby opensearch helm 线程 服务器主板 AI芯片 cfssl 代理服务器 飞书 MI300x 孤岛惊魂4 WebRTC 沙盒 csrutil mac恢复模式进入方法 恢复模式 nac 802.1 portal 安装MySQL stable diffusion sysctl.conf vm.nr_hugepages 图形渲染 健康医疗 互联网医院 GRUB引导 Linux技巧 单一职责原则 小游戏 五子棋 智能音箱 智能家居 IPMITOOL 硬件管理 sdkman springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 sequoiaDB Playwright Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 工具分享 ssh远程登录 游戏服务器 TrinityCore 魔兽世界 python3.11 uv XCC Lenovo Reactor反应堆 asp.net大文件上传下载 文件分享 繁忙 解决办法 替代网站 汇总推荐 AI推理 移动云 CDN 云服务 相机 token sas dba conda配置 conda镜像源 RAID RAID技术 多产物 x64 SIGSEGV xmm0 nfs 稳定性 看门狗 服务器部署ai模型 mysql离线安装 ubuntu22.04 mysql8.0 IIS Hosting Bundle .NET Framework vs2022 AI代码编辑器 SSL 域名 skynet 源码 rsyslog Anolis nginx安装 linux插件下载 lb 协议 代码规范 saltstack 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 embedding 网络文件系统 yaml Ultralytics 可视化 大大通 第三代半导体 碳化硅 webgl minio rnn LORA NLP 考研 在线office FTP服务器 OpenSSH EasyConnect 网络爬虫 内网环境 bootstrap jina nextjs reactjs 黑客技术 Tabs组件 TabContent TabBar TabsController 导航页签栏 滚动导航栏 流式接口 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 URL 金融 玩机技巧 软件分享 软件图标 DBeaver kerberos less 云电竞 云电脑 todesk composer 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? k8s二次开发 集群管理 网工 ssrf 失效的访问控制 Unity Dedicated Server Host Client 无头主机 SSL证书 数据管理 数据治理 数据编织 数据虚拟化 elk cnn 邮件APP 免费软件 MCP server C/S string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap Ubuntu 24.04.1 轻量级服务器 Mac软件 H3C 雨云服务器 环境迁移 崖山数据库 YashanDB db 直播推流 es 宝塔面板无法访问 机柜 1U 2U Node-Red 编程工具 流编程 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 ftp服务 文件上传 相差8小时 UTC 时间 ubuntu24.04.1 netty Qualcomm WoS QNN AppBuilder ollama api ollama外网访问 信创 信创终端 中科方德 NLP模型 自学笔记 小米 澎湃OS Android prompt risc-v 端口 查看 ss 工作流 workflow 图片增强 增强数据 cmos 硬件 状态管理的 UDP 服务器 Arduino RTOS 个人博客 安全架构 fast 无桌面 gitea 云耀服务器 IPv4 子网掩码 公网IP 私有IP SSH 密钥生成 SSH 公钥 私钥 生成 镜像 React Next.js 开源框架 linux 命令 sed 命令 联想开天P90Z装win10 宕机切换 服务器宕机 HarmonyOS NEXT 原生鸿蒙 k8s部署 MySQL8.0 高可用集群(1主2从) ShenTong 执法记录仪 智能安全帽 smarteye easyui 设备 PCI-Express SysBench 基准测试 服务器时间 ecm bpm pyicu DOIT 四博智联 数码 联机 僵尸毁灭工程 游戏联机 开服 yum源切换 更换国内yum源 idm bot Docker es6 qt6.3 g726 Attention Minecraft Docker快速入门 DeepSeek r1 笔灵AI AI工具 RAG 检索增强生成 文档解析 大模型垂直应用 iDRAC R720xd 大版本升 升级Ubuntu系统 Isaac Sim 虚拟仿真 powerbi 本地部署AI大模型 LInux 模拟器 教程 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 XFS xfs文件系统损坏 I_O error 测试用例 sublime text3 vasp安装 免费域名 域名解析 医疗APP开发 app开发 日志分析 系统取证 热榜 qt5 客户端开发 Office 开源软件 bat DIFY VPN wireguard muduo X11 Xming uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 硅基流动 ChatBox 技术共享 arcgis AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 ShapeFile GeoJSON EMQX 通信协议 jetty undertow grub 版本升级 扩容 匿名管道 SSH 服务 SSH Server OpenSSH Server Erlang OTP gen_server 热代码交换 事务语义 MNN Qwen qemu libvirt 推荐算法 语音识别 Xterminal 考试 dns是什么 如何设置电脑dns dns应该如何设置 GoogLeNet 银河麒麟桌面操作系统 Kylin OS xss 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 autodl AD域 resolv.conf win服务器架设 windows server 元服务 应用上架 增强现实 沉浸式体验 技术实现 案例分析 AR AI员工 nohup后台启动 进程间通信 分布式训练 Echarts图表 折线图 柱状图 异步动态数据 鸿蒙开发 可视化效果 mysql安装报错 windows拒绝安装 MobaXterm 文件传输 AI agent deekseek 状态模式 脚本 Sealos VS Code vllm 根服务器 fiddler iTerm2 终端 计算虚拟化 弹性裸金属 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 银河麒麟高级服务器 外接硬盘 Kylin 烟花代码 烟花 元旦 hexo termux 环境搭建 小智AI服务端 xiaozhi TTS 免密 公钥 私钥 IO模型 AD 域管理 网络建设与运维 网络搭建 神州数码 神州数码云平台 云平台 laravel nosql armbian u-boot junit 反向代理 7-zip 需求分析 规格说明书 deepseak 豆包 KIMI 腾讯元宝 MacOS 内网服务器 内网代理 内网通信 知识图谱 vscode1.86 1.86版本 ssh远程连接 网络原理 LLM Web APP Streamlit 我的世界服务器搭建 minecraft 抗锯齿 问题解决 弹性服务器 查询数据库服务IP地址 SQL Server 行情服务器 股票交易 速度慢 切换 股票量化接口 股票API接口 MVS 海康威视相机 智能合约 哈希算法 wpf 性能调优 安全代理 本地知识库部署 DeepSeek R1 模型 flink WINCC 电路仿真 multisim 硬件工程师 硬件工程师学习 电路图 电路分析 仪器仪表 pyside6 界面 Python基础 Python教程 Python技巧 proxy模式 服务器ssl异常解决 服务网格 istio js 存储维护 NetApp存储 EMC存储 openjdk macbook IP配置 netplan 安全漏洞 信息安全 EVE-NG docker desktop Pyppeteer 终端工具 远程工具 合成模型 扩散模型 图像生成 项目部署到linux服务器 项目部署过程 超融合 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 多路转接 servlet 输入系统 ranger MySQL8.0 网卡的名称修改 eth0 ens33 移动开发 语法 web3 llamafactory 微调 word NAT转发 NAT Server 电脑桌面出现linux图标 电脑桌面linux图标删除不了 电脑桌面Liunx图标删不掉 linux图标删不掉 北亚数据恢复 oracle数据恢复 USB网络共享 IMM System V共享内存 进程通信 极限编程 捆绑 链接 谷歌浏览器 youtube google gmail Headless Linux 程序化交易 量化交易 高频交易 项目部署 prometheus数据采集 prometheus数据模型 prometheus特点 mcp服务器 client close 常用命令 文本命令 目录命令 zookeeper nohup 异步执行 Linux环境 regedit 开机启动 新盘添加 partedUtil dock 加速 GRE 僵尸世界大战 游戏服务器搭建 GIS 遥感 WebGIS arkTs linuxdeployqt 打包部署程序 appimagetool deployment daemonset statefulset cronjob 分布式账本 信任链 共识算法 ai工具 阿里云ECS ldap yashandb 查看显卡进程 fuser 打不开xxx软件 无法检查其是否包含恶意软件 ArtTS whistle 架构与原理 webview autoware 多个客户端访问 IO多路复用 TCP相关API g++ g++13 TCP协议 计算机科学与技术 底层实现 gunicorn cpp-httplib 充电桩平台 充电桩开源平台 seleium IMX317 MIPI H265 VCU zerotier 端口聚合 windows11 移动魔百盒 达梦 DM8 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 Logstash 日志采集 对比 meld DiffMerge tidb GLIBC mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 锁屏不生效 NFC 近场通讯 智能门锁 deepseek r1 软负载 搭建个人相关服务器 hosts image midjourney sentinel Claude Desktop Claude MCP Windows Cli MCP 佛山戴尔服务器维修 佛山三水服务器维修 swoole AI Agent 字节智能运维 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 内存管理 干货分享 黑客工具 密码爆破 显卡驱动持久化 GPU持久化 我的世界 我的世界联机 docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 glm4 kubeless 加解密 Yakit yaklang css3 IDEA 录音麦克风权限判断检测 录音功能 录音文件mp3播放 小程序实现录音及播放功能 RecorderManager 解决录音报错播放没声音问题 retry 重试机制 WireGuard 异地组网 tailscale derp derper 中转 triton 模型分析 线性代数 电商平台 rpa 阻塞队列 生产者消费者模型 服务器崩坏原因 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 navicat 欧标 OCPP 音乐服务器 Navidrome 音流 软件开发 lua Linux find grep 钉钉 IPv6 IPv6测试 IPv6测速 IPv6检测 IPv6查询 GeneCards OMIM TTD 分子对接 autodock mgltools PDB PubChem Ardupilot AzureDataStudio ECT转485串口服务器 ECT转Modbus485协议 ECT转Modbus串口服务器 音乐库 抓包工具 pppoe radius Maven 子系统 react native iventoy VmWare OpenEuler 李心怡 initramfs Linux内核 Grub 蓝桥杯C++组 Radius docker部署Python EMUI 回退 降级 物联网开发 管道 Spring Security 影刀 #影刀RPA# AimRT 嵌入式Linux IPC Qwen2.5-VL 负载测试 企业网络规划 华为eNSP massa sui aptos sei 运维监控 多端开发 智慧分发 应用生态 鸿蒙OS ISO镜像作为本地源 游戏开发 DenseNet 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 figma 冯诺依曼体系 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 Ubuntu20.04 2.35 LVM lvresize 磁盘扩容 pvcreate SystemV IPv4/IPv6双栈 双栈技术 网路规划设计 ensp综合实验 IPv4过渡IPv6 IPv4与IPv6 服务器正确解析请求体 智能体开发 localhost 券商 股票交易接口api 类型 特点 solidworks安装 金仓数据库概述 金仓数据库的产品优化提案 HAProxy 零售 yum换源 pthread 风扇控制软件 VGG网络 卷积层 池化层 区块链项目 PyQt PySide6 postgres Dify重启后重新初始化 设备树 NVML nvidia-smi ABAP archlinux kde plasma 配置原理 ardunio BLE 动态规划 西门子PLC 通讯 mac设置host Python 视频爬取教程 Python 视频爬取 Python 视频教程 ubuntu安装 linux入门小白 用户管理 NVM Node Yarn PM2 UDP GPU训练 macOS 免费 Bug解决 Qt platform OpenCV 粘包问题 框架 接口优化 设计规范 桌面快捷方式 跨域请求 流量运营 java-zookeeper 搜狗输入法 中文输入法 解决方案 Unity插件 数字证书 签署证书 机械臂 SVN Server tortoise svn rtc c/s 带外管理 动静态库 大模型推理 物理地址 页表 虚拟地址 hdc mybase element-ui 上传视频并预览视频 vue上传本地视频及进度条功能 vue2选择视频上传到服务器 upload上传视频组件插件 批量上传视频 限制单个上传视频 源代码 Webserver 异步 飞腾处理器 鸿蒙NEXT 三次握手 海康 智能体 autogen openai coze brew Alist mount 挂载 网盘 支持向量机 文件存储服务器组件 logstash RDP 商用密码产品体系 post.io 企业邮箱 搭建邮箱 星河版 mvc 源代码管理 CAD瓦片化 栅格瓦片 矢量瓦片 Web可视化 DWG解析 金字塔模型 UFW client-go 静态IP 命令模式 向量数据库 安装部署 milvus安装 linux子系统 忘记密码 solr Qt QModbus CUPS 打印机 Qt5 华为昇腾910b3 node 计算机学习路线 编程语言选择 MinIO chatbox 软考设计师 中级设计师 SQL 软件设计师 comfyui comfyui教程 #STC8 #STM32