基于Nios II的数字音频录放系统的设计

发布时间:2010-8-16 11:48    发布者:lavida
关键词: NIOS , 录放系统 , 数字音频
前言  

SOPC( System On Programmable Chip)技术是SOC( System On Chip)技术和电子设计自动化EDA)技术结合的产物。它可以将处理器、存储器、I/O接口、硬件协处理器和普通的用户逻辑等系统设计需要的功能模块都集成到一个FPGA 芯片里, 构建一个可编程的片上系统[1]。它还具有灵活的设计方式,可裁减、可扩充、可升级,具备系统可编程等功能,是一种优秀的嵌入式系统设计技术[2]。本文研究了一种基于SOPC技术的嵌入式数字音频录放系统的设计方案。系统通过在FPGA芯片上配置NiosII软核处理器和相关的接口模块来实现嵌入式系统的主要硬件结构,并结合嵌入式系统所支持的软件设计来控制音频编/解码芯片WM8731和SDRAM,实现了音频信号的A/D、D/A转换、存储、回放等功能。由于采用了SOPC和DMA控制技术,该系统具有设计灵活、扩展性好和数据处理速度快等优点[3、4]。  

1 系统原理和结构  

系统结构如图1所示。本系统选用的FPGA芯片是Altera公司最新推出的CycloneII 系列的EP2C35。该芯片具有35000个逻辑单元、672个引脚、475个用户自定义I/O接口、35个嵌入式乘法器和4个锁相环,是一个集成度极高和功能强大的FPGA芯片。在FPGA中设计有NiosII软核处理器和挂在该NiosII系统的Avalon总线上的I2C配置接口模块、串/并转换模块(S/P)、并/串转换模块(P/S)、先入先出存储器模块(fifo_in、fifo_out)、Sdram存储器控制接口(Sdram control)、DMA控制器接口(Dma_in、Dma_out)和用于接收按键信息的通用并行接口(pio)模块等。在FPGA外有音频编/解码芯片(WM8731)、音频数据存储模块(SDRAM)和控制按键(keybord)等。  


  
图1 系统结构图  

系统的音频信号采集原理是:WM8731经过I2C配置后,将输入端加入的模拟音频信号进行A/D转换后,成为串行的数字信号。FPGA内的串/并转换模块再将该信号转换成16位宽的并行数字信号。此信号从s/p的输出,并交给先入先出存储器(fifo)进行缓存。当fifo的数据达到其容量的一半时向dma_in请求一次DMA传送。Dma_in接受请求后就执行一次fifo到Sdram之间的直接DMA数据保存。多次重复fifo到Sdram之间的DMA传送,直到采集停止键被按下后,就完成了一段音频数据的采集。  

回放原理是:在Dma_out的控制下,通过Sdram控制器将Sdram中保存的音频数据经fifo_out送到并/串转换模块的输入端,经过并/串转换后的串行数字信号再由WM8731进行数/模转换,就还原成为模拟的声音信号。多次重复这种DMA传送操作,直到回放停止键被按下后就完成了一段音频数据的回放。  

2 系统硬件设计  

系统的硬件主要由FPGA内的NIOSII中央处理器及接口模块和FPGA外的音频编/解码芯片WM8731、存储器和控制键等部分构成。  

在系统的硬件设计中,FPGA内部各模块的设计是本系统硬件设计的核心技术。FPGA内部各模块是利用Altera公司提供的QuartusII开发软件和其中集成的SOPC Builder系统开发工具来设计的。SOPC Builder支持NiosII CPU的配置,并支持设计者在该工具所提供的IP库中根据系统设计需要选择相应的接口模块,并加入到NiosII系统中。这样,在极短的时间内就可以完成一个SOPC系统的设计。将这些设计在QuartusII中编译并生成sof格式文件后,下载到FPGA芯片中就形成了SOPC的嵌入式系统硬件平台。  

下面主要对NIOSII软核处理器、I2C总线控制接口、串/并转换模块等几个关键模块的设计进行介绍。  

2.1 NiosII软核处理器  

本系统设计所选择的处理器是Altera公司新近推出的第二代嵌入式NiosII软核处理器系列中的一个。NiosII处理器系列是一个用户可配置的通用32位RISC嵌入式软核处理器集合。它包括三种软核CPU:一种是高性能软核,它的处理能力超过200MIPS,需要占用1800个逻辑单元;一种是精简软核, 用这种软核构造一个完整的CPU系统只需要占用700个逻辑单元;第三种是标准软核,这种软核约占用1400个逻辑单元,性能也介于上两种软核之间。所有软核都是100%代码兼容,设计者可根据需要对上述三种软核进行选择来调整嵌入式系统的性能及成本。由于本设计采用的CycloneII系列的2C35芯片具有35000个逻辑单元,逻辑资源十分丰富,加上系统对CPU的性能要求较高的原因,因此选用了高性能的NiosII软核作为本系统的CPU。  

2.2 I2C总线控制接口  

WM8731是Wolfson Microelectronics公司生产的一款低功耗的高品质双声道数字信号编解码芯片。该芯片的ADCDAC的采样频率为8KHZ"96KHZ可调,可转换的数据位长度为16"32位可调。WM8731的内部有11个寄存器。该芯片的初始化和内部功能设置是以I2C总线方式对其内部的这11个寄存器进行相应的配置来实现的。本设计中WM8731工作于主模式,采样频率设为48KHZ,转换的数据位长度为16位。  

由于SOPC Builder自带的IP库中并不包含I2C配置接口模块,所以该模块需要设计者根据要配制的芯片的寄存器特点和功能要求进行专门的设计。本系统的I2C接口是作者自行设计,并以IP核的形式通过SOPC Builder连接到系统的Avalon总线上的。WM8731的基地址是34h ,11个寄存器的配置数据如表1所示。其中1Eh为WM8731的软件复位控制寄存器,复位时配置的值为00h,平时为缺省值。  

表1 WM8731的寄存器及其参数设置  


  
2.3 串/并转换模块  

由于WM8731在A/D转换后和D/A转换前的数字信号都是以串行格式与外界进行数据交换的,所以,在WM8731与系统控制核心之间需要加入串/并和并/串转换模块。本文主要对其中的串/并转换模块的设计原理进行介绍。工作于主模式的WM8731与串/并转换模块的连接如2所示。图中,BCLK、和LRCK为WM8731返回给控制模块的位同步时钟和采样时钟,ADCDATA为WM8731输出的串行音频数据流。  


图2 主模式的WM8731与串/并转换模块的连接图  

本设计中,串并转换模块由两个16位的移位寄存器构成,分别对左声道和右声道的位数据流进行串/并转换,电路构成如图3所示。两个移位寄存器inst7和inst8由LRCK和LRCK的非信号使能,当LRCK为低电平时,移位寄存器inst8工作,对左声道的数据流进行串并转换,当LRCK为高电平时,移位寄存器inst7工作,对右声道的数据流进行串并转换。  


  
图3 移位寄存器电路图  

3 系统软件设计  

本系统的软件是在Altera公司提供的软件集成开发工具IDE中,以C语言形式,在硬件抽象层(HAL)函数支持下设计的。系统的软件流程图如图4所示。系统启动后,先进行初始化操作,初始化程序主要完成WM8731的寄存器配置、初始化DMA通道及清采集FIFO缓冲器。随后,系统进入主循环状态,并检测按键。当检测到SAVE按键时,系统先通过I2C配置WM8731为录制时需要的状态,然后清FIFO缓冲器,随后启动DMA接收通道,开始保存数据,直到一次DMA传输结束。当检测到播放按键被按下时,系统通过I2C配置WM8731为播放时所需要的状态,并进入播放程序。当系统检测到停止按键被按下时,设置播放标志位为STOP,并在一次DMA完成后,自动停止播放。  


  
图4 系统软件流程图  

4 结束语  

本设计在Altera公司最新推出的CycloneII系列的EP2C35芯片上进行了软、硬件调试,功能全部正常。由于系统设计中采用了DMA控制下的FIFO和SDRAM之间的直接高速数据传输技术,有效地解决了音频信号的高速A/D、D/A转换及处理过程中对CPU资源长时间占用和系统功能扩展时对PCU资源更多需求的矛盾,使得本设计在系统功能扩展上具有极大的潜力。再加上SOPC技术在软、硬件设计上的可裁减和很方便移植等优点,本设计可以作为一个子系统应用在更大型的系统设计中,例如嵌入式网络音、视频信号处理等,有很好的应用前景和科研价值。
本文地址:https://www.eechina.com/thread-21476-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表