基于AIC23和EPM240的语音采集系统的实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:zhengjjing
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:为了提高嵌入式系统对于语音信号处理的速度及稳定性,提出了一种由CPLD芯片来完成串行协议和并行协议之间的协议转换系统,给出了硬件框图,并详细介绍了verilog代码,分模块介绍了CPLD的功能结构。并对于设计过程中的问题给出了合理的解决方案。
  关键词:CPLD;Verilo;串行协议
  中图分类号:TP336文献标识码:A 文章编号:1009-3044(2007)17-31318-02
  
  1 引言
  
  随着计算机技术、电子技术和通信技术的迅猛发展,音频处理技术也在众多领域得到广泛应用。如通信领域中的手机、IP电话,消费类电子产品中的MP3和CD播放器以及控制领域中的语音识别、声控系统等。在数字化的音频处理过程中,A/D,D/A芯片与MCU之间的数据传输是一个非常重要的过程。其中SPI,I2C以及I2S等串行协议与并行数据之间的转换是数据传输的核心内容。
  由于并非所有SoC芯片都集成有这些协议的硬件实现,因此一般的解决方法就只有靠软件程序来抓取GPIO口的信号并进行协议转换的工作。但是这种传统的解决方案还是存在一些问题,音频信号的采集一般要求8KHz以上的采样率,因此软件系统需要频繁调用协议转换的模块,在CPU频率较低的情况下会极大地影响软件系统的运行。在需要与多片CODEC芯片通信的情况下,软件转换就很难实现了。
  本系统采用两片TLV320AIC23作为CODEC芯片。并使用Altera MaxII EPM240建立了一个协议转换系统,来进行串并转换。由于使用硬件方法实现了SPI,I2S与SDRAM并行总线之间的协议转换,使得串并转换工作从MCU上独立开来,减小了软件系统的压力。并且由于是硬件方法,响应速度及稳定性也有了保证。
  
  2 简介
  
  2.1 I2S总线
  I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。I2S有3个主要信号:
  (1)串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率≥2×采样频率×采样位数
  (2)帧时钟LRCK,用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。
  (3)串行数据SDATA,就是用二进制补码表示的音频数据。
  2.2 SPI总线
  SPI ( Serial Peripheral Interface) 总线系统是一种同步串行外设接口,允许MCU 与各种外围设备以串行方式进行通信、数据交换。外围设备包括FLASHRAM、A/ D 转换器、网络控制器、MCU 等。SPI 系统可直接与各个厂家生产的多种标准外围器件直接接口,一般使用4 条线:串行时钟线(SCK) 、主机输入/ 从机输出数据线MISO、主机输出/ 从机输入数据线MOSI 和低电平有效的从机选择线SS (有的SPI 接口芯片带有中断信号线INT 或INT 、有的SPI 接口芯片没有主机输出/ 从机输入数据线MOSI)
  
  3 系统实现
  
  3.1 硬件描述
  如图1所示EPM240通过SPI总线写AIC23的控制寄存器,而数据通过I2S总线传输。由于不需要单独控制每一片AIC23,因此SPI总线可以只用一路,这样做可以减少EPM240中寄存器的使用量。而每一片AIC23所采样的音频数据都是独立的,所以每一片AIC23的I2S总线都要单独转换。
  图1 硬件电路结构框图
  TLV320AIC23B
  TLV320AIC23(简称AIC23)是TI公司的一款高性能立体声音频编解码器Codec芯片。其内部集成的模数转换器(ADCs)和数模转换器(DACs)采用了带有过采样数字插补滤波的多位Sigma-Delta技术。数据传输字长为16、20、24、32位,支持采样频率范围8kHz至96kHz。
  本系统采用SPI作为控制协议,I2S作为数据传输协议。采样频率8KHz,数据长度16位。
  MAX II EPM240
  MAX II器件系列是一种非易失性、即用性可编程逻辑系列,它采用了一种突破性的新型CPLD架构。这种新型架构的成本是原先MAX 器件的一半,功耗是其十分之一,密度是其四倍,性能却是其两倍。
  MAX II器件为把一种总线协议转换为另一种总线协议提供了成本最低的解决方案。这些应用包括电平搬移(即从3.3V输入至1.8V输出),总线转换应用(如将专用系统转换为业界标准系统),多占总线桥接,串并/并串总线转换和加密。
  在本系统中AIC23芯片起到语音数据的模数和数模转换作用。AIC23将四路语音信号转换成数字信号之后通过I2S协议将数据送入EPM240。
  通过EPM240的串并协议转换分别将两块芯片的串行数据转换成MCU能够读取的SDRAM并行数据。
  数据在MCU中处理之后,再通过EPM240转换成I2S协议的数据,送入到AIC23。AIC23将数据进行数模转换之后成为语音信号送到语音通路上。以上就是本系统进行语音采集及处理的流程。
  3.2 Verilog代码介绍
  如图2所示,CPLD内部一共分成六个模块。而Verilog代码共分三个部分。
  图2 FPGA系统模块框图
  3.2.1 Top部分
  此模块主要实现SDRAM总线协议和中断控制。
  在Top块中一共定义了8个寄存器:
  1)SPI_EN:SPI使能寄存器。
  2)I2S_EN:I2S使能寄存器。
  3)INT_READ:中断寄存器。
  4)SPI_DATA:SPI数据寄存器。
  5)I2S_WRITE_REG1:第一片AIC23的I2S数据写寄存器。
  6)I2S_WRITE_REG2:第二片AIC23的I2S数据写寄存器。
  7)I2S_READ_REG1:第一片AIC23的I2S数据读寄存器。
  8)I2S_READ_REG2:第二片AIC23的I2S数据读寄存器。
  由于AIC23的控制寄存器只写不读,因此SPI总线只需要实现单方向的传输,我们使用一个16位的寄存器就能够达到目的。
  I2S的读寄存器对应于AIC23到MCU的数据,I2S的写寄存器对应于MCU到AIC23的数据。
  在我们的设计中,读中断寄存器的作用主要有两个:
  1)清中断,在送出中断信号后读这个寄存器就能够将中断信号复位,避免再次触发MCU的中断。
  2)返回I2S的LRCK:读这个寄存器的返回值就是当前I2S的LRC信号的值。这样就能够标识当前I2S读寄存器中是具体左右哪个声道的数据。
  3.2.2 SPI模块
  此模块完成SPI协议的串并转换。其中包括时钟模块和SPI协议解析模块。
  由于AIC23写控制寄存器对于系统实时性的要求并不高,并且只需写不需读,因此SPI的控制相当简单:SPI_EN置1时状态机动作,将SPI_DATA中的16位数据转化为串行数据。转化结束后将SPI_EN置0。
  在系统刚上电的时候AIC23是不工作的,需要经过SPI模块的配置之后才会产生时钟,因此SPI的时钟信号要由时钟模块来产生。时钟模块将12.288MHz的系统时钟8分频之后做为SPI的时钟来配置AIC23的寄存器。因此,SPI的时钟比较慢,
  为了保证传输的准确性,在两次写SPI_DATA之间需要有一个较长时间的延时,这就需要在MCU软件实现的时候注意。
  以下即为MCU写AIC23控制寄存器的C代码。
  void set(short reg, short value)
  {
   unsigned short i;
   disable_spi();
   NOP(1000);
  //reg寄存器地址,value将要写入的值
  //将地址和值合成一个16位的数据
   i = (( reg << 8 ) & 0xfe00) | value;
   WRITE_I2S_REG1(i);
   NOP(1000);
   enable_spi();
   NOP(100000);
  }
  3.2.3 I2S模块
  此模块实现音频数据的串并转换。
  相对而言,I2S的状态机要比SPI模块复杂很多。除了移位寄存器之外,还需要产生中断,并且要实现双向的数据转换。
  因此I2S模块分为两个部分:
  1)移位寄存器:将I2S写寄存器当中的内容转换成串行数据,并输出到I2S总线上。将I2S总线上的串行数据转换成并行数据,并保存到I2S的读寄存器中。
  2)中断产生模块:每次转换完16位数据后,产生中断,将中断线置低,并且往INT_READ寄存器中写入LRCK线的数据。
  
  4 结语
  
  该设计已经应用于实际系统,经过长时间运行,系统运行稳定、性能良好。该方案不仅降低了硬件成本,也使得设计更方便灵活。是一种语音处理系统方面的可行方案。
  
  参考文献:
  [1]张雄伟,等. 现在语音处理技术及应用[M]. 北京:机械工业出版社,2003.
  [2]刘建清 主编,刘建清,刘汉文,高广海,等. 从零开始:CPLD和Vferilog HDL编程技术[M]. 北京:国防工业出版社,2006.
  [3]Bob Zeidman. 基于FPGA & CPLD的数字IC设计方法[M]. 赵宏图译. 北京:北京航空航天大学出版社,2004.
  [4]杜春雷. ARM体系结构与编程[M]. 北京:清华大学出版社,2003.
  1 引言
  随着计算机技术、电子技术和通信技术的迅猛发展,音频处理技术也在众多领域得到广泛应用。如通信领域中的手机、IP电话,消费类电子产品中的MP3和CD播放器以及控制领域中的语音识别、声控系统等。在数字化的音频处理过程中,A/D,D/A芯片与MCU之间的数据传输是一个非常重要的过程。其中SPI,I2C以及I2S等串行协议与并行数据之间的转换是数据传输的核心内容。
  由于并非所有SoC芯片都集成有这些协议的硬件实现,因此一般的解决方法就只有靠软件程序来抓取GPIO口的信号并进行协议转换的工作。但是这种传统的解决方案还是存在一些问题,音频信号的采集一般要求8KHz以上的采样率,因此软件系统需要频繁调用协议转换的模块,在CPU频率较低的情况下会极大地影响软件系统的运行。在需要与多片CODEC芯片通信的情况下,软件转换就很难实现了。
  本系统采用两片TLV320AIC23作为CODEC芯片。并使用Altera MaxII EPM240建立了一个协议转换系统,来进行串并转换。由于使用硬件方法实现了SPI,I2S与SDRAM并行总线之间的协议转换,使得串并转换工作从MCU上独立开来,减小了软件系统的压力。并且由于是硬件方法,响应速度及稳定性也有了保证。
  2 简介
  2.1 I2S总线
  I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。I2S有3个主要信号:
  (1)串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲。SCLK的频率≥2×采样频率×采样位数
  (2)帧时钟LRCK,用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。
  (3)串行数据SDATA,就是用二进制补码表示的音频数据。
  2.2 SPI总线
  SPI ( Serial Peripheral Interface) 总线系统是一种同步串行外设接口,允许MCU 与各种外围设备以串行方式进行通信、数据交换。外围设备包括FLASHRAM、A/ D 转换器、网络控制器、MCU 等。SPI 系统可直接与各个厂家生产的多种标准外围器件直接接口,一般使用4 条线:串行时钟线(SCK) 、主机输入/ 从机输出数据线MISO、主机输出/ 从机输入数据线MOSI 和低电平有效的从机选择线SS (有的SPI 接口芯片带有中断信号线INT 或INT 、有的SPI 接口芯片没有主机输出/ 从机输入数据线MOSI)
  3 系统实现
  3.1 硬件描述
  如图1所示EPM240通过SPI总线写AIC23的控制寄存器,而数据通过I2S总线传输。由于不需要单独控制每一片AIC23,因此SPI总线可以只用一路,这样做可以减少EPM240中寄存器的使用量。而每一片AIC23所采样的音频数据都是独立的,所以每一片AIC23的I2S总线都要单独转换。
  图1 硬件电路结构框图
  TLV320AIC23B
  TLV320AIC23(简称AIC23)是TI公司的一款高性能立体声音频编解码器Codec芯片。其内部集成的模数转换器(ADCs)和数模转换器(DACs)采用了带有过采样数字插补滤波的多位Sigma-Delta技术。数据传输字长为16、20、24、32位,支持采样频率范围8kHz至96kHz。
  本系统采用SPI作为控制协议,I2S作为数据传输协议。采样频率8KHz,数据长度16位。
  MAX II EPM240
  MAX II器件系列是一种非易失性、即用性可编程逻辑系列,它采用了一种突破性的新型CPLD架构。这种新型架构的成本是原先MAX 器件的一半,功耗是其十分之一,密度是其四倍,性能却是其两倍。
  MAX II器件为把一种总线协议转换为另一种总线协议提供了成本最低的解决方案。这些应用包括电平搬移(即从3.3V输入至1.8V输出),总线转换应用(如将专用系统转换为业界标准系统),多占总线桥接,串并/并串总线转换和加密。
  在本系统中AIC23芯片起到语音数据的模数和数模转换作用。AIC23将四路语音信号转换成数字信号之后通过I2S协议将数据送入EPM240。
  通过EPM240的串并协议转换分别将两块芯片的串行数据转换成MCU能够读取的SDRAM并行数据。
  数据在MCU中处理之后,再通过EPM240转换成I2S协议的数据,送入到AIC23。AIC23将数据进行数模转换之后成为语音信号送到语音通路上。以上就是本系统进行语音采集及处理的流程。
  3.2 Verilog代码介绍
  如图2所示,CPLD内部一共分成六个模块。而Verilog代码共分三个部分。
  图2 FPGA系统模块框图
  3.2.1 Top部分
  此模块主要实现SDRAM总线协议和中断控制。
  在Top块中一共定义了8个寄存器:
  1)SPI_EN:SPI使能寄存器。
  2)I2S_EN:I2S使能寄存器。
  3)INT_READ:中断寄存器。
  4)SPI_DATA:SPI数据寄存器。
  5)I2S_WRITE_REG1:第一片AIC23的I2S数据写寄存器。
  6)I2S_WRITE_REG2:第二片AIC23的I2S数据写寄存器。
  7)I2S_READ_REG1:第一片AIC23的I2S数据读寄存器。
  8)I2S_READ_REG2:第二片AIC23的I2S数据读寄存器。
  由于AIC23的控制寄存器只写不读,因此SPI总线只需要实现单方向的传输,我们使用一个16位的寄存器就能够达到目的。
  I2S的读寄存器对应于AIC23到MCU的数据,I2S的写寄存器对应于MCU到AIC23的数据。
  在我们的设计中,读中断寄存器的作用主要有两个:
  1)清中断,在送出中断信号后读这个寄存器就能够将中断信号复位,避免再次触发MCU的中断。
  2)返回I2S的LRCK:读这个寄存器的返回值就是当前I2S的LRC信号的值。这样就能够标识当前I2S读寄存器中是具体左右哪个声道的数据。
  3.2.2 SPI模块
  此模块完成SPI协议的串并转换。其中包括时钟模块和SPI协议解析模块。
  由于AIC23写控制寄存器对于系统实时性的要求并不高,并且只需写不需读,因此SPI的控制相当简单:SPI_EN置1时状态机动作,将SPI_DATA中的16位数据转化为串行数据。转化结束后将SPI_EN置0。
  在系统刚上电的时候AIC23是不工作的,需要经过SPI模块的配置之后才会产生时钟,因此SPI的时钟信号要由时钟模块来产生。时钟模块将12.288MHz的系统时钟8分频之后做为SPI的时钟来配置AIC23的寄存器。因此,SPI的时钟比较慢,
  为了保证传输的准确性,在两次写SPI_DATA之间需要有一个较长时间的延时,这就需要在MCU软件实现的时候注意。
  以下即为MCU写AIC23控制寄存器的C代码。
  void set(short reg, short value)
  {
   unsigned short i;
   disable_spi();
   NOP(1000);
  //reg寄存器地址,value将要写入的值
  //将地址和值合成一个16位的数据
   i = (( reg << 8 ) & 0xfe00) | value;
   WRITE_I2S_REG1(i);
   NOP(1000);
   enable_spi();
   NOP(100000);
  }
  3.2.3 I2S模块
  此模块实现音频数据的串并转换。
  相对而言,I2S的状态机要比SPI模块复杂很多。除了移位寄存器之外,还需要产生中断,并且要实现双向的数据转换。
  因此I2S模块分为两个部分:
  1)移位寄存器:将I2S写寄存器当中的内容转换成串行数据,并输出到I2S总线上。将I2S总线上的串行数据转换成并行数据,并保存到I2S的读寄存器中。
  2)中断产生模块:每次转换完16位数据后,产生中断,将中断线置低,并且往INT_READ寄存器中写入LRCK线的数据。
  4 结语
  该设计已经应用于实际系统,经过长时间运行,系统运行稳定、性能良好。该方案不仅降低了硬件成本,也使得设计更方便灵活。是一种语音处理系统方面的可行方案。
  参考文献:
  [1]张雄伟,等. 现在语音处理技术及应用[M]. 北京:机械工业出版社,2003.
  [2]刘建清 主编,刘建清,刘汉文,高广海,等. 从零开始:CPLD和Vferilog HDL编程技术[M]. 北京:国防工业出版社,2006.
  [3]Bob Zeidman. 基于FPGA & CPLD的数字IC设计方法[M]. 赵宏图译. 北京:北京航空航天大学出版社,2004.
  [4]杜春雷. ARM体系结构与编程[M]. 北京:清华大学出版社,2003.
其他文献
摘要:介绍了嵌入式Internet 的以太网接口设计方法,即用单片机和以太控制器实现嵌入式系统的网络接入,并给出了硬件接口设计和具体程序实现方法。  关键词:嵌入式系统;以太网;单片机;接口  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)17-31239-01  The Study and Design of Embedded Ethernet Interface 
期刊
摘要:在计算机及其他通信网络中,对消息的可靠性及完整性的验证是通信安全的重要问题,特别是在不安全的信道通信时,对消息的验证更是不可缺少的,解决此类问题的方法有很多,本文提出了一种消息认证的方案。  关键词:RSA; 公钥; 数字签名  中图分类号:TP309文献标识码:A文章编号:1009-3044(2007)17-31275-02  A Message Authentication Resear
期刊
摘要:该系统是一个基于.NET 1.1,使用C#开发的模拟Telnet的网络客户端应用程序。本系统涉及到.net下Socket的使用、TCP/IP协议、多线程开发、并发控制、多线程下WinForm的使用、以及示例中使用的POP3协议。本系统的在Visual Studio 2003 环境下使用C#编写和生成,并在Windows XP Professional sp2下测试通过。  关键词:网络客户端
期刊
摘要:对于通信公司(比如中国电信)来说,通信网络的安全稳定无疑是最重要的一件事情,没有了安全与稳定,其他一切都是空谈。本着从维护通信系统的安全稳定出发,针对湖南电信ECI网管的数据安全,从操作系统的恢复和网管中通信设备的电路数据库的备份2个方面进行阐述,重点讨论了如何实现网管数据的全自动备份,并将代码编写成脚本。  关键词:备份;shell编程;脚本;通信;ECI网管  中图分类号:TP393文献
期刊
摘要:NAND Flash具有高存储密度和高存储速率的特点,在嵌入式系统领域得到了广泛应用,如何使其文件系统的性能最优化成为本文讨论的主题。本文首先提出文件系统的设计方法,主要阐述面向嵌入式应用的FAT文件系统;接着,针对NAND Flash存在固有的坏块这一弱点,为了提高整个系统的可靠性,提出一种利用嵌入式文件系统进行坏块处理的策略,核心思想为利用Flash存储器上未使用空间来代替坏块,同时,在
期刊
摘要:在教育领域,博客作为一种新兴的学习资源和学习工具,还没有得到普遍的认可和使用。本文就博客在教学领域的应用的形式以及注意的问题作了全面的分析,概括了高校开展基于网络的信息技术与课程整合的必要性。  关键词:博客;课程;整合  中图分类号:TP393文献标识码:A 文章编号:1009-3044(2007)17-31330-02  The Study of integrating Blog and
期刊
摘要:相对于代码的保护而言,保护移动Agent所携带的数据就比较复杂。因为数据不仅包括一些不变的常量(如Agent的路由计划),还包括移动Agent在执行任务过程中添加的一些与应用有关的数据,所以本文采用三重加密协议,从理论分析对其进行保护的有效性,并用实验加以验证,并得到理想结果。  关键词:移动Agent;三重加密协议;安全  中图分类号:TP311文献标识码:A 文章编号:1009-3044
期刊
摘要:Excel是广泛应用的电子数据表格程序,如在Excel中使用VBA(Visual Basic for Application)编程将有很多机会开发出有价值的应用程序,本文介绍一种基于Excel的VBA编程方法,来扩展Excel的功能,以实现学生评优和奖学金评选的数据统计的计算功能。   关键词:Excel;奖学金评选;宏  中图分类号:TP311文献标识码:A 文章编号:1009-3044(
期刊
摘要:当移动节点发生切换时,其切换时延和丢包率问题将严重影响实时业务的应用。针对这一问题,该文进行了理论分析并提出了一种基于地址池的层次型移动IPv6 切换算法(APHMIPv6)。该算法与层次型模型相结合,采用基于地址池的有状态地址配置策略以及域间切换时利用隧道机制来提高切换性能。仿真结果表明,该算法能有效地减少移动节点切换时延和丢包率,尤其在域间切换时,性能更加显著。  关键词:移动IPv6;
期刊
摘要:P2P技术是随着互联网发展而迅速崛起的技术。该文描述了P2P技术出现的原因,分析比较了P2P技术与C/S技术,介绍了P2P技术的特点、P2P技术研究的现状,说明了P2P技术的典型应用,客观的交待了P2P技术存在的问题,最后,对P2P未来发展前景进行了展望。  关键词:P2P;网络模型;分布式;流量  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)17-31255
期刊