-
AX88796
1
:
MAR0~~MAR7
8
个与多播地址有关的寄存器(寄存
器的值并不是
MAC
地址或任何网络地
址)
,提供对组播数据包的过滤。
MAR0~~MAR7
全设置为
0xff
后,将接受所有的
组播数据包;全设置为
0xff
后,将不接受任
何组播数据包。
在实际的应用当中,用户应根据自己的实际组播地址采用适当
的法则(附于后)计算,
以确定对
MAR0~~MAR7
的某些位置
1
,来过滤性的接受组播数据包。
p>
接收的数据包的目的地址区的首字节为
0x01
时,表示本数据包为多播数据包。
Multicast
Address Match Filter
The Multicast
Address Registers provide
filtering of
multicast
addresses
hashed by the
CRC
logic.
All destination
addresses
are
fed through
the 32 bits CRC generation
logic
and as the
last bit of
the destination
address enters the CRC, the 6
most
significant bits
of the CRC
generator are
latched.
These 6 bits are
then
decoded by a 1 of 64 decode to
index
a
unique
filter
bit
(FB0-63)
in
the
Multicast
Address
Registers.
If
the
filter
bit
selected
is
set,
the
multicast
packet
is
accepted.
The
system
designer
would
use
a
program
to
determine
which
filter
bits
to
set
in
the
multicast
registers.
All
multicast
filter bits that correspond to
Multicast Address
Registers accepted by
the node are then
set to one. To accept
all multicast packets all of the registers are set
to all ones.
2
:缓冲环
Buffer Ring
AX8
8796
内部的存储区域总大小为
16K
,以
256bytes
为单元划分成
0x40
个缓冲页,每个
缓冲页的大小都固定为
256bytes
,地址为
0x40~~0x7f
p>
。在网口芯片初始化时,由两个寄存器
PSTART
和
PSTOP
(
8
bits
)来指定缓冲环的大小:如果
PSTA
RT
和
PSTOP
分别设置为
0x40
和
0x55
,
则实际构成缓冲环的缓冲页的地址为
0x40~~~0x54
。
3
:网络数据包接收
Packet Reception (Write data to memory
from MAC)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据包从网络进入网口芯片
AX87
96
内的缓冲环,是
local
DMA
的功能。
网络数据包接收时受到
Buffer Management
Logic
控制,
Buffer Management Lo
gic
有
3
大功能:
< br>
Ⅰ:
网络数据包的大小为<
/p>
64bytes
到
1522bytes,
Buffer Management Logic
自动连接
缓冲页来
存储大数据包。
Ⅱ
:
p>
网络
传
来
的
数
据包
总
是
先
被
存储
然
后
再
被
判
断应
该
被
接
< br>受
还是
被
抛
弃
,
Buffer
Management
Logic
释放被抛弃的数据包原占有的缓冲区。
Ⅲ:释放已经被
HOST
读取的数据包所占的缓冲
区(是否意味着由
Buffer Management Logic
< br>来修改
BNRY
寄存器的值?)
。
Buffer
Management
Logic
是一种虚拟的管理机制,不需要人为地干预。
p>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~
与网络数据包接收有关的
寄存器除了
PSTART
和
PSTOP
外,
还有
CPR
(
Current Page Register
)
和
BNRY
(
Boun
dary Pointer
Register
)
。
CPR
(
Current
Page
Register
)指示网
络数据包进入
AX88796
时存放的首个缓冲页。当数据包<
/p>
由于某种原因(地址不对,帧结构错误等等)被丢弃后,
CPR<
/p>
受
Buffer Management
Logic
控
制变更存储值。
BNRY
(
Boundary
Pointer Register
)
指示还没有被
HOST
读取的数据包对应的首个缓冲页地址。
简而言之:
CPR
相当于一个
写指针,
BNRY
相
当于一个
读指针。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~
连接多个缓冲页用来存储大数据包
当
一个数据包太大,一个缓冲页
256bytes
容量不够时,<
/p>
Buffer
Management
Logic
会自动连接
多个缓冲页用来存储此数据包。这些数据
包必须地址上相连,不能跳跃。在连接时,
Buffer
Management
Logic
会自动进行两个比较:
下一个缓冲页的地址
=
?
=PSTOP
&&
下一个缓冲页的地址
=
?
=BPR
~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
每个数据包被成功接收后,在数据包对应的首个缓冲页的前四个字节用于存储一
下信息:接
收状态
(
Receive
Status
)
、
下一个数据包的首地
址
(
Next Packet Pointer
)
、
本包总字节数
(
Receive
Byte Count
0
、
Receive Byte Count 1
)
,
3
者的具体存储顺序见
的
P29
。<
/p>
4
:网络数据包接收时溢出的处理
<
/p>
当网络存入
AX88796
的数据太多太
快而
HOST
没有及时读取数据时,
A
X88796
发生数据溢出,
处理步骤:
(
的
P24
)
Ⅰ:设置变量
Resend
,读取并存储
CR
寄存器内的
TXP
位的值;
Ⅱ:写
p>
21h
到
CR
寄存
器,阻止
AX88796
的继续工作;
Ⅲ:等待
1.5ms
(查看
ISR
寄存器的
RST
位
是否为
0
)
;
Ⅳ:清零
RBCR0
和
RBCR1
;
Ⅴ:读取步
骤Ⅰ中存储的
TXP
位的值:
p>
若为
0
:
Rese
nd
置
0
,跳至Ⅵ;
若为
1
:若
PTX
位或
TXE<
/p>
位(
ISR
寄存器)为
< br>1
,则置
Resend
为
0
,跳至Ⅵ;
若
PTX
位和
TXE
位(
ISR
寄存器)均为
0
,则置
Resend
为
1
,跳至Ⅵ;
< br>Ⅵ:设置
TCR
寄存器的
LB1
、
LB0
位分别为
0
和
1
,进入
loop_back
;
Ⅶ
:写
22h
到
CR
寄存器
,
启动
AX88796
p>
;
Ⅷ:将缓冲环的数据清除;
Ⅸ:对<
/p>
ISR
寄存器
OVW
位清零;
Ⅹ:对
TCR
寄存器的
LB1
、
LB
0
位清零,其他位按需设置;
Ⅺ:若
Resend
为
1
,对其清零后写
26h
到
CR
p>
寄存器,若
Resend
为
0
,则不管;
互感器校验仪项目板上的网口程序不包括
数据溢出处理
部分。
5
:
DMA
DMA:Direct Memory
Access,
直接存储器访问。
-
-
-
-
-
-
-
-
-
上一篇:NPU软件
下一篇:UCOS-II概念及内核