引言
网络技术应用日益普及的今天,工业现场的仪器仪表、数据采集和控制设备也日趋网络化,工业自动化和网络的结合越来越密切。而将以太网和嵌入式系统相结合应用于工业控制中已成为趋势。
AX88796B是Asix公司推出的一款为嵌入式和工业以太网应用而设计的低引脚数以太网控制芯片。其内部集成10/100Mb/s自适应的介质访问层MAC和物理层收发器PHY以及8K×16位的SRAM。AX88796B可应用于商业级0~70C和工业级-40C~85C的温度范围。AX88796B支持MCS-51系列、80186系列、ISA总线和SRAM-like接口类型。执行基于IEEE802.3/IEEE802.3u局域网标准的10Mb/s和100Mb/s以太网控制功能,并且提供发送队列功能来增强标准NE2000的发送性能。
AT91R40008微控制器是基于ARM7TDMI核的32位RISC结构的嵌入式微控制器,非常适于工业实时控制应用。AX88796B引脚的LQFP封装减少了PCB空间并且和NE2000兼容,编程简单,其驱动可以容易快速的移植到许多嵌入式系统中。因此,综合上述两种芯片的优点,我们选择AX88796B和AT91R40008作为工业实时控制中嵌入式网络应用的解决方案,具有很好的工业应用价值和前景。
图1 AX88796B内部结构图
AX88796B内部结构及工作原理
1 AX88796B的内部结构
网卡上电复位时EEPROM接口能够通过CSR中偏移为14H的SMI/EEPROM寄存器来存取数据,MAC地址由EEPROM中读取,并被自动载入地址为0000h~001fh和0400h~040fh的内部存储区中。如果没有使用EEPROM,每次上电对网卡进行初始化时候就手动给它分配一个MAC地址。
AX88796B内部有一个16KB(0x4000~0x7fff)大小的SRAM,该SRAM是双端口SRAM,可以同时被网卡读写和用户读写,这片地址空间的一部分被保留用来存放一个缓冲环结构,另一部分可以给用户使用。在本设计中,16KB的SRAM全部被用来接收和发送数据包。本地DMA正是通过这个缓冲环结构来接收报文的。这个结构由一连串相邻的固定长度为256B的缓冲区构成,每256字节称为一页,共有64页。页的地址就是地址的高8位,页地址为0x00~0xff。其中0x40~0x4B为网卡的发送缓冲区,共12页,刚好可以存储2个的以太网包,所以我们把发送缓冲区分成两部分进行轮流发送。使用0x4c~0x7f共52页为网卡的接收缓冲区。AX88796B的SRAM空间结构和收发缓冲区结构如图2、3所示。
图2 SRAM空间结构
图3 收发缓冲区
2 AX88796B的工作原理
由四个寄存器来控制接收缓冲区的操作。Page Start Address Register (PSTART)和Page Stop Address Register(PSTOP)定义了接收缓冲区的起始和终止页号,形成一个接收缓冲环。当前页地址寄存器(Current Page Register)指向个用于存储数据包的缓冲区。边界指针寄存器(Boundary Pointer Register)指向在缓冲环中个未被主机读取的数据包。如果本地DMA地址与Boundary Pointer Register的值相等,则接收过程中止。边界指针也被用来初始化远端DMA来移动一个数据包,当数据包被移走后,边界指针也向前增长。这样,Current Page Register如同一个写指针,Boundary Pointer如同一个读指针。接收到一个数据包时,从PSR中指定的页号开始存储,如果一个256B的缓冲区不够,DMA会执行一个前向连接来连接下一个缓冲区以存储这个数据包的剩余部分。连接的时候缓冲区必须是连续的,一个数据包总是会被存储在相邻的缓冲区里。在连接下一个缓冲区前,缓冲管理逻辑会执行两个比较,首先比较下一个缓冲区的DMA地址是否和page Stop Register相等,若相等,则DMA地址被恢复为page start address register中保存的地址。其次和boundary pointer register比较,如果相等,则接收报文过程终止。Boundary Pointer Register能够防止缓冲区里的数据还没有读出就被重写。
要发送和接收数据包就必须通过DMA读写AX88796B内部的SRAM。DMA分为远程DMA(Remote DMA)和本地DMA(Local DMA)。CPU从网卡的SRAM读写数据称为远端DMA。AX88796B读写SRAM称为本地DMA。数据包的接收过程:当数据包到达网卡的MAC层后,本地DMA先将到达MAC层的报文传送到网卡的内存中,主机CPU再通过远端DMA通道从网卡内存中读取数据包。数据包的发送过程:主机CPU通过远端DMA把要发送的数据包送到网卡的内存中,本地的DMA将该数据包传送到MAC层,再经由内部的PHY层发送至网络。
[1]. 70C datasheet https://www.dzsc.com/datasheet/70C_1809295.html.
[2]. 40C datasheet https://www.dzsc.com/datasheet/40C_2210963.html.
[3]. MCS-51 datasheet https://www.dzsc.com/datasheet/MCS-51_477840.html.
[4]. AT91R40008 datasheet https://www.dzsc.com/datasheet/AT91R40008_143866.html.
[5]. ARM7TDMI datasheet https://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[6]. RISC datasheet https://www.dzsc.com/datasheet/RISC_1189725.html.
[7]. LQFP datasheet https://www.dzsc.com/datasheet/LQFP_1054170.html.
[8]. PCB datasheet https://www.dzsc.com/datasheet/PCB_1201640.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。