引言
当今社会已经进入数字信息技术和网络技术高速发展的后PC(Post-PC)时代,嵌入式系统已经广泛渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术、娱乐业以及人们的日常生活等方方面面;而网络技术的快速发展和互联网的广泛应用,使得嵌入式产品有了更广泛的前景。各种家电设备、PDA、仪器仪表、工业生产中数据的采集与控制等设备正在逐渐走向网络化,以共享互联网络中庞大的信息资源。嵌入式设备的网络化开发有着广阔的前景。
本文以SMSC公司的LAN91C96嵌入式以太网控制器为例,介绍嵌入式系统网络接口卡(NIC)的软硬件设计。
1 以太网控制器LAN91C96简介
LAN91C96是SMSC公司生产的专门用于嵌入式产品的10M以太网控制器。其优良的性能、低功耗及小尺寸,使LAN91C96成为嵌入式NIC中的主流产品。
1.1 主要特点
◆ 支持IEEE802.3(ANSI8802-3)以太网标准
◆ 全双工收发方式,具有睡眠模式
◆ 6KB的片上RAM
◆ 与处理器接口可采用PCMCIA、ISA或Motorola 68000
◆ 支持先进的传输队列管理
◆ 硬件MMU
◆通过串行EEPROM选择性配置
◆ 全双工传输模式
◆可连接同轴电缆和双绞线,支持10Base5、10Base2、10BaseT,并可自动检测所连介质
◆ 高级的电源管理特性
◆ 支持“Magic Packet”电源管理技术
◆ 低功耗的CMOS设计
1.2 内部框架
图1是LAN91C96原理框图。
图1 LAN91C96内部框图
LAN91C96网卡控制其内部集成了6KB的RAM,用来存放数据包。内部的MMU、判决器和DMA对数据包的传输发送进行有效的管理。CSMA/CD(载波监听多路访问/冲突避免)模块集成了IEEE 802.3 MAC层协议,负责监听网络情况和地址过滤,若目的地址是LAN91C96的地址、广播地址或多播地址,则接收此数据包,否则抛弃。内部物理接口(PHY)包含一个ENDEC和10BaseT Transceiver。编解码器(ENDEC)负责曼彻斯特(Manchester)编解码,并提供标准6脚连接单元接口(AUI),外接同轴传输接收器,应用10Base2/5。传输数据时,10BaseT Transceiver负责把主控制器传过来的反向不归零码(NRZ)数据转换为Manchester数据,并以适当的电平加以驱动;接收时负责连接完整性测试。外接的串行电可擦除只读ROM(EEPROM)中可存储网卡的MAC地址,当OS启动加载网卡时,以太网控制器就从EEPROM的固定地址中读取MAC地址并存储在相应的寄存器中。
1.3 工作原理
LAN91C96内部6KB的RAM为数据包的传输接收提供缓冲,使全双工工作模式下数据传输率可达10Mbps;MMU把RAM分成256B的页,并负责为每个数据帧分配一个或多个页。
当主处理器传输数据时,MMU首先根据数据大小为其在RAM中分配若干页。在数据传送到RAM时,此数据帧的帧号也在TX FIFO中排队,然后此数据帧在轮到时传送到PHY模块进行Manchester编码,最后根据CSMA/CD协议把此数据帧传送到相应的介质上。
在介质上有数据时,LAN91C96将数据帧复制一份并传送到ENDEC模块进行Manchester解码,而CSMA/CD模块根据该数据帧头的目的地址是否为本网卡MAC地址、广播或多播地址来决定此数据帧的取舍。若地址匹配,MMU为其在RAM中开辟相应大小的空间,并以中断的方式告知主处理器。在数据帧被取走后,MMU释放此块内存。
1.4 数据帧的构成
一个IEEE 802.3数据帧由以下几个部分组成:前导位(preamle)、帧起始位(SFD)、目的地址(destination)、源地址(source)、数据长度(length)、数据(data)、帧校验字(FCS)。如图2所示,数据的数量范围46~1500B,如一组要传送的数据为46B,就用零补足;超过1500B时,需要拆成多个帧传送。前导位、帧起始位和帧校验字仅供控制器本身用,主处理器收到的数据帧的组成依次包括:接收状态(1B)、下一帧的页地址指针(1B)、目的地址(6B)、源地址(6B)、数据长度/帧类型(2B)、数据。数据长度/帧类型的值小于或等于1500B时,表示数据场的长度;反之,表示数据帧的类型。如值依次为 0x08、0x00,表示数据为IP包;值依次为0x08、0x06,表示数据为ARP包。
图2 数据帧的组成
2 以太网卡设计方案
2.1 硬件设计方案
此设计方案采用的嵌入式处理器是Intel公司的PXA250(XScale)。该处理器是Intel为了满足便携式和嵌入式应用需求而优化的微处理器。PXA250基于Intel XScale微体系结构,RISC架构,最高可以运行400MHz。 PXA250采用ARM指令、数据高速缓存、内存管理单元(MMU)和读/写缓冲器。另外,PXA250提供系统支持逻辑、多串行通信通道、彩色/灰度刻度LCD控制器、支持PCMCIA、通用I/O端口、USB、串口、红外接口、JTAG、音频等。
图3是嵌入式以太网卡的原理图。LANC91C96内部寄存器可通过对地址线A0、A1、A2、A3……的操作来访问,LAN91C96内部寄存器宽度是16bit;而PXA250的访问宽度是32bit,所以LANC91C96的A1、A2、A3……分别与PXA250的A2、A3、A4……相连。LANC91C96的数据访问宽度是16bit,所以其16根数据线与PXA250的低16根数据线相连。中断INTR0与PXA250的GPIO11相连。
图3 嵌入式以太网卡原理图
外接的93C46是1Kbit的串行EEPROM,64×16阵列,按字访问,用来存储以太网卡的MAC地址。MAC地址是48bit,预先烧写在EEPROM的指定位置。每次系统启动时,LAN91C96从EEPROM重读出自己的MAC地址,存在指定的寄存器中。EX2001是针对10M以太网的变压滤波器。
2.2 软件设计方案
该嵌入式设备运行Windows CE.net操作系统。Windows CE是一个抢先式多任务并具有强大通信和图形显示功能的Win32嵌入式操作系统,具有可移植性、实时性、模块化等特点;是微软专门为信息设备、移动应用、消费类电子产品、嵌入式应用设计的高性能操作系统。Windows CE是从整体上为有限资源的平台设计的多线程、完整优先级、多任务的操作系统。其模块化设计允许它对于从掌上电脑到专用工业控制器的用户电子设备进行定制。
对LAN91C96的软件操作采用中断处理方式:当系统有数据要传输时,首先把该数据传到LAN91C96,LAN91C96把数据封装成帧,加上前导字、校验字等部分,并检测到网络中没有数据在传输,才把此数据帧传输到网络中,并向系统提出中断,告知已成功传输数据;当LAN91C96接收到一数据帧时,首先由CSMA/CD模块察看此数据帧的目的地址,若为此网卡MAC地址、广播地址或多播地址,才向系统提出中断,并把此数据帧传到LAN91C96的数据寄存器中。系统对此包进行处理,察看是否校验字错误等,并剥去前导字,然后传给上层NDIS进行处理。
3 结论
基于上述方案的嵌入式以太网卡可以稳定地工作,实际网络速度可以达到9Mbps(依网络状况而定),并具有FTP等功能。