TM1300 DSP体系的以太网通讯接口的计划与实现
发布日期:2011-05-04
先容了TM1300 DSP 的特点,给出了通过TM1300的PCI接口驱动以太网芯片来实现以太网通讯接口的计划要领。
该计划将TM1300和以太网连合起来,因而可以方便地实现视频通讯,文章细致先容了该方案的软件和硬件的计划要点,末了给出了对模仿数据和实际视频压缩码流的发送实行结果。
1 概述
TM1300是Philips公司推出的新一代高性能多媒体数字信号处理惩罚器芯片。基于TM1300的DSP应用体系得当于及时声音、图像处理惩罚,可遍及应用于集会电视、可视德律风、数字电视等应用场合。它不但具有强大的处理惩罚本领,同时还具有非常友爱的音频和视频以及SSI和PCI等I/O接口,因此可以根据应用的必要机动地布局种种视频通讯体系。鉴于如今谋略机网络的遍及和网上视频业务的生长,很有须要为TM1300视频编码体系开辟一个以太网接口以拓宽其应用范畴。开辟以太网接口的一种公道思路是利用TM1300集成的PCI接口来驱动专用的以太网接口芯片。由于如今多数以太网接口芯片(如Real-tek8029,Realtek8139等)都采取PCI接口,因此,可以用PCI总线将数据从TM1300传输到这些专用的以太网接口芯片后,再由它们发送数据,并且TM1300可以在嵌入式操纵体系pSOS中运行,同时由于体系pSOS带有TCP/IP协议栈因此可以方便地完成编码码流的TCP/IP封装。
根据以上思路笔者在举行了前期测试的底子上举行了电路板的计划并顺利完成了调试。如今这个以太网接口已经根本开辟告成。本文将对这个计划的技能要点从硬件和软件两个方面举行细致先容。
2 TM1300及PCI总线接口
该体系的硬件布局框图如图1所示。本体系硬件计划的重点是PCI总线接口。PCI总线根据数据位的宽度有32位和64位之分,64位的数据线与32位是兼容的。PC机中常见的是32位PCI总线,它的有效引脚总数是110个,可以分成3组。第一组是根本成果信号线,包括32位共享数据地点线AD〔00..31〕、接口控制线、仲裁线、时钟线、体系复位线、停止线;第二组是附加成果信号线,包括错误报告线、cache成果支持线、JTAG边界扫描线;第三组是电源线,包括配置耗电量标识线、3.3V电源线(12根)、5V电源线(13根)、地线(22根)。
由于Realtek8029不具备PCI的附加成果信号线所支持的cache成果和JTAG边界扫描成果,同时固然它具有奇偶校验错误报告成果引脚,但该脚可以悬空不消。以是,计划时只需思量第一构成果信号线的连接即可。
PCI接口的计划有以下几个要点:
(1)PCI总线的仲裁
这里先阐明两个见解。起首,PCI总线是多配置共享的,由于PC机里可以有多个PCI配置,以是必要利用仲裁器;其次,PCI配置有主配置和从配置之分,主配置可以提倡PCI数据的发送从配置只能被动地相应主配置的操纵以对读操纵和写操纵做出相应。PCI的仲裁引脚是REQ和GNT,分别为恳求线和授权线,并且只有PCI主配置有这两个引脚。一样平常环境下,REQ通常和GNT成对地连到仲裁器,而配置与配置的REQ和GNT通常是互不相连的。
PCI总线的仲裁进程是如许的:PCI主配置把REQ电平拉低以表现向仲裁器恳求占用总线。经仲裁获准后,仲裁器把这个配置的GNT电平拉低以表现恳求获准,以后该配置便可以利用总线了。当它不再利用总线时,应使REQ信号变为高电平仲裁器就不再给它分派总线资源。在本体系中,TM1300是PCI主配置,而Realtek8029是PCI从配置。由于它们不存在共享总线的题目,以是不必要仲裁器,而只是大略地把REQ和GNT短接即可,这就相称于TM1300本身给本身授权。
(2)PCI_IDSEL信号线在配置的PCI配置读写中的作用
PCI有一种特别的读写周期,称为配置读写。这是由于在体系引导时,要是没有给配置配置I/O或内存地点,软件就只能通过配置来读写访问配置。配置读写有两种,分别称为0型和1型详细采取哪一种取决于总线的硬件连接。配置读写操纵不颠末PCI桥时,利用0型,当必要颠末PCI桥时,则要用1型,0型读写的地点直接便是总线上的地点,1型读写的地点则要颠末PCI桥的译码才华成为终极的总线地点。本计划中,TM1300和Realtek8029是用PCI总线直连的,以是利用0型配置读写。
AD〔00..31〕是PCI总线的共享地点和数据线,每一次PCI发送都分为地点周期和数据周期。在地点周期,采取0型读写时,AD〔00..31〕的内容如下,AD〔00〕和AD〔01〕总为“00”,由于配置读写因此双字为单位的,AD〔02〕~AD〔07〕是要读写的PCI配置空间的寄存器号AD〔08〕~AD〔10〕是配置的成果号在一块PCI卡上有多个成果配置时,为了进一步区分差别的配置就要用到这几位,由于Realtek8029是单成果配置,故这几位全为0,AD〔11〕~AD〔31〕是配置选择位,此中必须有且仅有一位为“1”,如图2所示,这在物理上表现为总线的AD〔11〕~AD〔31〕中有一根为高电平要是输出高电平的这根线与某块PCI卡的PCI IDSEL引脚相连,这块卡就会被激活,如许,在紧接着的数据周期中,它就会将其PCI配置空间相应寄存器中的内容放到总线上以供读取。
(3) PCI_FRAME、PCI_DEVSEL、PCI_IRDY、PCI_TRDY引脚的处理惩罚
上述四个引脚均是低电平有效,因此必要接上拉电阻,以包管在配置未驱动该引脚时处于稳固的无效状态,上拉电阻的阻值在1kΩ~10kΩ范畴内,阻值越小,则将该信号驱动为有效的时间越短,但太小又会导致电流过大,以是,要衡量思量,本计划选用4.7kΩ。
上述三点对脱机环境下PCI配置的互连具有较广泛的参考意义,除此之外,本计划另有以下比较特别的几点:
●应将TM1300的PCI,INTA引脚配置为输入,以便吸取Realtek8029的停止;
●PCI时钟由TM1300提供;
●Realtek8029的复位信号也便是TM1300的复位信号,该信号由外部电路提供;
●TM1300的PCI STOP、 PCI SERR引脚悬空,表现Realtek8029不具备相应的附加成果。别的,TM1300的PCI INTB、PCI INTC、PCI INTD引脚可以用作用户停止。
3 软件计划
该接口计划的软件布局框图如图3所示。此中TM1300运行于pSOS,它是一个大略的及时多任务嵌入式操纵体系,带有pNA+网络组件,其pNA+相称于TCP/IP协议栈的扩展,它向上可提提供用步伐编程的socket接口,向下可定义一个与网络接口层交互的接口,此中包括8个函数,分别是:ni_init(接口芯片初始化)、ni_broad-cast(发送广播分组)、ni_send(发送平凡分组)、ni_getpkb(申请发送缓冲区)、ni_retpkb(送还吸取缓冲区)、ni_ioctl(I/O控制操纵)、ni_pool(统计量查问)、Announce(网络接口驱动调用它把吸取到的数据包提交给pSOS)。此中网络接口层在本应用中便是Realtek8029的驱动步伐,它通过硬件抽象层来驱动Realtek8029(硬件抽象层是PCI总线的配置读写和I/O读写指令集的总称)。
软件实行的流程大抵是:体系起首启动pSOS,并由它加载网络接口驱动步伐,然后调用驱动步伐的ni_init函数,同时初始化Realtek8029的PCI配置空间并设置Realtek8029的事变参数,之后启动用户任务。在这里,用户任务为H.263编码进程。它对VI口读入的源图像举行压缩编码后,将调用socket的接口函数sendto(sendto是UDP套接口专用的发送函数),然后把码流发送给pSOS由pSOS根据UDP协议举行封装后,再调用ni_send函数,并由ni_send完成数据包从体系主内存到Realtek8029片上RAM的拷贝,然后启动Realtek8029发送数据。在吸取环境下,Realtek8029收到一个完备的数据包后会用停止关照CPU,然后由CPU实行停止办事步伐。当停止办事步伐将数据包从Realtek8029片上RAM中拷贝到体系的主内存后,体系将调用Announce函数并把数据块的指针、数据长度和别的信息提交pSOS,末了由pSOS将数据包沿协议栈一层层上传并作出相应的处理惩罚。
软件的计划和pSOS操纵体系的干系比较密切,限于篇幅,本文不同错误pSOS作细致先容,。本文接下来重点先容PCI配置空间的配置进程,这部分对付雷同的计划有较广泛的参考意义。PCI配置空间有64个字节,PCI片内的这些寄存器存储了该芯片的厂店铺、配置号、配置范例等紧张代码,还包括下令寄存器、基地点寄存器等控制其总线举动的寄存器,它们必须在配置初始化时精确配置,不然配置不克不及事变。
对Realtek8029 PCI空间的配置必要三个步调:
起首是扫描总线,这一步的目标是找到Real-tek8029的配置地点,直观地讲,便是找到它的PCI_IDSEL引脚和哪根AD线相连,由于后续的配置写要根据这个地点来寻址。扫描总线时,要对AD〔11〕到AD〔31〕每根线举行一次扫描,要是哪根AD线连接了一个PCI配置的PCI IDSEL引脚,那么用配置读函数读取PCI配置空间的0号寄存器时,应该返回该配置的配置和厂商代码,要是这根线实际未连接配置,则返回值是0。已知Realtek8029的配置和厂商代码是“0x802910ec”,要是返回值与之雷同,阐明找到了Realtek8029,这时要记下这根AD线的序号。比方,在硬件上把Realtek8029的PCI IDSEL和AD〔20〕相连,则扫描到的序号就应该是“20”。
其次,用配置写函数配置I/O读写使能,即在command寄存器中写入“0x1”。
末了,用配置写函数配置I/O地点,也便是在I/OBaseAdddress寄存器写入分派给该配置的I/O地点(比方“0xe400”)。详细步伐流程图如图4所示。
4 调试结果
根据以上计划,笔者在原TM1300视频编码硬件体系的底子上参加了PCI接口,并编写了pSOS下Realtek8029的驱动步伐。然后,在这个硬件平台上对Realtek8029的驱动部分举行了数据发送测试。
笔者起首用一个单独的UDP发送任务举行发送速率测试。这个任务重要是高速地向网络上的一台PC发送数据包,数据包的大小是变长的。PC吸取并对丢包数举行统计的结果如表1所列。实行表明,在用网线直连的种种测试速率环境下都没有堕落,而当接入局域网后,在发送速率为4.5Mbps时有突发的少量错误。由于UDP是不可靠的传输方法,以是这种错误是正常的。测试中,UDP发送的最高速率可以到达5Mbps左右,它与硬件的最高速率(10Mbps)相比另有肯定差距,重要缘故起因是数据从体系主内存到Realtek8029片上RAM的拷贝进程如今尚未采取DMA方法,这是必要改造的地方。
表1 丢包数统计表(单位:丢包个数/分钟)
接下来笔者举行了编码和发送的连合测试。编码任务实行H.263数据压缩后,把码流从以太网接口发出,然后在网络上的另一台PC上吸取这个码流,并举行解码播放。通过调解编码器的量化步长可以控制编码的输出码率。在实行环境下发明在量化步长大于便是5、码率在700kbps以下时,根本没有丢包征象,解码得到的图像比较稳固,而当量化步上进一步减小,码率靠近1Mbps时,就会出现丢包征象,解码的图像会出现彩色方块。出现这种征象是由于H.263编码器对CPU资源的斲丧很大,并且数据在主内存和Realtek8029片上RAM之间的复制采取I/O读写方法也必要肯定的CPU资源。如许,当量化步长小于5时,处理惩罚的巨大度高出了CPU的本领从而孕育产生了肯定的误码。办理的途径一方面是改造数据的发送方法(采取DMA),另一方面是必要对编码任务举行优化。
5 小结
本文先容了PCI总线接口的计划以及PCI空间初始化的步调,同时对测试结果举行了较细致的阐发,提出了以后改造的方向。