示波器里的平均功能
时间:10-02
整理:3721RD
点击:
在示波器中平均功能原理: 实现的原理是将第N次的数据,减去前N-1次的数据平均值,然后除以2^N,最好将得到的数据再加到存储的平均值中,借此来逼近其数学期望。
其实现的平均是针对多幅形来实现的。
具体编程的实现:将前N-1次平均总和保存在RAM当中,当然实现我们是采用2片RAM来实现功能的,从而降低速度。每次来了一个数据的话,RAM里的数据读出,乘以(2^N)-1,再除以2^N次方,加上送来的数据,得到最终值,再送回到原RAM当中。
代码总体框架:首先通过average_num标志来选择到底是实现几次平均,我们代码中是1-6次,这样的话就是2^6,再加上每个数据是8bit,那么总共收的位宽是2^14次方。
如果要读出平均值,直接将RAM中的数据读出,然后除以2^N ,N为average_num的值
这里要注意RAM中存储的是前N-1次数据的总和,故8bit的数据要乘以2^6 ,故为14位的数据。RAM的写使能比读使能要延迟7下,这个读出来的数据进行处理是花了大概7个时钟吧,可以计算出来,也可以通过chipscope来知道。
如果要实现功能,利用Multiplier核乘法器来实现,a*b,a为14位的数据,从RAM中读出,b为(2^N)-1.得到的值,再直接右移N位进行缩小,然后加上送来的数据值就OK了。
其实现的平均是针对多幅形来实现的。
具体编程的实现:将前N-1次平均总和保存在RAM当中,当然实现我们是采用2片RAM来实现功能的,从而降低速度。每次来了一个数据的话,RAM里的数据读出,乘以(2^N)-1,再除以2^N次方,加上送来的数据,得到最终值,再送回到原RAM当中。
代码总体框架:首先通过average_num标志来选择到底是实现几次平均,我们代码中是1-6次,这样的话就是2^6,再加上每个数据是8bit,那么总共收的位宽是2^14次方。
如果要读出平均值,直接将RAM中的数据读出,然后除以2^N ,N为average_num的值
这里要注意RAM中存储的是前N-1次数据的总和,故8bit的数据要乘以2^6 ,故为14位的数据。RAM的写使能比读使能要延迟7下,这个读出来的数据进行处理是花了大概7个时钟吧,可以计算出来,也可以通过chipscope来知道。
如果要实现功能,利用Multiplier核乘法器来实现,a*b,a为14位的数据,从RAM中读出,b为(2^N)-1.得到的值,再直接右移N位进行缩小,然后加上送来的数据值就OK了。
受教了,不错的很