我想尝试使用Nexys 4生成汽车声音。我是否需要将声音存储在ROM中?创建声音的步骤是什么?我正在使用verilog。谢谢如何在Nexys ddr 4 FPGA上生成音频声音输出
0
A
回答
0
Nexys 4板卡不包含音频编解码器,但它包含一个简单的低通(或带通)滤波器,用于从PWM信号创建声音输出。
您的编程挑战是创建一个PWM信号,其占空比表示声音输出信号的当前电平。
我会考虑以下伪代码(这里的类C,不VERILOG等):
signed int levelAccu = 0;
on_Every_Clock_Edge()
{
int level = getCurrentSoundLevel();
levelAccu += level;
if(levelAccu > 0)
{
setOutputPin(HIGH);
levelAccu -= MAX_LEVEL;
}
else
{
setOutputPin(LOW);
levelAccu -= MIN_LEVEL;
}
}
虽然:
getSoundLevel()
代表声音输出的电流所需的“级别”。 (如果使用采样声音,则为当前样本的值。)
MAX_LEVEL
和MIN_LEVEL
是“级别”的最大值和最小值。例如:如果要播放以8位有符号值存储的声音,您有MAX_LEVEL=127
和MIN_LEVEL=-128
。
寄存器levelAccu
应该比level
多1位或2位。
请注意,时钟边沿必须比音频采样率快得多。
我需要将声音存储在ROM中吗?
取决于您想要创建哪种类型的声音。
如果要播放录制的声音样本,您必须将它们存储在某些存储器(RAM,ROM ...)中。
如果要以编程方式生成声音(如正弦波),则不必存储它们。
顺便说
你的问题没有具体的Verilog,但它更关系到FPGA的通用和接近FPGA电路。
由于这个原因,“electronics.stackexchange.com”应该真的是这样的问题更好的地方。
+0
非常感谢你。我会尽力让它工作! –
相关问题
- 1. 在Nexys上启用音频输出的信号4
- 2. 输出声音到音频设备
- 3. 如何在iPhone上录制用户生成的声音输出
- 4. 如何从javascript中的输入声音生成负面的音频波?
- 5. 音频单元:使用声音输出作为输入源
- 6. 在AudioSource的输入端生成音频
- 7. 声子音频输出失败
- 8. 开关音频输出到扬声器
- 9. 如何在Java中按频率生成声音?
- 10. 带音频单元的录音扬声器输出
- 11. 如何在使用remoteIO生成iPhone音频时防止爆音?
- 12. 节日音频设备问题。没有声音输出
- 13. 如何在所有音频设备上播放声音
- 14. 在mac上捕获声音输出
- 15. 路由iPhone音频声音
- 16. 控制音频声音
- 17. 插入声音/音频
- 18. 如何访问ios/Cordova中的原生音频声音?
- 19. Phonegap录音音频iPhone 4
- 20. 如何生成动态音频信号
- 21. 如何获取当前音频输出设备的当前声音级别?
- 22. 如何拦截并应用Firefox音频/声音输出的效果
- 23. 如何生成特定的声音频率?
- 24. 使用javax.sound.sampled生成声音
- 25. 生成音频波形
- 26. 更改声音输出
- 27. AudioKit - 没有声音输出
- 28. Android获取音频输出
- 29. Jade中的音频输出
- 30. 如何检测iPhone上的声音频率/音高?
我投票结束这个问题作为题外话,因为它属于https://electronics.stackexchange.com/questions/tagged/verilog –
@ dave_59不幸的是Verilog是一个主题,它都出现在“stackoverflow”。 com“和”electronics.stackexchange.com“。在这两个网站上讨论了相同的主题。 –
@MartinRosenau关键在于人们使用编程语言的编码混淆了设计FPGA的概念。堆栈溢出是针对代码和语言问题的。电子产品用于硬件问题。 Verilog跨越了两者,因为它是描述硬件的语言。这个问题与代码本身无关 –