⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8019.txt

📁 NE2000型兼容网卡的设计程序
💻 TXT
字号:
RTL8019AS内部结构
RTL8019AS数据收发是通过一种称为DMA方式进行的,按数据链路不同划分为远程DMA(remote DMA)和本地DMA(local DMA)两部分。远程DMA完成主处理器和网卡内部缓冲区数据交换,本地DMA完成缓冲区数据发送,CPU发送数据时,先将一帧数据通过远程DMA通道送到RTL8019AS的发送缓冲区,然后发出传送命令。当 RTL8019AS收到一帧正确数据后,将其存放在接收缓冲区并置位相关寄存器或产生中断。要明白以上过程我们首先要清楚RTL8019AS缓冲区结构和相关DMA控制寄存器。
RTL8019AS内部有两块RAM区。一块16K字节,地址为0x4000~0x7fff;一块32字节,地址为0x0000~0x001f。RAM按页存储,每256字节为一页。一般将RAM的前12页(即0x4000~0x4bff)存储区作为发送缓冲区;后52页(即0x4c00~0x7fff)存储区作为接收缓冲区。第0页叫Prom页,只有32字节,地址为0x0000~0x001f,用于存储以太网物理地址。页地址为0x40~0x7f
要接收和发送数据包就必须通过DMA读写RTL8019AS内部的16KB RAM。它实际上是双端口的RAM,是指有两套总线连接到该RAM,一套总线RTL8019AS读或写该RAM,即本地DMA;另一套总线是单片机读或写该RAM,即远程DMA。
2.4 I/O地址分配
RTL8019AS具有32位输入输出地址,地址偏移量为00H~1FH。其中00H~0FH共16个地址,为寄存器地址。寄存器分为4页:PAGE0、PAGE1、PAGE2、PAGE3,由RTL8019AS的CR(Command Register命令寄存器)中的PS1、PS0位来决定要访问的页。但与NE2000兼容的寄存器只有前3页,PAGE3是RTL8019AS自己定义的,对于其他兼容NE2000的芯片如DM9008无效。远程DMA地址包括10H~17H,都可以用来做远程DMA端口,只要用其中的一个就可以了。复位端口包括18H~1FH共8个地址,功能一样,用于RTL8019AS复位。
93C46是采用4线SPI串行接口的Serial EEPROM,容量为1Kbit(64×16bit),主要保存RTL8019AS的配置信息。00H~03H的地址空间用于存储RTL8019AS内配置寄存器CONFIG1~4的上电初始化值;地址04H~11H存储网络节点地址即物理地址;地址12H~7FH内存储即插即用的配置信息。RTL8019AS通过引脚EECS、EESK、EEDI控制93C46的CS、SK、DI引脚,通过EEDO接收93C46的DO引脚的状态。RTL8019AS复位后读取93C46的内容并设置内部寄存器的值,如果93C46中内容不正确,RTL8019AS就无法正常工作。先通过编程器如ALL07把配置好的数据写入93C46,再焊入电路。
4.1 复位RTL8019AS

80C52的P3.4连接RTL8019AS的RESDRV来进行复位操作。RSTDRV为高电平有效,至少需要800ns的宽度。给该引脚旋加一个1μs以上的高电平就可以复位。施加一个高电平后,然后施加一个低电平。复位过程将执行一些操作,至少需要2ms的时间,推荐等待更久的时间之后如100ms之后才对它操作,以确保完全复位。

4.2 初始化RTL8019AS

初始化页0与页1的相关寄存器,页2的寄存器是只读的,不可以设置,页3的寄存器不是NE2000兼容的,不用设置。

(1)CR=0x21,选择页0的寄存器;

(2)TPSR=0x45,发送页的起始页地址,初始化为指向第一个发送缓冲区的页即0x40;

(3)PSTART=0x4c,PSTOP=0x80,构造缓冲环:0x4c~0x80;

(4)BNRY=0x4c,设置指针;

(5)RCR=0xcc,设置接收配置寄存器,使用接收缓冲区,仅接收自己地址的数据包(以及广播地址数据包)和多点播送地址包,小于64字节的包丢弃,校验错的数据包不接收;

(6)TCR=0xe0,设置发送配置寄存器,启用CRC自动生成和自动校验,工作在正常模式;

(7)DCR=0xc8,设置数据配置寄存器,使用FIFO缓存,普通模式,8位数据DMA;

(8)IMR=0x00,设置中断屏蔽寄存器,屏蔽所有中断;

(9)CR=0x61,选择页1的寄存器;

(10)CURR=0x4d,CURR是RTL8019AS写内存的指针,指向当前正在写的页的下一页,初始化时指和0x4c+1=0x4d;

(11)设置多址寄存器MAR0~MAR5,均设置为0x00;

(12)设置网卡地址寄存器PAR0~PAR5;

(13)CR=0x22,选择页1的寄存器,进入正常工作状态。

图2 89C52单片机控制RTL8019AS实现以太网通讯的接口电路框图

    4.3 发送帧

将待发送的数据按帧格式封装,通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令,完成帧的发送。需要设置以太网目的地址、以太网源地址、协议类型,再按所设置的协议类型来设置数据段。之后启动远程DMA,数据写入RTL8019AS的RAM,再启动本地DMA,将数据发送网上。

RTL8019AS无法将整个数据包通过DMA通道一次存入FIFO,则在构成一个新的数据包之前必须先等待前一数据包发送完成。为提高发送效率,设计将12页的发送缓存区分为两个6页的发送缓存区,一个用于数据包发送,另一个用于构造端的数据包,交替使用。

16K SRAM  256字节/页  64页   地址:0x40----0x7F
	|
	----相关寄存器:PSTART(Page Start Register)      :定义接收缓冲区起始地址
			PSTOP (Page STop Register)       :定义接收缓冲区结束地址
			BNRY  (Boundary Register)        :指向队列中没有被主机读取的第一个数据包地址(读指针,程序控制)
			CURR  (Current Page Register)四个:指向将要接收数据包的存储起始地址(写指针,8019AS自动改变)
	----DMA相关寄存器:		
			TPSR为发送缓冲区起始地址,
			TBCR为要发送的字节数,
			RSAR为远程DMA起始地址,
			RBCR为远程DMA字节数




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -