da分布式算法

参考学习《数字信号处理的FPGA实现》

思想如图:

在下半部分可以看到:是将N阶的数B bit,一位一位的移入LUT然后经过累加器。其中N个数需要2.^N次方长度的LUT,B bit表示需要B个时钟完成一个数据的所有的位。但是有个疑问,为什么在累加的时候寄存器Y要往右移一位(?????)。

在实际的程序中直接累加:(代码如下)

在此程序中:N = 4, B = 4;还有需要说明的是:在上述代码中,完成bit的时钟需要2个时钟,我将其分解。当然也可以合并为一个时钟周期。

如下图:

 注:在代码2的截图中可以看出counter-2, 而代码1中counter-1, 原因是在代码1中,由y_r->y_m,之后等了一个时钟周期,即sum的值落后counter一个周期。

而在代码2中,y_r->y_m, y_m->sum的输出,即中间有二级触发器,即落后2个时钟周期。在仿真图中也可以看出。

已知的系数:x_0 = 3 , x_1=4 , x_2 = 6, x_3 =1

代码1仿真如下图:

验证:8*3 +  7 * 4 + 6 * 6 +  5 * 1 = 93

 代码2仿真如下图:

原文地址:https://www.cnblogs.com/cornhill/p/4079243.html