求方差FPGA的实现方法
1、数据振动判断方式:方差
2、方差的FPGA实现
(1)get_SQmean:
先调用内核求取数据自身的平方,再累加count_val个后,求均值。count_val是用于求方差的数据长度,可定义为constant,值为1024。(最好为2的幂次,方便移位操作,来求均值)。最后用D触发器打一拍,保证参与运算的数据都是同步的。
累加求平方均值:
module get_SQmean(
inputclk,
input rst_n,
input en_p,
input[27:0]data_in,
input[9:0] count_val, //外部模块,其实质就是每一个en_p到来,自增1
outputreg[27:0] data_out = 28’d0;
);
parameter[9:0] mean_val=10'd1023; //selected datacount
reg[37:0] data_temp=38'd0;
[email protected](posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
data_temp<=32'd0;
data_out<=0;
end
else
if(en_p)
begin
if(count_val<mean_val)
begin
data_temp<=data_temp+{{10{data_in[27]}},data_in};//LSB=2^-24;
end
else
begin
data_out<=data_temp[37:10]; //LSB=2^-24 , data_out =data_temp / 1024, 与均值的平方时序保持一致
data_temp<= { {10{data_in[27]}},data_in};
end
end
end
endmodule
(2)get_mean,并求
用D锁存器打一拍,保证参与运算的数据都是同步的。先求E(x),再用内核求自身的平法。一定是有符号类型的。
累加求均值:与上面程序一样,只不过,此时的输入data_in为原始数据而已。
(3) 相减:
Ps:所有模块均需要配置使能端,且都用同一使能触发。保证数据的同步性。
2018年4月2日星期一晚
于实验室