Altera_Forum
Honored Contributor
14 years agoUsing WM8731 Codec on DE2 board as an ADC
I'm using the WM8731 Codec on the DE2 board as an ADC by taking in audio from the Line In jack and sampling it at 48KHz. I've got a project setup to do this using code supplied by Altera/Terasic and from John Loomis' website (it won't allow me to post the link).
I also have Nios II module with a JTAG UART to print out the sampled input data. I've been testing it using an Agilent signal generator with DC and sine waves but I don't seem to be getting any meaningful results. I've configured the codec like this:
Dummy_DATA:LUT_DATA <= 16'h0000;
//R0 - LEFT LINE IN
SET_LIN_L:LUT_DATA <= 16'h0017; // no gain, disable mute, disable sim load
//R1 - RIGHT LINE IN
SET_LIN_R:LUT_DATA <= 16'h0217; // no gain, disable mute, disable sim load
//R2 - LEFT HEADPHONE OUT
SET_HEAD_L:LUT_DATA <= 16'h0479; // default volume, disable left channel zero cross detect, disable sim load
//R3 - RIGHT HEADPHONE OUT
SET_HEAD_R:LUT_DATA <= 16'h0679; // default volume, disable right channel zero cross detect, disable sim load
//R4 - ANALOG AUDIO PATH CONTROL
//A_PATH_CTRL :LUT_DATA <= 16'h0810; // Line->ADC, DAC on, no bypass or sidetone
A_PATH_CTRL : LUT_DATA <= 16'H0802; // disable mic boost, enable mic mute, line->adc, disable bypass/adc/sidetone
//R5 - DIGITAL AUDIO PATH CONTROL
//D_PATH_CTRL :LUT_DATA <= 16'h0A06; // enable high pass filter, de-emph @ 48khz
D_PATH_CTRL : LUT_DATA <= 16'h0A09; // disable high pass filter, no de-emph, dac soft mute, clear dc offset
//R6 - POWER DOWN CONTROL
POWER_ON:LUT_DATA <= 16'h0C00; // everything on
//R7 - DIGITAL AUDIO INTERFACE FORMAT
SET_FORMAT:LUT_DATA <= 16'h0E01; // MSB first left-justified, 16bit input audio, slave mode
//R8 - SAMPLING CONTROL
SAMPLE_CTRL:LUT_DATA <= 16'h1002; // normal mode, bosr=1, mclk
//R9 - ACTIVE CONTROL
SET_ACTIVE:LUT_DATA <= 16'h1201; // activate
An example of the output samples from the ADC when a 1v DC signal is applied: -70
-70
-71
-72
-71
-69
-70
-70
-69
-70
-69
-70
-70
-69
-71
-71
-71
-69
-71
-72
-69
-70
-68
-72
-69
-70
-69
-70
-71
-70
-71
-69
-71
-69
-71
-70
-70
-71
-70
-69
-68
-73
-70
-71
-68
-70
-70
-70
-69
-70
-71
-71
-71
-70
-70
-70
-70
-69
-69
-70
-69
-71
-68
-68
-69
-68
-70
-69
-70
-70
-69
-70
-69
-66
-67
-67
-67
-70
-69
-68
-70
-69
-69
-68
-70
Any idea on what I'm doing wrong?