1 引言
本系统主要功能是通过dsp5416(数字信号处理器)采集语音信号并利用以太网传输实现远程的网络语音通信,可用于远程网络电话通信等场合。系统设计包括以下主要部分:语音的采集和播放;以太网传输部分;语音存储和处理。系统组成见图1。

图1 系统总体图
2 系统硬件设计
2.1 dsp的以太网接口设计
(1) dsp
tms320vc5416是ti公司推出的一款高性能定点dsp,应用一种高性能修正哈佛体系结构,具有专用的指令集,具有强大的运算能力、高度的并行性和良好的灵活性。程序与数据分开存放,内部具有8条高速并行的总线。片上集成有128k字的数据存储器和16k字的程序存储器以及专门用途的的硬件逻辑, 同时还集成有dma控制器、主机接口(hpi)、中断选择器等外设能够方便快速地同外部设备进行数据交换。再加上采用模块化的设计以及先进的集成工艺,芯 片的功耗小,具有很强的数字处理能力,目前广泛应用于语音处理等数字信号处理场合[1][2]。
(2) 太网控制器
rtl8019as是台湾realtek公司生产的以太网控制器,支持ieee802.3;支持8位或16位数据总线;内置16k的sram,用于收发缓冲,全双工,达到10mbps;提供100脚的tqfp封装,其主要引脚功能如附表所示。它与主机有3种接口模式,即跳线模式,pnp模式和rt模式。
附表 rtl8019as部分引脚

●跳线模式
这种模式与早期网络控制器兼容。rtl8019as的端口基地址、中断口等都由开关或跳线器决定,跳线模式简单,但配置资源麻烦。
●pnp 模式
与微软的pnp协议兼容。在这种模式下,rtl8019的端口基地址、中断口等都由eeprom93c46设定,但需要进行pnp芯片的识 别,不便与dsp接口。
●rt模式
为了避免pnp模式下的芯片识别和配置过程,re- altek公司提供rt模式。在rt模式下,rtl8019as的端口基地址、中断口等也是由eeprom93c46设定的。[3]
(3) 设计
为了简化dsp网络接口的软、硬件设计,不使用远程自举加载功能,并且选用跳线接口模式,用c5416的扩展i/o口代替跳线器对rtl8019as进行 初始化配置,这样既省去了eeprom,又避免了跳线器配置资源的麻烦。
另外,考虑到系统的通用性,本系统采用ide接口将网卡网络接口与dsp系统分开,这样可以将网卡单独做成一个查检,使用中一旦发现网卡出现故障,可以更换网卡不需要更换整个系统板。如图2、图3所示。

图2 vc5416与ide接口

图3 rtl8019与ide接口
(4) 设计说明
●选择rtl8019为跳线模式,将其jp引脚经10k电阻上拉到5v电 源上。
●smemrb/smemwb 这2个信号是主机对网卡的共享存储器进行读写时的控制信号,这里将其接高电平,屏蔽了远程自举加载功能。
●地址线sa19-sa0,选择基地址为300h,将sa6-sa19接地,sa5接ide_cs,将其配置到dsp的i/o空间。
●需要注意的是,rtl8019as的中断请求信号是高电平有效,而dsp的中断请求输入信号是低电平有效,所以在int0接入dsp的int1前要经过逻辑反向。
●iocs16 接到高电平使它工作在16位数据总线方式。其逻辑关系为:
/ior=~r/w+/is+/iostrb;
/iow=r/w+/is+/iostrb;
ready=iochrdy;
/int1=~int0;
2.2 语音采集设计
由于tms320c5416的串行口时序可以软件编程,这为与CODec接口提供了极大的方便。语音信号的a/d,d/a转换及编解码功能是利用 mc14lc5480完成的。mc14lc5480是摩托罗拉专门用于语音处理和ip电话的芯片,内置13位a/d和d/a,pcm编码器和模拟滤波器, 具有平衡输入、输出功能,增加抗噪声性能,输出可直接推动350欧的扬声器,功耗低。mc14lc5480与c5416的接口线包括数据输入输出(dr和 dt),主时钟线(mclk),收发时钟线(bclkr和bclkt)和收发帧同步时钟线(fsr和fsx)。
mc14lc5480与codec与tms320c5416的硬件接口电路如图4所示。

图4 mcbsp与mc14lc5480接口电路
3 系统软件设计
本系统是基于网络传输的,tcp/ip协议栈可以兼容多种网络技术。本系统软件设计主要任务就是网卡的初始化程序、dsp对mc14lc5480的控制和 tcp/ip协议的实现。
3.1 tcp/ip协议的简化及其本系统的实现
tcp/ip协议是一组完整的网络协议栈,用于实现不同的网络结构和不同的操作系统之间的互连,已成为工业标准。
(1) tcp/ip协议各层功能[4]:
●应用层:应用层向用户提供一组常用的应用程序,它包含tcp/ip协议中的所有高层协议,如:虚拟终端协议(telnet)、文件传输协议(ftp)、电子邮件协议(smtp)、域名系统服务(dns)、和超文本传输协议(http)等。
●传输层
传输层提供面向连接的数据传输,确保源主机传送的数据报正确的到达目标主机。传输层提供两个协议:tcp协议和udp协议。tcp协议提供端到端的可靠性高的数据传输。udp协议只是提供简单的把数据从一端发送到另一端的服务。
●网络层
负责相邻计算机之间的通信。处理来自传输层的分组发送请求,收到请求后将分组装入ip数据报,填充报头,选择路径将数据报发到目标接口。处理输入输入数据 报,首先检查其合法性,去掉报头,将其余部分传送给适当的协。
●链路层
实现本层协议,是tcp/ip协议与各种物理网络之间的接口。
通常pc机上实现了比较完整地tcp/ip协议,而在dsp系统中由于运算速度和内存的限制,不可能支持所有的协议,一般只实现需要的部分,可以根据硬件的具体情况和实现的需求进行必要的简化。结合本系统,在传输层选择udp协议。另外在网络层必须实现arp、ip协议。
(2) 主程序流程图
如图5所示。

图5 tcp/ip协议主程序流程图
(3) 函数调用
当dsp接到正确的以太网数据包以后,调用recevie _process,如果是arp请求,则发送一个arp应答;如果是arp应答,则把对方的ip地址和以太网地址放到arp缓存中,如果是ip包,则调用 ip处理模块处理。该函数如下:
receive_process:
arp: cmpm *(rxbuf.ethernet.protocal),#0x0608;判断是否是arp协议
nop
nop
bc ip,ntc
call arp_process
st #askfree,*(task)
b taskfree
ip: cmpm *(rxbuf.ethernet.protocal),#0x0008;判断是否是ip协议
nop
nop
cc ip_process,tc
st #taskfree,*(task)
b taskfree
当接收到ip数据包后,判断该协议类型,如果是17,则是udp协议,调用udp_process处理,系统会给上位机一个应答信息,发送数据包前首先进行协议封装,调用create_ip_PACket函数完成数据包的封装。最后调用send_packet函数完成发送。该函数如下:
create_ip_packet:
st #0x0045,*(txbuf.ip.verh1)
st #0x0,*(txbuf.ip.crc)
addm #0x0800,*(txbuf.ip.frameindex)
st #0x1234,*(txbuf.ip.frameindex)
st #0x0040,*(txbuf.ip.segment)
ldu *(send_packet_len),a
add #10,a
stl a,1,*(send_packet_len)
ld a,1,a
stl a,-8,*(txbuf.ip.len)
ld a,8,a
add *(txbuf.ip.len),a
stl a,*(txbuf.ip.len)
call create_tx_ipcrc
addm #14,*(send_packet_len)
call send_packet
3.2 dsp对网卡的控制
配置命令寄存器cr:将该寄存器设为22h,禁止dma操作,将页0作当前页。
配置数据配置寄存器pstart和pstop:分别设置为4ch和80h,表示接收缓冲区的地址从4ch到7fh页。其中80h是停止页,不包括在接收缓 冲区中。
配置边界寄存器bnry:设置为40h,表示发送缓冲区从40h开始。
配置传送页面开始寄存器tpsr:设置位40h,表示传送数据包开始页面地址。
配置发送字节计数器tbcr0和tbcr1:预置为0。
配置接收配置寄存器rcr:设置为cch,表示长度小于64字节的数据报和收到错误信息的数据包被拒绝。
配置发送配置寄存器tcr:设置为e0h,表示工作在正常工作模式下,发送帧后添加crc校验码。
配置数据配置寄存器dcr:设置为c8h,表示以16位dma数据传输。
对rtl8019接收数据操作有中断两种方式。本设计选用中断方式,控制器每收到一个完整的以太网数据包后,向cpu发送中断请求,cpu响应 rtl80




