采用8位单片机驱动pci总线网卡的设计方案

上传人:wt****50 文档编号:40156100 上传时间:2018-05-24 格式:DOC 页数:12 大小:254.50KB
返回 下载 相关 举报
采用8位单片机驱动pci总线网卡的设计方案_第1页
第1页 / 共12页
采用8位单片机驱动pci总线网卡的设计方案_第2页
第2页 / 共12页
采用8位单片机驱动pci总线网卡的设计方案_第3页
第3页 / 共12页
采用8位单片机驱动pci总线网卡的设计方案_第4页
第4页 / 共12页
采用8位单片机驱动pci总线网卡的设计方案_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《采用8位单片机驱动pci总线网卡的设计方案》由会员分享,可在线阅读,更多相关《采用8位单片机驱动pci总线网卡的设计方案(12页珍藏版)》请在金锄头文库上搜索。

1、采用采用 8 位单片机驱动位单片机驱动 PCI 总线网卡的设计方案总线网卡的设计方案目前,以太网(Ethernet)协议已经非常广泛地应用于各种计算机网络,如办公局域网、工业控制网络、因特网等场合,并且还不断地在发展。单片机或微控制器(MCU)(也称为嵌入式系统)已经在各个领域得到了广泛的应用。目前绝大多数系统都是以 MCU 为核心,与监测、伺服、指示设备配合实现一定的功能。如果嵌入式系统能够连接到 Internet,则可以方便、低廉地将信息传送到世界上的任何一个地方。因此单片机如何控制以太网网卡进行传输数据,如何加载 TCP/IP 协议连接到互联网,这些都是一些具有挑战性的问题1,2。单片机

2、上网研究最多的一个方案就是用单片机驱动 ISA 总线网卡或者是驱动基于 ISA 总线的以太网控制芯片。但是,近年来,随着ISA 总线在台式电脑上的消失(PC98 以后的标准已经取消了 ISA 总线),ISA 总线的设备也不断减少,而且很多生产 ISA 网卡芯片的厂家已经停止生产 ISA 网卡芯片。在计算机上,多数设备用的是PCI 总线,因此如何制造低成本的 PCI 总线的以太网接口设备,如何用单片机来驱动 PCI 总线网卡,已成为目前计算机工业控制系统的燃眉之急。然而用只有 16 位地址总线、8 位数据端口的 8 位单片机来直接驱动有 32 位地址数据复用总线及其他各种信号线的 PCI 总线网

3、卡,几乎是不可能的。为此,本文中采用 PCI 9054 接口芯片作为沟通单片机与 PCI 设备间的桥梁,设计实现了单片机与 PCI 网卡间的可靠通信任务,并提供了主要硬件接口电路和主要程序原代码。1PCI9054 芯片介绍芯片介绍31.1PCI9054 主要特性主要特性PCI9054 是由美国 PLX 公司生产的先进的 PCI I/O 加速器,他采用了先进的 PLX 数据管道结构技术。符合 PCIV2,2 规范的 32 位 33 MHz 总线主控接口控制器可获得高达 132 Mb/s 的 PCI 突发传输速度。通用总线主控接口配备先进的数据流水线架构(Data Pipe Architectur

4、e(tm),包含 2 个 DMA 引擎,可编程目标、起始器数据传输模式和 PCI 信息传输等功能。1.2PCI9054 本地总线工作模式介绍本地总线工作模式介绍PCI9054 芯片连接的本地端总线有 3 种工作模式:M 模式、C 模式和 J 模式。可利用模式选择引脚加以选择,其中 C 模式时序较为简单。为此,本方案设计选择 PCI 9054 工作在 C 模式。当 PCI9054 工作在 C 模式时,其数据传输采用直接数据传输方式,按数据传输的控制方式,他又分为 3 种传输模式,如表 1 所示。本方案设计采用 PCI 初始化器模式,通过本地端的单片机来控制PCI9054 芯片,然后通过 PCI9

5、054 芯片来驱动 PCI 总线上的网卡,在这里 PCI9054 芯片就象一个桥梁,连接了 2 个不同的总线设备。其读写工作原理如图 1 所示。1.3PCI9054 寄存器简介寄存器简介PCI9054 内部提供了 5 种寄存器:PCI 配置寄存器,本地端配置寄存器,运行时间 RUNTIME 寄存器,DMA 寄存器和 I2O 信息寄存器。在本方案设计中,我们主要用到 2 种配置寄存器:PCI 配置寄存器和本地端配置寄存器,下面对这 2 种寄存器的功能做简要介绍。PCI 配置寄存器也就是我们常说的 PCI 配置空间,他提供了配置PCI 的一些信息。其中VenderID,DeviceID,Revis

6、ionID,HeaderType,ClassCode 用于PCI 设备的识别。命令寄存器(Command)包含设备控制位,包括允许存储器读写响应等。状态寄存器(Status)用于记录 PCI 总线的相关事件。PCI 配置寄存器提供了 6 个基地址寄存器,这些基地址都是在系统中的物理地址范围内,其中 BASE0 和 BASE1 都是用来访问其他配置寄存器的基地址,BASE1 是其他配置寄存器映射到PCI 端内存的基地址,BASE2 是其他寄存器映射到 PCI 端 I/O 的基地址。所以可以通过 PCI 端内存和 PCI 端 I/O 来访问 LOCAL 配置寄存器与其他 3 种寄存器。BASE25

7、 四个空间提供了访问本地端所接的 4 个芯片(当然可以少于 4 个),他们将本地端的芯片通过本地端地址(在 LOCAL 配置寄存器中设)翻译成 PCI 的地址,也就是将本地的芯片映射到系统的内存或 I/O 口。这样使得用程序操作这一段内存(或 I/O)实际上就是对本地的芯片操作。本地端配置寄存器提供了本地端的一些信息,在本方案设计中,主要是通过配置本地端配置寄存器来将本地端的单片机读写指令、周期转换成 PCI 端的读写指令及周期。也就相当于将 PCI 端网卡上的芯片及存储器映射到本地端,与本地端的存储器统一编址,这样单片机只要能访问本地端的内存,那么就能用来访问 PCI 总线上的网卡。PCI9

8、054 工作时需要一个配置芯片 E?2PROM,以便在 PCI 卡上电的时候配置 PCI 9054,主要配置 PCI 卡的 VendorID 和 DeviceID,这是系统用来标识 PCI 卡的。另外,还需要了其他寄存器,主要起到了对 PCI 9054 初始化的作用。其中本地端寄存器也可以由本地 CPU读写,直接进行配置。2RTL8029 网卡简介网卡简介RTL8029 是符合 Ne2000 标准的 32 位 PCI 总线网卡,遵循IEEE802.3 协议。按功能可将其划分为:接收功能模块、CRC 产生模块、发送功能模块、地址识别模块、FIFO 控制模块、协议逻辑阵列模块及 DMA 和缓冲控制

9、模块。对网卡进行编程可以实现局域网内任一站点间的通信。熟悉网卡接口电路是对网卡编程的首要条件。网卡接口电路功能可以分为 2 部分:一是与计算机 PCI 总线相连,包括数据总线读写、地址总线驱动、中断控制信号的产生、存储器读写信号以及 I/O 端口信号的引入等;二是对网卡内部的操作,包括对缓冲 SRAM 的读写、对 RTL8029AS 芯片的控制、读站地址PROM 及读自举 ROM 等。通过网卡工作原理的分析,可以将接口信号线减至最少。以太网相当于一个链路层连接,因此可以把以太网的传输单元称为帧(Frame)。10 Mb 以太网的 Frame 长度为 641 518 b。其格式如表 2 所示。其

10、中前导码是网络适配器发送 MAC 帧的时候为了使接收适配器辨别出 MAC 帧开始而加入的码,高层的用户不必考虑。32 位 CRC,即冗余校检码,是以太网使用的校检机制,现在 CRC 的生成与检测都可以由网络适配器完成,因此用户也不必考虑这一字段。帧类型,这一字段决定了以太网帧数据使用的是什么协议,如 ARP 是0x0806,IP 是 0x0800 等。从另一个角度看,这一字段也可以看作以太网帧自己表明身份的字段。因此,在处理 MAC 帧时,需要根据这一字段的数据来决定将数据传送给哪个上层协议。在 IEEE 802?3协议中,这一字段表示以太网数据的长度。由于两个协议在这一字段上的不同定义,所以

11、网络适配卡对这一字段是不做解释的。程序员必须在软件上编程处理这一字段。3 方案设计方案设计(1)本方案设计的硬件结构如图)本方案设计的硬件结构如图 2 所示。所示。系统中用到的主要芯片除了 80C51 单片机和 PCI9054 外还有MAX232(串口的电平转换),24C02(I2C 总线的 E?2PROM),74HC373(8 位锁存),62256(32K 的 RAM),EPM7096(CPLD),93C46(E2PROM,用来初始化 PCI9054)。其中 62256(外部 32K 的 RAM)可以不用,可以用网卡上的 RAM来代替,但是网卡上的 RAM 的存取比较复杂,速度会比加 622

12、56慢。使用外部 RAM 的目的是提高单片机的数据传输速度和处理复杂的 TCP/IP 协议。由于以太网的数据包最大可以有 1500 多字节,80C51 单片机是无法存储这么大的包的,只有放到外部的 RAM 里。同时外部的 RAM 也用作串行口的输入输出缓冲,以使单片机具有高速的吞吐数据的能力。24C02 是 IC 总线的 EPROM,用来存储用户的一些设置,比如 IP 地址、网关等。本方案使用 CPLD 的目的是,将 80C51 单片机的 8 位数据与 16 位地址转换成 32 位的数据和地址,因为 PCI9054 工作在初始化器模式时,他要求本地端的总线是 32 位的。在这里,用 CPLD

13、实现这样一个外部逻辑非常简单。MAX232 为串口电平转换电路。数据可以从串口输入到单片机,单片机再把数据通过网卡传出去。(2) 软件设计软件设计对网卡编程就是对网络接口控制芯片 RTL8029AS 中各种寄存器进行编程控制,从而完成数据分组的正确发送和接收。所有单片机程序采用 C51 语言编制,具有可读性强、移植性好、开发周期短的特点。代码的使用效率也比较高。主程序可以分为 PCI9054 芯片初始化、网络通讯和串行通讯 2 部分:PCI9054 芯片初始化过程就是对 PCI9054 芯片的 PCI 端配置寄存器和本地端配置寄存器进行正确的编程配置,以实现本地端单片机与PCI 端网卡的无缝连

14、接,对这 2 个寄存器既可以通过对 93C46 烧写编程的方式,也可以通过本地 CPU 直接编程的方式来完成初始化。网络通讯过程又可分为网卡初始化、发送控制和接受控制 3 部分。主程序框图如图 3 所示。PCI9054 芯片初始化过程就是对 PCI9054 芯片的相关寄存器进行初始化,这些寄存器包括 DMRR、DMLBAM、PCICR、CNTRL 等。(1) PCICR20=111B。允许 PCI 初始化器(本地端)访问 PCI总线。PCI9054 能够响应 I/O 访问。(2) DMPBAM10=11。允许 PCI 初始化器访问 PCI9054 存储器和 I/O 端口。(3) DMRR =

15、FFF00000H。设定 PCI 初始化器端(4) 可访问的存储器范围是 1MB。(5) DMLBAI = 40000000H。为 PCI InitiatortoPCI I/O Configuration 寄存器设定本地端基地址(6) DMPBAM1=1。允许本地端 I/O 端口访问 PCI InitiatortoPCI I/O Configuration 寄存器DMCFGA230=005010,DMCFGA31=1。网卡初始化过程对网卡的初始化就是对网卡相关寄存器进行初始化。这些寄存器包括 CR,DCR,RBCR PSTART,PSTOP,ISR,IMR,PAR0PAR5,MAR0MAR5D

16、 等。PSTART 接收缓冲区的起始页的地址。PSTOP 接收缓冲区的结束页地址(该页不用于接收)。BNRY 指向最后一个已经读取的页(读指针)CURR 当前的接收结束页地址(写指针)。(1) CR=0x21:选择页 0 寄存器,将 RTL8029 芯片处于离线状态;(2) DCR=0x8:32 位内存访问;(3) RBCR0=0,RBCR1=0:远程 DMA 操作时传递字节数清零;(4) RCR=0xc0,接受到的帧存入缓冲区;(5) TCR=oxe2:环路测试状态;(6) PSTART=0x4C,PSTOP0x80;构造缓冲区;(7) ISR=0xff;中断寄存器清零;(8) CR=0x61:选择页 1;(9) 设置网卡地址 PAR0PAR5(10) 设置多址寄存器 MAR0 MAR5;(11) CURR=0x4d:初始化当前页寄存器;(12) TCR=0xE0:发送器正常工作状态。发送控制过程在网络中,帧传输的过程就是发送方将待发送数据按帧格式要求封装成帧,然后通过网卡发送到网络的传输线上的工程。发送程序框图如图 4 所示

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号