这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 『求助』数据滤波计算时候碰到的问题

共4条 1/1 1 跳转至

『求助』数据滤波计算时候碰到的问题

高工
2012-12-11 20:54:02     打赏
欲对AD采样数据进行求平均值滤波。
思路是这样的:
采样255次数据,对255次数据求平均.
其中求平均值是这样写的:
if(cnt == 8'd255)
begin
    for(i=8'd0;i<8'd255;i= i+1'b1)
        sum <= sum+databuf[i];//阻塞赋值
    dataout <= sum/255;
end
发现数据会从0到255跳变。
之后改成这样的:
if(cnt == 8'd255)
begin
    for(i=8'd0;i<8'd255;i= i+1'b1)
        sum = sum+databuf[i];非阻塞赋值
    dataout <= sum/255;
end
这时,数据跳变的更快了,而且显示的是错误的结果。完全达不到滤波效果。

想问问,Verilog里边求平均值,怎么求?



整个机算是这样的:
//对数据进行滤波
//方法:求平均值
reg [7:0]    databuf1;
reg [7:0]    dataout;
reg [7:0]    databuf[254:0];//定义一段内存
reg [15:0]    sum;
integer i;
reg [7:0] cnt;

always @(posedge convert,negedge sys_rstn)
        begin
            if(!sys_rstn)
                begin
                    sum<=0;
                    cnt <= 8'b0;
                    for(i=8'd0;i<8'd255;i= i+1'b1)
                        begin
                            databuf[i] = 7'b0;
                        end
                end
            else
                begin
                    databuf[cnt] <= read_data;
                    cnt <= cnt+1'b1;
                    if(cnt == 8'd255)
                        begin
                            for(i=8'd0;i<8'd255;i= i+1'b1)
                                sum = sum+databuf[i];
                            dataout <= sum/255;
                        end
                end
        end



关键词: 求助     数据     滤波     计算     时候     碰到     问题    

专家
2012-12-11 22:39:49     打赏
2楼
平均值值???

高工
2012-12-11 22:46:28     打赏
3楼
对,不知道怎么回事。跟c语言完全不同

助工
2012-12-14 11:01:58     打赏
4楼

减小cnt的上限值255试试,有可能是溢出导致的


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]