基于单片机的以太网接口设计内容摘要:

和无连接的 UDP。 TCP(Transmission Control Protocol)提供的是面向连接的服务。 在传送数据之前必须先建立连接,数据传送结束后要释放连接。 由于 TCP 提供的是可靠的、面向连接的运输服务,因此不可避免的增加了许多的开销,如确认、流量控制、计时器以及连接管理等,这些不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。 而嵌入式系统在设计时会面临很多的特殊要求,如处理器速度有限、存储空间太小、传输率等。 一般来讲,在设计嵌入式设备接口时,快速、简单地与嵌入式设备进行双向数据传输是首先要保证的。 为了减少与 嵌入式设备之间的往返信息,使网络成为一种更为高效的通信媒介,本设计不采用 TCP,而把传输实现的重点转移到 UDP 上来。 UDP(user Datagram Protocol)是一个简单的面向应用的传输层协议,不提供可靠信道。 UDP 在传送数据之前不需要先建立连接,传送数据之后不需要等待确认,所以传输速度很快。 UDP 用户数据报有两个字段 :数据字段和首部字段。 首部字段很简单,只有 8 个字节,由 4 个字段组成,每个字段都是两个字节。 它的首部结构如表 26 所示。 源端口 :占 16bit,用来记录源端应用程序所用的连接端口号。 目的端口 :占 16bit,用来记录目的端应用程序所用的连接口编号。 表 26 UDP 用户数据报首部 源端口 目标端口 UDP 头长度 校验和 数据 四川理工学院本科毕业(设计)论文 12 UDP 长度 :占 16bit, UDP 用户数据报的长度。 校验和 :占 16bit,防止 UDP 用户数据报在传输中出错。 UDP 检验和覆盖 UDP 首部和 UDP 数据。 包括 3 部分 :伪首部、 UDP 首部和应用层数据。 位于 UDP 报头前 12 字节的是伪首部。 UDP 数报的长度可以为奇数字节,而检验和算法是把若干个 16bit 字相加,解决方法是必要时在最后增加填充字节 0,这只 是为了检验和的计 (也就是说,可能增加的填充字节不被传送 )。 UDP 在发送数据之前不需要建立连接,因此减少了开销和发送据之间的时延。 UDP 用户数据报的头部从表 26 可以看出,只有 8 字节的开始,比 TCP 所需要的 20 个字节要短,非常适合存储容量的八位单片机。 UDP 不使用拥塞控制,这样既使需要连入以太网的型嵌入式系统不需要维持具有很多参数的、复杂的连接状态表,同保证了数据的发送速率,对某些实时性来说也非常重要。 UDP 也正符合某些实时应用要求以恒定的速率发送数据,并且允许在网络发拥塞时丢失一些数据,但不允许数据有太大 的时延的要求。 杜晓华:基于单片机的以太网接口设计 12 第 3 章 硬件设计 根据经济成本低、功能够用的开发要求,该网络接入系统分别采用了 AT89S51 和RTL8019AS 以太网控制器芯片来实现。 其中, AT89S51 微控制器主要负责 TCP/IP 协议中的网络层 (IP 数据帧的封装和拆包 )、传输层 (UDP 协议的实现 )的实现。 其中通信处理部分主要是根据 UDP 协议实现读卡器与以太网中监控计算机进行数据交换。 而数据处理部分则是进行数据帧的封装和数据提取。 根据这些要求,相应的硬件电路方案如图 31所示。 本设计的系统电路主要由 AT89S5 RTL8019AS 两 个主要部分 组 成,扩展62256RAM,网络接口控制器通过 RJ45 接口接入 Inter。 AT89S51 是美国 ATMEL 公司生产的低电压、高性能 CMOS 8 位单片机,片内含4kbytes 的可系统编程的 Flash 只读程序存储器和 128 bytes 的 RAM,器件采用 ATMEL公司的高密度、非易失性存储技术生产,兼容标准 8051 指令系统和引脚。 它集 Flash 程序存储器 (既可在线编程 ISP 也可用传统方法进行编程 )及通用 8 位微处理器于单片芯片中。 AT89S51 提供如下标准 :4K 字节的 Flash, 128 字节的内部 RAM,看门狗 (WDT),32 个 I/0 线,两个 16 位的定时器 /计数器,一个 5 向量两级中断结构,一个全双工串行口,片内晶振和时钟电路。 AT89S51 内带看门狗定时器,无需外加监控芯片,通过软件 62256 刷卡器 AT89S51 RTL8019AS Inter RJ45 图 31 系统连接框图 四川理工学院本科毕业(设计)论文 14 设置就可保证系统可靠的工作。 由于 AT89S51 单片机的高性价比,它已广泛用于各种控制领域。 RTL8019AS 是由台湾 Realtek 公司生产的高集成以太网控制器芯片,片内集成了介质访问控制子层 (MAC)和物理层的性能,更重要的是它可以方便地设计基于 ISA 总线的系统,简 单的与嵌入式 CPU 或单片机进行接口。 另外,它还具有与 NE2020 兼容、软件移植性好以及低廉的价格等优点,在市场上的 10Mbps 网卡中占有相当的比例。 RTL8019AS 功能分析 RTL8019AS 主要性能 RTL8019AS 是一片高度集成的以太网控制器,具有曼彻斯特编码、冲突检测和重发的功能,它可以与很少的外围电路一起完成数据的发送和接收功能。 主要性能: ( 1) 符合 Ether Ⅱ 与 (10base 10base 10base T)标准; ( 2) 全双工,收发可同时达到 10Mbps 的速率,具有休眠模式,以降低功耗; ( 3) 内置 16KB 的 SRAM,用于收发缓冲,降低对主处理器的速度要求; ( 4) 支持 8/16 位数据总线, 8 个中断申请线以及 16 个 I/O 基地地址选择; ( 5) 可连接同轴电缆和双绞线,并可自动检测所连接的媒介类型; ( 6) 支持闪存读写; ( 7) 允许 4 个诊断 LED 引脚可编程输出; ( 8) 100 脚的 PQFP 封装,缩小了 PCB 尺寸。 RTL8019AS 内部结构 RTL8019AS 芯片主要功能模块包括 :ISA 总线接口、 MAC 引擎,集成的缓冲区内存,串行 EEPROM 接口和具有 10BaseT、 10Base2 和 10Base5 的完整模拟前端。 其内部结构如图 32 所示 : 杜晓华:基于单片机的以太网接口设计 15 RTL8O19AS 的工作模式 RTL8019AS 支持三种工作模式 : 第一种为跳线模式,其 I/0 基址和中断由跳线设置决定。 第二种为即插即用方式,由软件自动配置相应的参数。 第三种为免跳线方式, I/0 基址和中断由外接 93C46 设定。 网络接口芯片的第 65 脚 JP 是输入引脚,当第 65 脚为低电平时, RTL8019AS 工作在第 2 种或者第 3 种方式,而当 RTL8019AS 工作 在第 3 种模式时,需要使用 93C46。 如果把第 65 脚接高电平, RTL8019AS 工作在第 1 种跳线方式。 寄存器及 I/0 地址分配 首先,通过一个表来看一下 RTL8019AS 主要工作的寄存器 : RTL8019AS 具有 32 位输入输出地址,地址偏移量为 00H~ 1FH。 寄存器分为 4页 :PAGE0、 PAGE PAGE PAGE3。 CR 寄存器是控制命令寄存器,地址是 00H,这个寄存器用来选择寄存器页,控制ISA 总线接口 即插即用 ( PnP) 8Kx16SRAM Boot ROM 端口 EEPROM 端口 MAC 逻辑 ENA(编码译码)逻辑 AUI 接口 双绞线接口 图 32 RTL8019AS 内部结构 四川理工学院本科毕业(设计)论文 16 远程 DMA 操作。 该寄存器中的 PS PS0 用来指定寄存器的页。 在实际配置寄存器时,首先要指定要配置 的寄存器属于哪一页 (就是进行 PS1 和 PS0 的设置 ),然后对那一页中的寄存器写入配置信息。 此外还有几个用于接收的重要寄存器 : PSTART 接收缓冲区的起始页的地址。 PSTOP 接收缓冲区的结束页地址 (该页不用于接收 )。 BNRY 指向最后一个己经读取的页 (读指针 )。 CURR 当前的接收结束页地址 (写指针 )。 网卡含有 16K 字节的 RAM,地址为 0x4000~ 0x7fff(指的是网卡上的存储地址 ),每 256 个字节称为一页,共有 64 页。 页的地址就是地址的高 8 位,页地址为 0x40~ 0x7f。 这 16K 的 RAM 的一部分用 来存放接收的数据包,一部分用来存储待发送的数据包。 第0 页叫 Prom 页,只有 32 字节,地址为 0x0000~ 0x00lf,用于存储以太网物理地址。 设计中使用 0x40~ 0x4b 为网卡的发送缓冲区,共 12 页,刚好可以存储 2 个最大的以太网包。 使用 0x4c~ 0x7f 为网卡的接收缓冲区,共 52 页。 因此 PSTART=0x4c,PSTOP=0x80(0x80 为停止页,就是直到 0x7f,是接收缓冲区,不包括 0x80)刚开始,网卡没有接收到任何数据包,所以 BNRY 设置为指向第一个接收缓冲区的页 0x4c。 CURR 是网卡写内存的 指针,它指向当前正在写的页的下一页,那么初始化它就应该指向 0x4c+1=0x4d。 网卡写完接收缓冲区一页,就将这个页地址加一, CURR=CURR+1,这是网卡自动加的。 当加到最后的空页 (本设计中是 0x80, PSTOP)时,将 CURR 置为接收缓冲区的第一页 (这里是 0x4c, PSTART),也是网卡自动完成的。 当 CURR=BNRY时,表示缓冲区全部被存满,数据没有被用户读走,这时网卡将停止往内存写数据,新收到的数据包将被丢弃不要,而不覆盖旧的数据。 此时实际上出现了内存溢出。 而 BNRR 要由用户来操作。 用户从网卡读走一页数据,要将 BNRY 加一,然后再写到 BNRY 寄存器。 当 BNRY 加到最后的空页 (0x80, PSTOP)时,同样要将 BNRY 变成第一个接收页 (PSTART, 0x4c)BNRY=0x4c。 CURR 和 BNRY 主要用来控制缓冲区的存取过程,保证能顺次写入和读出 )。 当 CURR=BNRY+1(或当 BNRY=0x7f, CURR=0x4c)时,网卡的接收缓冲区里没有数据,表示没有收到数据包。 用户通过这个判断网卡的接杜晓华:基于单片机的以太网接口设计 17 收缓冲区没有包可以读。 当上述条件不成立时,表示接收到新的数据包。 然后用户应该读取 数据包,直到上述条件成立时,所有数据包已经读完,此时停止读取数据包。 TPSR 为发送页的起始页地址。 初始化为指向第一个发送缓冲区的页 0x40。 RCR 接收配置寄存器,设置为使用接收缓冲区,仅接收自己的地址的数据包 (以及广播地址数据包 )和多点播送地址包,小于 64 字节的包丢弃 (这是协议的规定,设置成接收是用于网络分析 ),校验错的数据包不接收。 TCR 发送配置寄存器,启用 CRC 自动生成和自动校验,工作在正常模式。 DCR 数据配置寄存器,设置为使用 FIFO 缓存,普通模式, 8 位数据传输模式,字节顺序可以设为高位字节在 前,低位字节在后,或是相反。 IMR 中断屏蔽寄存器,设置成 0x00,屏蔽所有的中断。 设置成 0xff 将允许中断。 MAR0~ MAR8 是设置多点播送的参数。 PAR0~ PAR5 是用于设置网卡的 MAC 地址。 PAGE2 的寄存器是只读的,所以不用设置。 PAGE3 的寄存器不是 NE2020 兼容的,所以除了电源管理外,也可以不用设置。 远程 DMA 地址包括 10H~ 17H,都可以用来做远程 DMA 端口,选用 10H 作为远程 DMA 端口。 复位端口包括 18H~ 1FH 共 8 个地址,功能一样,用于 RTL8019AS 复位,同样在这里选用 18H 作为复位端口。 RTL8019AS 的工作原理 按数据链路的不同,可以将 RTL8019AS 内部划分为远程 DMA(Remote DMA)通道和本地 (Local DMA)通道两个部分。 远程 DMA 完成主处理器和网卡内部缓冲区数据交换,本地 DMA 完成缓冲区数据发送。 处理器发送数据时,先将一帧数据通过远程 DMA 通道送到 RTL8019AS 的发送缓冲区,然后发出传送命令。 RTL8019AS 在完成了上一帧的发送后,再进行此帧的发送。 RTL8019AS 接收到的数据通过 MAC 比较、 CRC 校验后,由 FIFO 存到接收缓 冲区,收满一帧后,以中断或寄存器标志的方式通知处理器。 接收逻辑在接收时钟的控制下,将串行数据拼成字节送到 FIFO 和 CRC。 发送逻辑四川理工学院本科毕业(设计)论文 18 将 FIFO 送来的字节在发送时钟的控制下逐步按位移出,并送到 CRC, CRC 逻辑在接收时对输入的数据进行 CRC 校验,将结果与帧尾的 CRC 比较,如不同,该帧数据将被拒收。 在发送数据时 CRC 对帧数据产生 CRC,并附加在数据尾传送。 地址识别逻辑对接收。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。