您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

基于TMS320VC5416的自适应变速率声码器

时间:2007-1-20栏目:电子通信论文

。这样就成功地实现了码流的收发。
  
  MCBSP1被初始化为通用I/O后一共能提供6根I/O引脚线,除去码流收发占用的3根之外还有3根,正好可以用来连接PTT、RTS和CD信号线。这样,就可以在占用最少的DSP资源的情况下实现码流收发和控制功能。
  
  另一个主要问题就是速率的自适应问题,也就是说,声码器必须能够根据CLK的频率自动选择合适的编解码算法。在上述连接方式下,这个问题也就很容易解决了,只需设立一个计数器,对CLK的每个周期中发生的时钟中断个数进行计数即可。这样,根据计数值就可以很方便地计算出CLK的频率。例如,时钟中断的频率是50kHz,那么当CLK的频率是2.4kHz时,计数器的值就应该在50/2.4=20.8左右,当CLK的频率是1.2kHz时,则在41.7左右;当CLK的频率是0.6kHz时,则在83.3左右。从图2的流程中可以看出,在程序初始化前就需要检测CLK频率,并根据CLK的频率选择合适的编解码算法,进行相应的初始化。在程序的执行过程中也要对CLK的频率进行实时监测,若发现频率改变就立即重新初始化声码器。这样就能够保证声码器实时地跟踪CLK的变化,实现自适应速率切换。
  
  对于软件狗所需的周期变化信号,则通过DSP上的输出引脚XF给出,并在程序中及时翻转XF的电平得到。
  
  3上电加载部分(Bootload)的实现
  
  TMS320VC5416DSP片内ROM中有固化的自加载程序(Bootloader),但它对被加载程序的大小有限制。在使用8bitFLASH的情况下,只能加载小于16KWord的内容。而三个速率的SELP算法程序区和数据区的总数据量远远超过16KWord,显然只使用DSP片内的Bootloader是不能满足需要的。所以必须自己写加载程序。首先由TMS320VC5416片内的Bootloader把自己写的加载程序加载到片内RAM,然后执行这段加载程序,加载其它部分。这里需要解决的一个主要问题就是FLASH数据和DSP地址空间的映射关系。由于SELP算法的程序数据总量很大,所以必须用到片内扩展的程序区,也就是说MP/MC标志位需设为0。从此时的MemoryMap中可以看出,DSP可以访问的每块连续片外地址空间只有32K,所以FLASH数据只能按照每页32K的方式分页映射到DSP地址空间。使用FPGA可以很方便地控制哪页FLASH数据映射到DSP中,这部分的原理框图如图4所示。
  
  FLASH的低15根地址线A0~A14直接接到DSP上,而高3根地址线A15~A17则由FPGA控制。在DSP向I/O空间的特定地址写数时,FPGA内部的逻辑电路就会将D0~D2(也就是所写数据的低3位)锁存到A15~A17上。这样就实现了软件控制FLASH数据映射关系的功能。再把所有的数据进行合理的划分和排列,烧入FLASH中,就可实现全部程序的自加载。
  
  由于采用独特的硬件接口方式,很方便地实现了自适应变速率的功能,大大提高了声码器的灵活性和适用范围。TMS320VC5416拥有很大的片内RAM,本文提出的使用FPGA辅助完成大数据量程序上电自加载的方法对于TMS320VC5416的其它应用场合也同样适用。
  
  使用以上方法实现的自适应变速率SELP声码器在TMS320VC5416上占用的硬件资源情况如表2所示。

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页