×

多路语音实时采集与压缩处理系统设计

消耗积分:1 | 格式:rar | 大小:0.3 MB | 2017-10-23

分享资料个

  在语音的数字通信和数字存储等应用领域,需要对多路语音信号进行实时采集和压缩处理。如某语音记录设备,需要对8路语音信号进行实时采集和压缩处理,而且要求对采集到的语音数据的压缩率尽量高。一般地,当要求语音数据压缩后的码流在10 Kbps左右时,需要采用语音的模型编码技术。而模型编码算法的运算量很大。因此,如一方面要求对多达8路的语音信号进行实时采集,另一方面又要求对各路的语音信号进行较高压缩率的实时压缩处理,对数据采集和处理系统提出了更高的要求。
  由于VLSI技术的迅速发展,DSP(Digitalsig-nal processor数字信号处理器)的性能价格比得到了很大的提高,使得利用DSP的高速数据管理能力和处理能力来实现高速数据采集和处理成为实时数据采集和处理的一个新的发展方向。基于此,本文介绍的多路语音实时采集与压缩处理系统采用了高速DSP技术。
  1 系统结构与工作原理
  1.1 系统主要性能指标
  采集语音信号通道数:8
  语音信号带宽:300~3 400 Hz
  采样速率:8 000 Hz
  语音回放通道数:1
  每路语音信号压缩后码流:13 Kbps
  扩展ISA总线接口
  系统在结构上包括三个主要部分,即8通道A/D和1通道D/A部分,DSP最小系统及DSP的DMA与ISA总线的接口。如图1所示。
  多路语音实时采集与压缩处理系统设计
  1.2 A/D及D/A
  该部分由9片A-Law CODEC芯片TP3057组成。其中8片构成8通道A/D转换器,另一片构成D/A转换器,直接由DSP控制。该芯片采样数据是8 000×8 bit A-Law PCM数据,每通道数字信号的输入和输出是64 KbpsPCM同步串行码流。数据传输码流速率是2.048 Mb/s。8片A-Law CODEC均挂接在同一2.048 Mb/s的同步串行数据总线上,2.048 Mb/s的数据分为32个时隙,每个通道的64Kbps数据的传输占用32个时隙中的一个。具体占用那一个时隙由时隙分配控制威廉希尔官方网站 确定。
  1.3 DSP最小系统
  DSP是本系统核心部分,它完成对2.048 Mb/s的同步串行数据总线的控制,及对高达2.048 Mb/s串行数据码流的采集、8路输入语音的压缩处理和1路语音的解压缩处理。本系统采用的DSP是AnalogDevice公司的定点DSP,即ADSP-2181,其主要功能与特点如下:
  (1)外接16.67 MHz晶振,指令周期为30 ns,33 MIPS运算速度,所有指令单周期执行。
  (2)提供一个16位的DMA(IDMA)口,用于高速存取片内存储器及装载数据和程序。
  (3)提供一个8位自举DMA(BDMA)口,用于从自举程序存储器中装载数据和程序。
  (4)程序RAM 24Bit×16 K,数据RAM 16Bit×16 K。
  (5)16位字长运算精度。
  (6)提供两个双缓冲区的串口,具有硬件A/u律编解码和自动缓冲(Auto-buffer)能力,其中的串口0具有多通道(Multichannel)的功能。
  (7)提供6个外部中断、13个可编程I/O引脚和JTAG仿真引脚。
  由于DSP的上述功能和特点,使得DSP与A/D及D/A威廉希尔官方网站 实现了无缝连接。其中串口0连接8路A/D的2.048 Mb/s的同步串行数据总线,串口1连接D/A CODEC威廉希尔官方网站 。由于DSP具有16 K的程序RAM和16 K的数据RAM,所以对于本系统无需外扩存储器,即由单片DSP就构成了本系统所需的最小DSP系统。
  1.4 DSP的DMA与ISA总线的接口
  ADSP2181片内集成了一个直接访问其内部存储器的16位DMA端口(IDMA PORT)。主机通过此接口可以直接访问ADSP2181片内的程序和数据存储器的任一单元。因而主机可以通过此端口对DSP加载程序、下载程序、读取片内执行的状态、实现与DSP的数据传输等操作。IDMA端口总线的16位数据和地址是复用的。由于DSP的程序存储器是24位的,而DMA的数据总线宽度是16位,故对程序存储器操作时,分为两次,先对高16位操作,然后接着对最低8位操作。通过IDMA端口的存、取操作分如下两步进行:
  ·IDMA地址锁定操作
  通过IDMA的地址锁存信号(IAL),将14比特的地址信息和1比特的存储器类型信息通过IDMA总线,在地址锁存信号(IAL)的降沿时被锁入到DSP片内的IDMA地址锁存器。14比特地址信息确定了ADSP片内的存储器地址,而存储器类型位用来区分操作是对程序存储器或数据存储器。
  ·数据存、取操作
  当地址信息被放入到IDMAA寄存器中后,通过加IDMA的IWR,IRD信号,实现对片内的指定地址的信息进行读、写操作。每次读、写操作后存储器的地址值将自动的递增,为下一次的读写操作做好准备。
  本系统中通过ISA总线的I/O操作及IDMA口对DSP的内部存储器进行访问的。通过硬件译码满足IDMA时序要求的控制信号IAL,IWR,IRD等及DSP的复位信号(RESET)。该接口占用了16个I/O地址空间。
  1.5 通过IDMA端口装载程序
  ADSP2181通过两种机制在上电、复位后自动装载DSP程序。两种机制由MMAP和BMODE两个引脚的电平控制。当MMAP=0,BMODE=1时,ADSP2181自动在系统复位时,通过IDMA端口由主机加载DSP程序。主机首先必须装载除程序的第一条指令外其它程序和数据到DSP的片内程序存储器,最后才写入对应程序RAM第一个单元的第一条指令。一当程序存储器的0地址被写入程序代码后,DSP立即从地址0开始执行程序。
  2 8路语音信号的数据采集
  8路语音数字信号通过一2.048 Mb/s的同步串行数据总线传输到DSP。其中每个通道的数据是64 Kbps,每个通道占用2.048 Mb/s的同步串行数据总线的32个时隙中的一个,因此,共占用8个时隙。DSP通过对时隙分配威廉希尔官方网站 的控制给8个通道各分配一个时隙。这样,8个通道的每个通道的数据都在由DSP指定的时隙中传输。
  DSP的串口0是一个可编程的最大数据传输速率能达到4.096 Mb/s的同步串行口。DSP串口0的操作在接收到一个WORD或发送完一个WORD的数据时,从DSP内部RAM读、写一个WORD的数据需要占用DSP的一个机器周期(33 ns),在接收和发送过程中不占用DSP的处理时间。由此可见,DSP的串口0具有很强的数据采集与控制能力。
  利用串口0的较强的数据采集与控制能力,很容易实现通过2.048 Mb/s的同步串行数据总线对8通道语音数字信号的采集与控制。首先,编程DSP的串口0的同步时钟信号及帧同步信号分别为2 048 kHz和8 kHz,这两个信号控制CODEC的A/D转换速率和位传送速率,同时同步时钟信号还可供CODEC的A/D转换的时钟。再者,编程DSP的串口0工作于多通道模式,打开32个时隙中对应的8通道的时隙接收,使对应的每通道字(WORD)长为8位,选择A-Law压/扩,并打开自动缓冲功能并设置自动缓冲指针。当如上对串口0初始化并打开串口0的接收中断后,串口0将接收到的8 WORD的按A-Law解压的数据存放在自动缓冲指针指向的长度为8的缓冲区中,自动缓冲指针自动回位,同时产生一个硬件接收中断。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'多路语音实时采集与压缩处理系统设计',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);