嵌入式数字调音台可调增益混音的设计 调音台混音怎么调

  摘要:基于嵌入式的数字音频设备以其高性价比、功耗低、集成度高、可扩充能力强、日新月异的发展速度等优点受到世界各国的广泛关注。论文提出一种基于ARM嵌入式处理器+FPGA结构的嵌入式数字调音台的解决方案。并在ARM9(S2C2440)与FPGA(XC3S500E)为核心芯片的硬件平台上实现了八路增益可调混音。
  关键词:S2C2440;XC3S500E;调音台;混音
  中图分类号:J932 文献标识码:B 文章编号:1009-9166(2009)017(c)-0160-02
  
  一、混音简介。混音在调音台当中具有非常重要的作用,是当今数字调音台必不可少的功能。混音(Mixing)就是运用调音台来修饰、修改、添增、删减各种音效等等,其最主要的目的是通过混音的处理使得让播放出来的声音更有音质。通过混音的处理使得播放出来的声音更有音质。混音器不是将声音放大,反而对音频信号有衰耗。它的作用主要是调整频响曲线,对不同的音频频率进行不同的衰耗,达到调整音频信号音色效果。
  二、系统整体设计。论文设计了采用三星公司的S3C2440与Xilinx公司的XC3S500E的硬件平台,在此基础上实现混音处理。由于S3C2440只有一路IIS总线,因此不能实现多路音频信号的混合处理,论文采用XC3S500E外接音频输入、输出模块,用来实现混音过程。而S3C2440由于其有众多的外围接口,被用来作为控制平台;S3C2440内置了八路A/D转换器,被用来转换八路控制音量的推子,得到的A/D转换数据通过SPI接口传输到XC3S500E中。整个设计流程如图1所示。
  
  图1中,在S3C2440实现了八路推子的A/D转换驱动程序,得到的转换数据经过识别、标记等处理后,通过SPI接口将处理后的数据传送到FPGA中。
  三、S3C2440驱动程序设计。这里的驱动程序包括两个部分,即A/D转换与SPI接口驱动。设计流程图如图2所示。其中A/D转换驱动的代码如下:result=devfs_register_chrdev(ADC_MAJOR,"adc",&adc_fops);//注册设备号
  ADCCON=(ADCCON_ECFLG|PRESCALE_EN|PRSCVL(100)|ADC_INPUT(0)|ADC_NORMAL_MODE|ADCCON_READ_START|ADC_START);//配置ADC转换控制寄存器,中断模式。
  
  若有中断产生,进入中断处理模块,关中断,依次读取八个A/D转换器的数据。这里要注意的是在读取ADC数据寄存器前,需要配置ADC控制寄存器。读代码如下:
  while(en_int()==0){//产生中断,依次读ADC转换器
  a0=ReadAdc(0);
  a1=ReadAdc(1);
  a2=ReadAdc(2);
  a3=ReadAdc(3);
  a4=ReadAdc(4);
  a5=ReadAdc(5);
  a6=ReadAdc(6);
  a7=ReadAdc(7);
  }
  其中ReadAdc()为读A/D转换器函数,函数ReadAdc()用来配置A/D转换器的控制寄存器,并在读使能有效的情况下从数据寄存器ADCDAT0中读取10-bit的转换数据。读数据寄存器的代码为:while((ADCCON & ADC_START))&&!(ADCCON & ADCCON_ECFLG));
  //检查是否ADC_START为低,是否转换完成ADCCON_ECFLG标志为高。
  adcData[i]=ADCDAT0 & 0x3ff;//i为对应读取的接口,低10位为转换数据。
  得到的转换数据,需要通过SPI接口传送到FPGA中,写SPI接口如下:set_gpio_ctrl(GPIO_MODE_ALT0|GPIO_PULLUP_EN|GPIO_E11);
  set_gpio_ctrl(GPIO_MODE_ALT0|GPIO_PULLUP_EN|GPIO_E12);
  set_gpio_ctrl(GPIO_MODE_ALT0|GPIO_PULLUP_EN|GPIO_E13);
  //配置GPIO_E11、GPIO_E12和GPIO_E13为SPI接口。
  SPCON0=(SPCON_SMOD_INT|SPCON_ENSCK|SPCON_MSTR|SPCON_CPOL_HIGH|SPCON_CPHA_FMTB|0);
  //配置SPI控制寄存器。
  写数据到SPI数据发送寄存器中:
  while(!((SPSTA0) & SPSTA_READY));
  //判断数据寄存器是否准备好写
  SPTDAT0=dataWrSpi;//写dataWrSpi到SPI寄存器
  四、XC3S500E混音设计。在XC3S500E里,混音程序主要包括八个模块组成,即:顶层模块top_mixing,SPI串并转换模块SPI_S_P,IIS串并转换模块IIS_S_P,增益控制模块Gain_Ctrl,固定乘法器模块Mult_24x10,混音模块Mixing,压线模块Overflow和IIS并串转换模块IIS_P_S。混音的设计流程如图3所示。
  顶层模块top_mixing用来连接底层模块并提供I/O接口。SPI串并转换模块SPI_S_P,它用来读取从S3C2440通过SPI接口发送来的数据,得到16bit的数据后,要对其进行判断数据类型。IIS串并转换模块IIS_S_P,它用来实现八路音频的串并转换。增益控制模块Gain_Ctrl和固定乘法器模块Mult_24x10,用来调节八路音频信号的增益。混音模块Mixing和压线模块Overflow,用来实现八路音频的混音处理,同时判断混音是否溢出,若溢出,则进行压线处理。得到的混音信号后,通过IIS并串转换模块IIS_P_S输出。
  五、混音性能。通过频谱分析仪测量得到,增益可调的混音处理得到的音频信号的THD+N的值在-90dB--100dB之间,正常情况下是-94dB。
  结论:将当今快速发展的嵌入式系统技术应用到数字调音台的设计,使调音台模块化、网络化和智能化,具有广泛的实用价值和巨大的实际意义。论文通过对数字调音台的分析,提出了利用嵌入式技术实现的方案,并对其在实现过程中的混音处理技术进行了研究和实现,得到了较理想的效果,可为最后全面实现实用化的专业数字调音台打下了基础。
  
  作者单位:南昌市水上公安消防大队
  
  参考文献:
  [1]梁华.调音台分析.音响技术,2004年第39期:37-39
  [2]郭辛元.浅谈数字调音台.科技情报开发与经济.2004.第14卷第3期:154-155
  [3]Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman著,魏永明,耿岳,钟书毅译.Linux设备驱动程序(第三版).北京:中国电力出版社.2005.11:46-285
  [4]李亚峰,欧文盛等.ARM嵌入式Linux系统开发从入门到精通.北京:清华大学出版社.2007.8:36-106

推荐访问:可调 增益 嵌入式 混音