TM1300 DSP系统以太网接口的设计_DSP论文
关键词:tm1300 cs8900a psos+ pna+ 驱动程序
1 概述
随着网络技术、多媒体技术的飞速发展,基于ip网络的多媒体应用越来越广泛。tm1300是philips公司推出的一款高性能多媒体数字信号处理器芯片,适合于实时性强的音视频处理应用,可广泛应用于会议电视、可视电话、远程图像监控等应用场合。具有广阔的应用前景。
根据具体的基于ip网络上的多媒体应用系统的需要,采集的音视频数据经压缩处理后,一般要传送到远程终端或控制中心,这时就需要解决dsp应用系统与ip网络接口的问题。
考虑到国内局域网大部分是以太网,随着交换式网络、宽带网络的发展,使得基于以太网接入ip网络上的应用有着现实意义。
tm1300可以作为pc机的一个外设工作,此时可直接采用pc机上标准的以太网接口传输数据;tm1300支持独立引导,自成一个系统从而脱理pc环境工作,这为实际低价位高性能音频处理终端提供了可能。这种情况下,网络接口的设计就相对复杂一点,需要解决硬件接口电路的设计、基于实时操作系统psos+驱动程序的设计等。本文介绍以太网控制器cs8900a,并解决tm1300 dsp系统和cs8900a的硬件接口设计;简单介绍psos+操作系统内核中实现tcp/ip协议栈的网络模块pna+,以及psos+操作系统下网络驱动程序的设计。
2 dsp芯片tm1300及x10总线接口
dsp芯片tm1300的核心是32位vliw结构cpu,时钟频率可达166mhz,片内集成了sdram接口、pci/xio总线接口、图像协处理器、可变长解码器、音频输入输出接口、视频输入输出接口、同步串行通信接口等模块,各模块与sdram之间采用dma方式传送数据。cpu各功能模块之间的协调、资源的分析、进程的调度,由运行在cpu上的一个由中断源触发的实时操作系统psos+控制。
网络控制器cs8900a是通过xio总线与tm1300实现接口的。限于篇幅,这里重点介绍tm1300中用于外设端口扩展xio总线。
tm1300片内的pci/xio复用总线接口给用户提供了无缝连接pci设备及扩展8位外设端口的能力。当pci/xio总线接口中的xio总线逻辑被激活时,作为tm1300系统扩展8位外设的总线,其中pci-ad[23:0]为地址总线a23~a0,共提供了寻址16m个单元的能力;pci-ad[31:24]为8位数据总线d7~d0;c/be0#为读信号rd;c/be1#为写信号wr;c/be2#为数据选通信号ds。
3 cs8900a简介
cs8900a是cirrus公司生产的一种高集成度的全面支持ieee802.3标准的以太网控制器,其组成结构框图如图1所示。cs8900a支持8位、16位的微处理器,可以工作在i/o方式或memory方式。片内集成了isa总线接口,可以直接和有isa总线的微处理器系统无缝连接。片内集成了4kb容量的packetpage结构的ram,这4kb存储器映像结构的ram包括片内各种控制、状态、命令寄存器,以及片内发送、接收缓存。用户可以以i/o方式、memory方式或dma方式访问它们。
之所以选择cs8900a,是因为cirrus提供了cs8900a的基于各种操作系统的驱动程序源代码,这就为开发带来了方便。基于psos的驱动程序是假设目标系统中包含了intel 80x86的cpu和1个16位的isa总线接口的,而tm1300中用于扩展外设的xio总线是8位总线,可见硬件设计的主要任务是实现8位xio总线与16位isa总线时序的配合。驱动程序的设计主要是解决基于80x86芯片的源代码移植到tm1300上运行的问题。
4 tm1300与cs8900a硬件接口电路设计
tm1300的xio总线用于提供用户扩展外设,有8根数据线d7~d0,24根地址线a23~a0,还有i/o读写信号rd、wr。所以,利用tm1300的8位xio总线模拟1个16位的isa接口和cs8900a的isa总线接口连接,即可解决硬件接口的问题。图2给出了接口设计的原理框图。
图2中,cs8900a的高8位数据线通过1个8位锁存器和缓冲器连接到8路模拟开关a的一端,cs8900a的低8位数据线连接到8路模拟开关b的一端。8路模拟开关a、b的另一端均连接到tm1300芯片xio总线的数据线d7~d0上。8路模拟a、b在同一个时刻只有1组是连通的,由a0控制:a0=0时,模拟开关b连通;a0=1时,模拟开关a连通。这样就可以实现xio总线8位数据线与cs8900a的16位总线的连接。同时,tm1300的a20、a0经译码控制锁存器和缓冲器的操作,逻辑关系如下:
①a20用于控制读写。当a20=0时,cs8900a的高8位数据从缓冲器输入;当a20=1时,高8位数据经锁存器输出到cs8900a的d15~d8。
②a0用于控制8位或16位操作。当a0=0时,对应16位数据读写;a0=1时,对应高8位数据读写。
对cs8900a的16位数据读和写操作有所不同。当tm1300从cs8900a读16位数据时,读16位数据(a0=0、a20=0),cs8900a的低8位数据直接通过8路模拟开关b输入到tm1300的xio总线的8位数据线d7~d0;同时,高8位数据保存在缓冲器中,紧接着tm1300再读入缓冲器中的高8位数据(a0=1、a20=0)。同样,输出16位数据到cs8900a时,首先将要输出的高8位数据锁存到锁存器中(a0=1、a20=1),然后紧接着直接输出低8位数据到cs8900a的d7~d0(a0=0、a20=1),此时,锁存在锁存器中的高8位数据输出允许,也输出到cs8900a的d15~d8。
a12~a0直接连接tm1300的xio总线的a12~a0。因此对于tm1300而言没有i/o和存储器的区别,所以wr经与片选取或后直接与cs8900a的iow、memw连接。rd也是直接与cscs8900a的ior、memr连接。
5 cs8900a网络接口驱动程序设计
psos+是windriver公司专门为嵌入式系统设计和开发提供的一个模块化、高性能的实时操作系统。它采用模块化结构,包含的一系列软件功能模块有:实时多任务内核psos+、多处理器多任务内核psos+m、tcp/ip协议栈pna+、远程调用函数库prpc+和文件系统phile+等。
基于psos+实时操作系统的网络接口框图如图3所示。
下面根据网络结构的分层依次进行分析。
(1)层
以太网接口的实现前面已经分析过。
(2)ni(网络接口)层
pna+通过一个用户提供的称为网络接口(ni)的软件访问网络。一方面它直接驱动网络接口芯片,控制太网数据帧的收发;另一方面它向pna+提供符合pna+要求的函数接口。在pna+和ni之间的函数接口是标准的,和网络的媒介以及网络拓扑无关。这些函数可以使得pna+不需要知道网络接口底层的细节,可以理解它是psos+中的硬件抽象层(hal)。这些函数如表1所列。
表1 各函数的功能
函 数 | 功能代码 | 功能描述 |
ni-broadcast | 5 | 广播发送1个ni数据帧 |
ni-getpkb | 2 | 取得1个ni数据帧 |
ni-init | 1 | 初始化ni |
ni-ioctl | 7 | 执行i/o控制操作 |
ni-poll | 6 | 轮询(for probe+ packet) |
ni-retpkb | 3 | 返回1个ni数据包 |
ni-send | 4 | 发1送个ni数据包 |
这些函数的实现是网络驱动程序设计的主要任务,它们的代码在cs8900a.c中。这些函数一方面驱动网卡收发,另一方面为pna+提供了一套屏蔽硬件底层细节的函数实现。另外,ni还包括一个用于处理数据包中断的中断例程。
每一个ni都应该分配一个唯一的ip地址,可以在psos+配置文件sys_conf.h中设定ip地址、网关、掩码等网络接口参数。如:
#define sd_lan1 yes
#define sd_lan1_ip 0xca726878 /*202.114.104.120设定ip地址*/
#define sd_lan1_subnet_mask 0xffffff00
/*设定掩码*/
#define sd_def_gtwy_ip 0xca726821 /*202.114.104.33设定网关*/
另外,还要给这个cs8900a网卡设定一个mac地址。这个地址可以在配置文件mybsp.h中设定为不与网上其它网卡冲突的任意值,如:
#define bsp_cs8900_ind_addr "00:24:20:10:ff:41"
(3)网络层及传输层
psos+的pna+模块集成了网络层和传输层。pna+在整个网络体系结构中处在第3层,包含ip协议、arp协议的实理,icmp协议、igmp协议的实现;提供了对用户数据报udp和流式tcp两种传输协议的支持,还提供了符合bsd标准的socket接口,为应用的实现提供了方便的编程环境。
(4)应用层
在应用层实现用户的网络应用。
网络接口的调试是在pc机上ping这个cs8900a的网络接口。如果ping通,表明整个ni层和pna+已经正常工作了。这个过程中,可以采用tmdbg.exe调试环境支持的dp()来测试一些结果,克服了tm1300系统没有显示支持的不足。
6 小结
本系统在实验室局域网环境下,采用双绞线连接,实现了tm1300与cs8900a的以太网接口的设计,实验结果可以成功ping通。基于socket的简单的c/s结构的网络测试程序也正常工作,在网络低负荷时,可以用于音视频多媒体数据网上传输,具有一定的使用价值。