智能多业务语音片上系统设计
扫描二维码
随时随地手机看文章
在中国IT行业快速发展的背景下,社会以及用户需求的多样性使电信设备运营商、服务提供商面临越来越多的竞争压力。提高竞争力、加快业务开发能力、设计符合市场需求的产品和业务是关键所在。生存中创新和创新中发展已经成为必须面对和不得不解决的问题。本文采用SoC设计方法在altera中高端FPGA器件实现可应用于电信多业务交换平台的智能语音处理系统芯片。系统设计的关键在于片上系统三总线结构独特设计、SDRAM(内存)控制器设计以及与系统主机之间共享信箱协议的制定。
1 系统设计
智能语音处理系统的设计实现基于Cyclone II EP2C35[12]器件。系统的核心处理功能与几乎全部系统功能模块全部通过LogicLock的功能在FPGA内实现,嵌入式处理器软核Nios II作为智能语音处理系统的主处理器,用来管理单板的运行,负责协调系统各模块之间工作,控制它们的工作状态及各外设的操作;通过通信共享信箱单元,实现与程控交换机主机系统的通信,接受系统的管理和调度,借助以太网口从系统服务器下载系统运行程序和各种不同的语音数据。
Nios II处理器是具有最多的6级流水线(Fetch,Decode,Execute,Memory,Align,Writeback)的32位改进哈佛RISC结构软核处理器。多达256条用户可定制指令可帮助用户创建一个最适合他们需求的嵌入式系统。Nios II处理器高速缓存的实现是采用简单的直接映射的连续写入结构,这种结构设计能够用最少的器件资源消耗获得最高的性能,在Cyclone II器件中可以获得超过166 DMIPS的性能。
有别于传统的Harvard体系中双总线结构,本系统设计采用三总线结构:内存(SDRAM)专用高速总线、ROMDISK(Flash)专用总线和与系统主机之间通信的共享信箱总线。满足ROMDISK、内存和共享信箱总线三者之间大流量的数据传输,同时保证系统可以处理更多的任务,这样的体系结构为系统提供并发执行效率,提高处理器的利用率;多任务之间数据快速交换有效缩减等待时间,提高多任务处理得效率。
语音数据缓冲区和G.711/G.726协议处理器根据系统的要求向用户提供包含基本语音、辅导语音、各种特色语音在内,基于ITU G.711/G.726语音压缩协议的数据链路,为系统提供32路-256路速率16-64kbps语音通道,以1-8条2Mbps的高速PCM链路提供给系统使用。UART被用作系统调试接口,系统功能框图如图1所示。
2 业务流程
智能语音片上系统的主要工作是,满足程控交换机系统和IP交换机系统的语音业务类型和智能语音业务需求。基本语音存储和辅导语音固化在本板的ROMDISK中,操作系统可以在上电初始化、操作系统装载以及文件系统加载完成后,利用三总线机构将ROMDISK中存储的各种常用的语音数据转存到内存中。同时为了满足业务的多样性和灵活性,系统能够从服务器网络接收各种特色语音数据:如天气预报、广告数据以及用户的留言信息等。正常语音业务工作流程如图2所示。
3 系统关键部分设计
3.1 内存控制器
内存控制器(SDRAM)实现Nios II处理器和内存之间的操作,为系统实现多功能业务开发,提供可靠、大容量存储空间。该模块实现内存的初始化、刷新、数据传输等功能;支持的数据端口32位,时钟频率设置为100MHz,CAS Latency(CL)设置时间为2个时钟,突发长度设置为1-8。
在正确时间采用正确的方法采样并锁存数据是设计的难点。当内存的片选信号和读信号有效时,进入读操作状态。列地址有效和写命令有效两个时钟后,内存芯片输出数据(CL=2)在时钟的上升沿将数据总线上数据采样锁存。模块中设立一个数据采样锁存器,根据其时序要求,CL=2,有效数据延时输出2CLKs,内部数据采样锁存器在数据有效时间内时钟边沿时刻执行采样锁存,完成从内存取得数据的过程,Nios II处理器Avalon总线从内存控制器中数据采样锁存器中得到数据,送外数据目的地。读操作采用自动预充功能读命令(auto precharge after write burst)。内存进入自动预充操作后就处于空闲状态,等待下一个状态的开始。
3.2 共享信箱模块设计
共享信箱是系统信箱数据区,定义了本系统和程控交换机系统或IP交换机的主处理单元之间通信命令参数和传送放音命令及音源编码。这是与系统可以正常进行通信的关键。
共享信箱模块基于FPGA内部的双端口RAM构成,内部通过Avalon交换总线与Nios II处理器进行通信,外部通过一个16位端口,以总线的方式与程控交换系统进行通信,其容量的大小根据系统要求和FPGA向系统提供PCM链路数来决定。
系统每次放一部分语音,软件记录下状态值。下一次从这个值开始继续从存储区向语音缓冲空间搬移一部分语音数据。写入的字节数根据语音缓冲空间设定,数据确定后,要在每一个中断处理周期(语音缓冲区A/B区切换时间)将一定端口、一定数量的语音数据写入规定的RAM空间。句法结构如下:
3.3 语音数据缓冲区设计
缓冲区写端口侧和系统Avalon总线联系,其地址空间按照顺写的方式进行,难点在于读端口侧地址信号的产生。本文采用双缓冲区空间方式,在FPGA内部设置两块同样的存储区域,通过地址产生器产生端口地址跳变、链路地址跳变和中断的产生。
Nios II处理器按照程控交换系统主机的指令将所需的语音数据搬到语音数据缓冲区指定的地址空间;缓冲区可为每一个语音通道提供7字节的空间(N为偶数),CPU可以在每次语音处理中断中,每路语音通道1次可以写入N/2字节的语音数据。在一个系统帧同步信号FS0周期内(125μs),对单个语音通道可以完成8位,即一个字节数据转换,采用AB双缓冲区的设计模式,N/2字节的数据需要在N/2个FS0完成,需要的时间就是125μs×N/2,其周期根据系统响应中断的时间、处理语音数据存取的时间、系统处理其他数据的时间等综合考虑来确定,保证系统设定的中断周期内完成业务处理,且不影响系统的整体运行效率。
从中断的处理过程来看,每一次中断的产生,响应和处理,系统总是需要对系统指针、放音位置等系统重要数据进行压栈堆栈和回复的处理,处理同样的任务,中断周期短,系统的任务量都会相应增加。中断时间的长短选择是设计中比较困难和关键的,需要根据处理器处理能力、完成数据转换需要的时间、中断任务的处理时间、FPGA的RAM容量等因素综合进行选择,使用Nios II处理器,系统完成全部(128个)语音通道数据转换的时间,也就是中断任务的处理时间为2.8×3ms。本设计中也是根据这个前提条件来设定中断级别和中断周期的。本设计设定N=256,提供128路语音通道数据,系统需要中断时间设定为16ms。
语音链路PCM的处理,按照国际电信联盟ITU G.711协议完成,G.711协议是ITU规定的PSTN网中使用语音传输的协议,它的数据速率为64kbps。G.726是ITU前身CCITT于1990年在G.721和G.723标准的基础上提出的关于把64kbps非线性PCM信号转换为40kbps、32kbps、24kbps、16kbps的ADPCM信号的标准。G.726标准算法简单,语音质量高,多次转换后语音质量有保证,在语音存储和语音传输领域得到广泛应用。
4 结论
设计完成后下载到FPGA后,经过现场测试和实际运用,该系统完全达到设计目标,在每个局用交换模块上配置一块由该芯片控制的语音子处理机,即可满足一个交换模块8192个用户对语音系统的要求,证明该智能多业务片上系统设计是成功的。可以适用于各种电信业务系统中和IP网络交换系统中,为企业缩短产品上市时间、降低开发风险与成本、提高新业务开发能力提供一个较为理想的解决方案。