1 实验平台的硬件设计
计算机网络实验平台的硬件框图如图1所示,它主要由C805lF310、CS8900A和MAX232以及外围电路组成。
1.1 单片机C8051F310
C805lF310是美国Cygnal公司的产品。该器件是完全集成的混合信号片上系统型MCU芯片,采用32脚LQFP封装,体积较小。C8051F310的模拟外设包括10位ADC以及速率可达200 KSpS的两个模拟比较器。器件的供电电压为2.7~3.6 V,典型工作电流为5mA@25MHz,典型停机电流为0.1μA。同时,C8051F310还带有1280字节的内部数据RAM(1 K+256)和16 KB的闪速存储器,可以在系统编程,其扇区大小为512字节。该MCU芯片的数字外设包括29个端口I/O,所有口线的耐压均为5 V,并具有4个通用16位计数器/定时器。C8051F310的时钟源既可用内部可编程振荡器(24.5 MHz,±2%精度),也可用外部振荡器(晶体、RC、C)或外部时钟。
1.2 以太网控制芯片CS8900A
CS8900A是Cirrus Logic公司生产的低功耗16位以太网控制器。它功能强大,其高度集成设计使其不再需要其它以太网控制器所必需的昂贵外部器件。CS8900A的内部结构如图2所示。
CS8900A包括片上RAM、10BASE-T发送和接收滤波器以及带24 mA驱动能力的直接ISA总线接口。除了高度集成外,CS8900A还提供其他性能和配置选择。它独特的PacketPage结构可自动适应网络通信量模式的改变和现有系统资源,因而系统效率很高。
CS8900A的内部功能主要是802.3介质访问控制块(MAC)。802.3介质访问控制块可支持全双工操作,并可完全依照IEEE802.3以太网标准来处理有关以太网数据帧的发送和接收,包括冲突检测、帧头的产生和检测、CRC校验码的生成和验证等。通过对发送控制器(TXCMD)的初始化配置,MAC能自动完成帧的冲突后重传。如果帧的数据部分少于64字节,它还能生成填充字段,以使数据帧达到802.3所要求的最短长度。
CS8900A的主要特点是符合IEEE802.3以太网标准,并带有ISA接口。片内有4K字节RAM,可适用I/0操作模式、存储器操作和DMA操作模式。芯片带有传送、接收低通率的10BASE-T连接端口,并支持10BASE2、10BASE5和10BASE-F的AUI接口,也可自动生成报头,自动进行CRC检验,而且冲突后可自动重发。CS8900A的最大电流消耗为55 mA(5 V电源),可全双工操作,同时支持外部EEPROM。
CS8900A收到由主机发来的数据包(从目的地址域到数据域,如图3所示)后,即可侦听网络线路,如果线路忙,就等待,否则就立即发送该数据帧。
发送时.首先应添加以太网帧头(包括先导字段和帧开始标志),然后生成CRC校验码,最后将此数据帧发送到以太网上。接收时,则把从以太网接收的数据帧经过解码、去帧头和地址等步骤后所得到的数据放在缓存内,这样,在CRC校验通过后,根据初始化配置情况,CS8900A通知主机收到了数据帧,并将数据用某种传输模式传到主机的存储区。
1. 3 硬件电路分析和设计
本实验平台采用C805lF310作为控制器,而以太网控制芯片CS8900A也是主要的一个工作部件,用于完成对网络数据的发送和接收。网络隔离变压器E2023是和芯片CS8900A配套使用的,用于将外部线路与CS8900A隔开,防止干扰,并可实现带电插拔功能。此外,CS8900A还有两个接口,一个是用来和用户模块连接的RS232串行接口(用MAX232芯片进行电平转换),另一个是用来连接网络的RJ45接口。
C805lF310通过数据线、地址线和控制线与CS8900A相连。它可通过等实现对CS8900A的工作方式的控制和读写操作。当CS8900A有硬件复位或软件复位时,它将默认成8位工作模式。本设计采用8位模式,这样,C805lF310的P1口与CS8900A的低8位数据线相连。CS8900A与C8051F310之间的数据传输采用默认的I/O模式,因此,读写管脚被置高,以关闭Memory方式。在此模式下,用3根地址线就可以实现对所有寄存器的访问,只要将管脚SAl、SA2和SA3对应接到C8051F310的地址线上即可。实际上,除了为保证缺省偏移地址(0X300H)须将SA8和SA9置高外。其余不用的地址线都接入低电平。
2 实验平台的软件设计
本系统的软件部分主要包括计算机程序、单片机程序及以太网芯片CS8900A的驱动程序。
2.1 计算机程序
计算机程序主要指的是实验界面。这是人机交互的窗口。通过该界面,学生可以控制并查看发送和接收流程。这样,可在发送数据时,输入要发送的内容,选择使用的协议,并控制发送流程,然后查看并分析各层数据;而在接收数据时,则可通过分析收到的数据包来分析使用的协议。
2.2 CS8900A的驱动程序设计
在8位I/0模式下,CS8900A不支持中断方式。因此,C805lF310采用查询方式与CS8900A通信。在CS8900A开始工作之前,系统必须进行一定的初始化,以确定它的工作模式。在主机与网络交换数据的过程中。还需要不断地对CS8900A的内部寄存器进行读写操作。通常在I/0模式下,MCU可以通过操作CS8900A的几个主要的寄存器来实现对CS8900A中所有内部寄存器进行读写,这几个主要的工作寄存器有:
LINECTL(0112H):可决定CS8900A的基本配置和物理接口。其初始值为00d3H,可选择物理接口为10BASE-T,并使能设备的发送和接收控制位:
RXCTL (0104H):控制CS8900A接收特定的数据报。初始值为0d05H,可接收网络上的广播或者目标地址同本地物理地址相同的正确数据报:
RXCFG(0102H):可控制CS8900A接收特定的数据报并引发中断。可设置为0103H:
BUSCT(0116H):控制芯片的I/0接口的一些操作。设置初始值为8017H,可打开CS8900A的中断总控制位:
ISQ (0120H):ISQ是CS8900A的中断状态寄存器,可在内部映射接收中断状态寄存器和发送中断状态寄存器的内容:
PORTO(0000H):发送和接收数据时,MCU通过PORT0传递数据;
TXCMD(0004H):为发送控制寄存器,如果写入数据00COH,那么CS8900A将在全部数据写入后开始发送数据;
TXLENG(0006H):发送数据长度寄存器,发送数据时,首先写入发送数据长度,然后将数据通过PORT0写入芯片。
寄存器后括号内的数字是寄存器地址相对基址0300H的偏移量。需要注意的是,在初始化CS8900A之前需强迫其进入16位模式。主机在一次中断处理中,必须连续地读并且处理中断状态队列(ISQ)。当有中断产生时,中断管脚信号变高,并依次将5个寄存器的内容映射到ISQ中,直到从ISQ中读出OX000为止。其驱动程序的软件流程图如图4所示。
2.3 MCU(C8051F310)主控程序
通常C8051F310首先初始化芯片CS8900A。初始化部分主要完成软件复位并检查复位完成标志是否置位;接着设定8/16位工作模式,默认为8位模式;再设定临时使用的以太网物理地址(真实地址需要向权威机构申请),之后,设定接收帧的类型时,一般要能接收广播,然后确定数据的传送方向(可设为全双工或半双工),接着中断允许,使能接收中断,确定CS8900A的中断管脚号(根据硬件线路使用情况来确定),最后接收发送使能。
C8051F310完成数据的解包打包时。将从网络接收数据报,并对数据报进行分析,如果是IP数据包,则解析IP分组并送TCP层,并在解析TCP段后送应用层,然后将数据解包后通过串口输出。反之,如果C8051F310从串口收到数据,则将数据按照TCP协议格式打包,并在生成IP分组后送入CS8900A,然后由CS8900A把数据输出到局域网中。
可以看出,链路层是由CS8900A完成的,而TCP/IP的网络层和传输层由C8051F310来处理,应用层则由用户根据需要进行数据处理。
本文给出了基于C8051F310单片机和CS8900A以太网控制器的计算机网络实验平台的设计方法。通过本实验平台,学生可以完成协议分析的相关实验内容,从而加强学生对TCP/IP协议族的理解。