使用VHDL更改音频的位深度以使用编解码器

时间:2013-07-27 13:52:53

标签: audio vhdl codec fpga

我正在尝试使用Xilinx virtex 5-ML506板中的音频编解码器,该板可以处理20位长的样本。问题如下: 我的样本长度为8位,因此我尝试通过将它们设置在编解码器输入的更高有效位(即codec_input< = my_sample&“000000000000”)来播放它们。但结果它播放了应该播放的音频(以可理解的方式)加上重要的噪音。

我已经在某处读过编解码器输入应该用示例填充,所以我通过执行codec_input< = my_sample *“111111111111”来尝试它,但它以相同的方式工作。

编解码器工作正常,我证明它播放20位长的样本,但我需要它来重现8位长的样本。

所以,如果你们中的一些人有一些建议或任何建议......我会非常感谢你。

喝彩!

编辑:我已尝试将示例设为编解码器输入的LSB,但它无效。

1 个答案:

答案 0 :(得分:0)

所以你想:

  • 使用您拥有的8位数据作为MS位
  • 将它们复制到下一个字节
  • 再次复制它们(可能是高半字节,因为只剩下4位要填充?)

使用&运算符将您的位连接在一起,如下所示:

codec_input <= sample & sample & sample(7 downto 4);

我不确定听起来会更好,但我认为这就是你所要求的。