网络接口
ETH
概述
以太网模块提供了1个Ethernet MAC,实现网络接口数据的接收和发送,可以工作在10Mbit/s或100Mbit/s模式下,支持全双工或者半双工工作模式,提供MII,提供可配置的8组DMAC地址过滤表,可以对网口的输入帧进行选择性过滤接收,同时实现了对CPU端口流量限制功能,保护CPU不被大流量攻击。
功能描述
Ethernet模块有如下功能特点:
- 提供1个Ethernet MAC。
- 支持10Mbit/s或100Mbit/s速率。
- 可工作在全双工或半双工模式。
- 对内置PHY提供MII接口。
- 支持半双工模式下的碰撞回退重传和late collision。
- 支持全双工模式下的流控帧的发送。
- 支持帧长有效性检测,丢弃超长帧和超短帧。
- 支持对输入帧进行CRC校验,可丢弃校验错的帧。
- 支持对输出帧添加CRC校验。
- 支持短帧填充功能。
- 提供自适应功能。
- 提供MDIO接口,MDIO接口时钟频率可调整。
- 提供64个接收和发送共用的帧管理队列。
- 提供流量限制功能,防止针对CPU的流量攻击。
- 支持对接收和发送帧进行统计计数。
- 支持8个可配置的DMAC地址过滤表。
- 对广播帧、组播帧和单播帧支持可配置是否转发或者丢弃。
- 支持SG(Scatter Gather) 分散聚合功能。
- 接收、发送方向都支持COE(Checksum Offload Engine)校验和卸载引擎功能。
- 支持TSO(TCP Segmentation Offload)TCP分段卸载功能。
- 支持UFO(UDP Fragmentation Offload)UDP分段卸载功能。
Ethernet模块逻辑框图如图1所示。
图 1 Ethernet模块逻辑框图

工作方式
收帧过程
初始化时软件需要完成以下操作:
- 软件需要申请与配置的输入队列深度个数相同的缓冲区,每个缓冲区的大小为2KB,然后将缓冲区首地址依次写入到帧输入队列中,写入的次数应刚好等于配置的输入队列的深度。
- 软件需要保证配置的缓冲区在收帧时不能释放。如果配置的首地址为非word对齐地址时,需确保该地址对应的字节地址为可写地址。
当CPU获知有1帧数据需要接收时,执行以下步骤:
- 读取寄存器UD_GLB_IQFRM_DES中的帧描述子(包含输入帧的起始地址和帧长度信息)。
- 处理数据,并将GLB_IRQ_RAW[iraw_rx_up]写1清0(表示CPU收帧结束)。
软件收完1帧数据后需要重新申请一个2KB的缓冲区,并将首地址重新写入到当前输入队列帧描述子中。否则,实际可以使用的输入队列的深度不等于CPU配置的数值,而等于CPU实际分配的缓冲区个数。
CPU接收帧描述子数据结构如表1所示。
表 1 CPU接收帧描述子数据结构
位
|
名称
|
描述
|
[63:32]
|
rxfrm_saddr
|
接收帧的起始地址。
|
[31:18]
|
reserved
|
保留
|
[17:12]
|
fd_in_addr
|
输入队列(iq)待接收帧的相对地址,作为帧存放绝对地址的索引值(0~iq_len–1)。
|
[11:0]
|
fd_in_len
|
输入队列待接收帧帧长度。
|
说明:
查询UD_GLB_ADDRQ_STAT可获得接收队列使用长度。
CPU收帧可以采用中断方式或查询方式。
-
中断方式收帧
CPU使能帧接收中断时,根据是否有帧需要接收,硬件会产生帧接收中断(单包中断和多包中断)int_rx_up(每接收1个报文上报1个中断)和int_rxd_up(每接收到指定报文数目时上报1个中断)通知CPU收帧。中断方式收帧流程如图1所示。
图 1 中断方式收帧流程图

-
查询方式收帧
CPU不使能帧接收中断GLB_IRQ_ENA[ien_rx_up],CPU自动查询GLB_IRQ_RAW[iraw_rx_up],为1表示有帧需要CPU接收。查询方式收帧流程如图2所示。
图 2 查询方式收帧流程图

发帧过程
CPU有帧待发送时,判断当前队列是否有空间发送。如果有空间发送,则分别写该帧Buffer的首地址和帧长到输出队列帧描述子中。CPU先写入首地址,然后写入发送帧的帧长。写发送帧的帧长触发硬件将该输出帧的首地址和帧长信息写入到输出队列中等待发送。因此,软件应该控制不能任意写帧长寄存器,每写该寄存器一次会导致发送一个数据包。
帧格式如下:
CPU发帧流程如图1所示。
图 1 CPU发帧流程图

CPU发出的帧在SDRAM中缓存时,不包括帧描述子。写帧描述子到UD_GLB_EQ_ADDR及UD_GLB_EQFRM_LEN,通知Ethernet将该帧(描述子)入队。CPU发送帧描述子数据结构如表1所示。
表 1 CPU发送帧描述子数据结构
位
|
名称
|
描述
|
[63:32]
|
start_addr_eq
|
发送一个帧的首地址。
|
[31]
|
tso_flag
|
是否执行TSO操作
0:不执行TSO操作
1:执行TSO操作
|
[30]
|
vlan_flag
|
当前报文是否有VLAN标识
0:当前报文无VLAN标识
1:当前报文有VLAN标识
|
[29]
|
ip_version
|
当前报文IP协议版本
0:IPv4
1:IPv6
|
[28]
|
protocol_type
|
当前报文传输层协议类型
0:TCP
1:UDP
|
[27]
|
tx_coe_flag
|
是否执行TxCOE
0:不执行TxCOE操作
1:执行TxCOE操作
|
[26]
|
sg_flag
|
是否执行SG操作
0:不执行SG操作
1:执行SG操作
|
[25:24]
|
reserve
|
保留
|
[23:20]
|
ip_hdr_len
|
当前报文IP首部长度,以word(4字节)为单位。
- 若当前报文为IPv4报文,其长度为5~15word
- 若当前报文为IPv6报文,其长度为10word
|
[19:16]
|
protocol_hdr_len
|
- 若当前报文为TCP报文,表示其TCP首部长度,以word(4字节)为单位,取值为5~15word
- 若当前报文为UDP报文,表示其UDP首部长度,以word(4字节)为单位,且取值为2word
|
[15:11]
|
nfrags_num
|
当前描述子指示的SKB中含有的nfrags的个数,最大为16个
|
[10:0]
|
Length
|
当为TSO报文时,Length代表切片报文的MSS
若为SG或BYPASS报文,Length代表整个帧长
|
注:length小于20byte以及大于1900byte的帧将被丢弃,即可发送范围在20~1900之间。
说明:
查询UD_GLB_ADDRQ_STAT可获得当前CPU发送队列使用情况。
CPU发帧可以采用中断方式或查询方式。
-
中断方式发帧
CPU使能Ethernet发包队列由不空到空中断(int_freeeq_up),同时设置允许该中断通知CPU。此时如果Ethernet输出队列由不空到空,说明Ethernet可以发送帧,硬件产生中断通知CPU,表示CPU可以发帧。
如果软件需要发送帧,但是当前输出队列已满,则软件可以使能该中断。当输出队列为空后,产生中断,通知软件发送等待的帧。软件可以使用该中断一次发送一组帧,同时在该中断有效时释放上次发送的一组帧的缓冲区。
-
查询方式发帧
软件查询自己内部的发帧计数,如果计数小于配置的输出队列长度,则可以直接将待发送的帧通知Ethernet,同时建立对应的发帧索引表,索引表项内容为写入到Ethernet输出队列的输出帧首地址。当Ethernet发送完1帧后,通过输出队列的地址通知CPU释放对应的发送缓冲区,CPU通过该输出队列的地址查找到对应的发送缓冲区并释放。
中断管理
中断状态寄存器
指示产生的中断类型,具体内容请参见“全局控制寄存器”中的“GLB_IRQ_STAT”。
中断使能寄存器
控制是否产生相应的中断,具体内容请参见“全局控制寄存器”中的“GLB_IRQ_ENA”。如果使能某中断,其中断状态会写入到相应的中断状态寄存器中。
原始中断状态寄存器
可以读取某种类型的原始中断传送给CPU,具体内容请参见“全局控制寄存器”中的“GLB_IRQ_RAW”。在需要清除中断状态时,必须先清除该中断的原始中断,原始中断清除后,中断状态会自动清除。
流量控制
对于软件接收的帧,当单位时间间隔内接收到的帧超过软件配置上限时,则将后续接收的帧按配置进行选择性丢弃。软件可配置超过流量限制后丢弃广播帧、组播帧或者单播帧(通过UD_GLB_FC_DROPCTRL配置)。流量限制阈值通过UD_GLB_FC_RXLIMIT设置。
软件可配置寄存器UD_GLB_FC_TIMECTRL来设置流量限制的时间间隔。使用1个10bit时间间隔寄存器,最大可以是1023个时间粒度。时间间隔粒度采用17bit计数器,对主时钟进行计数,默认值是100000,对于100MHz主时钟时间粒度为1ms。软件可配置(20bit寄存器)流量限制上限值的大小,若配置为0表示不进行流量限制全部接收。
寄存器概览
说明:
寄存器基地址为0x1029_0000。
MDIO控制寄存器
MDIO控制寄存器概览如表1所示。
表 1 MDIO控制寄存器概览
偏移地址
|
名称
|
描述
|
0x1100
|
MDIO_RWCTRL
|
MDIO命令字寄存器
|
0x1104
|
MDIO_RO_DATA
|
读数据寄存器
|
0x0108
|
UD_MDIO_PHYADDR
|
PHY物理地址寄存器
|
0x010C
|
UD_MDIO_RO_STAT
|
PHY芯片状态寄存器
|
0x0114
|
UD_MDIO_IRQENA
|
端口状态变化扫描屏蔽寄存器
|
MAC控制寄存器
MAC控制寄存器概览如表1所示。
表 1 MAC控制寄存器概览
偏移地址
|
名称
|
描述
|
0x0200
|
UD_MAC_PORTSEL
|
端口工作状态控制寄存器
|
0x0204
|
UD_MAC_RO_STAT
|
端口状态寄存器
|
0x0208
|
UD_MAC_PORTSET
|
端口设定工作状态寄存器
|
0x020C
|
UD_MAC_STAT_CHANGE
|
端口状态改变指示寄存器
|
0x0210
|
UD_MAC_SET
|
MAC功能设置寄存器
|
全局控制寄存器
Ethernet全局控制寄存器概览如表1所示。
表 1 全局控制寄存器概览
偏移地址
|
名称
|
描述
|
0x1300
|
GLB_HOSTMAC_L32
|
本机MAC地址低32bit寄存器
|
0x1304
|
GLB_HOSTMAC_H16
|
本机MAC地址高16bit寄存器
|
0x1308
|
GLB_SOFT_RESET
|
内部软复位寄存器
|
0x1310
|
GLB_FWCTRL
|
转发控制寄存器
|
0x1314
|
GLB_MACTCTRL
|
MAC过滤表控制寄存器
|
0x1318
|
GLB_ENDIAN_MOD
|
大小端控制寄存器
|
0x1330
|
GLB_IRQ_STAT
|
中断状态寄存器
|
0x1334
|
GLB_IRQ_ENA
|
中断使能寄存器
|
0x1338
|
GLB_IRQ_RAW
|
原始中断寄存器
|
0x1400
|
GLB_MAC0_L32
|
过滤表MAC0的低32bit寄存器
|
0x1404
|
GLB_MAC0_H16
|
过滤表MAC0的高16bit寄存器
|
0x1408
|
GLB_MAC1_L32
|
过滤表MAC1的低32bit寄存器
|
0x140C
|
GLB_MAC1_H16
|
过滤表MAC1的高16bit寄存器
|
0x1410
|
GLB_MAC2_L32
|
过滤表MAC2的低32bit寄存器
|
0x1414
|
GLB_MAC2_H16
|
过滤表MAC2的高16bit寄存器
|
0x1418
|
GLB_MAC3_L32
|
过滤表MAC3的低32bit寄存器
|
0x141C
|
GLB_MAC3_H16
|
过滤表MAC3的高16bit寄存器
|
0x1420
|
GLB_MAC4_L32
|
过滤表MAC4的低32bit寄存器
|
0x1424
|
GLB_MAC4_H16
|
过滤表MAC4的高16bit寄存器
|
0x1428
|
GLB_MAC5_L32
|
过滤表MAC5的低32bit寄存器
|
0x142C
|
GLB_MAC5_H16
|
过滤表MAC5的高16bit寄存器
|
0x1430
|
GLB_MAC6_L32
|
过滤表MAC6的低32bit寄存器
|
0x1434
|
GLB_MAC6_H16
|
过滤表MAC6的高16bit寄存器
|
0x1438
|
GLB_MAC7_L32
|
过滤表MAC7的低32bit寄存器
|
0x143C
|
GLB_MAC7_H16
|
过滤表MAC7的高16bit寄存器
|
0x0340
|
UD_GLB_IRQN_SET
|
多包中断配置寄存器
|
0x0344
|
UD_GLB_QLEN_SET
|
队列长度配置寄存器
|
0x0348
|
UD_GLB_FC_LEVEL
|
流控控制寄存器
|
0x034C
|
UD_GLB_CAUSE
|
报文上送CPU的Cause寄存器
|
0x0350
|
UD_GLB_RXFRM_SADDR
|
输入帧起始地址寄存器
|
0x0354
|
UD_GLB_IQFRM_DES
|
输入帧描述子寄存器
|
0x0358
|
UD_GLB_IQ_ADDR
|
输入帧首地址寄存器
|
0x035C
|
UD_GLB_BFC_STAT
|
转发缓存流控状态和多包中断老化时间计数器
|
0x0360
|
UD_GLB_EQ_ADDR
|
输出队列首地址寄存器
|
0x0364
|
UD_GLB_EQFRM_LEN
|
输出队列帧长配置寄存器
|
0x0368
|
UD_GLB_QSTAT
|
队列状态寄存器
|
0x036C
|
UD_GLB_ADDRQ_STAT
|
地址队列状态寄存器
|
0x0370
|
UD_GLB_FC_TIMECTRL
|
流量限制时间配置寄存器
|
0x0374
|
UD_GLB_FC_RXLIMIT
|
流量限制水线配置寄存器
|
0x0378
|
UD_GLB_FC_DROPCTRL
|
流量限制丢包控制寄存器
|
0x0380
|
UD_GLB_RX_COE_EN
|
接收方向coe使能开关寄存器
|
统计计数控制寄存器
统计计数控制寄存器概览如表1所示。
表 1 统计计数控制寄存器概览
偏移地址
|
名称
|
描述
|
0x0584
|
UD_STS_PORTCNT
|
端口部分状态计数器
|
0x05A0
|
UD_PORT2CPU_PKTS
|
CPU接收上行或下行端口总包数寄存器
|
0x05A4
|
UD_CPU2IQ_ADDRCNT
|
CPU配置收包地址队列次数寄存器
|
0x05A8
|
UD_RX_IRQCNT
|
上行或下行端口上报单包中断次数寄存器
|
0x05AC
|
UD_CPU2EQ_PKTS
|
CPU发往上行或下行发送端口总包数寄存器
|
统计结果寄存器
统计结果寄存器概览如表1所示。
表 1 统计结果寄存器概览
偏移地址
|
名称
|
描述
|
0x0600
|
UD_RX_DVCNT
|
RXDV上升沿次数寄存器
|
0x0604
|
UD_RX_OCTS
|
接收的总字节数寄存器
|
0x0608
|
UD_RX_RIGHTOCTS
|
接收正确包总字节数寄存器
|
0x060C
|
UD_HOSTMAC_PKTS
|
匹配本机MAC的包数寄存器
|
0x0610
|
UD_RX_RIGHTPKTS
|
端口接收的总包数寄存器
|
0x0614
|
UD_RX_BROADPKTS
|
正确的广播包数寄存器
|
0x0618
|
UD_RX_MULTPKTS
|
正确的组播包数寄存器
|
0x061C
|
UD_RX_UNIPKTS
|
正确的单播包数寄存器
|
0x0620
|
UD_RX_ERRPKTS
|
错包总包数寄存器
|
0x0624
|
UD_RX_CRCERR_PKTS
|
CRC错误次数寄存器
|
0x0628
|
UD_RX_LENERR_PKTS
|
包长无效的包数寄存器
|
0x062C
|
UD_RX_OCRCERR_PKTS
|
奇数Nibble的CRC错的包数寄存器
|
0x0630
|
UD_RX_PAUSE_PKTS
|
接收的流控包数寄存器
|
0x0634
|
UD_RF_OVERCNT
|
RXFIFO溢出次数寄存器
|
0x0638
|
UD_FLUX_TOL_IPKTS
|
流量限制入口的总包数寄存器
|
0x063C
|
UD_FLUX_TOL_DPKTS
|
流量限制丢弃的总包数寄存器
|
0x064C
|
UD_MN2CPU_PKTS
|
MAC限制不转发给CPU端口的包数寄存器
|
0x0780
|
UD_TX_PKTS
|
发送成功的总包数寄存器
|
0x0784
|
UD_TX_BROADPKTS
|
发送成功的广播包数寄存器
|
0x0788
|
UD_TX_MULTPKTS
|
发送成功的组播包数寄存器
|
0x078C
|
UD_TX_UNIPKTS
|
发送成功的单播包数寄存器
|
0x0790
|
UD_TX_OCTS
|
发送的总字节数寄存器
|
0x0794
|
UD_TX_PAUSE_PKTS
|
发送的流控帧数目寄存器
|
0x0798
|
UD_TX_RETRYCNT
|
发送过程中总重传次数寄存器
|
0x079C
|
UD_TX_COLCNT
|
发生冲突的总次数寄存器
|
0x07A0
|
UD_TX_LC_PKTS
|
发生LateCollision的包数寄存器
|
0x07A4
|
UD_TX_COLOK_PKTS
|
有冲突但发送成功的包数寄存器
|
0x07A8
|
UD_TX_RETRY15_PKTS
|
重传超15次丢弃的包数寄存器
|
0x07AC
|
UD_TX_RETRYN_PKTS
|
冲突次数等于阈值的包数寄存器
|
寄存器描述
MDIO控制寄存器
MDIO_RWCTRL
MDIO_RWCTRL为MDIO命令字寄存器。该寄存器不支持软复位。
Offset Address: 0x1100 Total Reset Value: 0x0000_8000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:16]
|
RW
|
cpu_data_in
|
MDIO模块对PHY进行写操作的数据。
进行写操作时,CPU将要对MDIO写入的16bit数据先写入到该寄存器中。
|
0x0000
|
[15]
|
RW
|
finish
|
PHY的读/写操作完成。
0:未完成;
1:完成。
当要进行第2次读/写操作时,CPU要先对该位进行清零。
|
0x1
|
[14]
|
RO
|
reserved
|
保留。
|
0x0
|
[13]
|
RW
|
rw
|
控制对PHY的访问为读操作还是写操作。
0:读操作;
1:写操作。
|
0x0
|
[12:8]
|
RW
|
phy_exaddr
|
对外部操作的PHY的对应外部物理地址。
1个MDIO可以对外面的多个PHY进行读写访问。每个PHY有1个相应的地址。当外部只连接1个PHY芯片时,其等价于UD_MDIO_PHYADDR[phy0_addr]或者UD_MDIO_PHYADDR[phy1_addr]。
|
0x00
|
[7:5]
|
RW
|
frq_dv
|
对外部PHY进行读写操作时,对MDC(MDIO接口时钟)的分频系数。
以主时钟频率100MHz为例,frq_dv与MDC频率对应关系如下:
000:对工作主时钟50分频,分频后的频率为2MHz;
001:对工作主时钟100分频,分频后的频率为1MHz;
010:对工作主时钟200分频,分频后的频率为500kHz;
011:对工作主时钟400分频,分频后的频率为250kHz;
100:对工作主时钟800分频,分频后的频率为125kHz;
101:对工作主时钟1600分频,分频后的频率为62.5kHz;
110:对工作主时钟3200分频,分频后的频率为31.25kHz;
111:对工作主时钟6400分频,分频后的频率为15.625kHz。
|
0x0
|
[4:0]
|
RW
|
phy_inaddr
|
对外部操作的PHY芯片的内部寄存器地址,用5bit二进制数表示。
|
0x00
|
MDIO_RO_DATA
MDIO_RO_DATA为读数据寄存器。该寄存器不支持软复位。
Offset Address: 0x1104 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:16]
|
RO
|
reserved
|
保留。
|
0x0000
|
[15:0]
|
RO
|
cpu_data_out
|
用于MDIO模块对PHY进行读操作的数据寄存器,将从PHY读取的16bit数据先写入到该寄存器中。
|
0x0000
|
UD_MDIO_PHYADDR
UD_MDIO_PHYADDR为PHY物理地址寄存器。该寄存器不支持软复位。
Offset Address: 0x0108 Total Reset Value: 0x0000_0001
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:5]
|
RO
|
reserved
|
保留。
|
0x0000000
|
[4:0]
|
RW
|
phy_addr
|
外部连接的物理层PHY芯片的外部物理地址。
|
0x01
|
UD_MDIO_RO_STAT
UD_MDIO_RO_STAT为PHY芯片状态寄存器。该寄存器不支持软复位。
Offset Address: 0x010C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:3]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[2]
|
RO
|
speed_mdio2mac
|
从MDIO接口得到的端口速度工作状态,处于10Mbit/s或100Mbit/s工作方式。
0:10Mbit/s工作方式;
1:100Mbit/s工作方式。
|
0x0
|
[1]
|
RO
|
link_mdio2mac
|
从MDIO接口得到的端口链接状态。
0:无链接;
1:有链接。
|
0x0
|
[0]
|
RO
|
duplex_mdio2mac
|
从MDIO接口得到的端口双工工作状态。
0:半双工;
1:全双工。
|
0x0
|
UD_MDIO_IRQENA
UD_MDIO_IRQENA为端口状态变化扫描屏蔽寄存器。该寄存器不支持软复位。
说明:
link_partner状态变化是指PHY状态的link、speed、duplex任意一位发生变化。
Offset Address: 0x0114 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:4]
|
RO
|
reserved
|
保留。
|
0x0000000
|
[3]
|
RW
|
link_partner_ch_mask
|
端口link partner状态扫描变化中断屏蔽。
0:屏蔽;
1:不屏蔽。
|
0x0
|
[2]
|
RW
|
speed_ch_mask
|
端口速度模式扫描变化中断屏蔽。
0:屏蔽;
1:不屏蔽。
|
0x0
|
[1]
|
RW
|
link_ch_mask
|
端口连接模式扫描变化中断屏蔽。
0:屏蔽;
1:不屏蔽。
|
0x0
|
[0]
|
RW
|
duplex_ch_mask
|
端口双工模式扫描变化中断屏蔽。
0:屏蔽;
1:不屏蔽。
|
0x0
|
MAC控制寄存器
MAC控制寄存器为端口控制类寄存器。当端口状态有效时,对MAC控制寄存器进行配置后,需要进行一次软件复位。
UD_MAC_PORTSEL
UD_MAC_PORTSEL为端口工作状态控制寄存器。该寄存器不支持软复位。
Offset Address: 0x0200 Total Reset Value: 0x0000_0001
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:2]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[1]
|
RW
|
mii
|
端口接口模式选择。
0:MII接口;
1:保留。
|
0x0
|
[0]
|
RW
|
stat_ctrl
|
端口工作状态信息选择控制寄存器。
0:使用从MDIO接口获得的状态信息;
1:使用CPU设定的状态信息。
|
0x1
|
UD_MAC_RO_STAT
UD_MAC_RO_STAT为端口状态寄存器。该寄存器不支持软复位。
Offset Address: 0x0204 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:3]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[2]
|
RO
|
speed_stat
|
端口当前速度模式。
0:10Mbit/s模式;
1:100Mbit/s模式。
|
0x0
|
[1]
|
RO
|
link_stat
|
端口当前链接状态。
0:无链接;
1:有链接。
|
0x0
|
[0]
|
RO
|
duplex_stat
|
端口当前双工模式。
0:半双工;
1:全双工。
|
0x0
|
UD_MAC_PORTSET
UD_MAC_PORTSET为端口设定工作状态寄存器。该寄存器不支持软复位。
Offset Address: 0x0208 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:3]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[2]
|
RW
|
speed_stat_dio
|
CPU设定端口速度模式。
0:10Mbit/s模式;
1:100Mbit/s模式。
|
0x0
|
[1]
|
RW
|
link_stat_dio
|
CPU设定端口链接状态。
0:无链接;
1:有链接。
|
0x0
|
[0]
|
RW
|
duplex_stat_dio
|
CPU设定端口双工模式。
0:半双工;
1:全双工。
|
0x0
|
UD_MAC_STAT_CHANGE
UD_MAC_STAT_CHANGE为端口状态改变指示寄存器。该寄存器不支持软复位。
Offset Address: 0x020C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:3]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[2]
|
WC
|
speed_stat_ch
|
端口速度模式改变指示。
0:无改变;
1:改变。
该寄存器写1清0。
|
0x0
|
[1]
|
WC
|
link_stat_ch
|
端口链接状态改变指示。
0:无改变;
1:改变。
该寄存器写1清0。
|
0x0
|
[0]
|
WC
|
duplex_stat_ch
|
端口双工模式改变指示。
0:无改变;
1:改变。
该寄存器写1清0。
|
0x0
|
UD_MAC_SET
UD_MAC_SET为MAC功能设置寄存器。该寄存器不支持软复位。
Offset Address: 0x0210 Total Reset Value: 0x2027_55EE
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:30]
|
-
|
reserved
|
保留。
|
0x0
|
[29]
|
RW
|
add_pad_en
|
端口发送时自动添加PAD使能。
0:禁止;
1:使能。
|
0x1
|
[28]
|
RW
|
crcgen_dis
|
端口CRC生成禁止控制。
0:输出帧重新计算CRC;
1:输出帧不重新计算CRC。
|
0x0
|
[27]
|
RW
|
cntr_rdclr_en
|
端口统计计数器读清空使能。
0:禁止;
1:使能。
|
0x0
|
[26]
|
RW
|
cntr_clr_all
|
端口统计计数器清空控制。
0:不清空;
1:清空。
若cntr_clr_all为1,则在下次全清时需要置0后再置为1才会执行全清操作。
|
0x0
|
[25]
|
RW
|
cntr_roll_dis
|
端口统计非循环计数使能。
0:禁止;
1:使能。
|
0x0
|
[24:21]
|
RW
|
colthreshold
|
端口冲突次数统计阈值。
缺省为0x1,表示出现一次冲突的帧的个数。
|
0x1
|
[20]
|
-
|
reserved
|
保留。
|
0x0
|
[19]
|
-
|
reserved
|
保留。
|
0x0
|
[18]
|
RW
|
pause_en
|
端口流控帧发送使能。
0:禁止;
1:使能。
|
0x1
|
[17]
|
RW
|
rx_shframe_en
|
端口短帧接收使能。
0:禁止;
1:使能。
rx_shframe_en配置为1时,端口允许接收的最小帧长为rx_min_thr配置帧长;rx_shframe_en配置为0时,端口允许接收的最小帧长缺省为64byte(含CRC)。
|
0x1
|
[16:11]
|
RW
|
rx_min_thr
|
端口允许接收的最小帧长。
取值范围为42byte~63byte,缺省为42byte。
若rx_min_thr配置值小于42,将取值为42。
|
0x2A
|
[10:0]
|
RW
|
len_max
|
端口允许接收的最大帧长,缺省为1518byte。
取值范围为1518byte~1535byte。
若len_max配置大于2000,将取值2000;若len_max配置小于256,将取值256。
|
0x5EE
|
全局控制寄存器
GLB_HOSTMAC_L32
GLB_HOSTMAC_L32为本机MAC地址低32bit寄存器。该寄存器不支持软复位。
Offset Address: 0x1300 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
local_mac
|
本机MAC的低32bit。
|
0x00000000
|
GLB_HOSTMAC_H16
GLB_HOSTMAC_H16为本机MAC地址高16bit寄存器。该寄存器不支持软复位。
Offset Address: 0x1304 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:16]
|
RO
|
reserved
|
保留。
|
0x0000
|
[15:0]
|
RW
|
local_mac[47:32]
|
本机MAC的高16bit。
|
0x0000
|
GLB_SOFT_RESET
GLB_SOFT_RESET为内部软复位寄存器。
说明:
所有软复位时间须保持2ms以上。
Offset Address: 0x1308 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:1]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[0]
|
RW
|
soft_reset
|
内部软复位。
0:不复位;
1:复位。
进入软复位状态后,若要撤消软复位,需将该位置0。
|
0x0
|
GLB_FWCTRL
GLB_FWCTRL为转发控制寄存器。该寄存器不支持软复位。
Offset Address: 0x1310 Total Reset Value: 0x0000_0020
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:8]
|
RO
|
reserved
|
保留。
|
0x000000
|
[7]
|
RW
|
fwall2cpu_up
|
端口所有输入的有效帧是否都强制转发给CPU端口。
0:否;
1:是。
|
0x0
|
[6]
|
RO
|
reserved
|
保留。
|
0x0
|
[5]
|
RW
|
fw2cpu_ena_up
|
端口输入帧转发给CPU端口使能。
0:禁止;
1:使能。
|
0x1
|
[4:0]
|
RO
|
reserved
|
保留。
|
0x00
|
GLB_MACTCTRL
GLB_MACTCTRL为MAC过滤表控制寄存器。该寄存器不支持软复位。
说明:
- 目的MAC地址最高字节为偶数是单播帧。
- 目的MAC地址最高字节为奇数是组播帧。
- 目的MAC地址所有字节为全0xFF的是广播帧。
Offset Address: 0x1314 Total Reset Value: 0x0000_0020
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:8]
|
RO
|
reserved
|
保留。
|
0x000000
|
[7]
|
RW
|
mact_ena_up
|
端口所有MAC过滤器总使能位。
0:不使用任何MAC过滤器;
1:使用MAC过滤器。
|
0x0
|
[6]
|
RO
|
reserved
|
保留。
|
0x0
|
[5]
|
RW
|
broad2cpu_up
|
端口输入的广播帧是否转发给CPU端口。
0:不转发给CPU端口;
1:转发给CPU端口。
|
0x1
|
[4]
|
RO
|
reserved
|
保留。
|
0x0
|
[3]
|
RW
|
multi2cpu_up
|
端口输入的非过滤表中的组播帧是否转发给CPU端口。
0:不转发给CPU端口;
1:转发给CPU端口。
|
0x0
|
[2]
|
RO
|
reserved
|
保留。
|
0x0
|
[1]
|
RW
|
uni2cpu_up
|
端口输入的非过滤表中的单播帧是否转发给CPU端口。
0:不转发给CPU端口;
1:转发给CPU端口。
|
0x0
|
[0]
|
RO
|
reserved
|
保留。
|
0x0
|
GLB_ENDIAN_MOD
GLB_ENDIAN_MOD为大小端控制寄存器。该寄存器不支持软复位。
Offset Address: 0x1318 Total Reset Value: 0x0000_0003
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:2]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[1]
|
RW
|
in_endian
|
收包写SDRAM大小端配置。
0:big-endian模式;
1:little-endian模式。
数据按字节翻转。
|
0x1
|
[0]
|
RW
|
out_endian
|
发包读SDRAM大小端配置。
0:big-endian模式;
1:little-endian模式。
|
0x1
|
GLB_IRQ_STAT
GLB_IRQ_STAT为中断状态寄存器。该寄存器不支持软复位。
Offset Address: 0x1330 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:13]
|
RO
|
reserved
|
保留。
|
0x00000
|
[12]
|
RO
|
int_mdio_finish
|
MDIO完成CPU操作指示。
0:MDIO未完成CPU操作;
1:MDIO已完成CPU操作,产生中断。
进入该中断程序后,查询MDIO_RWCTRL[finish],判断MDIO操作是否完成。
|
0x0
|
[11:8]
|
RO
|
reserved
|
保留。
|
0x0
|
[7]
|
RO
|
int_rxd_up
|
端口有(多个)帧等待CPU接收中断指示(多包中断)。
0:中断无效;
1:中断有效,输入队列中有帧等待CPU接收。
当发生该中断后,需要查询GLB_IRQ_RAW[iraw_rxd_up]信号是否有效来判断是否有帧等待接收。
|
0x0
|
[6]
|
RO
|
int_freeeq_up
|
端口输出队列由不空到空中断,表示输出队列缓冲区由不空到空,指示CPU可以写入新的待发送的一组帧。
0:没有产生中断;
1:输出队列由不空到空中断。
进入该中断程序后,软件通过查询UD_GLB_ADDRQ_STAT[eq_cnt]判断当前输出队列是否为空,如果不为空,说明该中断为无效中断。
|
0x0
|
[5]
|
RO
|
int_stat_up
|
端口状态改变中断信号,表示MDIO自适应到PHY芯片的速度变化、双工模式变化和连接状态变化时产生中断。
0:没有产生中断;
1:端口状态改变中断。
进入该中断程序后,软件根据UD_MDIO_IRQENA的配置值决定是什么状态发生变化。
|
0x0
|
[4]
|
RO
|
int_duplex_up
|
端口双工模式变化中断指示。
0:双工模式没有变化;
1:双工模式发生变化,产生中断。
进入该中断程序后,查询UD_MAC_STAT_CHANGE[duplex_stat_ch],判断是否发生双工状态改变。
|
0x0
|
[3]
|
RO
|
int_speed_up
|
端口速度模式变化中断指示。
0:速度模式没有变化;
1:速度模式发生变化,产生中断。
进入该中断程序后,查询UD_MAC_STAT_CHANGE[speed_stat_ch],判断是否发生速度状态改变。
|
0x0
|
[2]
|
RO
|
int_link_up
|
端口连接状态变化中断指示。
0:连接状态没有变化;
1:连接状态发生变化,产生中断。
进入该中断程序后,查询UD_MAC_STAT_CHANGE[link_stat_ch],判断是否发生连接状态改变。
|
0x0
|
[1]
|
RO
|
int_tx_up
|
端口发送完来自CPU的1帧数据指示。
0:未发送完;
1:已发送完,产生中断。
当发生该中断后,需要查询UD_GLB_QSTAT中的输出队列当前的出队地址eq_out_index,判断是否释放输出帧的缓存空间。
|
0x0
|
[0]
|
RO
|
int_rx_up
|
端口有帧等待CPU接收中断指示。
0:中断无效;
1:中断有效,输入队列中有帧等待CPU接收。
当发生该中断后,需要查询GLB_IRQ_RAW[iraw_rxd_up]信号是否有效来判断是否有帧等待接收。
|
0x0
|
GLB_IRQ_ENA
GLB_IRQ_ENA为中断使能寄存器。该寄存器不支持软复位。
Offset Address: 0x1334 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:20]
|
RO
|
reserved
|
保留。
|
0x000
|
[19]
|
RW
|
ien_all
|
所有中断使能。
0:禁止(所有中断都不能上报);
1:使能(所有中断按配置对应上报)。
|
0x0
|
[18]
|
RW
|
ien_up
|
所有上行端口中断使能。
0:禁止(所有上行端口中断都不能上报);
1:使能(所有上行端口中断按配置对应上报)。
|
0x0
|
[17:13]
|
RO
|
reserved
|
保留。
|
0x00
|
[12]
|
RW
|
ien_mdio_finish
|
MDIO完成CPU操作指示使能。
0:禁止;
1:使能。
|
0x0
|
[11:8]
|
RO
|
reserved
|
保留。
|
0x0
|
[7]
|
RW
|
ien_rxd_up
|
上行端口有(多个)帧等待CPU接收使能(多包中断)。
0:禁止;
1:使能。
|
0x0
|
[6]
|
RW
|
ien_freeeq_up
|
上行端口输出队列由不空到空中断信号使能。
0:禁止;
1:使能。
|
0x0
|
[5]
|
RW
|
ien_stat_up
|
上行端口状态改变中断信号使能。
0:禁止;
1:使能。
|
0x0
|
[4]
|
RW
|
ien_duplex_up
|
上行端口双工模式变化中断使能。
0:禁止;
1:使能。
|
0x0
|
[3]
|
RW
|
ien_speed_up
|
上行端口速度模式变化中断使能。
0:禁止;
1:使能。
|
0x0
|
[2]
|
RW
|
ien_link_up
|
上行端口连接状态变化中断使能。
0:禁止;
1:使能。
|
0x0
|
[1]
|
RW
|
ien_tx_up
|
上行端口发送完来自CPU的1帧数据指示使能。
0:禁止;
1:使能。
|
0x0
|
[0]
|
RW
|
ien_rx_up
|
上行端口有帧等待CPU接收使能。
0:禁止;
1:使能。
|
0x0
|
GLB_IRQ_RAW
GLB_IRQ_RAW为原始中断寄存器。该寄存器不支持软复位,是写1清0寄存器。
Offset Address: 0x1338 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:13]
|
RO
|
reserved
|
保留。
|
0x00000
|
[12]
|
WC
|
iraw_mdio_finish
|
MDIO完成CPU操作的原始中断状态。
0:无中断;
1:有中断。
|
0x0
|
[11:8]
|
RO
|
reserved
|
保留。
|
0x0
|
[7]
|
WC
|
iraw_rxd_up
|
上行端口有(多个)帧等待CPU接收的原始中断状态(多包中断)。
0:无中断;
1:有中断。
|
0x0
|
[6]
|
WC
|
iraw_freeeq_up
|
上行端口输出队列由不空到空的原始中断状态,表示输出队列缓冲区由不空到空,指示CPU可以写入新的待发送的一组帧。
0:无中断;
1:有中断。
|
0x0
|
[5]
|
WC
|
iraw_stat_up
|
上行端口状态改变的原始中断状态,表示MDIO自适应到PHY芯片的速度变化、双工模式变化和连接状态变化时产生中断。
0:无中断;
1:有中断。
|
0x0
|
[4]
|
WC
|
iraw_duplex_up
|
上行端口双工模式变化的原始中断状态。
0:无中断;
1:有中断。
|
0x0
|
[3]
|
WC
|
iraw_speed_up
|
上行端口速度模式变化的原始中断状态。
0:中断无效;
1:速度模式发生变化,产生中断。
该寄存器写1清0。
|
0x0
|
[2]
|
WC
|
iraw_link_up
|
上行端口连接状态变化的原始中断状态。
0:无中断;
1:有中断。
|
0x0
|
[1]
|
WC
|
iraw_tx_up
|
上行端口发送完来自CPU的原始中断状态。
0:无中断;
1:有中断。
|
0x0
|
[0]
|
WC
|
iraw_rx_up
|
上行端口有帧等待CPU接收的原始中断状态。
0:无中断;
1:有中断。
|
0x0
|
GLB_MAC0_L32
GLB_MAC0_L32为过滤表MAC0的低32bit寄存器。
Offset Address: 0x1400 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
flt_mac0
|
过滤表MAC0的低32bit。
|
0x00000000
|
GLB_MAC0_H16
GLB_MAC0_H16为过滤表MAC0的高16bit寄存器。
Offset Address: 0x1404 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:22]
|
RO
|
reserved
|
保留。
|
0x000
|
[21]
|
RW
|
fw2cpu_up
|
上行端口使能本过滤器时,上行端口输入帧命中本过滤器是否转发给CPU端口。
0:否;
1:是。
|
0x0
|
[20:18]
|
RO
|
reserved
|
保留。
|
0x0
|
[17]
|
RW
|
mac0_up
|
本过滤器配置为上行端口使用控制。
0:上行端口不使用该过滤器;
1:上行端口使用该过滤器。
|
0x0
|
[16]
|
RO
|
reserved
|
保留。
|
0x0
|
[15:0]
|
RW
|
flt_mac0
|
过滤表MAC0的高16bit。
|
0x0000
|
GLB_MAC1_L32
GLB_MAC1_L32为过滤表MAC1的低32bit寄存器。
Offset Address: 0x1408 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
flt_mac1
|
过滤表MAC1的低32bit。
|
0x00000000
|
GLB_MAC1_H16
GLB_MAC1_H16为过滤表MAC1的高16bit寄存器。
Offset Address: 0x140C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:22]
|
RO
|
reserved
|
保留。
|
0x000
|
[21]
|
RW
|
fw2cpu_up
|
上行端口使能本过滤器时,上行端口输入帧命中本过滤器是否转发给CPU端口。
0:否;
1:是。
|
0x0
|
[20:18]
|
RO
|
reserved
|
保留。
|
0x0
|
[17]
|
RW
|
mac1_up
|
本过滤器配置为上行端口使用控制。
0:上行端口不使用该过滤器;
1:上行端口使用该过滤器。
|
0x0
|
[16]
|
RO
|
reserved
|
保留。
|
0x0
|
[15:0]
|
RW
|
flt_mac1
|
过滤表MAC1的高16bit。
|
0x0000
|
GLB_MAC2_L32
GLB_MAC2_L32为过滤表MAC2的低32bit寄存器。
Offset Address: 0x1410 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
flt_mac2
|
过滤表MAC2的低32bit。
|
0x00000000
|
GLB_MAC2_H16
GLB_MAC2_H16为过滤表MAC2的高16bit寄存器。
Offset Address: 0x1414 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:22]
|
RO
|
reserved
|
保留。
|
0x000
|
[21]
|
RW
|
fw2cpu_up
|
上行端口使能本过滤器时,上行端口输入帧命中本过滤器是否转发给CPU端口。
0:否;
1:是。
|
0x0
|
[20:18]
|
RO
|
reserved
|
保留。
|
0x0
|
[17]
|
RW
|
mac2_up
|
本过滤器配置为上行端口使用控制。
0:上行端口不使用该过滤器;
1:上行端口使用该过滤器。
|
0x0
|
[16]
|
RO
|
reserved
|
保留。
|
0x0
|
[15:0]
|
RW
|
flt_mac2
|
过滤表MAC2的高16bit。
|
0x0000
|
GLB_MAC3_L32
GLB_MAC3_L32为过滤表MAC3的低32bit寄存器。
Offset Address: 0x1418 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
flt_mac3
|
过滤表MAC3的低32bit。
|
0x00000000
|
GLB_MAC3_H16
GLB_MAC3_H16为过滤表MAC3的高16bit寄存器。
Offset Address: 0x141C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:22]
|
RO
|
reserved
|
保留。
|
0x000
|
[21]
|
RW
|
fw2cpu_up
|
上行端口使能本过滤器时,上行端口输入帧命中本过滤器是否转发给CPU端口。
0:否;
1:是。
|
0x0
|
[20:18]
|
RO
|
reserved
|
保留。
|
0x0
|
[17]
|
RW
|
mac3_up
|
本过滤器配置为上行端口使用控制。
0:上行端口不使用该过滤器;
1:上行端口使用该过滤器。
|
0x0
|
[16]
|
RO
|
reserved
|
保留。
|
0x0
|
[15:0]
|
RW
|
flt_mac3
|
过滤表MAC3的高16bit。
|
0x0000
|
GLB_MAC4_L32
GLB_MAC4_L32为过滤表MAC4的低32bit寄存器。
Offset Address: 0x1420 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
flt_mac4
|
过滤表MAC4的低32bit。
|
0x00000000
|
GLB_MAC4_H16
GLB_MAC4_H16为过滤表MAC4的高16bit寄存器。
Offset Address: 0x1424 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:22]
|
RO
|
reserved
|
保留。
|
0x000
|
[21]
|
RW
|
fw2cpu_up
|
上行端口使能本过滤器时,上行端口输入帧命中本过滤器是否转发给CPU端口。
0:否;
1:是。
|
0x0
|
[20:18]
|
RO
|
reserved
|
保留。
|
0x0
|
[17]
|
RW
|
mac4_up
|
本过滤器配置为上行端口使用控制。
0:上行端口不使用该过滤器;
1:上行端口使用该过滤器。
|
0x0
|
[16]
|
RO
|
reserved
|
保留。
|
0x0
|
[15:0]
|
RW
|
flt_mac4
|
过滤表MAC4的高16bit。
|
0x0000
|
GLB_MAC5_L32
GLB_MAC5_L32为过滤表MAC5的低32bit寄存器。
Offset Address: 0x1428 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
flt_mac5
|
过滤表MAC5的低32bit。
|
0x00000000
|
GLB_MAC5_H16
GLB_MAC5_H16为过滤表MAC5的高16bit寄存器。
Offset Address: 0x142C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:22]
|
RO
|
reserved
|
保留。
|
0x000
|
[21]
|
RW
|
fw2cpu_up
|
上行端口使能本过滤器时,上行端口输入帧命中本过滤器是否转发给CPU端口。
0:否;
1:是。
|
0x0
|
[20:18]
|
RO
|
reserved
|
保留。
|
0x0
|
[17]
|
RW
|
mac5_up
|
本过滤器配置为上行端口使用控制。
0:上行端口不使用该过滤器;
1:上行端口使用该过滤器。
|
0x0
|
[16]
|
RO
|
reserved
|
保留。
|
0x0
|
[15:0]
|
RW
|
flt_mac5
|
过滤表MAC5的高16bit。
|
0x0000
|
GLB_MAC6_L32
GLB_MAC6_L32为过滤表MAC6的低32bit寄存器。
Offset Address: 0x1430 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
flt_mac6
|
过滤表MAC6的低32bit。
|
0x00000000
|
GLB_MAC6_H16
GLB_MAC6_H16为过滤表MAC6的高16bit寄存器。
Offset Address: 0x1434 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:22]
|
RO
|
reserved
|
保留。
|
0x000
|
[21]
|
RW
|
fw2cpu_up
|
上行端口使能本过滤器时,上行端口输入帧命中本过滤器是否转发给CPU端口。
0:否;
1:是。
|
0x0
|
[20:18]
|
RO
|
reserved
|
保留。
|
0x0
|
[17]
|
RW
|
mac6_up
|
本过滤器配置为上行端口使用控制。
0:上行端口不使用该过滤器;
1:上行端口使用该过滤器。
|
0x0
|
[16]
|
RO
|
reserved
|
保留。
|
0x0
|
[15:0]
|
RW
|
flt_mac6
|
过滤表MAC6的高16bit。
|
0x0000
|
GLB_MAC7_L32
GLB_MAC7_L32为过滤表MAC7的低32bit寄存器。
Offset Address: 0x1438 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
flt_mac7
|
过滤表MAC7的低32bit。
|
0x00000000
|
GLB_MAC7_H16
GLB_MAC7_H16为过滤表MAC7的高16bit寄存器。
Offset Address: 0x143C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:22]
|
RO
|
reserved
|
保留。
|
0x000
|
[21]
|
RW
|
fw2cpu_up
|
上行端口使能本过滤器时,上行端口输入帧命中本过滤器是否转发给CPU端口。
0:否;
1:是。
|
0x0
|
[20:18]
|
RO
|
reserved
|
保留。
|
0x0
|
[17]
|
RW
|
mac7_up
|
本过滤器配置为上行端口使用控制。
0:上行端口不使用该过滤器;
1:上行端口使用该过滤器。
|
0x0
|
[16]
|
RO
|
reserved
|
保留。
|
0x0
|
[15:0]
|
RW
|
flt_mac7
|
过滤表MAC7的高16bit。
|
0x0000
|
UD_GLB_IRQN_SET
UD_GLB_IRQN_SET为多包中断配置寄存器。该寄存器不支持软复位。
Offset Address: 0x0340 Total Reset Value: 0x0800_003A
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:29]
|
RO
|
reserved
|
保留。
|
0x0
|
[28:24]
|
RW
|
int_frm_cnt
|
该设置用于多包中断功能,定义为每收到多少个包上报一次多包中断。
int_frm_cnt最小值可配置为1,此时多包中断等同于单包中断。
|
0x08
|
[23:16]
|
RO
|
reserved
|
保留。
|
0x00
|
[15:0]
|
RW
|
age_timer
|
打开多包中断功能后,每经过一定的时间收包数量还未达到上报多包中断所要求的包数,该时间段定义为多包中断产生的老化时间。
age_timer以主时钟256分频周期为计数单位。
|
0x003A
|
UD_GLB_QLEN_SET
UD_GLB_QLEN_SET为队列长度配置寄存器。该寄存器不支持软复位。
Offset Address: 0x0344 Total Reset Value: 0x0000_2020
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:14]
|
RO
|
reserved
|
保留。
|
0x00000
|
[13:8]
|
RW
|
iq_len
|
输入(收包)队列长度配置。
iq_len不得配置为0,否则将会强行置1;配置的iq_len和eq_len之和不得大于64,否则优先满足iq_len的值(非0),eq_len取64–iq_len。
|
0x20
|
[7:6]
|
RO
|
reserved
|
保留。
|
0x0
|
[5:0]
|
RW
|
eq_len
|
输出(发包)队列长度配置。
eq_len不得配置为0,否则将会强行置1。
|
0x20
|
UD_GLB_FC_LEVEL
UD_GLB_FC_LEVEL为流控控制寄存器。该寄存器不支持软复位。
Offset Address: 0x0348 Total Reset Value: 0x3018_0508
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:15]
|
RO
|
reserved
|
保留。
|
0x06030
|
[14]
|
RW
|
qlimit_ena
|
接收队列流控使能。
0:禁止(不根据接收队列状态来发送流控信息);
1:使能(可根据接收队列状态来发送流控信息)。
|
0x0
|
[13:8]
|
RW
|
qlimit_up
|
接收队列流控上限。当输入队列剩余可用队列空间数小于该上限值时,若接收队列流控使能,则发送流控信息给对端。
若上限值qlimit_up配置为0,将无法进入流控状态;
上限值qlimit_up必须比下限值qlimit_down小。
|
0x05
|
[7:6]
|
RO
|
reserved
|
保留。
|
0x0
|
[5:0]
|
RW
|
qlimit_down
|
接收队列解除流控下限。当输入队列剩余可用队列空间数大于或者等于该下限值同时正处于接收流控状态时,解除当前流控状态。
|
0x08
|
UD_GLB_CAUSE
UD_GLB_CAUSE为报文上送CPU的Cause寄存器。该寄存器不支持软复位。
Offset Address: 0x034C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:3]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[2:0]
|
RO
|
mact_cause
|
报文查MAC表的匹配结果类型。
000:强制转发;
001:目的MAC是本机MAC的报文;
010:广播报文;
011:匹配MAC表的报文;
100:不匹配MAC表的组播报文;
101:不匹配MAC表的单播报文;
其他:保留。
|
0x0
|
UD_GLB_RXFRM_SADDR
UD_GLB_RXFRM_SADDR为输入帧起始地址寄存器。该寄存器不支持软复位。
Offset Address: 0x0350 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
rxfrm_saddr
|
接收帧的起始地址。
|
0x00000000
|
UD_GLB_IQFRM_DES
UD_GLB_IQFRM_DES为输入帧描述子寄存器。该寄存器不支持软复位。
Offset Address: 0x0354 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:18]
|
RO
|
reserved
|
保留。
|
0x0000
|
[17:12]
|
RO
|
fd_in_addr
|
输入队列(iq)中等待接收的第一个帧的相对地址,作为帧存放绝对地址的索引值(0~iq_len–1)。
|
0x00
|
[11:0]
|
RO
|
fd_in_len
|
输入队列待接收帧的帧长度。
|
0x000
|
UD_GLB_IQ_ADDR
UD_GLB_IQ_ADDR为输入帧首地址寄存器。该寄存器不支持软复位。
说明:
如果软件分配的地址非word对齐时,逻辑会按照word地址写入数据,只是前面写入的数据为无效数据。例如,配置的帧首地址为0xF000_8002(非word对齐地址),逻辑会在0xF000_8000和0xF000_8001地址都写入0x00(也可能是其他数据),在0xF000_8002写入接收帧的第1个字节(有效数据),在0xF000_8003写入接收帧的第2个字节(有效数据),后续数据依次写入缓冲区。如果是其他非word对齐地址,操作方式类似。
Offset Address: 0x0358 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
startaddr_iq
|
CPU配置的输入帧对应的存储空间的首地址。接收帧根据此地址来申请总线。
|
0x00000000
|
UD_GLB_BFC_STAT
UD_GLB_BFC_STAT为转发缓存流控状态和多包中断老化时间计数器。该寄存器不支持软复位。
Offset Address: 0x035C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:16]
|
RO
|
timerover_cnt
|
多包中断老化时间计数器溢出(计数到配置值)次数计数器。
单位时间内如果timerover_cnt值过大,说明UD_GLB_IRQN_SET[int_frm_cnt]设置不合理,多包中断主要由老化时间触发,需要减少配置值。
|
0x0000
|
[15:0]
|
RO
|
flowctrl_cnt
|
上行端口(或者下行端口)的转发缓存进入流控状态次数计数器。
单位时间内如果flowctrl_cnt值过大,说明UD_GLB_FC_LEVEL[blimit_up]或者UD_GLB_FC_LEVEL[blimit_down]设置过小,或者外部网络状态恶化,可能需要减少配置值。
|
0x0000
|
UD_GLB_EQ_ADDR
UD_GLB_EQ_ADDR为输出队列首地址寄存器。该寄存器不支持软复位。
说明:
如果输出帧的首地址为非word对齐时,逻辑会按照word地址读入数据,只是前面读取的数据为无效数据而丢弃。例如,配置的发送帧首地址为0xF000_8102(非word对齐地址),逻辑会把从地址0xF000_8100和0xF000_8101读入的字节数据直接丢弃,在0xF000_8102读入的数据当作发送帧的第1个字节(有效数据),在0xF000_8103读入的数据为发送帧的第2个字节(有效数据),后续数据都为有效数据(直到读取指定帧长的数据)。如果是其他非word对齐地址,操作方式类似。
Offset Address: 0x0360 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RW
|
add_fd_addr_out
|
CPU添加到输出队列的发送帧的首地址。
|
0x00000000
|
UD_GLB_EQFRM_LEN
UD_GLB_EQFRM_LEN为输出队列帧长配置寄存器。该寄存器不支持软复位。
Offset Address: 0x0364 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:11]
|
RO
|
reserved
|
保留。
|
0x000000
|
[10:0]
|
RW
|
add_fd_len_out
|
CPU添加到输出队列的发送帧的帧长。
配置该寄存器触发硬件将发送帧的首地址和帧长写入到输出队列中等待发送,软件发送帧时必须先写入帧的首地址,然后再写入该帧的帧长。
注意:add_fd_len_out小于20byte以及大于1600byte的帧将被丢弃,即可发送范围在20byte~1600byte之间。
|
0x000
|
UD_GLB_QSTAT
UD_GLB_QSTAT为队列状态寄存器。该寄存器不支持软复位。
Offset Address: 0x0368 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:30]
|
RO
|
reserved
|
保留。
|
0x0
|
[29:24]
|
RO
|
iq_in_index
|
输入(收包)队列入队index。
|
0x00
|
[23:22]
|
RO
|
reserved
|
保留。
|
0x0
|
[21:16]
|
RO
|
cpuw_index
|
输入(收包)队列帧首地址入队index。
|
0x00
|
[15:14]
|
RO
|
reserved
|
保留。
|
0x0
|
[13:8]
|
RO
|
eq_in_index
|
输出(发包)队列描述子入队index。
|
0x00
|
[7:6]
|
RO
|
reserved
|
保留。
|
0x0
|
[5:0]
|
RO
|
eq_out_index
|
输出(发包)队列描述子出队index。
|
0x00
|
UD_GLB_ADDRQ_STAT
UD_GLB_ADDRQ_STAT为地址队列状态寄存器。该寄存器不支持软复位。
Offset Address: 0x036C Total Reset Value: 0x0300_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:26]
|
RO
|
reserved
|
保留。
|
0x00
|
[25]
|
RO
|
cpuaddr_in_rdy
|
CPU是否可配置输入队列帧首地址。
0:否;
1:是。
cpuaddr_in_rdy、eq_in_rdy复位时为0,但复位后将立即被电路置为1。即复位后iq地址队列和eq描述子队列可配。
|
0x1
|
[24]
|
RO
|
eq_in_rdy
|
CPU是否可配置输出队列帧描述子(帧首地址及帧长)
0:否;
1:是。
|
0x1
|
[23:22]
|
RO
|
reserved
|
保留。
|
0x0
|
[21:16]
|
RO
|
cpu_cnt
|
输入队列对CPU分配的可用帧首地址计数。
|
0x00
|
[15:14]
|
RO
|
reserved
|
保留。
|
0x0
|
[13:8]
|
RO
|
iq_cnt
|
输入队列已经使用长度(0~iq_len)。
|
0x00
|
[7:6]
|
RO
|
reserved
|
保留。
|
0x0
|
[5:0]
|
RO
|
eq_cnt
|
输出队列已经使用长度(0~eq_len)。
|
0x00
|
UD_GLB_FC_TIMECTRL
UD_GLB_FC_TIMECTRL为流量限制时间配置寄存器。该寄存器不支持软复位。
Offset Address: 0x0370 Total Reset Value: 0x07FF_86A0
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:27]
|
RO
|
reserved
|
保留。
|
0x00
|
[26:17]
|
RW
|
flux_timer_cfg
|
流量限制时间间隔计数器,对flux_timer_inter产生的分频时钟进行计数。配置为0不进行流量限制。
|
0x3FF
|
[16:0]
|
RW
|
flux_timer_inter
|
流量限制时间粒度计数器,对ETH工作时钟(请参见PERI_CRG3571寄存器)进行计数,默认值为100000。
例如,当ETH工作时钟为54MHz时,如需配置粒度为1ms,则寄存器设置为54000,即1ms/(1/54MHz)=[1 x 10^(-3)]/[(1/54) x 10^(-6)]=54 x 10^3=54000。
|
0x186A0
|
UD_GLB_FC_RXLIMIT
UD_GLB_FC_RXLIMIT为流量限制水线配置寄存器。该寄存器不支持软复位。
Offset Address: 0x0374 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:20]
|
RO
|
reserved
|
保留。
|
0x000
|
[19:0]
|
RW
|
flux_cfg
|
流量限制上限阈值寄存器,该组对流量限制时间间隔内的软件接收帧数进行限制,超过该配置值的帧根据配置选择性进行丢弃或者接收。当配置为全0时,表示不进行流量限制。
|
0x00000
|
UD_GLB_FC_DROPCTRL
UD_GLB_FC_DROPCTRL为流量限制丢包控制寄存器。该寄存器不支持软复位。
Offset Address: 0x0378 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:3]
|
RO
|
reserved
|
保留。
|
0x00000000
|
[2]
|
RW
|
flux_uni
|
流量限制超过上限值时是否丢弃单播包。
0:否;
1:是。
|
0x0
|
[1]
|
RW
|
flux_multi
|
流量限制超过上限值时是否丢弃组播包。
0:否;
1:是。
|
0x0
|
[0]
|
RW
|
flux_broad
|
流量限制超过上限值时是否丢弃广播包。
0:否;
1:是。
|
0x0
|
UD_GLB_RX_COE_EN
UD_GLB_RX_COE_EN为接收方向coe使能开关寄存器。该寄存器不支持软复位。
Offset Address: 0x0380 Total Reset Value: 0x8000_E000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31]
|
RW
|
rx_coe_en
|
接收方向coe使能开关。
|
0x1
|
[30:16]
|
RO
|
reserved
|
保留。
|
0x0000
|
[15]
|
RW
|
iphdr_drop
|
ipv4 ip头checksum错报文丢弃使能开关。
0:透传
1:丢包
|
0x1
|
[14]
|
RW
|
pro_drop
|
tcp/udp checksum错报文丢弃使能开关。
0:透传
1:丢包
|
0x1
|
[13]
|
RW
|
i6udp_drop
|
ipv6 udp checksum域为0非法报文丢弃使能开关。
0:透传
1:丢包
|
0x1
|
[12:0]
|
RO
|
reserved
|
保留。
|
0x0000
|
统计计数控制寄存器
UD_STS_PORTCNT
UD_STS_PORTCNT为端口部分状态计数器。该寄存器不支持软复位。
Offset Address: 0x0584 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:28]
|
RO
|
rxsof_cnt
|
端口接收到帧头计数。
|
0x0
|
[27:24]
|
RO
|
rxeof_cnt
|
端口接收到帧尾计数。
|
0x0
|
[23:20]
|
RO
|
rxcrcok_cnt
|
端口接收到CRC校验正确计数。
|
0x0
|
[19:16]
|
RO
|
rxcrcbad_cnt
|
端口接收到CRC校验错误计数。
|
0x0
|
[15:12]
|
RO
|
txsof_cnt
|
端口发送帧头计数。
|
0x0
|
[11:8]
|
RO
|
txeof_cnt
|
端口发送帧尾计数。
|
0x0
|
[7:4]
|
RO
|
txcrcok_cnt
|
端口发送CRC校验正确计数。
|
0x0
|
[3:0]
|
RO
|
txcrcbad_cnt
|
端口发送CRC校验错误计数。
|
0x0
|
UD_PORT2CPU_PKTS
UD_PORT2CPU_PKTS为CPU接收上行或下行端口总包数寄存器。该寄存器不支持软复位。
Offset Address: 0x05A0 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:16]
|
RO
|
reserved
|
保留。
|
0x0000
|
[15:0]
|
WC
|
pkts_cpu
|
CPU端口接收到的所有包数,该寄存器写0清0,写1无效。
|
0x0000
|
UD_CPU2IQ_ADDRCNT
UD_CPU2IQ_ADDRCNT为CPU配置收包地址队列次数寄存器。该寄存器不支持软复位。
Offset Address: 0x05A4 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:16]
|
RO
|
reserved
|
保留。
|
0x0000
|
[15:0]
|
WC
|
addr_cpu
|
CPU成功配置收包地址队列的次数,该寄存器写0清0,写1无效。
|
0x0000
|
UD_RX_IRQCNT
UD_RX_IRQCNT为上行或下行端口上报单包中断次数寄存器。该寄存器不支持软复位。
Offset Address: 0x05A8 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:16]
|
RO
|
reserved
|
保留。
|
0x0000
|
[15:0]
|
WC
|
pkts_port
|
上报的收帧中断计数,该寄存器写0清0,写1无效。
|
0x0000
|
UD_CPU2EQ_PKTS
UD_CPU2EQ_PKTS为CPU发往上行或下行发送端口总包数寄存器。该寄存器不支持软复位。
Offset Address: 0x05AC Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:16]
|
RO
|
reserved
|
保留。
|
0x0000
|
[15:0]
|
WC
|
pkts_cpu2tx
|
CPU端口发往端口所有报文计数,该寄存器写0清0,写1无效。
|
0x0000
|
统计结果寄存器
统计结果可配置只读和读清0两种模式(UD_MAC_SET[cntr_rdclr_en]设置为1表示读清0模式,设置为0表示只读模式),以下对寄存器的介绍针对只读模式。
UD_RX_DVCNT
UD_RX_DVCNT为RXDV上升沿次数寄存器。该寄存器不支持软复位。
Offset Address: 0x0600 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
rxdvrise
|
所有的RXDV上升沿的计数。
|
0x00000000
|
UD_RX_OCTS
UD_RX_OCTS为接收的总字节数寄存器。该寄存器不支持软复位。
Offset Address: 0x0604 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
ifinoctets
|
所有接收字节的计数,包括正确帧、错误帧以及Preamble中的字节。未检测到有效SFD(Start of Frame Delimiter)的帧不进行统计。
|
0x00000000
|
UD_RX_RIGHTOCTS
UD_RX_RIGHTOCTS为接收正确包总字节数寄存器。该寄存器不支持软复位。
Offset Address: 0x0608 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
octets_rx
|
接收字节计数,包括正确帧和错误帧,但不包括Preamble字节。未检测到有效SFD的帧不进行统计。
|
0x00000000
|
UD_HOSTMAC_PKTS
UD_HOSTMAC_PKTS为匹配本机MAC的包数寄存器。该寄存器不支持软复位。
Offset Address: 0x060C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
local_mac_match
|
接收帧中目的MAC和本机MAC地址相同的正确帧的计数,不包括超短帧、超长帧、CRC错帧、流控帧和传输错帧。
|
0x00000000
|
UD_RX_RIGHTPKTS
UD_RX_RIGHTPKTS为端口接收的总包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0610 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
pkts
|
所有帧的计数。
|
0x00000000
|
UD_RX_BROADPKTS
UD_RX_BROADPKTS为正确的广播包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0614 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
broadcastpkts
|
帧长有效并且CRC正确的广播帧的计数,但不包括流控帧、传输错帧。
|
0x00000000
|
UD_RX_MULTPKTS
UD_RX_MULTPKTS为正确的组播包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0618 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
multicastpkts
|
帧长有效并且CRC正确的组播帧的计数,但不包括流控帧、传输错帧。
|
0x00000000
|
UD_RX_UNIPKTS
UD_RX_UNIPKTS为正确的单播包数寄存器。该寄存器不支持软复位。
Offset Address: 0x061C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
ifinucastpkts
|
帧长有效并且CRC正确的单播帧的计数,但不包括流控帧、传输错帧。
|
0x00000000
|
UD_RX_ERRPKTS
UD_RX_ERRPKTS为错包总包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0620 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
ifinerrors
|
接收的所有错帧计数,包括CRC错帧、超短帧、超长帧和传输错帧。
|
0x00000000
|
UD_RX_CRCERR_PKTS
UD_RX_CRCERR_PKTS为CRC错误次数寄存器。该寄存器不支持软复位。
Offset Address: 0x0624 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
crcerr
|
接收帧的帧长有效(非超短、超长帧),但其CRC或Alignment检查出错的帧的个数。
|
0x00000000
|
UD_RX_LENERR_PKTS
UD_RX_LENERR_PKTS为包长无效的包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0628 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
abnormalsizepkts
|
帧长无效(小于设定的最小有效帧长,或者帧长大于设定的最大有效帧长)的个数(超短帧、超长帧)。
|
0x00000000
|
UD_RX_OCRCERR_PKTS
UD_RX_OCRCERR_PKTS为奇数Nibble的CRC错的包数寄存器。该寄存器不支持软复位。
Offset Address: 0x062C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
dot3alignmenterr
|
接收到的奇数个Nibble的CRC错帧。
|
0x00000000
|
UD_RX_PAUSE_PKTS
UD_RX_PAUSE_PKTS为接收的流控包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0630 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
dot3pause
|
接收的流控帧数。
|
0x00000000
|
UD_RF_OVERCNT
UD_RF_OVERCNT为RXFIFO溢出次数寄存器。该寄存器不支持软复位。
Offset Address: 0x0634 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
dropevents
|
帧接收的过程中,RXFIFO溢出事件的累计次数。
|
0x00000000
|
UD_FLUX_TOL_IPKTS
UD_FLUX_TOL_IPKTS为流量限制入口的总包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0638 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
flux_frame_cnt
|
流量限制输入正确帧的总数计数,不包括超短帧、超长帧、CRC错帧、流控帧和传输错帧。
|
0x00000000
|
UD_FLUX_TOL_DPKTS
UD_FLUX_TOL_DPKTS为流量限制丢弃的总包数寄存器。该寄存器不支持软复位。
Offset Address: 0x063C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
flux_drop_cnt
|
流量限制丢弃正确帧的计数,不包括超短帧、超长帧、CRC错帧、流控帧和传输错帧。
|
0x00000000
|
UD_MN2CPU_PKTS
UD_MN2CPU_PKTS为MAC限制不转发给CPU端口的包数寄存器。该寄存器不支持软复位。
Offset Address: 0x064C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
mac_not2cpu_pkts
|
由于MAC限制不转发CPU端口的包数。
|
0x00000000
|
UD_TX_PKTS
UD_TX_PKTS为发送成功的总包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0780 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
pkts_tx
|
所有配置发送帧的计数,不包含超时丢弃帧以及UD_GLB_EQFRM_LEN配置长度不在有效范围之内的发送帧。
|
0x00000000
|
UD_TX_BROADPKTS
UD_TX_BROADPKTS为发送成功的广播包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0784 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
broadcastpkts_tx
|
发送成功的广播帧的计数(不含重传)。
|
0x00000000
|
UD_TX_MULTPKTS
UD_TX_MULTPKTS为发送成功的组播包数寄存器。该寄存器不支持软复位。
Offset Address: 0x0788 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
multicastpkts_tx
|
发送成功的组播帧的计数(不含重传)。
|
0x00000000
|
UD_TX_UNIPKTS
UD_TX_UNIPKTS为发送成功的单播包数寄存器。该寄存器不支持软复位。
Offset Address: 0x078C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
ifoutucastpkts_tx
|
发送成功的单播帧的计数(不含重传)。
|
0x00000000
|
UD_TX_OCTS
UD_TX_OCTS为发送的总字节数寄存器。该寄存器不支持软复位。
Offset Address: 0x0790 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
octets_tx
|
发送的总字节数,包含重发帧、正确帧和错误帧,但Preamble字节不计在内。
|
0x00000000
|
UD_TX_PAUSE_PKTS
UD_TX_PAUSE_PKTS为发送的流控帧数目寄存器。该寄存器不支持软复位。
Offset Address: 0x0794 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
dot3outpause
|
发送的流控帧数目。
|
0x00000000
|
UD_TX_RETRYCNT
UD_TX_RETRYCNT为发送过程中总重传次数寄存器。该寄存器不支持软复位。
Offset Address: 0x0798 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
retry_times_tx
|
配置发送帧的总的重传次数。
|
0x00000000
|
UD_TX_COLCNT
UD_TX_COLCNT为发生冲突的总次数寄存器。该寄存器不支持软复位。
Offset Address: 0x079C Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
collisions
|
冲突发生的次数。
|
0x00000000
|
UD_TX_LC_PKTS
UD_TX_LC_PKTS为发生LateCollision的包数寄存器。该寄存器不支持软复位。
Offset Address: 0x07A0 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
dot3latecol
|
发生LateCollision的包数目。
|
0x00000000
|
UD_TX_COLOK_PKTS
UD_TX_COLOK_PKTS为有冲突但发送成功的包数寄存器。该寄存器不支持软复位。
Offset Address: 0x07A4 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
dot3col_ok
|
发生冲突后发送成功的包数目。
|
0x00000000
|
UD_TX_RETRY15_PKTS
UD_TX_RETRY15_PKTS为重传超15次丢弃的包数寄存器。该寄存器不支持软复位。
Offset Address: 0x07A8 Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
dot3excessivecol
|
由于重传次数大于15而丢弃的包数目。
|
0x00000000
|
UD_TX_RETRYN_PKTS
UD_TX_RETRYN_PKTS为冲突次数等于阈值的包数寄存器。该寄存器不支持软复位。
Offset Address: 0x07AC Total Reset Value: 0x0000_0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[31:0]
|
RO
|
dot3colcnt
|
冲突次数等于冲突阈值的包数目,由UD_MAC_SET[colthreshold]设定。
|
0x00000000
|
FEPHY
概述
FEPHY(Fast Ethernet PHY)IP是一个支持单口10BASE-T/10BASE-Te/100BASE-TX以太网物理层的IP。
功能特点
FEPHY实现了10BASE-T/10BASE-Te/100BASE-TX以太网物理层,在电缆一端,该模块的MDI接口通过变压器以及RJ45接口直接与双绞线相连;在MAC端,通过该模块的MII接口与MAC层相接。
- 兼容IEEE的10BASE-T/100BASE-TX;
- 电缆状态的诊断功能;
- 支持MDIO和MII接口;
- 支持IEEE802.3u的自协商和并行检测功能;
- 支持电缆线对自动交叉倒换和极性调整;
- 支持802.3az (Energy Efficient Ethernet);
- 支持10M/100Mbps下眼图测试序列直接发送,通过配置寄存器实现,测试眼图无需依赖tesgine;
- 电压型输出,不需上下拉电阻,变压器抽头只需电容接地。
典型应用
典型的应用如图1所示。
- 在电缆一端,MDI接口通过一个变压器以及RJ45接口直接与双绞线相连;
- 在MAC端,FEPHY通过MII接口与MAC层相接。
图 1 FEPHY典型应用示意图

外部器件设计与供电方式建议请参见《Hi3516CVxxx 硬件设计用户指南》的FEPHY相关描述。
表 1 MDI管脚描述
名称
|
I/O
|
属性
|
功能描述
|
ETH_MDI_AN
|
IO
|
Analog
|
差分接收和发送信号。
可强制或自协商配置为10BASE-T、100BASE-TX提供MDI/MDI-X的对接方式,并可以纠正通道MDI_N和MDI_P的极性问题。
注:在10/100Mbps操作模式下,自动MDIX功能会检测对方的发送通道,配置适当的发送和接收通道。
|
ETH_MDI_AP
|
IO
|
Analog
|
ETH_MDI_BN
|
IO
|
Analog
|
ETH_MDI_BP
|
IO
|
Analog
|
使用配置
本章将介绍FEPHY核可以支持的配置模式,下面是涉及到的术语解释如下:
- Manual Mode Configuration手动配置
- Speed/Duplex Selection速度/双工模式选择
- Auto-Negotiation自协商
- Priority solution 优先级定义
- Parallel Detection (非自协商方式的)并行检测
- Restart Auto-Negotiation 重启自协商
- Auto-MDIX Configuration 自动双绞线对交叉倒换
- Auto Polarity Correction 自动极性修正
- PHY Address(PHY地址)
- Low Power Mode 省电模式
- Expand register扩展寄存器
FEPHY核支持4种不同的以太网协议:
- 10BASE-T Full Duplex
- 10BASE-T Half Duplex
- 100BASE-TX Full Duplex
- 100BASE-TX Half Duplex
可通过配置寄存器来选择速度与双工模式:
手动配置
FEPHY核可以通过多种方式配置。所有的配置都可以通过MDIO接口,读写寄存器进行管理。要使用手动配置模式,必须先屏蔽自协商功能,通过以下方法实现:
- 配置0x0到寄存器BMCR(地址0x00)的bit 12。
- 配置寄存器BMCR(地址0x00)的SPEED[1:0]域用于确定速度。
- 配置寄存器BMCR(地址0x00)的Duplex[1:0]域用于确定双工模式。
自协商
10/100Mbps以太网PHY对自协商的支持是可选的,当对端的设备不支持自协商时可以通过并行检测(parallel detecting)的方式来确定连接的模式。
速度、双工模式选择与优先级定义
自协商功能提供了一种让对接的双方可以交换配置信息的机制。这个机制是通过交换Fast Link Pulse(FLP)来实现的。自协商的过程中,连接双方都支持的最高性能的协议会被优先选中。
自协商选择过程中各种模式的优先级如下:
- 100BASE-TX Full Duplex (最高优先级)
- 100BASE-TX Half Duplex
- 10BASE-T Full Duplex
- 10BASE-T Half Duplex (最低优先级)
并行检测
当对端的设备不支持自协商,则自协商功能模块利用这些收到的信息确定将使用的连接协议(10BASE-T和100BASE-X会发送不同的信号表示不同的链路状态)。如果FEPHY是以并行检测来完成自协商过程,可通过以下寄存器来确认当前状态:
- 寄存器ANLPARD的bit5和bit7可以指示对端的连接模式。
- 寄存器ANLPARD的bit[4:0]若为0x00001指示一个成功的并行检测和一个符合IEEE802.3的对接设备。
- 寄存器ANER(地址0x06) bit0若为0表示协商是通过并行检测完成的。
- 寄存器ANER(地址0x06) bit4若为1表示并行检测错误,未正常建立链接。
重启自协商
当自协商成功建立链接后又断链,则自协商会重启再次配置连接。
- 若此时自协商使能,可以通过写0x1至寄存器BMCR(地址0x00)bit9来重新开始自协商。
- 若此时自协商不使能,可以通过写0x1到寄存器BMCR(地址0x00)bit12来重新开启自协商功能。
AUTO—MDIX
FEPHY核可以检测到是通过“交叉线”还是“直连线”与对端PHY连接。它可以自动调整通道A和B用来初始化10/100的连接。自动MDIX接口调整是在自协商信息交互之前完成的。可通过以下寄存器来确认当前状态:
- 寄存器LINK_AN(地址0x11)bit10表示MDIX状态。
- 寄存器AUX_CTL(地址0x12)bit15表示AUTO-MDIX使能
- 当AUTO-MDIX使能被关闭,此时需要通过配置AUX_CTL(地址0x12)bit14来决定MDI或者MDIX模式。
极性修正
FEPHY核可以自动检测和修正接收双绞线的极性(+/-)。
寄存器LINK_AN(地址0x11)bit[15:12]可表示当前接收双绞线的极性状态。
PHY地址
FEPHY核拥有唯一的5bits位宽PHY地址,PHY地址的修改支持两种模式:
MII Isolate
在Isolate模式下,FEPHY核自协商功能将被关闭,但仍然可以通过MDIO接口控制。相关配置方法如下:
- 配置0x1至寄存器BMCR(地址0x00)bit10可进入Isolate模式。
- 寄存器BMCR(地址0x00)中的SPEED[1:0]控制当前的模式。
Power Down模式
当FEPHY进入Power Down模式后,内部电路除了管理接口(MDC/MDIO)将全部下电。这种模式下FEPHY核的功耗最小。配置方法如下:
配置0x1至寄存器BMCR(地址0x00)bit11可进入Power Down模式。
拓展寄存器访问
专用拓展寄存器访问模式
FEPHY核包含了除IEEE定义的32个基本寄存器外的拓展寄存器。这些拓展寄存器放在拓展寄存器空间,需要通过基本寄存器的“拓展寻址”方式访问。访问流程如下:
- 配置PHY进入Power Down模式,确保内部动作不会影响对寄存器的操作。
- 将需要访问的寄存器地址写入寄存器EXPMA(地址0x1e),若为写操作则跳至步骤 3,若为读操作则跳至步骤 4。
- 将需要写入的数据写入寄存器EXPMD(地址0x1d)。
- 读取寄存器EXPMD(地址0x1d)。
- 配置PHY脱离Power Down模式,访问结束。
Clause22拓展寄存器访问模式
Clause22标准又定义一种扩展模式,由寄存器MACR(地址0xD)和寄存器MAADR(地址0xE)来实现。
访问流程如下:
- 配置寄存器MACR Function域为0x00选择address,将期望操作的MMD地址写入DEVAD域。
- 将期望操作的MMD寄存器的地址写入寄存器MAADR。
- 配置寄存器MACR Function域为0x00选择Data, no post increment,将期望操作的MMD地址写入DEVAD域。若为写操作则跳至步骤 4,若为读操作则跳至步骤 5。
- 将期望的数据写入寄存器MAADR,操作结束。
- 读取寄存器MAADR获取数据,操作结束。
FEPHY_BASE寄存器概览
FEPHY_BASE寄存器概览如表1所示。
说明:
寄存器通过MDIO接口访问。
表 1 FEPHY_BASE寄存器概览
偏移地址
|
名称
|
描述
|
0x00
|
BMCR
|
基本模式控制寄存器
|
0x01
|
BMSR
|
IEEE基本MII状态寄存器
|
0x02
|
OUI_1
|
IEEE PHY标识1寄存器
|
0x03
|
OUI_2
|
IEEE PHY标识2寄存器
|
0x04
|
ANAR
|
IEEE自协商发送寄存器
|
0x05
|
ANLPAR
|
IEEE自协商接收寄存器
|
0x06
|
ANER
|
IEEE自协商扩展寄存器
|
0x0D
|
MACR
|
拓展控制寄存器
|
0x0E
|
MAADR
|
拓展地址数据寄存器
|
0x11
|
LINK_AN_SR
|
连接和自协商状态寄存器
|
0x12
|
AUX_CTL
|
辅助控制寄存器
|
0x1D
|
EXPMD
|
扩展访问数据寄存器
|
0x1E
|
EXPMA
|
扩展访问地址寄存器
|
0x1F
|
PHY_ADDRESS
|
广播地址寄存器
|
FEPHY_BASE寄存器描述
BMCR
BMCR为基本模式控制寄存器。
Offset Address: 0x00 Total Reset Value: 0x3100
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15]
|
RWSC
|
mr_reset
|
复位。
0:正常工作模式;
1:初始化软复位/工作中复位。
注意:该比特用来设置PHY的状态和控制寄存器为其默认状态。该比特是自清零的,当复位进程未完成时,其返回值保持为1(复位持续时间约1.2ms)。一旦自协商进程已开始或者设备进入其强制模式,复位就完成了。
|
0x0
|
[14]
|
RW
|
mr_loopback
|
环回使能。
0:正常工作模式;
1:环回使能。
环回功能使MII/GMII发送的数据能够传送到MII/GMII的接收数据路径。数据在发送模块和接收模块之中的DAC/ADC子系统之间循环流动。环回模式能够检测发送机和接收机的PHY内部的大多数信号路径。
|
0x0
|
[13]
|
RW
|
mr_speed_0
|
速率选择。
当自协商不使能时,mr_speed_0将根据下面的表格对设备的速率进行强制设置。
mr_speed_0[1:0]
00:10 Mbps;
01:100 Mbps;
10:保留;
11:保留。
注意:当自协商被使能,该位不起作用。mr_speed_0[1:0]由HA_CONTROL[6]和LA_CONTROL[5]组成。
|
0x1
|
[12]
|
RW
|
mr_an_enable
|
自协商使能。
0:自协商不使能;
1:自协商使能。
|
0x1
|
[11]
|
RW
|
mr_power_down
|
省电模式使能。
0:正常工作模式;
1:省电模式(仅MDIO接口正常工作)。
|
0x0
|
[10]
|
RW
|
mr_isolate
|
隔离使能。
0:正常工作模式;
1:当该比特被置位时,GPHY核不响应MAC数据传输。隔离模式也将PHY置为省电模式,所有的媒介操作被中断。
|
0x0
|
[9]
|
RWSC
|
mr_restart_an
|
重启自协商使能。
0:正常工作模式;
1:重启自协商进程,初始化自协商。如果自协商不使能,该比特无效。自协商被启动后,该比特自清零,初始化中其返回值保持为1。将该比特清零不会影响自协商进程。
|
0x0
|
[8]
|
RW
|
mr_duplex
|
双工模式。
0:半双工操作;
1:全双工操作。
注意:当自协商使能时,该比特无效
|
0x1
|
[7]
|
RW
|
mr_col_test
|
冲突测试。
0:正常工作模式;
1:冲突测试使能。
|
0x0
|
[6]
|
RW
|
mr_speed_1
|
速率选择。
当自协商不使能时,mr_speed_1将根据下面的表格对设备的速率进行强制设置。
mr_speed_1[1:0]
00:10 Mbps;
01:100 Mbps;
10:保留;
11:保留。
注意:当自协商被使能,该位不起作用。mr_speed_1[1:0]由HA_CONTROL[6]和LA_CONTROL[5]组成。
|
0x0
|
[5:0]
|
RW
|
ieee_reserved
|
保留,写无效,读为零。
注意:所有保留位都为写无效,读为零,后面不再描述。
|
0x00
|
BMSR
BMSR为IEEE基本MII状态寄存器。
Offset Address: 0x01 Total Reset Value: 0x7849
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15]
|
RO
|
base_t4_100
|
支持百兆BASE-T4模式。
0:不支持;
1:支持。
注意:复位值为1表明芯片支持此种工作模式,为0则不支持。
|
0x0
|
[14]
|
RO
|
base_xfd_100
|
支持全双工百兆BASE-TX模式。
0:不支持;
1:支持。
|
0x1
|
[13]
|
RO
|
base_xhd_100
|
支持半双工百兆BASE-TX模式。
0:不支持;
1:支持。
|
0x1
|
[12]
|
RO
|
base_fd_10
|
支持全双工十兆BASE-T模式。
0:不支持;
1:支持。
|
0x1
|
[11]
|
RO
|
base_hd_10
|
支持半双工十兆BASE-T模式。
0:不支持;
1:支持。
|
0x1
|
[10]
|
RO
|
base_t2fd_100
|
支持全双工十兆BASE-T2模式。
0:不支持;
1:支持。
|
0x0
|
[9]
|
RO
|
base_t2hd_100
|
支持半双工十兆BASE-T2模式。
0:不支持;
1:支持。
|
0x0
|
[8]
|
RO
|
extended_status
|
支持千兆BASE-T扩展状态寄存器。
0:不支持;
1:支持。
|
0x0
|
[7]
|
RO
|
reserved
|
保留。
|
0x0
|
[6]
|
RO
|
mr_preamble_suppress
|
前导限制使能。
1:PHY复位后,仅需要收到一次32bit的前导,就能够进行正常传输。
|
0x1
|
[5]
|
RO
|
mr_an_complete
|
自协商完成标志。
0:自协商未完成;
1:自协商完成。
|
0x0
|
[4]
|
RO
|
mr_rem_fault
|
远端错误检测标志。
0:未检测到远端错误;
1:检测到远端错误。
注意:读取或复位都会将此位清零。
|
0x0
|
[3]
|
RO
|
mr_an_capable
|
允许自协商使能标志。
0:不允许自协商使能;
1:允许自协商使能。
|
0x1
|
[2]
|
RO
|
mr_link_up
|
连接状态标志。
0:自上次读取此寄存器后连接错误;
1:自上次读取此寄存器后连接正常。
注意:连接丢失时会将此位清零。读取此寄存器时连接正常,将此位置设置为1。
|
0x0
|
[1]
|
RO
|
mr_jabber
|
jabber检测。
0:未检测到jabber冲突;
1:检测到jabber冲突。
注意:10BASE-T模式下检测到jabber将此位置设置为1。
|
0x0
|
[0]
|
RO
|
mr_extended_status
|
千兆BASE-T扩展状态寄存器使能。
0:不使能;
1:使能。
|
0x1
|
OUI_1
OUI_1为IEEE PHY标识1寄存器。
Offset Address: 0x02 Total Reset Value: 0x2066
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:0]
|
RO
|
oui_msb
|
唯一官方标识高16bit。
|
0x2066
|
OUI_2
OUI_2为IEEE PHY标识2寄存器。
Offset Address: 0x03 Total Reset Value: 0x9903
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:10]
|
RO
|
oui_lsb
|
唯一官方标识低6bit。
|
0x26
|
[9:4]
|
RO
|
mmn
|
制造商型号。
|
0x10
|
[3:0]
|
RO
|
revision
|
版本号。
|
0x3
|
ANAR
ANAR为IEEE自协商发送寄存器。
Offset Address: 0x04 Total Reset Value: 0x01E1
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15]
|
RW
|
mr_an_adv_np
|
下页指示。
0:不支持下页传输;
1:支持下页传输。
|
0x0
|
[14]
|
-
|
reserved
|
保留。
|
0x0
|
[13]
|
RW
|
mr_an_adv_rf
|
远端错误标志。
0:未检测到Remote错误;
1:检测到Remote错误。
|
0x0
|
[12:11]
|
-
|
reserved
|
保留。
|
0x0
|
[10]
|
RW
|
mr_pause
|
停止控制。
0:不支持MAC/controller帧传输中断;
1:支持MAC/controller帧传输中断。
|
0x0
|
[9]
|
RW
|
mr_t4_ability
|
支持百兆BASE-T4模式。
0:不支持;
1:支持。
|
0x0
|
[8]
|
RW
|
mr_tech_ability_100_fd
|
支持全双工百兆BASE-TX模式。
0:不支持;
1:支持。
|
0x1
|
[7]
|
RW
|
mr_tech_ability_100_hd
|
支持半双工百兆BASE-TX模式。
0:不支持。
1:支持;
|
0x1
|
[6]
|
RW
|
mr_tech_ability_10_fd
|
支持全双工十兆BASE-T模式。
0:不支持;
1:支持。
|
0x1
|
[5]
|
RW
|
mr_tech_ability_10_hd
|
支持半双工十兆BASE-T模式。
0:不支持;
1:支持。
|
0x1
|
[4:0]
|
RW
|
mr_selector_field
|
IEEE 802.3定义的协议选择域,值为 0x01表明芯片支持IEEE802.3。
|
0x01
|
ANLPAR
ANLPAR为IEEE自协商接收寄存器。
Offset Address: 0x05 Total Reset Value: 0x0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15]
|
RO
|
next_page
|
下页指示。
0:link partner不支持下页传输;
1:link partner支持下页传输。
|
0x0
|
[14]
|
RO
|
acknowledge
|
远端接收响应标志。
0:未响应;
1:Link Partner响应接收。
|
0x0
|
[13]
|
RO
|
remote_fault
|
Link partner远端错误标志。
0:未检测到Remote错误;
1:检测到Remote错误。
|
0x0
|
[12]
|
-
|
reserved
|
保留。
|
0x0
|
[11]
|
RO
|
asymmetricalpause
|
Link partner支持不对称暂停。
0:不支持;
1:支持。
|
0x0
|
[10]
|
RO
|
pause
|
Link partner支持帧暂停。
0:不支持;
1:支持。
|
0x0
|
[9]
|
RO
|
lp_base_t4_100
|
link partner支持百兆BASE-T4模式。
0:不支持;
1:支持。
|
0x0
|
[8]
|
RO
|
base_tx_fd_100
|
link partner支持全双工百兆BASE-TX模式。
0:不支持;
1:支持。
|
0x0
|
[7]
|
RO
|
base_tx_100
|
link partner支持半双工百兆BASE-TX模式。
0:不支持;
1:支持。
|
0x0
|
[6]
|
RO
|
base_tx_fd_10
|
link partner支持全双工十兆BASE-TX模式。
0:不支持;
1:支持。
|
0x0
|
[5]
|
RO
|
base_tx_10
|
link partner支持半双工十兆BASE-TX模式。
0:不支持;
1:支持。
|
0x0
|
[4:0]
|
RO
|
lp_selector_filed
|
link partner IEEE 802.3定义的选择域,值为0x01表明芯片支持IEEE802.3。
|
0x00
|
ANER
ANER为IEEE自协商扩展寄存器。
Offset Address: 0x06 Total Reset Value: 0x0004
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:5]
|
-
|
reserved
|
保留。
|
0x000
|
[4]
|
RO
|
mr_exp_pdf
|
并行错误检测。
0:未检测到错误;
1:检测到错误。
|
0x0
|
[3]
|
RO
|
mr_exp_lp_np_able
|
link partner支持下页协商。
0:不支持;
1:支持。
|
0x0
|
[2]
|
RO
|
mr_exp_np_able
|
支持下页协商。
0:不支持;
1:支持。
|
0x1
|
[1]
|
RO
|
mr_exp_page_rx
|
连接码字接收。
0:未接收到连接字;
1:接收到连接字。
|
0x0
|
[0]
|
RO
|
mr_exp_la_an_enable
|
link partner支持自协商。
0:不支持;
1:支持。
|
0x0
|
MACR
MACR为拓展控制寄存器。
Offset Address: 0x0D Total Reset Value: 0x0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:14]
|
RW
|
function
|
拓展寄存器Function域。
00:MAADR寄存器地址操作;
01:MAADR寄存器数据操作;
其他:保留。
|
0x0
|
[13:5]
|
-
|
reserved
|
保留。
|
0x000
|
[4:0]
|
RW
|
devad
|
Device地址。
|
0x00
|
MAADR
MAADR为拓展地址数据寄存器。
Offset Address: 0x0E Total Reset Value: 0x0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:0]
|
RW
|
address_data
|
DEVICE的地址寄存器或数据寄存器。
|
0x0000
|
LINK_AN_SR
LINK_AN_SR为连接和自协商状态寄存器。
Offset Address: 0x11 Total Reset Value: 0x0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:12]
|
RO
|
tp_polarity_3_0
|
bit7-bit4分别表明A到D线对的极性。
0:极性正常;
1:极性反转。
|
0x0
|
[11]
|
RO
|
power_down_status
|
端口当前上下电状态。
0:端口未处于下电状态;
1:端口处于下电状态。
|
0x0
|
[10]
|
RO
|
mdix_status
|
内部cross over状态。
0:无内部cross over;
1:内部cross over激活。
|
0x0
|
[9]
|
RO
|
fifo_error
|
发送FIFO是否发生溢出或underrun。
0:正常状态;
1:发送FIFO发生溢出或underrun。
|
0x0
|
[8]
|
RO
|
power_on_init_in_progress
|
上电过程是否完成标志。
0:上电过程完成;
1:上电过程未完成。
|
0x0
|
[7]
|
RO
|
shallow_loopback_status
|
shallow环回使能状态。
0:shallow环回不使能;
1:shallow环回使能。
|
0x0
|
[6]
|
RO
|
deep_loopback_status
|
deep环回使能状态。
0:deep环回不使能;
1:deep环回使能。
|
0x0
|
[5]
|
RO
|
non_compliant_mode_status
|
当前compliant模式状态。
0:工作在ieee-compliant模式;
1:工作在1000-BASE non-compliant模式。
|
0x0
|
[4:3]
|
RO
|
speed_status
|
实时速率显示。
Speed[1:0]
00:10 Mb/s
01:100 Mb/s
10:Reserved
11:Reserved
|
0x0
|
[2]
|
RO
|
link_status
|
实时连接显示。
0:未连接;
1:连接上。
|
0x0
|
[1]
|
RO
|
duplex_status
|
实时双工状态显示。
0:半双工;
1:全双工。
|
0x0
|
[0]
|
RO
|
config_status
|
主从状态。
0:从状态;
1:主状态。
|
0x0
|
AUX_CTL
AUX_CTL为辅助控制寄存器。
Offset Address: 0x12 Total Reset Value: 0x9000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15]
|
RW
|
auto_mdix_enable
|
MDIX模式选择。
0:手动MDIX模式;
1:自动MDIX模式。
|
0x1
|
[14]
|
RW
|
mdix_manual
|
直连或交叉线缆选择。
0:straight线缆;
1:cross-over线缆。
|
0x0
|
[13]
|
-
|
reserved
|
保留。
|
0x0
|
[12]
|
RW
|
loopback_10b_disable
|
10BASE半双工模式环回使能。
0:使能;
1:不使能。
|
0x1
|
[11]
|
RW
|
force100
|
强制100M连接模式。
0:正常模式;
1:强制100M连接模式。
|
0x0
|
[10]
|
RW
|
force10
|
强制10M连接模式。
0:正常模式;
1:强制10M连接模式。
|
0x0
|
[9]
|
-
|
reserved
|
保留。
|
0x0
|
[8]
|
RW
|
en_ext_loop_detect
|
外部环回检测使能。
0:不使能;
1:使能。
|
0x0
|
[7:0]
|
-
|
reserved
|
保留。
|
0x00
|
EXPMD
EXPMD为扩展访问数据寄存器。
Offset Address: 0x1D Total Reset Value: 0x0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:0]
|
RW
|
exp_data_msb
|
扩展访问的数据寄存器。
|
0x0000
|
EXPMA
EXPMA为扩展访问地址寄存器。
Offset Address: 0x1E Total Reset Value: 0x0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:0]
|
RW
|
exp_addr_msb
|
扩展访问的地址寄存器。
|
0x0000
|
PHY_ADDRESS
PHY_ADDRESS为广播地址寄存器。
Offset Address: 0x1F Total Reset Value: 0x0000
Bits
|
Access
|
Name
|
Description
|
Reset
|
[15:13]
|
-
|
reserved
|
保留。
|
0x0
|
[12:8]
|
RW
|
broadcast_address
|
广播使能时,广播访问的地址。
|
0x00
|
[7:5]
|
-
|
reserved
|
保留。
|
0x0
|
[4:0]
|
RW
|
phyaddress
|
确定SM访问的端口地址。
|
0x00
|