如何通过Altera DE2-115教育FPGA板上的Wolfson WM8731编解码器获取音频?

时间:2015-04-28 21:44:11

标签: audio vhdl intel-fpga

我和我正在尝试用DE2-115板为我们的本科顶点项目创建一个合成器。

我们唯一能弄清楚的是如何将频率映射到"键"通过板载音频端口正确输出。我们已经浏览了网页,所有提供的文档都包含了编解码器的数据表,但是我们无法弄清楚如何使它在VHDL中正常工作。

有没有人曾经通过WM8731输出音频,如果有的话,他们是否愿意帮助我们?

2 个答案:

答案 0 :(得分:1)

几年前我做过这件事,并不是太难,但我使用的是带有SOPC构建器的NIOS处理器。

我使用了Altera大学计划IP核available here

这些核心提供与DE2相关的不同功能,也可能提供其他相关的功能。

根据我的日志,我使用了其中3个核心来使音频工作。

altera_up_avalon_audio_and_video_config,用于在初始化时配置音频CODEC芯片。

第二个IP提供与音频芯片的数据输入/输出接口:altera_up_avalon_audio

最后一个是altera_up_avalon_clocks。我无法准确记住它的作用,但正如名称所暗示的那样,音频芯片的时钟是必需的。我认为它需要一个输入时钟并生成一个PLL,以便为CODEC提供正确的时钟。

正如我所说,我使用了NIOS处理器,仍然根据我的日志,我使用的C代码是:

void audio_isr(void* context, alt_u32 id)
{
    const int len = 2682358;
    static signed char *ptr = test_snd;
    unsigned int x[128];

    alt_up_audio_dev *audio_dev = (alt_up_audio_dev *)context;

    unsigned int n = alt_up_audio_write_fifo_space(audio_dev, ALT_UP_AUDIO_RIGHT);

    for(unsigned int i = 0; i < n; i++) {
        x[i] = 0x800000 + ((int)*ptr++) << 9;

        if (ptr > test_snd+len) {
            ptr = test_snd;
            printf("Done\n");
        }
    }

    alt_up_audio_write_fifo(audio_dev, x, n, ALT_UP_AUDIO_RIGHT);
    alt_up_audio_write_fifo(audio_dev, x, n, ALT_UP_AUDIO_LEFT);
}

static void audio_init(void)
{
    alt_up_audio_dev *audio_dev = alt_up_audio_open_dev (AUDIO_0_NAME);
    if ( audio_dev == NULL)
        printf ("Error: could not open audio device \n");
    else
        printf ("Opened audio device \n");
    alt_up_audio_reset_audio_core(audio_dev);
    alt_up_audio_disable_write_interrupt(audio_dev);
    alt_up_audio_disable_read_interrupt(audio_dev);

    alt_irq_register(AUDIO_0_IRQ, (void *)audio_dev, audio_isr);
    alt_up_audio_enable_write_interrupt(audio_dev);
}

我不记得这有多好。足够值得提交,但它仍然是一个测试,所以不要过于重视。我的最终代码太复杂了,不能在这里呈现。

希望这足以让您开始走上正确的轨道,即使用Altera的IP。这些IP是明确的AFAIR,所以如果你不想要NIOS,从源头开始比从头开始应该更简单。

答案 1 :(得分:1)

您可能需要3个模块,时钟发生器,音频配置以及音频串行器和解串器。您无需进行基于NIOS II的设计。 Plz检查altera实验室实验,了解它是如何工作的。

实验链接 - https://www.altera.com/support/training/university/materials-lab-exercises.html#Digital-Logic-Exercises

pdf link - ftp://ftp.altera.com/up/pub/Altera_Material/Laboratory_Exercises/Digital_Logic/DE2-115/vhdl/lab12_VHDL.pdf

还要检查演示文件