我正在使用 Altera DE2 FPGA 板并使用 SD 卡端口和音频线路输出。我正在用 VHDL 和 C 编程,但由于缺乏经验/知识,C 部分是我被困的地方。
目前,我可以从 SD 卡播放 .wav 文件到线路输出。我通过读取和发送 SD 卡数据 > FIFO > 音频编解码器 > 线路输出来做到这一点。忽略所有其他细节,代码就是:
UINT16 Tmp1=0;
...
Tmp1=(Buffer[i+1]<<8)|Buffer[i]; //loads the data from the SD card to Tmp1
//change the buffer rate?
IOWR(AUDIO_BASE, 0, Tmp1); //sends Tmp1 data to Line Out
如果我要打印 Tmp1,它基本上是正弦波上的点。我现在要做的是通过更改播放速率来调整声音的播放方式(理想情况下,我想将声音向上或向下播放一个八度音阶,这只是频率的两倍或一半)。任何人都可以在本节中提供一些关于我如何做到这一点的建议:
//change the buffer rate?
是否可以在 C 中在该部分中编写几行代码以获得我正在寻找的内容?IE。更改我从 Tmp1 缓冲区读取到 AUDIO_BASE 的速度。
提前致谢!
~萨伦戈