【问题标题】:Having FPGA to output sound on "line out" pin using verilog让FPGA使用verilog在“线路输出”引脚上输出声音
【发布时间】:2015-05-29 17:12:32
【问题描述】:

我正在尝试为 FPGA 编写一个 verilog 代码,该代码将从嵌入式“线路输出”引脚输出声音。我使用 Quartus II 和 Altera DE1。

我是硬件编程的新手,因此我需要太多时间才能赶上基础知识。显然我需要初始化 wolfson 芯片并需要写一些东西来与它通信,如下所述: http://www.alteraforum.com/forum/showthread.php?t=6005

它使用 wolfson WM8731 编解码器,手册在这里: http://www.rockbox.org/wiki/pub/Main/DataSheets/WM8731_8731L.pdf

还有一个我发现但不知道如何使用它的例子在这里: https://code.google.com/p/vector06cc/wiki/SoundCodec

我找到了一堆关于如何使用 GPIO 引脚生成声音的示例,但几乎没有关于 WM8731 的使用。我非常感谢您分享的任何指导或经验。

【问题讨论】:

  • 但是我正在寻找它的verilog代码,硬件已经在那里了。我还应该移动这个问题吗?
  • @OE1 - 您是使用 Nios II CPU(和 SOPC/Qsys)还是仅在硬件中工作?
  • 是 Altera DE1 使用 Nios II CPU。我正在对 FPGA 进行编程并尝试使用耳机来测试我的代码以“输出”FPGA 的端口。

标签: audio verilog fpga intel-fpga quartus


【解决方案1】:

假设您使用 Nios II 和 SOPC Builder 或 Qsys,Altera 大学计划提供一个 IP 内核来控制 DE 系列板上的音频编解码器。

如果您还没有,可以在这里下载(在页面底部,列为大学计划安装程序):https://www.altera.com/support/training/university/materials-ip-cores.html

安装后,检查<altera-directory>/University_Program\NiosII_Computer_Systems\DE1\DE1_Media_Computer 目录。 app_softwareapp_software_HAL 都给出了写入音频输出的示例方法(使用在 Nios II 上运行的 C 代码),verilogvhdl 文件夹显示了使用将内核连接到 NIOS II 的示例系统您首选的 HDL。

核心本身可以在<altera-directory>\ip\University_Program\Audio_Video 中找到。另请参阅 ftp://ftp.altera.com/up/pub/Altera_Material/14.1/University_Program_IP_Cores/Audio_Video/Audio.pdf 以获得一些(可能)有用的阅读/参考。


附录: 所有的 FPGA 输入和输出都使用 WM8731 芯片的“数字音频接口”。 FPGA上可用的管脚如下:

  • PIN_A6:AUD_ADCLRCK
  • PIN_B6:AUD_ADCDAT
  • PIN_A5:AUD_DACLRCK
  • PIN_B5:AUD_DACDAT
  • PIN_A4:AUD_BCLK
  • PIN_B4:AUD_XCK(WM8731 上的 MCLK)

输出通过AUD_DACDAT 引脚发送到编解码器。 该芯片使用 I2C 地址 0x34 上的 I2C_SDATI2C_SCLK 引脚进行配置,用于读取,0x35 用于写入。 FPGA 没有其他引脚可用 - 有些用于外部连接(如麦克风或线路输入),或者根本没有连接。 有关 DE1 的完整引脚分配列表(可直接导入 Quartus),请参阅:ftp://ftp.altera.com/up/pub/Altera_Material/12.1/Boards/DE1/DE1.qsf

【讨论】:

  • 我可以把这个方法和quartus结合起来吗?我已经有一个带有 VGA 接口和音频 LUT 的现有项目。所以我只需要将频率发送到“线路输出”。引脚分配或类似的东西是不可能的吗?
  • 如果您使用的是基于 Nios 的系统,我建议您使用 IP 内核 - 它们易于使用,并且可以肯定地工作。此外,我已经修改了我的答案(见上文)以提供有关引脚的更多信息 - 只有 CODEC 的一些端口连接到 FPGA - 如果未列出您要使用的端口,那么 FPGA无法访问它。希望这会有所帮助。
  • 那么,如果我只将输出音乐分配给AUD_DACDAT,时钟分配给I2C_SCLKI2C_SDAT 上的0x35,它会起作用吗?我不确定我是否理解正确。
  • I2C 用于配置 CODEC,为其中的各种参数设置值。我建议阅读数据表以获取更多信息。在数字音频接口上,您需要提供AUD_DACDAT(您的输出声音)、AUD_DACLRCK(DAC LR 时钟)、AUD_BCLK(比特流时钟)和AUD_XCK(芯片时钟)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-27
  • 1970-01-01
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
  • 2013-08-11
相关资源
最近更新 更多