王杰玉 杜 炜 潘红兵
摘 要:24位立体声音频编解码芯片WM8731因其高性能、低功耗等优点在很多音频产品中得到了广泛应用。介绍了其基于FPGA的接口电路的设计,包括芯片配置模块与音频数据接口模块等,使得控制器只通过寄存器就可以方便地对其进行操作,而不需要考虑其接口电路复杂的时钟时序问题,从而有效地降低了利用此芯片的难度。整个设计以VHDL和Verilog HDL语言在Max+Plus Ⅱ里实现,并进行了验证,结果表明能满足使用者的要求且操作简单。对其他编解码芯片的接口设计也有一定的参考作用。
关键词:WM8731;FPGA;接口设计;音频编解码芯片
中图分类号:TN919文献标识码:B
文章编号:1004-373X(2009)05-179-03
Interfaces Design of Audio Codec Based on FPGA
WANG Jieyu,DU Wei,PAN Hongbing
(Electronic Engineering College,Naval University of Engineering,Wuhan,430033,China)
Abstract:24 bit stereo audio Codec WM8731 has been widely applied in audio products because of its high quality and low power consumption.This paper introduces its interface design based on FPGA,including program registers and audio digital interface.Thus it can be controlled though registers only,ignoring its complicated clock timing requirements.The design is realized and verified in Max+Plus Ⅱ with VHDL and Verilog HDL,and results prove its practicality and convenience for designers.So designers can take use of it much easily,and gain some revelation as well when designing other interfaces.
Keywords:WM8731 FPGA;interface design;audio codec
1 概 述
WM8731是一款功能强大的低功耗立体声24位音频编解码芯片,其高性能耳机驱动器、低功耗设计、可控采样频率、可选择的滤波器使得WM8731芯片广泛使用于便携式MP3,CD,PDA的场合。其结构框图如图1所示。
图1 WM8731结构框图
WM8731包含2个线路输入和1路麦克风输入并可以进行音量调节;内置片上ADC(模拟数字转换器)及可选择的高通数字滤波器;采用高品质过采样率结构的DAC(数字模拟转换器);线路输出和耳机输出;内置晶体振荡器以及可配置的数字音频接口和2或3线可选的微处理器控制接口等。 控制器可通过控制接口(Control Interface)对WM8731进行配置,然后通过数字音频接口(Digtal Audio Interface)读写数据音频信号。本文设计了一种基于FPGA的驱动模块,将WM8731的控制接口与数字音频接口转换为控制器通用的总线接口,使控制器可以像读写外部寄存器一样对WM8731芯片进行控制使用[1]。
2 WM8731芯片接口时序介绍
2.1 控制接口时序
WM8731的控制接口有4根引脚,分别为:MODE(控制接口选择线)、CSB(片选或地址选择线)、SDIN(数据输入线)和SCLK(时钟输入线)。它具有2线和3线两种模式。2线为MPU接口,3线为兼容SPI接口。对控制接口的配置选择可通过设置MODE脚的状态完成。选择MODE为0时为2线模式,1时为3线模式。本文采用2线模式对WM8731进行控制。其时序图如图2所示。
图2 WM8731的2线控制模式
2.2 数字音频接口时序
WM8731的数字音频接口有5根引脚,分别为:BCLK(数字音频位时钟)、DACDAT(DAC数字音频数据输入)、DACLRC(DAC采样左/右声道信号)、ADCDAT(ADC数字音频信号输出)、ADCLRC(ADC采样左/右声道信号)。
数字音频接口可以工作在主模式和从模式下。地址为0000111的寄存器的第6位设置数据的主/从模式:“1”为主模式,“0”为从模式。ADCDAT/DACDAT和ADCLRC/DACLRC与位时钟BCLK同步,在每个BCLK的下降沿进行一次传输。BCLK和ADCLRC/DACLRC在主模式时为输出信号,从模式下为输入信号。DACDAT始终为输入信号,ADCDAT始终为输出信号。
数字输出支持4种音频数据模式:右对齐、左对齐、I2S和DSP模式。通过对寄存器的不同配置,可以设置传输的数据格式。寄存器配置值如下:
寄存器地址0000111的1~0位设置音频格式:“11”时为DSP格式,“10”为I2S格式,“01”为左对齐格式,“00”为右对齐格式。
3~2位设置字长:“11”时为32位,“10”为24位,“01”为20位,“00”为16位。
这四种音频格式都是高位(MSB)在前,16~32位。但32位数据不支持右对齐模式。
本文采用主模式的左对齐数据格式,左对齐数据格式传输如图3:左对齐格式时,MSB在BCLK的第一个上升沿有效,紧接着是一个ADCLRC或DACLRC传输[1]。
图3 左对齐音频格式
3 WM8731芯片驱动的FPGA设计
3.1 驱动器的总体设计方案
本文设计驱动器在使用时的框图如图4所示。双口RAM和驱动器一同连接在控制器的数据总线和地址总线上,控制器只需提供少量的控制线即可完成对音频编解码芯片WM8731的控制及数据交换功能。
图4 驱动器使用框图
驱动器内部结构框图如图5所示。控制部分提供驱动器与控制器之间的接口(包含有数据总线信号、地址总线信号和控制信号),同时产生控制字转换单元和数字音频接口单元的控制信号;内部寄存器缓存控制字和状态字;控制字转化单元负责将控制字串行发送给WM8731,同时效验传送信号;数据音频接口单元完成WM8731与外部双口RAM的串并转换,实现对数字音频信号的发送和接收功能。
图5 驱动器整体设计框图
驱动器采用统一时钟同步信号,使用同步时钟发送数据,设定WM8731工作在主动模式,数字音频数据字长为16位。
3.2 驱动器的电路设计
电路部分采用Max+Plus Ⅱ软件进行设计。顶层文件使用图形化编程语言,子模块采用VHDL和Verilog HDL语言进行编程。
3.2.1 内部寄存器
内部寄存器包含控制字寄存器和状态字寄存器。控制字寄存器由24个字节组成,负责存储准备发送给WM8731的控制字;状态寄存器反映驱动器的工作状态,由8位寄存器组成,其格式如下:
b7b6b5b4b3b2b1b0
每位对应意义如表1所示。
表1 状态寄存器控制字的对应定义
位数名称定义
b0ACK控制字传输错误标志位
b1END控制字传输完毕标志位
b2GO控制字传输开始标志位
b3START驱动器工作控制位
b4RESET驱动器复位标志位
b5C1读入数字音频数据标志位
b6C2输出数字音频数据标志位
b7NC无定义
3.2.2 控制字转换单元
当START控制位置‘1时,将控制字寄存器中的数据串行发送给WM8731,当传输出现错误时,将状态寄存器中的ACK位置1。如图6所示。
图6 控制字转换单元
3.2.3 数字音频接口单元
当读入数字音频标志位C1为‘1,接收WM8731芯片传来的数字音频数据并将其存入外部双口RAM中,当输出数字音频数据标志位C2为‘1时,将双口RAM中的音频数据发送给WM8731。如图7所示。
图7 数字音频接口单元
3.3 系统仿真
下面给出控制器通过该驱动模块对WM8731写控制字的时序仿真如图8所示。图中各引脚定义如表2所示。
图8 写控制字时序仿真
表2 驱动模块部分管脚定义
管脚名称管脚定义
cp同步时钟输入
reset系统复位信号输入
nwr写信号输入
nrd读信号输入
data[15..0]16位数据总线
cs片选信号线输入
a0寄存器地址线输入
sdatWM8731数据线
sclkWM8731时钟线
4 结 语
利用FPGA对音频编解码芯片WM8731进行接口电路的设计,实现了控制接口与数字音频接口的统一控制,简化了对音频编解码芯片WM8731的使用步骤,具有扩展性好、使用简单方便、易于升级等优点,对其他芯片的接口设计也有一定的参考意义。
参考文献
[1]Wolfson Microelectronics.WM8731/WM8731L数据手册[Z].2004.
[2]张志刚.FPGA与SOPC设计教程——DE2实践[M].西安:西安电子科技大学出版社,2007.
[3]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2007.
[4]褚振勇,翁木云.FPGA设计及应用[M].西安:西安电子科技大学出版社,2002.
[5]王钿,卓兴旺.Verilog HDL的数字系统应用设计[M].北京:国防工业出版社,2007.
[6]李洪伟,袁斯华.基于Quartus Ⅱ的FPGA/CPLD设计[M].北京:电子工业出版社,2006.
[7]李石亮,杨俊安,叶春逢.基于AD7656的多路并行同步音频数据采集系统设计与实现. 现代电子技术,2008,31(10):167-170.
作者简介 王杰玉 女,1984年出生,河南南阳人,工学硕士,在读研究生。主要研究方向为嵌入式系统设计与开发。
杜 炜 男,1983年出生,湖北荆州人,工学硕士,在读研究生。主要研究方向为FPGA测试。
潘红兵 男,1969年出生,海军工程大学副教授。