首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
DSP与PCI网卡接口设计
来源:本站整理  作者:佚名  2009-10-21 10:26:23



图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_RE      0x08       //接收使能

  #define    CMD_TE      0x04       //发送使能

  #define    SUCCESS     0xFF       //网卡初始化成功标志

  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接口的网络控制器必将在嵌入式领域中得到更广泛的应用。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:220,664.10000 毫秒