主要芯片介绍
·SX52BD是Ubicom公司生产的一款RISC指令集的高速单片机。程序存储器采用Flash,片内容量为4096字节,重复写周期1万次以上;数据存储器是SRAM,片内容量为262×8位。SX52BD采用4个阶段传递(接收-解码-执行-写入),所以每一时钟周期执行1条指令。当最大操作频率达到100MHz时,指令以每10ns的时钟周期运行。通过串口或并口可以对芯片进行在线编程,芯片还有在线调试支持逻辑。该单片机的最大特点就是虚拟外设功能,即通过软件对I/O口进行灵活的配置, CPU通过执行虚拟软件模块直接驱动I/O口实现硬件外设功能(如UART、I2C、SPI、Caller ID、FSK等)。
·Cirrus公司的CS8900A是用于嵌入式设备的低成本以太局域网控制器。它的高度集成设计使外部器件大大减价。CS8900A包括片上RAM、10Base-T传输和接收滤波器,以及带24mA驱动的直接ISA总线接口,设置好其内部各个寄存器的值,芯片就可以自动开通网络接口,由于使用RJ45连接器,所以利用E2023芯片把网络中的信号进行转换。
·AT24LC256是Atmel公司生产的一种串行256KB的 EEPROM存储器,它通过2根数据线与外界通信,兼容I2C总线接口,可分别设为硬件和软件写保护,高达10万次的擦写,40年以上的数据保护,主要用来存储网页信息。
硬件设计
硬件设计原理图如图1所示。
图1 硬件设计原理图
CS8900A有三种工作模式:I/O模式、存储器模式和直接存储器模式,默认为I/O模式,通过程序可变换成其它模式。CS8900A的三种工作模式各有优缺点,本设计中采用的是I/O模式。CS8900A共有8个16位的I/O口,这8个I/O口与片内的8个16位寄存器相对应。如图1所示,CS8900A采用8位的数据总线方式和SX52BD的RB口相连.地址线和SX52BD的RA口相连。复位后,SX52BD对CS8900A有唯一地址。
与24X256有关的电路,除了上述的和CS8900A连接的部分外,还有PROG接口、晶振和复位电路。其中,PROG接口用于编程和调试,用一个4引脚的接头引出OSC1、OSC2、VCC和地用于编程和调试,也可以通过串口接振荡器引脚进行在线串行编程。
CS8900A片内集成了一个10Mbps的以太网收发器,以及所有用于和局域网通信的模拟和数字电路,通过一个电磁隔离器E2023直接和局域网相连。RJ45为网络接头,可接10Mbps或100Mbps的网络集线器。
需要注意的是,在PCB布线时数字信号和模拟信号不能混合,信号线不能走在CS8900A下面,输出变压器离RJ45尽量近,传输线和接收线的终端匹配电阻和电容应尽量靠近CS8900A。
软件设计
本设计的软件部分分为四部分,主要实现网络协议栈的四层结构:数据链路层、网络层、传输层和应用层
数据链路层
数据链路层的实现主要由SX52BD控制网卡芯片CS8900来完成。系统工作时,SX52BD首先对网卡芯片进行初始化,即写寄存器LINECTL、RXCTL、RCCFG、BUSCT。发数据时,写控制寄存器TXCMD,并将发送数据长度写入TXLENG,然后将数据依次写入PORT0口,网卡芯片将数据组织为链路层类型并添加填充位和CRC校验送到网络。
网络层
SX52BD100的协议栈中,网络层的实现就是执行IP协议包,在发送时,要把发送出去的消息进行IP打包,即加上IP包头,使之符合IP数据包的格式发送到物理层;将接收到的来自物理层的数据包进行IP解包,即去掉包头,送到TCP层。
传输层
传输层的实现,即对TCP层的实现。在SX52BD的协议栈中,对TCP层的编程通过TCP API(应用程序接口)来进行。TCP的API主要包括下面的函数和变量:
发送数据或接收数据。接收数据时,从IP层来的数据经过状态机去掉TCP包头后再送到应用层;发送数据时,状态机在数据前面加上TCP包头再发送到IP层。接收数据时,需要用到的TCP API函数为TCPAppRxBytes()、TCPAppRxData()和TCPAppRxDone();发送数据时,需要用到的TCP API函数为TCPAppTxBytes()、TCPAppTxData()和TCPAppTxDone()。需要注意的是在建立了TCP连接后才可以发送数据。
应用层
应用层的实现,先把源文件下载到AT24C256,,SX52BD通过智能信息表来来管理AT24C256中的资源。当一个请求到来时,一个8位的无用信息对统一资源定位器进行运算(8位字符加运算),再将得到的数据乘以2,并把这个结果作为一个索引区中的一个值。在AT24C256中建立了查找表,凭着这个值在E2PROM中去查表,从而找到相应的资源。