Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80519
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-03 10:38
文章分类

全部博文(24)

文章存档

2015年(1)

2014年(23)

我的朋友

分类: 服务器与存储

2014-04-03 10:54:22

原文地址:DM9000网卡简介 作者:xiong9937

网络控制器选用DAVICOM公司的DM9000快速以太网控制处 理器,合成了MAC,PHY,MMU。该处理器配备有标准10M/100M自适应,16K大容量的FIFO,4路多功能GPIO,掉电,全双工工作等功 能。物理层支持以太网接口协议。由于数据有时是以猝发形式收到的,因此,DM9000还集成有接收缓冲区,以便在接收到数据时能把数据放到这个缓冲区中, 然后由数据链路层直接从该缓冲区里取走数据。链路层通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与电缆的物理接口细节数 据,它的缓冲区可用来暂时存储要发送或接收的帧。
 
DM9000网卡工作原理:
 
·DM_NCR(0x00)
 
网络控制寄存器。网络控制寄存器用于对DM9000工作状态的控制,可以使DM9000复位。
 
·DM_NSR(0x01)
 
网络状态寄存器,从该寄存器可以获知DM9000当前的工作状态,例如是否处于连接状态,发送数据是否完毕,是否处于睡眠状态等。
 
·DM_TCR(0x02)
 
发送控制寄存器,可以控制发送使能。
 
·DM_RCR(0x05)
 
接收控制寄存器,可以控制接收使能。
 
·DM_RST (0x06)
 
接收状态寄存器,当有接收中断到来时,可以通过读取该寄存器,进一步了解当前DM9000网卡的接收状态,从而确定目前接受的这一帧数据应该如何处理。
 
·DM_FCR(0x0A)
 
接收、发送流量控制寄存器。
 
·DM_TXPLL(0xFC)
 
传送数据长度低字节寄存器,在发送数据时,该寄存器存放发送的数据的长度的低字节。
 
·DM_TXPLH(0xFD)
 
传送数据长度高字节寄存器,在发送数据时,该寄存器存放发送的数据的长度的高字节。
 
·DM_ISR(0xFE)
 
中 断状态寄存器,当一个中断到来时,该寄存器存放着中断类型。DM9000中断处理函数通过读取该寄存器,得到目前中断信息,从而能够正确调用相应的中断处 理子程序。读取该中断状态寄存器之后,还需要将读取结果存放回该寄存器,也就是需要清楚中断状态,否则将无法再次响应中断。
 
·DM_IMR (0xFF)
 
中 断掩码寄存器,该寄存器存放当前DM9000使能的中断类型。在该系统中,我们只让接收中断使能。利用该寄存器,我们可以灵活地使得DM9000屏蔽中 断,或者开启中断,例如在发送数据开始时,可以屏蔽中断,在发送结束后,再开启中断,这样可以使得DM9000工作的稳定性大大提高。
 

DM9000(A) 是一个全集成、功能强大、性价比高的快速以太网MAC控制器,它带有一个通用处理器接口、EEPROM接口、10/100 PHY和16KB的SRAM(13KB作为接收FIFO,3KB作为发送FIFO)。它采用单电源供电,可兼容3.3V、5V的IO接口电平。

DM9000(A)同样支持MII(Media Independent Interface 介质无关)接口,连接到HPNA(Home Phone-line Networking Alliance 家用电话网络联盟)设备上或其它支持MII的设备。

DM9000(A)包含一系列可被访问的控制状态寄存器,这些寄存器是字节对齐的,他们在硬件或软件复位时被设置成初始值。

以下为DM9000的寄存器功能详解:

NCR 00H):网络控制寄存器(Network Control Register

7:EXT_PHY:1选择外部PHY,0选择内部PHY,不受软件复位影响。

6:WAKEEN:事件唤醒使能,1使能,0禁止并清除事件唤醒状态,不受软件复位影响。

5:保留。

4:FCOL:1强制冲突模式,用于用户测试。

3:FDX:全双工模式。内部PHY模式下只读,外部PHY下可读写。

2-1:LBK:回环模式(Loopback)00通常,01MAC内部回环,10内部PHY 100M模式数字回环,11保留。

0:RST:1软件复位,10us后自动清零。

NSR 01H):网络状态寄存器(Network Status Register

7:SPEED:媒介速度,在内部PHY模式下,0为100Mbps,1为10Mbps。当LINKST=0时,此位不用。

6:LINKST:连接状态,在内部PHY模式下,0为连接失败,1为已连接。

5:WAKEST:唤醒事件状态。读取或写1将清零该位。不受软件复位影响。

4:保留。

3:TX2END:TX(发送)数据包2完成标志,读取或写1将清零该位。数据包指针2传输完成。

2:TX2END:TX(发送)数据包1完成标志,读取或写1将清零该位。数据包指针1传输完成。

1:RXOV:RX(接收)FIFO(先进先出缓存)溢出标志。

0:保留。

TCR02H):发送控制寄存器(TX Control Register

7:保留。

6:TJDIS:Jabber传输使能。1使能Jabber传输定时器(2048字节),0禁止。

注释:Jabber是一个有CRC错误的长帧(大于1518byte而小于6000byte)或是数据包重组错误。原因:它可能导致网络丢包。多是由于 作站有硬件或软件错误。

5:EXCECM:额外冲突模式控制。0当额外的冲突计数多于15则终止本次数据包,1始终尝试发发送本次数据包。

4:PAD_DIS2:禁止为数据包指针2添加PAD。

3:CRC_DIS2:禁止为数据包指针2添加CRC校验。

2:PAD_DIS2:禁止为数据包指针1添加PAD。

1:CRC_DIS2:禁止为数据包指针1添加CRC校验。

0:TXREQ:TX(发送)请求。发送完成后自动清零该位。

TSR_I03H):数据包指针1的发送状态寄存器1TX Status Register I

7:TJTO:Jabber传输超时。该位置位表示由于多于2048字节数据被传输而导致数据帧被截掉。

6:LC:载波信号丢失。该位置位表示在帧传输时发生红载波信号丢失。在内部回环模式下该位无效。

5:NC:无载波信号。该位置位表示在帧传输时无载波信号。在内部回环模式下该位无效。

4:LC:冲突延迟。该位置位表示在64字节的冲突窗口后又发生冲突。

3:COL:数据包冲突。该位置位表示传输过程中发生冲突。

2:EC:额外冲突。该位置位表示由于发生了第16次冲突(即额外冲突)后,传送被终止。

1-0:保留。

TSR_II04H):数据包指针2的发送状态寄存器2TX Status Register II

同TSR_I

略。

RCR05H):接收控制寄存器(RX Control Register

7:保留。

6:WTDIS:看门狗定时器禁止。1禁止,0使能。

5:DIS_LONG:丢弃长数据包。1为丢弃数据包长度超过1522字节的数据包。

4:DIS_CRC:丢弃CRC校验错误的数据包。

3:ALL:忽略所有多点传送。

2:RUNT:忽略不完整的数据包。

1:PRMSC:混杂模式(Promiscuous Mode)

0:RXEN:接收使能。

RSR06H):接收状态寄存器(RX Status Register

7:RF:不完整数据帧。该位置位表示接收到小于64字节的帧。

6:MF:多点传送帧。该位置位表示接收到帧包含多点传送地址。

5:LCS:冲突延迟。该位置位表示在帧接收过程中发生冲突延迟。

4:RWTO:接收看门狗定时溢出。该位置位表示接收到大于2048字节数据帧。

3:PLE:物理层错误。该位置位表示在帧接收过程中发生物理层错误。

2:AE:对齐错误(Alignment)。该位置位表示接收到的帧结尾处不是字节对齐,即不是以字节为边界对齐。

1:CE:CRC校验错误。该位置位表示接收到的帧CRC校验错误。

0:FOE:接收FIFO缓存溢出。该位置位表示在帧接收时发生FIFO溢出。

ROCR07H):接收溢出计数寄存器(Receive Overflow Counter Register

7:RXFU:接收溢出计数器溢出。该位置位表示ROC(接收溢出计数器)发生溢出。

6-0:ROC:接收溢出计数器。该计数器为静态计数器,指示FIFO溢出后,当前接收溢出包的个数。

BPTR08H):背压门限寄存器(Back Pressure Threshold Register

7-4:BPHW:背压门限最高值。当接收SRAM空闲空间低于该门限值,则MAC将产生一个拥挤状态。1=1K字节。默认值为3H,即3K字节空闲空间。不要超过SRAM大小。

3-0:JPT: 拥挤状态时间。默认为200us。0000为5us,0001为10us,0010为15us,0011为25us,0100为50us,0101为 100us,0110为150us,0111为200us,1000为250us,1001为300us,1010为350us,1011为 400us,1100为450us,1101为500us,1110为550us,1111为600us。

FCTR09H):溢出控制门限寄存器(Flow Control Threshold Register

7-4:HWOT:接收FIFO缓存溢出门限最高值。当接收SRAM空闲空间小于该门限值,则发送一个暂停时间(pause_time)为FFFFH的暂停包。若该值为0,则无接收空闲空间。1=1K字节。默认值为3H,即3K字节空闲空间。不要超过SRAM大小。

3-0:LWOT:接收FIFO缓存溢出门限最低值。当接收SRAM空闲空间大于该门限值,则发送一个暂停时间(pause_time)为0000H的暂停包。当溢出门限最高值的暂停包发送之后,溢出门限最低值的暂停包才有效。默认值为8K字节。不要超过SRAM大小。

RTFCR0AH):接收/发送溢出控制寄存器(RX/TX Flow Control Register

7:TXP0:1发送暂停包。发送完成后自动清零,并设置TX暂停包时间为0000H。

6:TXPF:1发送暂停包。发送完成后自动清零,并设置TX暂停包时间为FFFFH。

5:TXPEN:强制发送暂停包使能。按溢出门限最高值使能发送暂停包。

4:BKPA:背压模式。该模式仅在半双工模式下有效。当接收SRAM超过BPHW并且接收新数据包时,产生一个拥挤状态。

3:BKPM:背压模式。该模式仅在半双工模式下有效。当接收SRAM超过BPHW并数据包DA匹配时,产生一个拥挤状态。

2:RXPS:接收暂停包状态。只读清零允许。

1:RXPCS:接收暂停包当前状态。

0:FLCE:溢出控制使能。1设置使能溢出控制模式。

EPCR/PHY_CR0BH):EEPROMPHY控制寄存器(EEPROM & PHY Control Register

7-6:保留。

5:REEP:重新加载EEPROM。驱动程序需要在该操作完成后清零该位。

4:WEP:EEPROM写使能。

3:EPOS:EEPROM或PHY操作选择位。0选择EEPROM,1选择PHY。

2:ERPRR:EEPROM读,或PHY寄存器读命令。驱动程序需要在该操作完成后清零该位。

1:ERPRW:EEPROM写,或PHY寄存器写命令。驱动程序需要在该操作完成后清零该位。

0:ERRE:EEPROM或PHY的访问状态。1表示EEPROM或PHY正在被访问。

EPAR/PHY_AR0CH):EEPROMPHY地址寄存器(EEPROM & PHY Address Register

7-6:PHY_ADR:PHY地址的低两位(bit1,bit0),而PHY地址的bit[4:2]强制为000。如果要选择内部PHY,那么此2位强制为01,实际应用中要强制为01。

5-0:EROA:EEPROM字地址或PHY寄存器地址。

EPDRL/PHY_DRL0DH):EEPROMPHY数据寄存器低半字节(EEPROM & PHY Low Byte Data Register

7-0:EE_PHY_L

EPDRL/PHY_DRH0EH):EEPROMPHY数据寄存器高半字节(EEPROM & PHY High Byte Data Register

7-0:EE_PHY_H

WUCR0FH):唤醒控制寄存器(Wake Up Control Register

7-6:保留。

5:LINKEN:1使能“连接状态改变”唤醒事件。该位不受软件复位影响。

4:SAMPLEEN:1使能“Sample帧”唤醒事件。该位不受软件复位影响。

3:MAGICEN:1使能“Magic Packet”唤醒事件。该位不受软件复位影响。

2:LINKST:1表示发生了连接改变事件和连接状态改变事件。该位不受软件复位影响。

1:SAMPLEST:1表示接收到“Sample帧”和发生了“Sample帧”事件。该位不受软件复位影响。

0:MAGICST:1表示接收到“Magic Packet”和发生了“Magic Packet”事件。该位不受软件复位影响。

PAR10H -- 15H):物理地址(MAC)寄存器(Physical Address Register

7-0:PAD0 -- PAD5:物理地址字节0 -- 字节5(10H -- 15H)。用来保存6个字节的MAC地址。

MAR16H -- 1DH):多点发送地址寄存器(Multicast Address Register

7-0:MAB0 -- MAB7:多点发送地址字节0 -- 字节7(16H --1DH)。

GPCR1FH):GPIO控制寄存器(General Purpose Control Register

7-4:保留。

3-0:GEP_CNTL:GPIO控制。定义GPIO的输入输出方向。1为输出,0为输入。GPIO0默认为输出做POWER_DOWN功能。其它默认为输入。因此默认值为0001。

GPR1FH):GPIO寄存器(General Purpose Register

7-4:保留。

3-1:GEPIO3-1:GPIO为输出时,相关位控制对应GPIO端口状态,GPIO为输入时,相关位反映对应GPIO端口状态。(类似于单片机对IO端口的控制)。

0:GEPIO0:功能同上。该位默认为输出1到POWER_DEWN内部PHY。若希望启用PHY,则驱动程序需要通过写“0”将PWER_DOWN信号清零。该位默认值可通过EEPROM编程得到。参考EEPROM相关描述。

TRPAL22H):发送SRAM读指针地址低半字节(TX SRAM Read Pointer Address Low Byte

7-0:TRPAL

TRPAH23H):发送SRAM读指针地址高半字节(TX SRAM Read Pointer Address High Byte

7-0:TRPAH

RWPAL24H):接收SRAM指针地址低半字节(RX SRAM Write Pointer Address Low Byte

7-0:RWPAL


阅读(1181) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~