以太网基础和CRC心得
1. 以太、以太网
1.1. 先上凉菜,闲扯以太(就不留作案底了)
1.2. 局域网(LAN)
1.2.1. 局域网主要特点 (范围__、站点数__、信道误码率__、传送速率__) 1.2.2. 局域网与以太网(IEEE 802.3) triple
1.3. 网络层次结构概念
1.3.1. 一个简单的网络叠罗汉示意
应用层 运输层 网络层 数据链路层 物理层
1.3.2. 交换芯片的作用:在数据链路层(MAC子层)和物理层之间作数据交换。FPGA只
要关心数据链路层的东西。
1.4. 以太网帧结构及数据传送顺序
1.4.1. 以太网帧结构
以太网帧结构图
1.4.1.1. 数据同步部分(包括Preamble和SFD)
1) 数据同步意义:可以从一串数据流中准确地找到所需数据包的始末位置,然后可以
定位包内各字段位置,从此就我为刀俎,包为鱼肉,庖丁解包,绰绰有余了。 2) 数据同步的常见方式:
3)
1.4.1.2.
1)
2)
a) 增加同步信号线,具体例子可参见PDH设备中CU和TU的两根同步信号线。 另加自以为是的见解
优点:同步处理方便 缺点:增加了一条信号线,相当于可以提供两倍信号速率,但现在只用了一倍,效率较低。
适用情况:在信号传送距离较短,走线资源比较丰富的情况下,如芯片内部,单板内部以及同一设备各板之间也可以考虑。
b) 信号数据流中插入特定同步码,如以太网帧结构中的Preamble和SFD部分。 另加自以为是的见解
优点:带宽浪费较少,数据传送效率得到提高,具体传送效率和同步码长度及数据包长度有关。
缺点:同步处理相对复杂,同步时间变长,并需要一定缓存存储数据。 适用情况:远距离通信。 以太网帧数据同步部分简介:
a) Preamble: 前同步码,共七个0x55字节。 b) SFD: 包头指示,一个字节,值为0xD5。
路由相关部分(包括DA和SA) DA(目的地址):指示数据帧发送的目的地,路由设备根据DA及内部存储的路由表决定收到该包后从哪个端口转发。FF-FF-FF-FF-FF-FF为广播地址,而如果DA的第一字节最低位为1的地址保留为组播地址。 SA(源地址):指示数据帧的发送源,可以帮助路由设备更新路由表,同时对端设备也可以根据此地址回复。
1.4.1.3. L/T及有效数据部分
1) L/T:用于指示本帧的数据长度或类型。802.3协议最大支持1500字节长数据(仅仅有效数据部分,如果不考虑增加VLAN标签,整个数据帧长最大1518字节)。一般来说,本字段如果等于或超过1536,则表示帧类型(如流控帧等),反之则表示数据长度。
2) 有效数据字段:没啥说的,就是长度限制在46到1500字节,如果要传送的数据小于46字节,就用0x00来填充,直到46字节。
1.4.1.4. FCS部分(数据校验使用CRC32,正餐稍候上)
1.4.2. 数据传送顺序:
对于整个帧来说,高位字节(图左边)先传,对于每个字节来说,低位先传。
1.5. 流量控制
1.5.1. 作用:调节各级数据传送速率,保证可靠传输。
1.5.2. 以太网流量控制帧结构示意
Dest. MAC Address Start Preamble Frame (6-bytes) Source = MAC Length/Type (2-bytes) MAC Control MAC Control Reserved Frame Opcode Parameters Check = 802.3 MAC (42-bytes) (7-bytes) Delimiter (01-80-C2- Address (2-bytes) (2-bytes) Sequence Control = all zeros (1-byte) 00-00-01) (6-bytes) = PAUSE = (00-00 to (4-bytes) (88-08) or unique (00-01) FF-FF) DA
图6.4 Ethernet控制帧格式 (其中MAC Control Parameters 用于指示中断时间)
1) DA:流控帧一般使用0x01-80-C2-00-00-01作为目的地址,虽然协议规定也可以用
对端的物理地址。
2) L/T:用0x88-08作为类型指示。 3) Opcode:指定为0x00-01
4) MAC Control Parameter:表示传送暂停时间长短。
1.5.3. 流量控制机制
1) 当本端资源紧张时,发送一个流量控制帧其中MAC Control Parameter字段值为
0xFF-FF,对端收到后停止发送。
2) 当本端资源充足后,再发一个流量控制帧其中MAC Control Parameter字段值为
0x00-00,相当于要求对端续传。
3) 如果资源一直紧张,则每隔一定时间发一MAC Control Parameter为0xFF-FF的流
控帧。
高速低速设备1设备2设备3
这里,流量控制帧的发送需要占用另一个方向的信号线。 !!!感叹号友情提醒:流控有延时,缓存须准备,原因嘛 1) 流控帧和数据帧的要争夺信号线使用权,万一不利,就得等人家发完货才能用。 2) 因为是发帧来控制,就算及时夺权成功,整个帧发送也需要多个时钟,要生效,
等呗。
2. CRC(Cycle Redundant Check)心得
2.1. CRC目的
通过增加冗余数据进行检错!纠错?
2.2. CRC的原理及硬件实现
2.2.1. 部分基本概念
1) (n,k)分组码的意义:n为码字长度,k为信息为长度,n-k为用于检错纠错的冗余位长度。
2) 码字和多项式间的转换
例子:
100011?x^5+x+1
3) 生成多项式概念(这里只考虑二元编码):对于一个(n,k)CRC码,如果所有码字都是一个n-k次多项式的倍式,这个多项式就是对应CRC码的SCDXS(我规定的生成多项式的简称,为了简略起见)。
2.2.2. CRC基本算法介绍及硬件实现
2.2.2.1. 基本算法:对于(n,k)的CRC编码,在k位信息位后添加n-k位0后对生成多项式
求余,得到的n-k位余数为CRC校验位,将校验位加在信息位后就构成对应信息数据的n位CRC码字。
2.2.2.2. 多项式除法
算个简单的例子,用101除10010好了,和多位数除法很相似的 1 0 1 1 0 1 || 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1
2.2.2.3. 一个硬件实现例子,就是用移位异或来实现除法运算。
相关推荐: