新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > DSP与PCI网卡接口设计

DSP与PCI网卡接口设计

作者: 时间:2009-10-21 来源:网络 收藏
 图3中,通过9054来读写内存,地址空间由的基地址开始。PCI9054作为的从设备和RTL8139的主设备。当PCI写时,接收写信号,返回ready信号直到写FIFO满为止,并保持ready信号到写FIFO可用。当PCI9054从RTL8139读出数据时将保持ready信号,直到BALST信号(表示PCI总线上的最后传输)有效,读周期被终止,没有读出的数据将被FIFO舍弃。

本文引用地址:https://www.eepw.com.cn/article/152314.htm

  要使嵌入式系统要独立运行,必须外接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接口的网络控制器必将在嵌入式领域中得到更广泛的应用。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭