他会知道出来一个正弦波表文件,你在quartus的rom生成包含这个文件,好像是mif文件。
那后就是读这个ROM,读出来的数据送到DA转换器上。DA转换首档答蠢贺器输出端并联个小电容。要不然是示波器放大看的不死纯粹的正弦波,而是阶梯的正弦波了
控制FPGA/CPLD
读完这个ROM表的数据,就是输出一个正弦波周期了。
读出的速度快慢就是周期了。,比如你5s读完这个ROM表
,正弦波周期就是5s,频率就是0.2HZ了
,1秒读完就是1Hz了。0.01秒读完,就是100Hz了。。。
比如你的正弦波表里面是有4096个数据的,你0.01秒读完这4096个数据,算算这个读表的频率是多少
,每个数据是0.00000244140625秒,折合频率是409600
就是409.6K的频率去者慧读这个ROM表。其他的一样。
你明白了吧?
一般是用DDS做的,频率可以连续可调的。
FPGA一般是分频时钟的,多是整数分频的,
连续新不好。
比如用40.96M的时钟不分读ROM表,输出频率是10K
2分频输出当然是5K
有几首曲目就搞几个lpm_rom,这样简单,每个rom放一首曲目,再搞一个按钮,按一下就切换下一首。假设定义一个寄存器mode,按一下mode加1,同时rom读地址复位(只用一纯和个读地址计数器就行了,给所有的rom地址输入端),假设model从0到3循环,0将手动的数据给播放模块,1~3就分别将三个rom数据给播放模块(用个做掘盯case语句)。你应该是个学生,我说散罩的很详细了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)