目 录
插图目录
表格目录
表6-1 GMAC寄存器概览(GMAC0基址是0x0_1029_0000;GAMC1基地址是0x0_102A_0000) 6-6
GMAC
概述
千兆以太网模块实现网络接口数据的接收和发送,支持10/100/1000Mbit/s工作模式可配置,支持全双工、半双工工作模式。可实现和CPU端口间的数据通信。
Hi3403V100支持2个GMAC模块。
功能描述
千兆以太网模块有如下功能特点:
- 支持10/100/1000Mbit/s速率。
- 支持全双工或半双工工作模式。
- 支持RMII/RGMII(Reduced Gigabit Media Independent Interface)接口。
- 提供MDIO接口。
- 支持帧长有效性检测,丢弃超长帧和超短帧。
- 支持对输入帧进行CRC校验,可丢弃校验错的帧。
- 支持对输出帧添加CRC校验。
- 支持短帧填充功能。
- 支持对接收和发送帧进行统计计数。
- 支持广播帧、组播帧和单播帧过滤。
- 支持IP报文、广播或多播报文限速处理功能可配置。
- 支持非法包过滤功能。
- 支持入队中断和超时中断两种中断方式。
- 支持收发包缓存。
总体数据流
GMAC千兆以太网交换接口的总体数据流如图6-1所示。

单网口功能配置描述
以太网收发帧管理功能
CPU通过配置描述子队列缓存区,对Ethernet进行收发帧地址管理:
- 接收时,Ethernet分辨从外网收到的各种数据包,并根据CPU配置的报文缓存信息,包括报文缓存起始地址、报文缓存深度等,将收到的合法包通过总线存放到DDR中。
- 发送时,Ethernet根据CPU配置的报文缓存信息,包括报文缓存起始地址、报文长度以及其他的报文信息等,通过总线,将存于DDR的报文搬运过来,自行组装成包,然后发送到网络接口上。
以太网收包中断管理功能
中断产生
配置接收方向入队中断使能以及上报入队中断的水线,当逻辑回写到DDR中的描述子个数达到配置水线时,则产生一个接收入队中断。
配置ENA_PMU_INT bit[17] rx_bq入队中断使能;
配置ENA_PMU_INT bit[28] rx_bq入队超时中断使能。
----结束
中断清除
CPU收到接收入队中断或者接收超时中断后,写1清除接收入队中断和接收超时中断。
配置PHY芯片工作状态
以太网交换模块提供MDIO接口实现对PHY芯片的管理。MDIO分为读操作和写操作,下面分别介绍两者的操作步骤。
读操作的配置步骤如下:
CPU向MDIO_SINGLE_CMD bit[12:8]写入PHY芯片地址,向bit[4:0]写入PHY内部寄存器地址,同时配置寄存器MDIO_SINGLE_CMD bit[20]为1,配置bit[17:16]为2’b10,启动MDIO读操作;
MDIO将从外部PHY芯片读回的数据写到MDIO_SINGLE_DATA bit[31:16],并同时将MDIO_SINGLE_CMD bit[20]配置为0;
CPU查询MDIO_SINGLE_DATA bit[31:16]得到MDIO从外部PHY芯片读回的数据。
----结束
写操作的配置步骤如下:
CPU将发送给外部PHY芯片的数据写入MDIO_SINGLE_DATA bit[15:0];
向MDIO_SINGLE_CMD bit[9:8]写入PHY芯片地址,向bit[4:0]写入PHY内部寄存器地址,同时配置bit[20]为1,配置bit[17:16]为1,启动MDIO写操作;
MDIO将MDIO_SINGLE_DATA bit[15:0]的值写入相应的PHY内部寄存器中,完成MDIO的写操作,并自动将MDIO_SINGLE_CMD bit[20]配置为0x0。
----结束
工作模式切换
千兆以太网的工作模式。
- RMII(10M/100M)
- RGMII(10M/100M/1000M)
上述模式根据单板硬件连接确认。
下面介绍速率双工切换步骤。
配置MAC_IF_STAT_CTRL bit8:0;
配置PERI_CRG3568/PERI_CRG3584 bit[0](GMAC CRG控制寄存器)为1进行复位,然后再配置为0撤销复位,使配置的工作模式生效;
配置PORT_MODE(MAC端口速率模式寄存器)。
说明
芯片正常工作时不可进行此项配置,建议在初始化时进行配置。
----结束
典型应用
以太网限速功能
以太网交换模块具有对接收报文进行限速的功能,即在某段时间内,当通过的报文数超过设定的最大数量时,后续报文将被丢弃。
以太网交换模块对报文限速分为以下两种。
- 对IP报文的限速
- 对广播或多播报文的限速
对IP报文的限速
IP报文的限速以1μs为单位进行计数,在限速时间内,当通过的报文达到限速个数时,后续报文被丢弃。
对IP报文进行限速时,需要做如下配置。
配置CONTROL_WORD bit[21]为1。
配置FLOW_CTRL_PKG_THRSLD。
配置CRF_FLOW_TIME_THRSLD。
----结束
对广播或多播报文的限速
广播或多播报文的限速时间以1μs为单位进行计数,在限速时间内,当通过的报文达到限速个数时,后续报文被丢弃。
对广播或者多播报文进行限速时,需要做如下配置。
配置CONTROL_WORD bit[16]为1。
配置CRF_BM_PKT_THRSLD。
配置CRF_BM_PKT_THRSLD。
----结束
寄存器偏移地址说明
GMAC偏移地址共占用16bit地址空间,其中:
- 0x0000~0x0fff:用于GMAC以太网口;
- 0x300c:MAC_IF状态控制寄存器。
GMAC寄存器
概览
GMAC寄存器概览如表6-1所示。
GMAC寄存器概览(GMAC0基址是0x0_1029_0000;GAMC1基地址是0x0_102A_0000)
| 偏移地址 | 名称 | 描述 | 页码 |
|---|---|---|---|
| 0x0000 | STATION_ADDR_LOW | 本机MAC地址寄存器 | 6-8 |
| 0x0004 | STATION_ADDR_HIGH | 本机MAC地址寄存器 | 6-8 |
| 0x0008 | DUPLEX_SEL_RGMII | 半双工选择寄存器 | 6-8 |
| 0x000C | FD_FC_TYPE | 流控帧类型域寄存器 | 6-9 |
| 0x0014 | COL_DISTANCE | 单次重传包长水线寄存器 | 6-9 |
| 0x0038 | PAUSE_THR | 发送流控帧间隙寄存器 | 6-9 |
| 0x003C | MAX_FRM_SIZE | 最大帧长寄存器 | 6-10 |
| 0x0040 | PORT_MODE | 端口状态寄存器 | 6-10 |
| 0x0044 | PORT_EN | 通道使能寄存器 | 6-11 |
| 0x0048 | PAUSE_EN | 流控使能寄存器 | 6-11 |
| 0x0050 | SHORT_RUNTS_THR | 超短帧界限寄存器 | 6-11 |
| 0x0054 | DROP_UNK_CTL_FRM | 未知控制帧丢弃使能寄存器 | 6-12 |
| 0x0060 | TRANSMIT_CONTROL | 常用配置寄存器 | 6-12 |
| 0x0064 | REC_FILT_CONTROL | 接收帧过滤控制寄存器 | 6-13 |
| 0x0080 | RX_OCTETS_OK_CNT | 接收有效帧的字节统计寄存器 | 6-14 |
| 0x0084 | RX_OCTETS_BAD_CNT | 接收错误帧字节统计寄存器 | 6-14 |
| 0x0088 | RX_UC_PKTS | MAC接收单播帧数统计寄存器 | 6-14 |
| 0x008C | RX_MC_PKTS | 接收多播帧数统计寄存器 | 6-14 |
| 0x0090 | RX_BC_PKTS | 接收的广播帧数统计寄存器 | 6-15 |
| 0x00B0 | RX_FCS_ERRORS | 接收CRC检验错误的帧数统计寄存器 | 6-15 |
| 0x0100 | OCTETS_TRANSMITTED_OK | 发送成功的好包字节数统计寄存器 | 6-15 |
| 0x0104 | OCTETS_TRANSMITTED_BAD | 发送成功的错包字节数统计寄存器 | 6-15 |
| 0x0108 | TX_UC_PKTS | 发送的单播帧数统计寄存器 | 6-16 |
| 0x010C | TX_MC_PKTS | 发送的多播帧数统计寄存器 | 6-16 |
| 0x0110 | TX_BC_PKTS | 发送的广播帧数统计寄存器 | 6-16 |
| 0x0158 | TX_CRC_ERROR | 发送帧长正确CRC错误的帧数统计寄存器 | 6-16 |
| 0x01B0 | CF_CRC_STRIP | CRC剥离使能寄存器 | 6-17 |
| 0x01B4 | MODE_CHANGE_EN | 端口模式改变使能寄存器 | 6-17 |
| 0x01C0 | COL_SLOT_TIME | 半双工冲突重传间隔时间计数器寄存器 | 6-17 |
| 0x01E0 | RECV_CONTROL | 接收控制寄存器 | 6-18 |
| 0x01E8 | VLAN_CODE | VLAN Code寄存器 | 6-18 |
| 0x020C | CRF_MAX_PACKET | 最大过滤包长寄存器 | 6-19 |
| 0x0210 | CRF_MIN_PACKET | 最小过滤包长寄存器 | 6-19 |
| 0x0214 | CONTROL_WORD | 控制寄存器 | 6-19 |
| 0x0218 | FLOW_CTRL_PKG_THRSLD | 限速包个数寄存器 | 6-20 |
| 0x021C | CRF_FLOW_TIME_THRSLD | 限速时间寄存器 | 6-21 |
| 0x0358 | CRF_BM_PKT_THRSLD | 广播和多播报文的限速处理包个数寄存器 | 6-21 |
| 0x02E8 | TSO_COE_CTRL | TSO开关和COE过滤开关寄存器 | 6-21 |
| 0x035C | CRF_BM_TIME_THRSLD | 广播和多播报文的限速时间计数寄存器 | 6-22 |
| 0x03C0 | MDIO_SINGLE_CMD | MDIO单次操作寄存器 | 6-23 |
| 0x03C4 | MDIO_SINGLE_DATA | MDIO读写数据寄存器 | 6-23 |
| 0x05C4 | ENA_PMU_INT | PMU模块原始中断使能寄存器 | 6-24 |
| 0x05C8 | STATUS_PMU_INT | PMU模块中断状态寄存器 | 6-28 |
| 0x05CC | DESC_WR_RD_ENA | CFF读写描述子使能寄存器 | 6-32 |
| 0x300C | MAC_IF_STAT_CTRL | MAC_IF模式控制寄存器 | 6-33 |
GMAC寄存器描述
STATION_ADDR_LOW
STATION_ADDR_LOW为本机MAC地址寄存器。
Offset Address: 0x0000 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RW | station_addr_low | MAC_CORE的MAC源地址低32bit。 | 0x00000000 |
STATION_ADDR_HIGH
STATION_ADDR_HIGH为本机MAC地址寄存器。
Offset Address: 0x0004 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:16] | - | reserved | 保留。 | 0x0000 |
| [15:0] | RW | station_addr_high | MAC_CORE的MAC源地址高16bit,可默认。 | 0x0000 |
DUPLEX_SEL_RGMII
DUPLEX_SEL_RGMII为半双工选择寄存器。
Offset Address: 0x0008 Total Reset Value: 0x0000_0001
| Bits | Access | Name | Description | Reset |
| [31:1] | - | reserved | 保留。 | 0x00000000 |
| [0] | RW | duplex_sel_rgmii | 半双工选择信号。 0:半双工; 1:全双工。 | 0x1 |
FD_FC_TYPE
FD_FC_TYPE为流控帧类型域寄存器。
Offset Address: 0x000C Total Reset Value: 0x0000_8808
| Bits | Access | Name | Description | Reset |
| [31:16] | - | reserved | 保留。 | 0x0000 |
| [15:0] | RW | fd_fc_type | 全双工模式下流控帧TYPE域。 | 0x8808 |
COL_DISTANCE
COL_DISTANCE为单次重传包长水线寄存器。
Offset Address: 0x0014 Total Reset Value: 0x0000_0043
| Bits | Access | Name | Description | Reset |
| [31:10] | - | reserved | 保留。 | 0x000000 |
| [9:0] | RW | col_distance | 单次重传包长水线。 | 0x043 |
PAUSE_THR
PAUSE_THR为发送流控帧间隙寄存器。
Offset Address: 0x0038 Total Reset Value: 0x0000_002F
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:16] | RO | reserved | 保留。 | 0x0000 |
| [15:0] | RW | pause_thr | 流控帧间隔时间,若流控时间大于间隔时间,MAC自动发送流控帧。以512bit为时间单位。 | 0x002F |
MAX_FRM_SIZE
MAX_FRM_SIZE为最大帧长寄存器。
Offset Address: 0x003C Total Reset Value: 0x0000_05EE
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:14] | - | reserved | 保留。 | 0x00000 |
| [13:0] | RW | max_frm_size | MAC部分允许的最大帧长。 当接收到大于该帧长的帧时,将该帧认为超长错误帧;当发送帧超过该帧长的帧时,将发送帧截断后做为错帧发送。 | 0x05EE |
PORT_MODE
PORT_MODE为端口状态寄存器。
Offset Address: 0x0040 Total Reset Value: 0x0000_0001
| Bits | Access | Name | Description | Reset |
| [31:3] | - | reserved | 保留。 | 0x00000000 |
| [2:0] | RW | port_mode | 指示当前MAC端口工作的模式。 000:10Mbps; 001:100Mbps; 101:1000Mbps; 其他:保留。 | 0x1 |
PORT_EN
PORT_EN为通道使能寄存器。
Offset Address: 0x0044 Total Reset Value: 0x0000_0006
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:3] | - | reserved | 保留。 | 0x00000000 |
| [2] | RW | tx_en | 发送通道使能位。 0:不使能; 1:使能。 | 0x1 |
| [1] | RW | rx_en | 接收通道使能位。 0:不使能; 1:使能。 | 0x1 |
| [0] | - | reserved | 保留。 | 0x0 |
PAUSE_EN
PAUSE_EN为流控使能寄存器。
Offset Address: 0x0048 Total Reset Value: 0x0000_0007
| Bits | Access | Name | Description | Reset |
| [31:2] | RO | reserved | 保留。 | 0x00000001 |
| [1] | RW | tx_fdfc | 全双工模式下发送流控帧使能。 0:不使能; 1:使能。 | 0x1 |
| [0] | RW | rx_fdfc | 全双工模式下响应流控帧使能。 0:不使能; 1:使能。 | 0x1 |
SHORT_RUNTS_THR
SHORT_RUNTS_THR为超短帧界限寄存器。
Offset Address: 0x0050 Total Reset Value: 0x0000_000C
| Bits | Access | Name | Description | Reset |
| [31:5] | RO | reserved | 保留。 | 0x0000000 |
| [4:0] | RW | short_runts_thr | 短帧、超短帧界限(只用于统计短帧、超短帧计数)。 | 0x0C |
DROP_UNK_CTL_FRM
DROP_UNK_CTL_FRM为未知控制帧丢弃使能寄存器。
Offset Address: 0x0054 Total Reset Value: 0x0000_0001
| Bits | Access | Name | Description | Reset |
| [31:1] | RO | reserved | 保留。 | 0x00000000 |
| [0] | RW | drop_unk_ctl_frm | 未知控制帧处理位。 0:正常转发未知控制帧; 1:丢弃未知控制帧。 | 0x1 |
TRANSMIT_CONTROL
TRANSMIT_CONTROL为常用配置寄存器。
Offset Address: 0x0060 Total Reset Value: 0x0000_00C0
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:8] | - | reserved | 保留。 | 0x000000 |
| [7] | RW | pad_enable | 发送添加PAD使能。 0:不使能; 1:使能。 | 0x1 |
| [6] | RW | crc_add | 发送添加FCS使能。 0:不使能; 1:使能。 | 0x1 |
| [5:0] | - | reserved | 保留。 | 0x00 |
REC_FILT_CONTROL
REC_FILT_CONTROL为接收帧过滤控制寄存器。
Offset Address: 0x0064 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:6] | - | reserved | 保留。 | 0x0000000 |
| [5] | RW | crc_err_pass | 过滤CRC错误帧使能。 0:不使能; 1:使能,表示把CRC错误帧丢弃。 | 0x0 |
| [4] | RW | pause_frm_pass | 过滤流控帧使能。 0:不使能,流控使能有效才起作用,要上传至软件; 1:使能,流控使能有效才起作用,不上传至软件。 | 0x0 |
| [3] | RW | vlan_drop_en | 过滤VLAN帧使能。 0:不使能; 1:使能。 | 0x0 |
| [2] | RW | bc_drop_en | 过滤广播帧使能。 0:不使能; 1:使能。 | 0x0 |
| [1] | RW | mc_match_en | 过滤DA不匹配的多播帧使能。 0:不使能; 1:使能。 | 0x0 |
| [0] | RW | uc_match_en | 过滤DA不匹配的单播帧使能。 0:不使能; 1:使能。 | 0x0 |
RX_OCTETS_OK_CNT
RX_OCTETS_OK_CNT为接收有效帧的字节统计寄存器。
Offset Address: 0x0080 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | rx_octets_ok_cnt | 接收有效帧字节统计,范围包括DA~FCS。 | 0x00000000 |
RX_OCTETS_BAD_CNT
RX_OCTETS_BAD_CNT为接收错误帧字节统计寄存器。
Offset Address: 0x0084 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | rx_octets_bad_cnt | 接收错帧字节统计,包括CRC错误,对齐错误等。 | 0x00000000 |
RX_UC_PKTS
RX_UC_PKTS为MAC接收单播帧数统计寄存器。
Offset Address: 0x0088 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | rx_uc_pkts_cnt | 接收单播帧数统计(不包括错帧)。 | 0x00000000 |
RX_MC_PKTS
RX_MC_PKTS为接收多播帧数统计寄存器。
Offset Address: 0x008C Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | rx_mc_pkts_cnt | 接收多播帧数统计(不包括错帧)。 | 0x00000000 |
RX_BC_PKTS
RX_BC_PKTS为接收的广播帧数统计寄存器。
Offset Address: 0x0090 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | rx_bc_pkts_cnt | 接收广播帧数统计(不包括错帧)。 | 0x00000000 |
RX_FCS_ERRORS
RX_FCS_ERRORS为接收CRC检验错误的帧数统计寄存器。
Offset Address: 0x00B0 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | rx_fcs_errors | CRC检测错误的帧数统计(不包括短帧)。 | 0x00000000 |
OCTETS_TRANSMITTED_OK
OCTETS_TRANSMITTED_OK为发送成功的好包字节数统计寄存器。
Offset Address: 0x0100 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | octets_transmitted_ok | 发送成功的好包字节数(不包括前导码和SFD)。 | 0x00000000 |
OCTETS_TRANSMITTED_BAD
OCTETS_TRANSMITTED_BAD为发送成功的错包字节数统计寄存器。
Offset Address: 0x0104 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | octets_transmitted_bad | 发送成功的错包的字节数。 | 0x00000000 |
TX_UC_PKTS
TX_UC_PKTS为发送的单播帧数统计寄存器。
Offset Address: 0x0108 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | tx_uc_pkts | 发送的单播帧数统计(不包括错包)。 | 0x00000000 |
TX_MC_PKTS
TX_MC_PKTS为发送的多播帧数统计寄存器。
Offset Address: 0x010C Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | tx_mc_pkts | 发送的多播帧数统计(不包括错包)。 | 0x00000000 |
TX_BC_PKTS
TX_BC_PKTS为发送的广播帧数统计寄存器。
Offset Address: 0x0110 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:0] | RC | tx_bc_pkts | 发送的广播帧数(不包括错包)。 | 0x00000000 |
TX_CRC_ERROR
TX_CRC_ERROR为发送帧长正确CRC错误的帧数统计寄存器。
Offset Address: 0x0158 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:0] | RC | tx_crc_error | 发送帧长正确而CRC错误的帧数目统计。 | 0x00000000 |
CF_CRC_STRIP
CF_CRC_STRIP为CRC剥离使能寄存器。
Offset Address: 0x01B0 Total Reset Value: 0x0000_0001
| Bits | Access | Name | Description | Reset |
| [31:1] | - | reserved | 保留。 | 0x00000000 |
| [0] | RW | cf_crc_strip | MAC剥离接收方向CRC使能。 0:不使能,上报包长包括CRC的4字节; 1:使能,剥离后上报包长不包括CRC的4字节。 | 0x1 |
MODE_CHANGE_EN
MODE_CHANGE_EN为端口模式改变使能寄存器。
Offset Address: 0x01B4 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:1] | - | reserved | 保留。 | 0x00000000 |
| [0] | RW | mode_change_en | port_mode改变生效使能。 0:不使能; 1:使能。 | 0x0 |
COL_SLOT_TIME
COL_SLOT_TIME为半双工冲突重传间隔时间计数器寄存器。
Offset Address: 0x01C0 Total Reset Value: 0x0000_40FF
| Bits | Access | Name | Description | Reset |
| [31:24] | RO | reserved | 保留。 | 0x00 |
| [23:8] | RW | cf2bc_slottime | 半双工冲突重传单位间隔时间。 | 0x0040 |
| [7:0] | RW | cf2bc_random_seed | 半双工冲突重传随机倍数基数。 | 0xFF |
RECV_CONTROL
RECV_CONTROL为接收控制寄存器。
Offset Address: 0x01E0 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:5] | - | reserved | 保留。 | 0x0000000 |
| [4] | RW | runt_pkt_en | 接收超短帧透穿功能。 0:丢弃,不上传给软件; 1:上传给软件。 | 0x0 |
| [3] | RW | strip_pad_en | 剥离接收帧的PAD使能。 0:不使能; 1:使能。 | 0x0 |
| [2:0] | - | reserved | 保留。 | 0x0 |
VLAN_CODE
VLAN_CODE为VLAN Code寄存器。
Offset Address: 0x01E8 Total Reset Value: 0x0000_8100
| Bits | Access | Name | Description | Reset |
| [31:16] | RO | reserved | 保留。 | 0x00000 |
| [15:0] | RW | cf_vlan_code | Ethernet Type域配置。 | 0x8100 |
CRF_MAX_PACKET
CRF_MAX_PACKET为最大过滤包长寄存器。
Offset Address: 0x020C Total Reset Value: 0x05EE_0000
| Bits | Access | Name | Description | Reset |
| [31:27] | RO | reserved | 保留。 | 0x0 |
| [26:16] | RW | crf_tx_max_packet | PMU中允许的normal包和SG包最大长度。 | 0x5EE |
| [15:0] | RO | reserved | 保留。 | 0x0000 |
CRF_MIN_PACKET
CRF_MIN_PACKET为最小过滤包长寄存器。
Offset Address: 0x0210 Total Reset Value: 0x0000_0F2A
| Bits | Access | Name | Description | Reset |
| [31:14] | - | reserved | 保留。 | 0x00000 |
| [13:8] | RW | crf_tx_min_packet | 发送方向配置的最小发送包长度,默认为15byte。 | 0x0F |
| [7:6] | - | reserved | 保留。 | 0x0 |
| [5:0] | RW | crf_rx_min_packet | 接收方向配置的最小发送包长度,默认为42byte。 | 0x2A |
CONTROL_WORD
CONTROL_WORD为控制寄存器。
Offset Address: 0x0214 Total Reset Value: 0x0000_0640
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:26] | - | reserved | 保留。 | 0x00 |
| [25] | RW | crf_tx_standard | 发送FIFO的发送水线设置标准。 0:按包和将空水线设置。当发送FIFO中有一个完整的包,或者发送FIFO中的有效数据个数大于等于4倍的发送水线时,即向MAC发送读请求; 1:按包设置;当发送FIFO中有一个完整的包时,才向MAC发送读请求。 | 0x0 |
| [24:22] | - | reserved | 保留。 | 0x0 |
| [21] | RW | crf_ip_flow_ctrl | IP报文限速使能。 0:不限速; 1:限速。 | 0x0 |
| [20] | - | reserved | 保留。 | 0x0 |
| [19:18] | - | reserved | 保留。 | 0x0 |
| [17] | RW | crf_filt_unused_pkg | 过滤非法报文控制。 0不过滤; 1:过滤。 | 0x0 |
| [16] | RW | crf_bm_flow_ctrl | 对广播或多播报文流控控制。 0:不流控; 1:流控。 | 0x0 |
| [15:14] | - | reserved | 保留。 | 0x0 |
| [13:0] | RW | crf_large_packet | 配置的最大包长度,默认为1600byte(PMU使用的最大包长)。 | 0x0640 |
FLOW_CTRL_PKG_THRSLD
FLOW_CTRL_PKG_THRSLD为限速包个数寄存器。
Offset Address: 0x0218 Total Reset Value: 0xFFFF_0000
| Bits | Access | Name | Description | Reset |
| [31:16] | RW | crf_ip_pkg_thrsld | IP报文的包上限,当在T时间内接收的IP报文超过该数,则进行限速,否则,不限速。 | 0xFFFF |
| [15:0] | - | reserved | 保留。 | 0x0000 |
CRF_FLOW_TIME_THRSLD
CRF_FLOW_TIME_THRSLD为限速时间寄存器。
Offset Address: 0x021C Total Reset Value: 0x0000_00FF
| Bits | Access | Name | Description | Reset |
| [31:8] | - | reserved | 保留。 | 0x000000 |
| [7:0] | RW | crf_flow_time_thrsld | 限速处理的时间,以125μs为单位。 限速时间T=(crf_flow_time_thrsld+1)(125μs) | 0xFF |
CRF_BM_PKT_THRSLD
CRF_BM_PKT_THRSLD为广播和多播报文的限速处理包个数寄存器。
Offset Address: 0x0358 Total Reset Value: 0x0000_0001
| Bits | Access | Name | Description | Reset |
| [31:16] | - | reserved | 保留。 | 0x0000 |
| [15:0] | RW | crf_bm_pkt_thrsld | 广播和多播报文的包上限,当在限速单位时间内接收的广播或多播报文超过该数,则进行限速,否则不限速。 | 0x0001 |
TSO_COE_CTRL
TSO_COE_CTRL为TSO开关和COE过滤开关寄存器。
Offset Address: 0x02E8 Total Reset Value: 0x8000_0081
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:16] | - | reserved | 保留。 | 0x8000 |
| [15:8] | - | reserved | 保留。 | 0x00 |
| [7] | RW | coe_drop_cnt_en | 接收报文统计计数使能。 0:关闭; 1:打开。 | 0x1 |
| [6] | RW | coe_ipv6udp_zero_drop | 接收报文IPv6 UDP checksum为0的包是否配置丢弃。 0:关闭; 1:打开。 | 0x0 |
| [5] | RW | coe_payload_drop | 接收报文TCP/UDP checksum错误的包是否配置丢弃。 0:关闭; 1:打开。 | 0x0 |
| [4] | RW | coe_iphead_drop | 接收报文IPv4头checksum错误的包是否配置丢弃。 0:关闭; 1:打开。 | 0x0 |
| [3:0] | - | reserved | 保留。 | 0x1 |
CRF_BM_TIME_THRSLD
CRF_BM_TIME_THRSLD为广播和多播报文的限速时间计数寄存器。
Offset Address: 0x035C Total Reset Value: 0x0000_2710
| Bits | Access | Name | Description | Reset |
| [31:20] | RO | reserved | 保留。 | 0x000 |
| [19:0] | RW | crf_bm_time_thrsld | 广播和多播报文的限速时间上限,以1us为单位进行计数,当等于该计数值时,为一个限速单位时间。 | 0x02710 |
MDIO_SINGLE_CMD
MDIO_SINGLE_CMD为MDIO单次操作寄存器。
Offset Address: 0x03C0 Total Reset Value: 0x0001_0000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:21] | - | reserved | 保留。 | 0x000 |
| [20] | RW | mdio_cmd | MDIO操作完成指示。 0:MDIO操作完成; 1:启动MDIO操作。 | 0x0 |
| [19:18] | - | reserved | 保留。 | 0x0 |
| [17:16] | RW | op_code | MDIO操作类型。 00:保留; 01:写操作; 10:读操作; 11:保留。 | 0x1 |
| [15:13] | - | reserved | 保留。 | 0x0 |
| [12:8] | RW | phy_addr | 配置外部PHY地址的5bit。 | 0x00 |
| [7:5] | - | reserved | 保留。 | 0x0 |
| [4:0] | RW | reg_addr | PHY器件内部的寄存器地址。 | 0x00 |
MDIO_SINGLE_DATA
MDIO_SINGLE_DATA为MDIO读写数据寄存器。
Offset Address: 0x03C4 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
| [31:16] | RO | mdio_rd_data | MDIO从外部PHY器件回读的数据。 | 0x0000 |
| [15:0] | RW | mdio_wr_data | MDIO写数据。 | 0x0000 |
ENA_PMU_INT
ENA_PMU_INT为PMU模块原始中断使能寄存器。
Offset Address: 0x05C4 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31] | RO | reserved | 保留。 | 0x0 |
| [30] | RW | ena_mac_fifo_err_int | MAC内部FIFO错误中断使能。 0:不使能; 1:使能。 | 0x0 |
| [29] | RW | ena_tx_rq_in_timeout_int | 发送方向的RQ队列描述子入队超时中断使能。 0:不使能; 1:使能。 | 0x0 |
| [28] | RW | ena_rx_bq_in_timeout_int | 接收方向的BQ队列描述子入队超时中断使能。 0:不使能; 1:使能。 | 0x0 |
| [27] | RW | ena_txoutcff_full_int | 发送方向DESC_OUTCFF满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [26] | RW | ena_txoutcff_empty_int | 发送方向DESC_OUTCFF空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [25] | RW | ena_txcff_full_int | 发送方向DESC_FIFO满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [24] | RW | ena_txcff_empty_int | 发送方向DESC_FIFO空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [23] | RW | ena_rxoutcff_full_int | 接收方向DESC_OUTCFF满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [22] | RW | ena_rxoutcff_empty_int | 接收方向DESC_OUTCFF空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [21] | RW | ena_rxcff_full_int | 接收方向DESC_FIFO满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [20] | RW | ena_rxcff_empty_int | 接收方向DESC_FIFO空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [19] | RW | ena_tx_rq_in_int | 发送方向tx_rq队列的描述子入队(多个或者单个描述子入队)中断使能。 0:不使能; 1:使能。 | 0x0 |
| [18] | RW | ena_tx_bq_out_int | 发送方向tx_bq队列的描述子出队(多个或者单个描述子出队)中断使能。 0:不使能; 1:使能。 | 0x0 |
| [17] | RW | ena_rx_bq_in_int | 接收方向rx_bq队列的描述子入队(多个或者单个描述子入队)中断使能。 0:不使能; 1:使能。 | 0x0 |
| [16] | RW | ena_rx_fq_out_int | 接收方向rx_fq队列的描述子出队(多个或者单个描述子出队)中断使能。 0:不使能; 1:使能。 | 0x0 |
| [15] | RW | ena_tx_rq_empty_int | 发送方向的回收描述子队列空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [14] | RW | ena_tx_rq_full_int | 发送方向的回收描述子队列满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [13] | RW | ena_tx_rq_alempty_int | 发送方向的回收描述子队列几乎空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [12] | RW | ena_tx_rq_alfull_int | 发送方向的回收描述子队列几乎满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [11] | RW | ena_tx_bq_empty_int | 发送方向的buff描述子队列空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [10] | RW | ena_tx_bq_full_int | 发送方向的buff描述子队列满中断使能。 0:不使能。 1:使能 | 0x0 |
| [9] | RW | ena_tx_bq_alempty_int | 发送方向的buff描述子队列几乎空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [8] | RW | ena_tx_bq_alfull_int | 发送方向的buff描述子队列几乎满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [7] | RW | ena_rx_bq_empty_int | 接收方向的buff描述子队列空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [6] | RW | ena_rx_bq_full_int | 接收方向的buff描述子队列满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [5] | RW | ena_rx_bq_alempty_int | 接收方向的buff描述子队列几乎空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [4] | RW | ena_rx_bq_alfull_int | 接收方向的buff描述子队列几乎满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [3] | RW | ena_rx_fq_empty_int | 接收方向的空闲描述子队列空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [2] | RW | ena_rx_fq_full_int | 接收方向的空闲描述子队列满中断使能。 0:不使能; 1:使能。 | 0x0 |
| [1] | RW | ena_rx_fq_alempty_int | 接收方向的空闲描述子队列几乎空中断使能。 0:不使能; 1:使能。 | 0x0 |
| [0] | RW | ena_rx_fq_alfull_int | 接收方向的空闲描述子队列几乎满中断使能。 0:不使能; 1:使能。 | 0x0 |
STATUS_PMU_INT
STATUS_PMU_INT为PMU模块中断状态寄存器。
Offset Address: 0x05C8 Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31] | - | reserved | 保留。 | 0x0 |
| [30] | RW | status_mac_fifo_err_int | MAC内部FIFO又空又满错误中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [29] | RW | status_tx_rq_in_timeout_int | 发送方向的RQ队列描述子入队超时中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [28] | RW | status_rx_bq_in_timeout_int | 接收方向的BQ队列描述子入队超时中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [27] | RW | status_txoutcff_full_int | 发送方向DESC_OUTCFF满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [26] | RW | status_txoutcff_empty_int | 发送方向DESC_OUTCFF空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [25] | RW | status_txcff_full_int | 发送方向DESC_FIFO满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [24] | RW | status_txcff_empty_int | 发送方向DESC_FIFO空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [23] | RW | status_rxoutcff_full_int | 接收方向DESC_OUTCFF满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [22] | RW | status_rxoutcff_empty_int | 接收方向DESC_OUTCFF空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [21] | RW | status_rxcff_full_int | 接收方向DESC_FIFO满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [20] | RW | status_rxcff_empty_int | 接收方向DESC_FIFO空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [19] | RW | status_tx_rq_in_int | 发送方向tx_rq队列的描述子入队(多个或者单个描述子入队)中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [18] | RW | status_tx_bq_out_int | 发送方向tx_bq队列的描述子出队(多个或者单个描述子出队)中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [17] | RW | status_rx_bq_in_int | 接收方向rx_bq队列的描述子入队(多个或者单个描述子入队)中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [16] | RW | status_rx_fq_out_int | 接收方向rx_fq队列的描述子出队(多个或者单个描述子出队)中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [15] | RW | status_tx_rq_empty_int | 发送方向的回收描述子队列空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [14] | RW | status_tx_rq_full_int | 发送方向的回收描述子队列满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [13] | RW | status_tx_rq_alempty_int | 发送方向的回收描述子队列几乎空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [12] | RW | status_tx_rq_alfull_int | 发送方向的回收描述子队列几乎满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [11] | RW | status_tx_bq_empty_int | 发送方向的buff描述子队列空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [10] | RW | status_tx_bq_full_int | 发送方向的buff描述子队列满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [9] | RW | status_tx_bq_alempty_int | 发送方向的buff描述子队列几乎空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [8] | RW | status_tx_bq_alfull_int | 发送方向的buff描述子队列几乎满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [7] | RW | status_rx_bq_empty_int | 接收方向的buff描述子队列空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [6] | RW | status_rx_bq_full_int | 接收方向的buff描述子队列满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [5] | RW | status_rx_bq_alempty_int | 接收方向的buff描述子队列几乎空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [4] | RW | status_rx_bq_alfull_int | 接收方向的buff描述子队列几乎满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [3] | RW | status_rx_fq_empty_int | 接收方向的空闲描述子队列空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [2] | RW | status_rx_fq_full_int | 接收方向的空闲描述子队列满中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [1] | RW | status_rx_fq_alempty_int | 接收方向的空闲描述子队列几乎空中断状态。 0:无中断; 1:有中断。 | 0x0 |
| [0] | RW | status_rx_fq_alfull_int | 接收方向的空闲描述子队列几乎满中断状态。 0:无中断; 1:有中断。 | 0x0 |
DESC_WR_RD_ENA
DESC_WR_RD_ENA为cff读写描述子使能寄存器。
Offset Address: 0x05CC Total Reset Value: 0x0000_0000
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:4] | RO | reserved | 保留。 | 0x0000000 |
| [3] | RW | rx_outcff_wr_desc_ena | 接收方向的RX_OUTCFF向RX_BQ中写入desc使能。 0:不使能; 1:使能。 | 0x0 |
| [2] | RW | rx_cff_rd_desc_ena | 接收方向的RX_CFF从空闲描述子队列中读取desc使能。 0:不使能; 1:使能。 | 0x0 |
| [1] | RW | tx_outcff_wr_desc_ena | 发送方向的TX_OUTCFF向TX_RQ中写入desc使能。 0:不使能; 1:使能。 | 0x0 |
| [0] | RW | tx_cff_rd_desc_ena | 发送方向的TX_CFF从TX_BQ中读取desc使能。 0:不使能; 1:使能。 | 0x0 |
MAC_IF_STAT_CTRL
MAC_IF_STAT_CTRL为MAC_IF模式控制寄存器寄存器。
Offset Address: 0x300C Total Reset Value: 0x0000_003F
| Bits | Access | Name | Description | Reset |
|---|---|---|---|---|
| [31:8] | - | reserved | 保留。 | 0x000000 |
| [7:5] | RW | phy_select | PHY接口模式。 001:RGMII mode; 100:RMII mode; 其他:保留。 | 0x1 |
| [4] | RW | duplex_mode | PHY双工模式。 0:半双工模式; 1:全双工模式。 | 0x1 |
| [3] | RW | tx_config | 发送配置使能信号。 0:Tx Config Disable; 1:Tx Config Enable。 | 0x1 |
| [2] | RW | link_status | PHY连接状态控制。 0:Link Down; 1:Link Up。 | 0x1 |
| [1] | RW | mac_speed | 10/100Mbps模式。 0:10Mbps; 1:100Mbps。 | 0x1 |
| [0] | RW | port_select | 网口模式选择。 0:1000Mbps; 1:10/100Mbps。 | 0x1 |