专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
DSP
DSP6678网络子系统之交换子系统
2019-07-13 10:53
发布
生成海报
站内文章
/
DSP
12361
0
1250
1
基本介绍
网络交换子系统由
EMAC
模块、
SGMII
模块、
PHY
设备、
MDIO
模块、网络交换机、以及系统集成的其他相关的子模块。
NETCP
的网络交换子系统的主要作用是提供一个在主设备和其他连接设备间进行数据传输的接口。
网络交换子系统主要包括如下三个模块:
Ø
网络交换部件
Ø
MDIO
模块
Ø
两个
SGMII
模块(
KeyStone I
设备两个;
KeyStone II
设备四个)
网络交换子系统的交换机有三个端口,以及可以给主机的一组中断。可以通过配置总线进行配置。如图
1.1
所示:
图
1.1 KeyStone I
网络交换子系统框图
KeyStone II
的网络交换子系统,拥有两个额外的
SGMII
端口。网络交换子系统内部的交换机有四个
SGMII
端口以及一个主机端口。如图
1.2
所示:
图
1.2 KeyStone II
网络交换子系统框图
Ø
其中端口
0
是主机端口,该端口允许交换子系统和
NETCP
进行双向通信
Ø
端口
1
至端口
4
用于在
SGMII
和交换子系统之间进行双向通信
Ø
交换子系统的中断连接到
DSP
上,以允许通知交换状态;
Ø
配置总线用于连接交换子系统和
NETCP
,以允许用户配置交换子系统;
Ø
每个
SGMII
模块都能独立地连接到网络交换子系统、
SerDes
、以及配置总线。
Ø
配置总线允许用户配置
SGMII
、交换部件、以及
MDIO
2
网络子系统架构
2.1
时钟
2.1.1
网络交换子系统使用了如下时钟:
Ø
网络交换子系统的时钟
Ø
SGMII SerDes
的参考时钟
Ø
IEEE 1588
时间同步时钟
Ø
MDIO
时钟
Ø
GMII
时钟
2.1.2
网络交换子系统时钟
网络交换子系统的时钟通常用于网络交换子系统的大多数逻辑,通常为
350MHz
。
2.1.3
SGMII SerDes
参考时钟
SGMII SerDes
的参考时钟是
DSP
的输入时钟。
SGMII SerDes
参考时钟作为
SGMII SerDes PLL
的输入,可以通过
SGMII_SERDES_CFG_PLL
寄存器配置。
SGMII SerDes PLL
控制在
SGMII
和
SerDes
模块之间的数据传输速率。对于
SGMII SerDes
的时钟范围,可以参考设备特定的数据手册。
2.1.4
MDIO
时钟
MDIO
的时钟有外设系统时钟分频而来。
MDIO
时钟可以配置达到
2.5MHz
,但通常配置为
1.0MHz
。
2.1.5
IEEE 1588
时间同步时钟
IEEE 1588
时间同步时钟主要用于网络交换子系统的时间同步模块。可以通过配置
CPTS_RFTCLK_SEL
寄存器的
CPTS_RFTCLK_SEL
字段,
选择一个
CPTS_RCLK
的输入时钟源
2.1.6
GMII
时钟
GMII
的时钟频率由
802.3
指定。
Ø
10Mbps
:
2.5MHz
Ø
100Mbps
:
25MHz
Ø
1000Mbps
:
125MHz
2.2
GbE
交换机的结构
GbE
在网络交换子系统中的两个
SGMII
模块和
NETCP
之间,提供了一个交换机。如图
2.1
所示,
GbE
交换机包括如下部分:
Ø
包数据流接口
Ø
MAC
子模块
Ø
MAC
接收
FIFO
Ø
统计子模块
Ø
时间同步子模块
Ø
地址查询引擎(
ALE
)子模块
图
2.1 GbE
交换机
GbE
的交换机有三个端口:端口
0
与包数据流交换部件通信;端口
1
与
SGMII0
通信;端口
2
与
SGMII1
通信。
GbE
交换机内部的模块如下:
Ø
包数据流接口:用于
GbE
交换机与
NETCP
的包数据流交换部件之间通信;
Ø
MAC
子模块:用于在交换机内部信号和
SGMII
模块的
GMII
信号之间做转换;
Ø
统计子模块:用于统计网络交换子系统接收和发送的数据包的个数;
Ø
时间同步子模块:用于支持
IEEE 1588
时钟同步;
Ø
地址查询引擎(
ALE
):用于依据地址来推送和过滤数据包。
2.2.1
包数据流接口:
包数据流接口用于
GbE
交换机与
NETCP
的包数据流交换部件之间通信。
1.
包数据流发送接口
发送接口主要用于将数据包从
GbE
交换机的端口
0
发送到
NETCP
的包数据流交换部件。
GbE
交换部件有两个相同的包数据流发送接口。第一个接口(
TXA
)将端口
1
的数据包从端口
0
发送出去;第二个端口(
TXB
)将端口
2
的数据包从端口
0
发送出去。
在包
DMA
接收流收到的数据包中,除了包数据之外,还提供额外的信息。这些额外信息包括来源的识别信息。如果数据包来自端口
1
,那么
P0_CPPI_SRC_ID
寄存器的
TXA_SRC_ID
字段将被放在接收数据包描述符中的
SRC_ID
字段中。同样,如果包来自端口
2
,则
P0_CPPI_SRC_ID
寄存器的
TXB_SRC_ID
字段中的值将放在接收包描述符的
SRC_ID
字段中。
TXA
和
TXB
发送接口都有两个
22KB
的缓存。只有当发送接口输出缓存中有了整个包数据,或者超过
CPPI_THRESH
两个字时,才开始发送数据包。加上
2
是因为还有一个两个字的双缓冲
对于
KeyStone II
,
还存在端口
TXC
和
TXD
。
2.
发送
VLAN
的处理过程
当
CPSW_CONTROL
寄存器的
VLAN_AWARE
被置位时,
GbE
交换机进入
VLAN-aware
模式。在
VLAN-aware
模式下,按照与
MAC
输出
VLAN
数据包过程相同的规则对
TAG
进行添加、删除或替换。当
VLAN_AWARE
被清零时,发送包不会被修改。
3.
包数据流接收接口
GbE
交换机端口
0
的接收流接口负责从
NETCP
的包数据流交换部件接收数据包。
GbE
交换机只有一个包数据流接收端口。
除了包数据,接收流接口还可以提供附加的控制信息,这些信息驻留在发送到
GbE
交换机的包的描述符的
PS_FLAGS
字段中。
对于传输到
GbE
的数据包,
PS_FLAGS
字段的配置如下:
Ø
RX_PASS_CRC
:
1
,表示包中已经包含
CRC
;
0
,表示包中没有
CRC
,需要
MAC
模块生成。
Ø
TO_PORT
:设置非
0
值时,数据包会跳过
ALE
,直接从指定端口发送出去。当为
0
时,表示无效;当为
1
时,发送数据包到
GbE
交换机的端口
1
;当为
2
时,发送数据包到
GbE
交换机端口
2
。对于
KeyStone II
,还有
3
和
4
可供选择。
2.2.2
MAC
子模块
MAC
子模块支持
IEEE802.3
标准,并支持
10/100/1000 Mbps
模式。
MAC
模块在
GbE
和
SGMII
模块之间提供了一个接口。
MAC
模块主要是在
GbE
交换机信号和
SGMII
模块
GMII
信号之间进行转换。
除了在
SGMII
模块和
GbE
交换机之间进行转换外,
MAC
模块还负责
IEEE 802.3
以太网帧相关的操作。对于所有包,
MAC
模块添加或删除前言,开始帧分隔符,以及包间的间隔。
MAC
模块验证并可选地生成
CRC
校验和。
2.2.3
MAC
接收
FIFO
在
GbE
交换机内部,两个
MAC
端口都有一个相同的数据包
FIFO
。每个包
FIFO
都包含一个独立的逻辑接收队列和四个逻辑发送队列(优先级从
0
到
3
)。每个包
FIFO
包含
81920
个字节(
80k
),被组织成
10240
个
64
位字。该
FIFO
存储空间被端口的发送和接收队列共享。可以通过
MAX_BLKS
寄存器来分配队列占用空间的大小。其中
TX_MAX_BLKS
字段用于配置发送
FIFO
的大小,单位是
4k
;
RX_MAX_BLKS
字段用于配置接收
FIFO
的大小,单位也是
4k
。建议
TX_MAX_BLKS
与
RX_MAX_BLKS
字段的和为
20
,否则会存在空间浪费,默认是
17
。
2.2.4
统计子模块
GbE
交换机有两个统计模块,用于记录数据包进出交换机的事件。对于
KeyStone I
,统计模块
A
用于记录端口
0
的事件;统计模块
B
用于记录端口
1
和端口
2
的事件。
对于
KeyStone II
,网络交换机有四组统计模块。
STATSA
用于统计端口
0
的接收,以及端口
0
的
TXA
和
TXB
;
STATSC
用于统计端口
0
的
TXC
和
TXD
;
STATSB
用于统计端口
1
的事件;
STATSD
用于统计端口
3
和端口
4
。
默认情况下,统计模块是关闭的。当关闭时,所有的统计寄存器可以被正常读写,可以通过写
0x00000000
对统计寄存器清零。在统计模块使能之后,所有统计数据都是只读的;但是,当此时向寄存器写数据时,会起到减值的作用,即新的寄存器值
=
原寄存器值
-
写入的值。如果写入的值大于当前寄存器的值,那么寄存器的值会被清零。可以通过配置
STAT_PORT_EN
寄存器的
3:0
位来使能统计模块。
2.2.5
时间同步子模块
根据
IEEE 1588
规范的附件
F
,
KeyStone 1
时间同步模块用于促进主机对时间同步操作的控制。大多数
IEEE 1588
标准超出了时间同步模块的范围,必须由主机软件处理。
时间同步模块的主要目的是检测时间同步事件并生成时间戳,然后将这些信息提供给托管软件进行处理。
KeyStone I
的时间同步子模块主要监测以下六种类型的时间同步事件:
Ø
网络接收事件
Ø
网络发送事件
Ø
软件时间戳推送事件
Ø
时间戳翻转事件
Ø
时间戳半翻转事件
每个网络端口都可以触发发送和接收事件,时间戳推送事件由软件触发。事件同步模块包含如下几个部分:
Ø
时间戳计数器
Ø
网络端口
1
和端口
2
接口
Ø
事件
FIFO
Ø
事件挂起接口
2.2.6
地址查找引擎(
ALE
)
地址查找引擎
(ALE)
处理所有接收到的数据包,以确定数据包应该转发到哪个端口
(
如果有的话
)
。
ALE
使用接收到的数据包的端口号、目标地址、源地址、长度
/
类型和
VLAN
信息来确定如何转发数据包。
ALE
将端口掩码输出到交换机构,该机构指示应该转发到的端口。当
ALE_CONTROL
寄存器中的
ALE_ENABLE
位被设置时,
ALE
被启用。当
ALE_ENABLE
位被清除为
0
时,所有包被删除。
可以通过
ALE_CONTROL
寄存器的
ALE_BYPASS
位,将
ALE
配置为
bypass
(跳过)模式。当为
bypass
模式时,所有由
MAC
模块接收到的数据包都被发往主机端口(端口
0
)。主机端口同样可以跳过
ALE
,直接将数据包发送到
MAC
端口。
1. ALE
表
ALE
表包含
1024
个表项。每个表项表示一个空闲条目、一个地址、一个
VLAN
、一个地址
/VLAN
对或一个
OUI
地址。
2. ALE
数据包转发流程
对于发送到
ALE
的每一个数据包,
ALE
会确定该数据包是否应该丢弃或者转发。如果需要转发,那么
ALE
需要确定该数据包应该发往哪一个或哪些端口。每个端口都有一个相应的数据包转发状态,该状态可以是以下四个中的一个:
Ø
Disable
(无效)
Ø
Blocked
(阻塞)
Ø
Learning
(学习)
Ø
Forwarding
(转发)
默认状态下,所有端口都是关闭的。为了使能端口,主机必须通过设置各自的
ALE_PORTCTL
寄存器以配置数据包转发状态。
一个数据包的转发需要经过以下四个步骤
1、
入口过滤
2、 VLAN Aware
查询
3、 VLAN Unaware
查询
4、
发出
2.3
SGMII
架构
SGMII
模块的主要功能是在
CPGMAC
模块和
SerDes
模块之间做数据格式转换。
SGMII
模块也负责与其他设备建立连接和自协商。
2.3.1
SGMII
接收端口
SGMII
接收端口主要负责将经过编码的
SerDes
信号,转换成
MAC
模块需要的
GMII
信号。
2.3.2
SGMII
发送端口
SGMII
发送端口主要负责将
MAC
模块的
GMII
信号,转换成
SerDes
模块需要的
8B/10B
编码信号。
2.3.3
SGMII
的操作模式
1、
回环模式
SGMII
模块支持在内部将发送信号和接收信号连接起来。这样连接起来后,是不会经过
SerDes
的。当处于回环模式时,发送时钟同时作用于接收时钟。可以通过
SGMII_CONTROL
寄存器的
LOOPBACK
位设置回环模式。当进入或退出回环模式时,一定要通过
SOFT_RESET
寄存器的
RT_SOFT_RESET
位,重置发送和接收逻辑。进入和退出回环模式的配置步骤如下:
Ø
将
SGMII_CONTROL
寄存器的
MR_AN_ENABLE
位清零
Ø
将
SOFT_RESET
寄存器的
RT_SOFT_RESET
位置位
Ø
将
SGMII_CONTROL
寄存器的
LOOPBACK
位置位
Ø
将
SOFT_RESET
寄存器的
RT_SOFT_RESET
位清零
2、
与
PHY
的连接配置
当连接到外部
PHY
时,
PHY
作为主设备,
SGMII
模块需要被配置为从设备,配置步骤参见数据手册。连接如图
2.2
所示:
图
2.2 SGMII
与
PHY
连接
3、 SGMII
与
SGMII
自协商
当两个
SGMII
设备以自协商的方式连接时,一个
SGMII
必须配置为主设备,另一个必须配置为从设备,配置步骤参见数据手册。如图
2.3
所示:
图
2.3
两个
SGMII
以自协商的方式连接
4、 SGMII
与
SGMII
强制连接
当两个
SGMII
设备强制连接,那么每个
SGMII
设备都必须被配置为主设备,配置过程参见数据手册。如图
2.4
所示:
图
2.4
两个
SGMII
以强制方式连接
2.4
MDIO
架构
MDIO
模块可以最多管理
32
个连接到
EMAC
的
PHY
设备。
MDIO
模块允许几乎透明的
MDIO
接口操作,几乎没有
DSP
的维护。
MDIO
模块通过不断轮询
32
个
MDIO
地址来枚举系统中的所有
PHY
设备。当它检测到一个
PHY
设备时,
MDIO
模块读取
PHY
状态寄存器来监控
PHY
链接状态。
2.5
KeyStone I SerDes
架构
SerDes
宏是一个自包含的宏,包括两对发送
(TX)
和接受
(RX)
,以及锁相环
(PLL)
。每对发送和接收端口对应一个
SGMII
模块。内部的
PLL
会乘以一个用户提供的参考时钟。
2.6
GbE
交换子系统初始化流程
Ø
配置
CPSW_CONTROl
寄存器
Ø
配置
MAC1_SA
和
MAC2_SA
源地址寄存器
Ø
通过
CPSW_STAT_PORT_EN
寄存器,使能需要统计的端口
Ø
配置
ALE
Ø
配置
MAC
模块
Ø
配置
MDIO
和
PHY
Ø
配置
SGMII
模块
2.7
中断
在
GbE
交换子系统中,有三个模块可以生成中断,分别是
MDIO
模块、统计模块、以及时间同步模块。
Ta的文章
更多
>>
VS,VC
0 个评论
Make a "building all for DSP, ARM, x86" system usi
0 个评论
DSP6678网络子系统之交换子系统
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮