我正在做一个项目,就是在FPGA上制作一个简单的音乐播放器。它从PC上获取一个指定格式的音乐文件,并在循环中大声播放。
我们需要实现标准的音符长度,即,Quaver为半拍,Minim为2拍,等等。目前,我们有一个表,在不同的BPM值的时钟周期数的节拍长度。我们需要把它们乘以这些音符的长度,才能得到正确的时钟周期。唯一的问题是Tuplet,它是一个完整拍子的三分之一。
如果不实现一个完整的除法器电路,你有什么数学技巧可以把一个整数大约除以3吗?
发布于 2020-09-07 04:50:18
正如dieli提到的,乘以0.333333。
然而,与其使用2的几个负幂(即a,b,c,.)只需将1/3乘以2的大幂,例如2^24 * (1/3) = 5592405。在将时钟周期乘以5592405之后,只需除以2^24。
B=(时钟周期)*5592405
结果= B/2^24
B的大小将取决于时钟周期的最大大小,并且可以由
B=整数的最大寄存器大小((log10((最大时钟周期大小)*5592405)/log10(2))+ 0.5)
https://stackoverflow.com/questions/33006842
复制相似问题