您的位置 首页 元件

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

目前,以太网(Ethernet)协议已经非常广泛地应用于各种计算机网络,如办公局域网、工业控制网络、因特网等场合,并且还不断地在发展。单片机

现在,以太网(Ethernet)协议现已十分广泛地运用于各种核算机网络,如作业局域网、工业操控网络、因特网等场合,并且还不断地在开展。单片机微操控器(MCU)(也称为嵌入式体系)现已在各个领域得到了广泛的运用。现在绝大大都体系都是以MCU为中心,与监测、伺服、指示设备合作完结必定的功用。假如嵌入式体系可以衔接到Internet,则可以便利、低价地将信息传送到世界上的任何一个当地。因而单片机怎么操控以太网网卡进行传输数据,怎么加载TCP/IP协议衔接到互联网,这些都是一些具有挑战性的问题[1,2]。

单片机上网研讨最多的一个计划便是用单片机驱动ISA总线网卡或者是驱动依据ISA总线的以太网操控芯片。可是,近年来,跟着ISA总线在台式电脑上的消失(PC98今后的规范现已取消了ISA总线),ISA总线的设备也不断削减,并且许多出产ISA网卡芯片的厂家现已中止出产ISA网卡芯片。在核算机上,大都设备用的是PCI总线,因而怎么制作低本钱的PCI总线的以太网接口设备,怎么用单片机来驱动PCI总线网卡,已成为现在核算机工业操控体系的当务之急。然而用只要16位地址总线、8位数据端口的8位单片机来直接驱动有32位地址数据复用总线及其他各种信号线的PCI总线网卡,几乎是不可能的。

为此,本文中选用PCI 9054接口芯片作为交流单片机与PCI设备间的桥梁,规划完结了单片机与PCI网卡间的牢靠通讯使命,并供给了首要硬件接口电路和首要程序原代码。

1PCI9054芯片介绍[3]

1.1PCI9054首要特性

PCI9054是由美国PLX公司出产的先进的PCI I/O加速器,他选用了先进的PLX数据管道结构技能。契合PCIV2,2规范的32 位33 MHz总线主控接口操控器可取得高达132 Mb/s的PCI突发传输速度。通用总线主控接口装备先进的数据流水线架构(Data Pipe Architecture(tm)),包含2个DMA引擎,可编程方针、开始器数据传输形式和PCI信息传输等功用。

1.2PCI9054本地总线作业形式介绍

PCI9054芯片衔接的本地端总线有3种作业形式:M形式、C形式和J形式。可利用形式挑选引脚加以挑选,其间C形式时序较为简略。为此,本计划规划挑选PCI 9054作业在C形式。当PCI9054作业在C形式时,其数据传输选用直接数据传输方法,按数据传输的操控方法,他又分为3种传输形式,如表1所示。

本计划规划选用PCI初始化器形式,经过本地端的单片机来操控PCI9054芯片,然后经过PCI9054芯片来驱动PCI总线上的网卡,在这里PCI9054芯片就象一个桥梁,衔接了2个不同的总线设备。其读写作业原理如图1所示。

1.3PCI9054寄存器简介

PCI9054内部供给了5种寄存器:PCI装备寄存器,本地端装备寄存器,运转时刻RUNTIME寄存器,DMA寄存器和I2O信息寄存器。在本计划规划中,咱们首要用到2种装备寄存器:PCI装备寄存器和本地端装备寄存器,下面临这2种寄存器的功用做扼要介绍。

PCI装备寄存器也便是咱们常说的PCI装备空间,他供给了装备PCI的一些信息。其间VenderID,DeviceID,RevisionID,HeaderType,ClassCode用于PCI设备的辨认。指令寄存器(Command)包含设备操控位,包含答应存储器读写呼应等。状况寄存器(Status)用于记载PCI总线的相关事情。PCI装备寄存器供给了6个基地址寄存器,这些基地址都是在体系中的物理地址规模内,其间BASE0和BASE1都是用来拜访其他装备寄存器的基地址,BASE1是其他装备寄存器映射到PCI端内存的基地址,BASE2是其他寄存器映射到PCI端I/O的基地址。所以可以经过PCI端内存和PCI端I/O来拜访LOCAL装备寄存器与其他3种寄存器。BASE2~5四个空间供给了拜访本地端所接的4个芯片(当然可以少于4个),他们将本地端的芯片经过本地端地址(在LOCAL装备寄存器中设)翻译成PCI的地址,也便是将本地的芯片映射到体系的内存或I/O口。这样使得用程序操作这一段内存(或I/O)实际上便是对本地的芯片操作。

本地端装备寄存器供给了本地端的一些信息,在本计划规划中,首要是经过装备本地端装备寄存器来将本地端的单片机读写指令、周期转化成PCI端的读写指令及周期。也就相当于将PCI端网卡上的芯片及存储器映射到本地端,与本地端的存储器一致编址,这样单片机只要能拜访本地端的内存,那么就能用来拜访PCI总线上的网卡。

PCI9054作业时需求一个装备芯片E?2PROM,以便在PCI卡上电的时分装备PCI 9054,首要装备PCI卡的VendorID和DeviceID,这是体系用来标识PCI卡的。别的,还需求了其他寄存器,首要起到了对PCI 9054初始化的效果。其间本地端寄存器也可以由本地CPU读写,直接进行装备。

2RTL8029网卡简介

?RTL8029是契合Ne2000规范的32位PCI总线网卡,遵从IEEE802.3协议。按功用可将其划分为:接纳功用模块、CRC发生模块、发送功用模块、地址辨认模块、FIFO操控模块、协议逻辑阵列模块及DMA和缓冲操控模块。对网卡进行编程可以完结局域网内任一站点间的通讯。了解网卡接口电路是对网卡编程的首要条件。网卡接口电路功用可以分为2部分:一是与核算机PCI总线相连,包含数据总线读写、地址总线驱动、中止操控信号的发生、存储器读写信号以及I/O端口信号的引进等;二是对网卡内部的操作,包含对缓冲SRAM的读写、对RTL8029AS芯片的操控、读站地址PROM及读自举ROM等。经过网卡作业原理的剖析,可以将接口信号线减至最少。

以太网相当于一个链路层衔接,因而可以把以太网的传输单元称为帧(Frame)。10 Mb以太网的Frame长度为64~1 518 b。其格局如表2所示。

其间前导码是网络适配器发送MAC帧的时分为了使接纳适配器辨别出MAC帧开始而参加的码,高层的用户不必考虑。32位CRC,即冗余校检码,是以太网运用的校检机制,现在CRC的生成与检测都可以由网络适配器完结,因而用户也不必考虑这一字段。帧类型,这一字段决议了以太网帧数据运用的是什么协议,如ARP是0x0806,IP是0x0800等。从另一个视点看,这一字段也可以看作以太网帧自己标明身份的字段。因而,在处理MAC帧时,需求依据这一字段的数据来决议将数据传送给哪个上层协议。在IEEE 802?3协议中,这一字段表明以太网数据的长度。由于两个协议在这一字段上的不同界说,所以网络适配卡对这一字段是不做解说的。程序员有必要在软件上编程处理这一字段。

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的存取比较杂乱,速度会比加62256慢。运用外部RAM的意图是进步单片机的数据传输速度和处理杂乱的TCP/IP协议。由于以太网的数据包最大可以有1500多字节,80C51单片机是无法存储这么大的包的,只要放到外部的RAM里。一起外部的RAM也用作串行口的输入输出缓冲,以使单片机具有高速的吞吐数据的才能。24C02是I2C总线的E2PROM,用来存储用户的一些设置,比方IP地址、网关等。本计划运用CPLD的意图是,将80C51单片机的8位数据与16位地址转化成32位的数据和地址,由于PCI9054作业在初始化器形式时,他要求本地端的总线是32位的。在这里,用CPLD完结这样一个外部逻辑十分简略。MAX232为串口电平转化电路。数据可以从串口输入到单片机,单片机再把数据经过网卡传出去。

(2) 软件规划

对网卡编程便是对网络接口操控芯片RTL8029AS中各种寄存器进行编程操控,然后完结数据分组的正确发送和接纳。一切单片机程序选用C51言语编制,具有可读性强、移植性好、开发周期短的特色。代码的运用功率也比较高。

主程序可以分为PCI9054芯片初始化、网络通讯和串行通讯2部分:PCI9054芯片初始化进程便是对PCI9054芯片的PCI端装备寄存器和本地端装备寄存器进行正确的编程装备,以完结本地端单片机与PCI端网卡的无缝衔接,对这2个寄存器既可以经过对93C46烧写编程的方法,也可以经过本地CPU直接编程的方法来完结初始化。网络通讯进程又可分为网卡初始化、发送操控和承受操控3部分。主程序框图如图3所示。PCI9054芯片初始化进程便是对PCI9054芯片的相关寄存器进行初始化,这些寄存器包含DMRR、DMLBAM、PCICR、CNTRL等。

(1) PCICR[2∶0]=111B。答应PCI初始化器(本地端)拜访PCI总线。PCI9054可以呼应I/O拜访。

(2) DMPBAM[1∶0]=11。答应PCI初始化器拜访PCI9054存储器和I/O端口。

(3) DMRR = FFF00000H。设定PCI初始化器端

(4) 可拜访的存储器规模是1MB。

(5) DMLBAI = 40000000H。为PCI InitiatortoPCI I/O Configuration寄存器设定本地端基地址

(6) DMPBAM[1]=1。答应本地端I/O端口拜访PCI InitiatortoPCI I/O Configuration寄存器

DMCFGA[23∶0]=005010,DMCFGA[31]=1。

网卡初始化进程对网卡的初始化便是对网卡相关寄存器进行初始化。这些寄存器包含CR,DCR,RBCR PSTART,PSTOP,ISR,IMR,PAR0~PAR5,MAR0~MAR5D等。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,PSTOP=0x80;结构缓冲区;

(7) ISR=0xff;中止寄存器清零;

(8) CR=0x61:挑选页1;

(9) 设置网卡地址PAR0~PAR5

(10) 设置多址寄存器MAR0~ MAR5;

(11) CURR=0x4d:初始化当时页寄存器;

(12) TCR=0xE0:发送器正常作业状况。

发送操控进程在网络中,帧传输的进程便是发送方将待发送数据按帧格局要求封装成帧,然后经过网卡发送到网络的传输线上的工程。发送程序框图如图4所示。

接纳操控进程帧的接纳进程分为2步[3]:

第1步有本地DMA将帧存入接纳缓冲区中;

第2步由长途DMA将接纳缓冲区中的帧读入内存。行将网络上的数据帧接纳并存在网卡的接纳缓冲区中,然后由主机程序将缓存区中的帧读走并存入内存中。帧的接纳作业由网卡主动完结,只需对相关的寄存器和PSTART,PSTOP,CURR和BNRY进行恰当的初始化即可。帧读入之前,有必要初始化相应的寄存器RSAR,RBCR,然后再发动长途DMA读操作和主机程序的读端口操作。为了取得数据长度,先读入18 B的数据,然后依据有用数据的长度将帧完好的读入。发动长途DMA读操作,应该令CR=0AH,长途DMA将从接纳缓冲区的DMA地址处读入1 B并送往I/O数据端口,由主机程序读入内存。

这一进程将一向继续到RBCR寄存器为0。

4结语

本文提出了一种用8位单片机80C51和PCI总线主控I/O加速器芯片9054来驱动PCI总线网卡,完结RS232串行设备与以太网的衔接以传送操控信令和数据文件,完结单片机上网的规划计划,规划了相关硬件,编制了相应的驱动程序。整个计划结构简略,完结便利,缩短了开发周期,降低了体系开发本钱。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/249291.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部