DSP与PCI网卡接口设计

dsp与pci网卡接口设计
基于dsp的嵌入式系统的以太网接口设计一直是热门领域,目前利用的以太网控制器大多都是isa接口。随着pci总线逐渐取代isa总线的趋势,使pci接口的以太网控制器也成为pc机的主流,但在嵌入式领域中pci总线的应用目前并不多见。本文将介绍利用realtek公司生产的具有pci接口的以太网控制芯片rtl8139实现rtl8139与dsp接口的方案。
1rtl8139
rtl8139是带pci接口的10m/100m自适应网卡控制芯片,它提供32位pci总线控制,支持ieee802.3u 100base-t和ieee802.3x的全双工流量控制;符合pci 2.2标准,支持高级配置和电源接口(acpi)和pci对现代操作系统的电源管理(即对操作系统的直接电源管理),以提高电源管理的效率。此外,rtl8139还支持128kb的boot rom,提供网络唤醒和远程唤醒功能;含有2个2kb的收发fifo;能够降低网络维护成本,消除使用障碍,而且可以很方便地使网络由10m升级到100m,且带宽可以达到200mbps。rtl8139内部mac层结构如图1所示。
1.1 rtl8139的pci接口
pci总线分为主(master)、从(target)二种类型,master可以控制pci总线,target不能控制pci总线。标准的主设备至少有49条线与pci总线相连;从设备至少有47条线与pci总线相连。rtl8139所提供的pci接口有51条引脚,其引脚简介如下。
(1)地址/数据信号
ad31~0:地址、数据多路复用的输入/输出信号,在frameb有效时,是地址期;在irdyb和trdyb同时有效时为数据期。
c/be3~0:总线命令和字节使能多路复用信号,负责传输总线命令。在数据期,由传输字节使能信号来表示数据线上哪些字节是有效数据。
(2)接口控制信号
frameb:帧周期信号,表示访问的开始和持续时间。
irdyb、trdyb:分别表示主、从设备准备好信号,二者必须配合使用,同时有效时方能进行数据传输。
stopb:目标设备请求停止数据传输信号。
idsel:初始化设备选择信号,在参数配置读写传输期间,用作片选信号。
devselb:设备选择信号。
(3)仲裁信号
reqb:总线占用请求信号,表示rtl8139申请总线控制权。
gntb:总线占用允许信号,表示总线控制权已经交给rtl8139。
主设备都必须有以上2种信号。
(4)错误报告信号
perrb:数据奇偶校验错误信号。
serrb:系统错误信号。
(5)其他信号
clk:时钟信号,最高可达33mhz。
clkrunb:时钟运行信号,这是rtl8139增设的信号,用来请求时钟开始和表示时钟状态。
rstb:复位信号,低电平有效,至少需要120ns的宽度。
intab:中断请求信号,它需要与rtl8139的isr和imr寄存器配合使用。
在嵌入式系统中并不需要连接所有的引脚,可根据系统的实际需要进行选择。
1.2 主要寄存器
rtl8139的寄存器映射到i/o空间,i/o空间有256个地址,地址偏移量为00h~ffh。下面介绍几个比较重要的寄存器。
(1)command register
该寄存器地址偏移量为0037h,功能为软复位网卡,使能网卡的发送和接收。其描述如表1所示。
(2)interrupt status register
该寄存器地址偏移量为3eh~3fh,在inta引脚有效时表示中断源,与imr寄存器配合使用,它的值影响当前所有中断。其描述如表2所示。
(3)receive status register
该寄存器通常可以从数据包的包头中读出,是rtl8139芯片特有的。通过它可以知道网卡收包的状态以便进行接收处理。其描述如表3所示。
2 系统设计方案
根据rtl8139的以上特点,作者设计了rtl8139与dsp之间的接口解决方案。目前dsp与pci的接口一般有二种方案:(1)用cpld来实现。优点是可以进行功能优化,不必实现所有pci协议的功能,节约系统资源。占用系统资源大的用户可以做成asic,有利于降低成本。但由于pci协议的复杂性,短期内还难以做到操作稳定。(2)用专门的pci桥芯片。pci芯片功能强大,可减少开发时间和成本并能获得较好的传输特性。目前市场上有许多pci桥芯片产品,最为常见的是amcc、plx、cypress等公司的产品,作者选用plx公司的pci9054作为本系统的pci接口芯片。dsp与pci接口设计方案如图2所示。
dsp选用ti公司的tms320vc5402,它的运算速度达100mips,硬件接口功能强大(具有串行口、hpi主机接口和dma控制器等),而且价格低廉,具有很高的性价比。接口的硬件连接如图3所示。
图3中,dsp通过pci9054来读写pci内存,地址空间由pci的基地址开始。pci9054作为dsp的从设备和rtl8139的主设备。当pci写时,接收写信号,返回ready信号直到写fifo满为止,并保持ready信号到写fifo可用。当pci9054从rtl8139读出数据时将保持ready信号,直到balst信号(表示pci总线上的最后传输)有效,读周期被终止,没有读出的数据将被fifo舍弃。
要使嵌入式dsp系统要独立运行,必须外接eprom或flash存储器用于存放程序。与eprom相比,flash芯片功耗低,支持在工作电压下的擦写,可以方便地编写自己的flash芯片烧录程序,通过在片方式完成对flash芯片的写操作。本设计采用的是sst公司生产的sst39vf400a,它是一款基于cmos技术的高性能、多用途的flash存储芯片,其存储容量达4mb,功耗低,使用2.7~3.3v单电源供电。为了方便程序的调试,外接了1片64k×16b的sram,以用于存放发送数据和接收数据,以便于对比,及时地发现数据传输的正确性。逻辑控制部分主要用于主处理器对外设(如pci桥芯片、网络适配芯片、sram及flash等)的读写控制及地址分配。
3软件设计
软件设计主要分为pci网桥和网络接口二部分。pci网桥部分主要是对pci9054进行初始化,即对它的pci端配置寄存器和本地端配置寄存器进行正确的编程配置,以实现dsp与pci网卡的无缝连接。网络接口部分的编程包括对rtl8139进行复位初始化,数据包的接收和发送。
rtl8139已经实现了osi中的物理层和数据链路层的功能,只需再加上高层协议即可。作为一个嵌入式系统,为了节省系统资源,需要尽量使用简化的协议。因此ip地址和本机物理地址在初始化rtl8139时设定,采用本地管理的地址方式,上层协议进行了简化,没有封装复杂的tcp协议。
简化的网卡初始化程序如下:
#define cmd_rst 0x10 //复位标志
#define cmd_re0x08 //接收使能
#define cmd_te0x04 //发送使能
#define success0xff //网卡初始化成功标志
reset_init_rtl8139()
{
cmd=0x10;//软复位网卡
while((read_cmd & cmd_rst)==0) read_cmd=cmd;
  //检查网卡是否复位完成
write_mac_ip(); //设定网卡的mac地址和ip地址
cmd=cmd_re | cmd_te; //接收发送使能
set_rxconfig(); //接收配置
set_txconfig(); //发送配置
init_rx_addr(); //初始化接收缓冲区地址
rxmissed=0; //clear 0
cmd=cmd_re | cmd_te;
return success;
}
程序中:cmd为rtl8139的command寄存器,通过它来对芯片复位并检查复位成功与否;write_mac_ip()是向idr0~idr5写入mac地址,设定ip地址;set_rxconfig()主要是对receive configuration register进行设置。此外,网卡初始化程序设定只接收物理地址匹配的包,不接收组播和广播。
rtl8139接收缓冲区的大小可选,并设定为16kb。初始化过程中根据dsp的快慢还需要加一些延时,这一点非常重要。因为许多寄存器的设置都需要时间,若时间不够,某些寄存器的值可能会设置不正确,从而导致初始化失败,rtl8139的收发功能也会受到影响。
rtl8139数据的收发用中断方式完成。当主处理器要向网上发送数据时,先将1帧数据通过dma通道送到控制器的发送缓冲区,然后发出传送命令,rtl8139按照pci总线主模式将数据从发送缓冲区转移到内部发送fifo中。当fifo中数据包完整时,rtl8139即开始包发送。控制器在数据发送完成后通过中断方式通知主处理器;接收数据时,网上来的数据包首先被放在接收fifo中,同时rtl8139要进行组播地址过滤。当接收fifo中数据包已达到接收配置寄存器的要求时,rtl8139请求pci总线按照pci主模式将数据传到接收缓冲区,接收满1帧后,同样以中断方式通知主处理器。数据的收发是通过 dma通道来完成的。中断子程序流程图如图4所示。
数据包的封装按照ieee802.3协议、ip协议和udp协议,其帧格式如图5所示。
封装的过程依次在源数据前加上udp头、ip头和llc头。llc头即通常所说的以太网包头,但也可以根据自己的需要加上其他协议如tcp、arp或http。不过在嵌入式系统中,为了节省资源,应尽量减少协议的使用。在分组语音数据传输中,实时语音数据可以用udp,而控制信号可以用tcp。
4 结束语
本文所提出的dsp与rtl8139的接口解决方案已在试验中得到实现,并已用于ip分组语音数据的以太网传输,效果良好。随着isa总线的淘汰,pci接口的网络控制器必将在嵌入式领域中得到更广泛的应用。

龙尚NB-IoT模组赋能智慧水务
三点带你了解太赫兹波超材料近场调控研究新进展
Xilinx FPGA芯片内部时钟和复位信号使用方法
SFG-1000系列函数信号发生器的结构及性能特点
双十一战报:Leader洗衣机占据天猫、京东销量Top榜
DSP与PCI网卡接口设计
新型显示产业高质量发展前景
突破边界:高性能计算引领LLM驶向通用人工智能AGI的创新纪元
iPhone8或成改动幅度最大的一代?
美国将重建阿雷西博射电望远镜,前期投入 800 万美元
可穿戴设备和医疗物联网如何助力应对疫情
ISSCC 2013:我国32nm龙芯3B流片成功
英特尔第八代桌面酷睿i78700K评测 超越了上一代i7处理器4核心4线程的规格
通过智能魔镜显示屏来让所有的信息实现一镜掌控
阿尔法:金融科技助力数字货币资管行业的智能化升级
你们干的过财务机器人吗
快讯:600公里高速磁浮试验样车成功试跑
2014中国(天津)国际光电子与微电子对接展洽会
新闻热点:华为鸿蒙OS 2.0系统即将面世,支持华为智能手机升级
物联网在幼儿安防领域的应用分析