TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Allevi 于 2019-11-28 15:07 编辑
/ c% O: a2 @ W$ a) N4 b
4 U2 h" M3 F0 D; J7 t' e! v5 \! D9 S9 L. J5 O' A0 Q
; Q. ]- k' `7 L/ \8 N: @1 概 述
# @) l3 c# }8 f. Y/ U- f! g6 Z6 F& j/ p- o# t
WM873l是一款功能强大的低功耗立体声24位音频编解码芯片,其高性能耳机驱动器、低功耗设计、可控采样频率、可选择的滤波器使得WM8731芯片广泛使用于便携式MP3,CD,PDA的场合。其结构框图如图1所示。$ F v T. H8 u) N/ z
1 o5 R" `& I* E9 a! `
2 w1 W2 E( Q3 J4 h4 M7 j8 V# \, p3 _# v
WM8731包含2个线路输入和1路麦克风输入并可以进行音量调节;内置片上ADC(模拟数字转换器)及可选择的高通数字滤波器;采用高品质过采样率结构的DAC(数字模拟转换器);线路输出和耳机输出;内置晶体振荡器以及可配置的数字音频接口和2或3线可选的微处理器控制接口等。控制器可通过控制接口(Control InteRFace)对WM8731进行配置,然后通过数字音频接口(Digtal audio Interface)读写数据音频信号。本文设计了一种基于FPGA的驱动模块,将WM8731的控制接口与数字音频接口转换为控制器通用的总线接口,使控制器可以像读写外部寄存器一样对WM8731芯片进行控制使用。
1 |, a5 }* j* ?) f. b3 X0 W% _0 c; g3 S8 b# \4 Y7 R$ }. f
2 WM8731芯片接口时序介绍- L9 ~+ ~3 H4 Q+ U5 @
3 w5 J, J! S5 R5 m6 C
2.1 控制接口时序
. _% x# P3 _, z$ I* U$ A+ W+ G
2 {8 m5 a2 e# Q5 H# b5 v0 z WM8731的控制接口有4根引脚,分别为:MODE(控制接口选择线)、CSB(片选或地址选择线)、SDIN(数据输入线)和SCLK(时钟输入线)。它具有2线和3线两种模式。2线为MPU接口,3线为兼容spi接口。对控制接口的配置选择可通过设置MODE脚的状态完成。选择MODE为0时为2线模式,1时为3线模式。本文采用2线模式对WM8731进行控制。其时序图如图2所示。' _" h4 B V, b: W3 _5 ]
: g0 G% `8 N! C+ r& [
! W( `8 G& B# O) z9 T
7 g; |: J$ |3 A7 t e8 ]/ n; G7 _ 2.2 数字音频接口时序% F; A5 C6 o6 C/ c2 L" D, I
. N+ V( ?0 C# n
WM8731的数字音频接口有5根引脚,分别为:BCLK(数字音频位时钟)、DACDAT(DAC数字音频数据输入)、DACIRC(DAC采样左/右声道信号)、ADC-DAT(ADC数字音频信号输出)、ADCLRC(ADC采样左/右声道信号)。
( S1 ~6 q' D) D! Z" V' n o/ h* L& R" a+ P z
数字音频接口可以工作在主模式和从模式下。地址为0000111的寄存器的第6位设置数据的主/从模式:“1”为主模式,“0”为从模式。ADCDAT、/DACDAI和ADCLRC/DACLRC与位时钟BCIK同步,在每个BCLK的下降沿进行一次传输。BCLK和ADCLRC/DACLRC在主模式时为输出信号,从模式下为输入信号。DAC-DAT始终为输入信号,ADCDAT始终为输出信号。
3 G2 _7 y! s2 @+ g% ^- S
9 f/ ~' e0 B0 n8 E 数字输出支持4种音频数据模式:右对齐、左对齐、I2S和DSP模式。通过对寄存器的不同配置,可以设置传输的数据格式。寄存器配置值如下:
( D+ L ^* q0 u4 o6 m
8 p( u( i" k2 q5 U- ], @" s 寄存器地址0000111的1~0位设置音频格式:“11”时为DSF’格式,“10”为I2S格式,“01”为左对齐格式,“00'’为右对齐格式。
5 `0 {, f% h2 J# P2 j/ R! @5 v& I- ]1 {- M
3~2位设置字长:“11”时为32位,“10”为24位,“01”为20位,“00'’为16位。
7 c [, e9 u, l$ C- Z5 s
* }, `7 p) U! Y3 C 这四种音频格式都是高位(MSB)在前,16~32位。但32位数据不支持右对齐模式。
& H+ k; B6 Q" N! d! q7 s8 a! r3 W( I3 Y( `$ k! L
本文采用主模式的左对齐数据格式,左对齐数据格式传输如图3:左对齐格式时,MSB在BCLK的第一个上升沿有效,紧接着是一个ADCLRC或DACLRC传输。
# K b! U7 l1 U% M
) D) M7 O: y9 u$ K8 |+ d9 p) n4 i a7 {
; ~: S# l2 {1 m1 W3 a! e$ g% S, ^: x# t* O" Q$ t5 l! L: f
3 WM8731芯片驱动的FPGA设计
9 j3 m6 B7 n; e8 b( d% t) ~6 l2 |6 }4 s/ S+ i- y
3.1 驱动器的总体设计方案
; M- d; P1 s% E5 }1 X; ?) X( \ q$ C; P; c& P% b3 z( Y/ Q* o
本文设计驱动器在使用时的框图如图4所示。双口RAM和驱动器一同连接在控制器的数据总线和地址总线上,控制器只需提供少量的控制线即可完成对音频编解码芯片wM8731的控制及数据交换功能。
1 D2 R5 ^3 a$ g3 v2 m; [6 h1 v0 g' V( S
4 h! n r6 A: E+ \! X5 k, y5 {
7 z6 [7 w4 B& ]' H; A 驱动器内部结构框图如图5所示。控制部分提供驱动器与控制器之间的接口(包含有数据总线信号、地址总线信号和控制信号),同时产生控制字转换单元和数字音频接口单元的控制信号;内部寄存器缓存控制字和状态字;控制字转化单元负责将控制字串行发送给WM8731,同时效验传送信号;数据音频接口单元完成WM8731与外部双口RAM的串并转换,实现对数字音频信号的发送和接收功能。
( s5 g- ~1 R* Y! T0 T4 c, P
5 H8 b1 K6 N3 e- K
; y" r: o3 ^# n
4 _2 U4 w- e" z
7 n- V" K0 ^8 A/ Z1 y; w! C7 D$ h0 P3 h- `
' V0 ~, ^& D& @4 N2 A
1 ]& [" ^1 K/ o. [: { 3.2.2 控制字转换单元; F2 M8 Y) P) G m
/ f! B& z/ T8 {* t 当start控制位置‘1’时,将控制字寄存器中的数据串行发送给WM8731,当传输出现错误时,将状态寄存器中的ACK位置1。如图6所示。: S, G5 g3 u$ I
8 U& U% X$ T1 P0 z, c. h0 s
% D5 }* X9 ^; d3 g3 e
$ c1 d, `( ]9 s! t& q# N `# s9 g 3.2.3 数字音频接口单元
F0 V5 z+ b/ F/ x1 Q1 {6 q( B+ A6 p) b1 c
当读入数字音频标志位C1为‘1’,接收WM873l芯片传来的数字音频数据并将其存入外部双口RAM中,当输出数字音频数据标志位C2为‘1’时,将双口RAM中的音频数据发送给wM8731。如图7所示。+ Z6 H9 b% h1 S |
7 o& M# b( e' I) L6 n. m+ ` O
# t0 z/ K8 j, G Y& f" w8 j
3 A" P! y) d! @! G$ \- L8 v& [
3.3 系统仿真
5 u8 ?/ |0 w) n/ F% [9 S9 b( V7 q% J3 q/ M r6 @5 z5 S
下面给出控制器通过该驱动模块对WM8731写控制字的时序仿真如图8所示。图中各引脚定义如表2所示。: V! V7 {6 S) D' P: b7 A( |- B& C
# u$ n: K0 T* x+ \- l$ ]
* b3 d: I# `0 _* O" T
\% j0 {' S3 o+ O- [3 A0 e t2 _
9 g- O2 T4 F; D' _5 o3 J3 [; P( l; ] F: b( n( d! b
4 结 语: B K. T1 F8 x9 H
* F) \+ L6 `" v! r
利用FPGA对音频编解码芯片WM8731进行接口电路的设计,实现了控制接口与数字音频接口的统一控制,简化了对音频编解码芯片WM8731的使用步骤,具有扩展性好、使用简单方便、易于升级等优点,对其他芯片的接口设计也有一定的参考意义。5 L' ]9 a( S4 C, z
* s- b0 T1 L8 U/ y. g) T |
|