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

发布者:zonheny最新更新时间:2006-12-13 来源: 北极星电技术网关键字:I/O  RS232  通信 手机看文章 扫描二维码
随时随地手机看文章

目前,以太网(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串行设备与以太网的连接以传送控制信令和数据文件,实现单片机上网的设计方案,设计了相关硬件,编制了相应的驱动程序。整个方案结构简单,实现方便,缩短了开发周期,降低了系统开发成本。

关键字:I/O  RS232  通信 引用地址:采用8位单片机驱动PCI总线网卡的设计方案

上一篇:Microchip 推出内置分流稳压器的 PIC 单片机
下一篇:Microchip的新型通用小型PIC单片机系列又添新成员

推荐阅读最新更新时间:2024-03-16 12:18

通信领域的蓬勃发展推动模拟IC市场
  通信模拟IC包括了收发器和放大器这两大部分,正是这两类元件使信号传输成为可能。这是一个115亿美元的市场, 并且由于全球对通信设备的需求不断增长,该市场预计在2012年接近220亿美元,其中大部分新收入来自亚太地区。   通信模拟领域可被分为四类产品,其中三类为RF IC或无线产品,一类为有线产品。有线产品包括用于电信信号传输的收发器。无线产品包括功率放大器(PA)、低噪声放大器(LNA), 以及收发器。各类产品的增长率不同,但年均复合增长率(CAGR)达到了14%,这远远超出了半导体产业9%的年均增长率。   该类产品收支的主要驱动力来自手机领域。但是,由于该领域市场逐渐成熟,供应商为了保持利润并增加赢利,开始转向其它市
[焦点新闻]
stm32 io模拟spi通信
首先借鉴他人的编写程序: #define MOSI_H GPIO_SetBits(GPIOB, GPIO_Pin_10) #define MOSI_L GPIO_ResetBits(GPIOB, GPIO_Pin_10) #define SCLK_H GPIO_SetBits(GPIOB, GPIO_Pin_13) #define SCLK_L GPIO_ResetBits(GPIOB, GPIO_Pin_13) #define MISO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) unsigned char SPI_SendByte(unsigned char dt)
[单片机]
计算机串行通信的环路实现方案
    对于用户要求接口具有远距离( 1km)高速度(最高19200bps)通信能力,及工业现场的强抗干扰能力和噪声抑制能力,对于普通的RS232接口,采用点对点单线共地连接(Singleended),电平驱动方式,最大通信距离为15.25m,显然不能满足要求。因此考虑20mA电流环路驱动方式。电流环路与电平方式相比具有以一优点:     电平方式 20mA电流环方式     信号易衰减 信号不易衰减     易受干扰 抗干扰能力强     远距离,离频率 适合远距离高     传输性能低下 速通信     在本设计中,选用Motorola公司的光电耦合器TIL117进行信号变换和光电隔离。这样
[应用]
Vishay针对工业和通信应用推出高可靠性的高压SMD MLCC
宾夕法尼亚、MALVERN 2016 年 3 月11 日 日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,推出适用于高压工业和通信应用的新系列表面贴装多层陶瓷片式电容器。Vishay Vitramon HV High Voltage系列的可靠性高于标准器件,采用鲁棒性的串行电极设计,电压范围扩展到5kV,有1812到2225共4种标准EIA尺寸。 今天发布的MLCC具有更高的击穿电压,能提高碰到电压尖峰时的可靠性,串行电极设计降低了因机械裂纹导致的短路风险。电容器采用贵金属电极(NME)技术和湿法加工工艺制造,适合电源、模拟和数字调制解调器中的输入和输出滤波,功率转换器中的吸
[电源管理]
亚信电子全新4端口TSN PCIe,助力新一代工业通信技术发展
全球COVID-19新冠肺炎疫情持续延烧,逐渐影响全世界制造产业的营运模式与工作习惯,利用人与机器的人机协作模式(Human-Robot Collaboration, HRC),以提高工厂生产效率及制造品质,这个大趋势带给智能工厂自动化产业一个全新的发展契机。 时效性网路(TSN)技术是由IEEE TSN工作小组基于网路OSI七层模型的第二层资料链结层所订定的一系列IEEE 802.1标准,部分最新TSN技术仍然在标准化过程中。透过TSN技术使标准以太网也可以做到工业通信网路必须具备的硬实时(Hard Real-time)、确定性(Deterministic)、低延迟等实时资料传输需求。开放平台通讯统一架构(OPC UA)技术
[网络通信]
亚信电子全新4端口TSN PCIe,助力新一代工业<font color='red'>通信</font>技术发展
基于单线串接通信的LED显示系统方案
  1 引言   目前国内外大多数大型LED 显示 系统基本由LED 控制板和若干个依次串接的LED 单元板组成。   LED 控制板与LED 单元板构成的LED 显示系统的主体,如图1 所示。其中,LED 单元板包括了增强信号 驱动 能力的BUFFER 电路、产生动态显示扫描时序的译码电路、若干个 开关 管和若干个LED 驱动电路。其通信过程为:LED 控制板发出的通信信号依次经过各串接的LED 单元板的BUFFER 电路进行驱动增强;各LED 单元板中经BUFFER 电路增强后的扫描信号(S CAN O)提供给本LED 单元板的译码电路,译码电路译码产生动态显示扫描时序控制开关管;各LED 单元板中经BUFFER 电
[电源管理]
基于单线串接<font color='red'>通信</font>的LED显示系统方案
OK6410A 开发板 (八) 105 linux-5.11 OK6410A 进程通信机制2 共享内存
共享内存 posix 提供一套 , XSI(systemv) 提供一套 共享内存的实现 有很多种 1.posix mmap && open mmap 共享文件映射mmap(/dev/shm/xxx) 也用到了 shmem_vm_ops ,封装出了 posix 共享内存 // 共享匿名映射 用到了 shmem_vm_ops // 共享文件映射mmap(/dev/zero) 也用到了 shmem_vm_ops ,封装出了 posix 共享内存 2.XSI(systemv) 3.memfd_create和fd跨进程共享 4.dma-buf 共享内存实现方案有多种,posix共享内存是其中的一种
[单片机]
西门子基于TCP/IP 的PLC通信技术分析
#1 IT&OT 深度融合 IT & OT integration 当今不断发展的工业自动化世界,在智能、高效和快速的系统和软件应用中,数据扮演着越来越重要的角色。传统的 IT 网络中,提供了丰富多彩的规范和协议,这些都可以帮助用户对数据进行充分地发掘。 而随着工业 4.0 的来临,IT、OT 的融合是大势所趋,IT 和 OT 之间的界限也越来越模糊,越来越多的 IT 技术被引入到 OT 应用之中,OT 处理自动化设备和现实的物理世界;而 IT 则更强调软件、数据和信息等,以前我们谈论PLC 通讯会想到自动化领域中的 PROFINET、S7、Modbus TCP 这些传统的工业通讯协议,而现在随着技术发展,SIMATIC PLC
[嵌入式]
西门子基于TCP/IP 的PLC<font color='red'>通信</font>技术分析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved