【代码更新】标准差
【代码更新】标准差
每513个点中,对前512个取其标准差,最后一个点不在计算范围内;
具体的过程是,将512点的平方和均值,减去,512个点的均值的平方
方差=用平方和的均值减去均值的平方得到方差
1 //用平方和的均值减去均值的平方得到方差 2 3 module downSampling( 4 input wire clk, 5 input wire rst_n, 6 7 input wire din_valid, 8 input wire [7:0] din, 9 10 // output reg [7:0] data_in, 11 12 output wire down_sampling_dout_valid, 13 output wire [7:0] down_sampling_dout 14 ); 15 //test 16 // reg [31:0] cnt0_test; 17 // wire add_cnt0_test; 18 // wire end_cnt0_test; 19 // always@(posedge clk or negedge rst_n)begin 20 // if(rst_n==1'b0)begin 21 // cnt0_test<=0; 22 // end 23 // else if(add_cnt0_test)begin 24 // if(end_cnt0_test) 25 // cnt0_test<=0; 26 // else 27 // cnt0_test<=cnt0_test+1; 28 // end 29 // end 30 // assign add_cnt0_test = din_valid; 31 // assign end_cnt0_test = add_cnt0_test && cnt0_test == 100000-1; 32 33 // reg [7:0] data_in; 34 // always@(posedge clk or negedge rst_n)begin 35 // if(rst_n==1'b0)begin 36 // data_in<=0; 37 // end 38 // else if(add_cnt0_test && cnt0_test < 'd20000)begin 39 // data_in<='d1; 40 // end 41 // else if(add_cnt0_test && cnt0_test == 'd20000 )begin 42 // data_in<='d35; 43 // end 44 // else if(add_cnt0_test && cnt0_test > 'd20000 && cnt0_test < 'd20010 )begin 45 // data_in<='d1; 46 // end 47 // else if(add_cnt0_test && cnt0_test == 'd20010 )begin 48 // data_in<='d35; 49 // end 50 // else if(add_cnt0_test && cnt0_test > 'd20010 && cnt0_test < 'd60000 )begin 51 // data_in<='d1; 52 // end 53 // end 54 // wire [7:0] din; 55 // assign din = data_in; 56 //----------------------------------------------------------------- 57 //8位 58 reg [16:0] sum; 59 reg [24:0] square_sum; 60 wire [15:0] square_mean; 61 wire [15:0] mean_square; 62 wire [33:0] sum_square; 63 wire [15:0] variance; 64 reg valid_variance; 65 // 66 reg [9:0] cnt0; 67 wire add_cnt0; 68 wire end_cnt0; 69 always@(posedge clk or negedge rst_n)begin 70 if(rst_n==1'b0)begin 71 cnt0<=0; 72 end 73 else if(add_cnt0)begin 74 if(end_cnt0) 75 cnt0<=0; 76 else 77 cnt0<=cnt0+1; 78 end 79 end 80 assign add_cnt0 = din_valid;//1'b1 din_valid 81 assign end_cnt0 = add_cnt0 && cnt0 == 513-1; //----512 ---9 82 // 83 always@(posedge clk or negedge rst_n)begin 84 if(rst_n==1'b0)begin 85 sum<='d0; 86 end 87 else if(add_cnt0)begin 88 if(end_cnt0) 89 sum<='d0; 90 else 91 sum<=sum + din; 92 end 93 end 94 // 95 always@(posedge clk or negedge rst_n)begin 96 if(rst_n==1'b0)begin 97 square_sum <= 'd0; 98 end 99 else if(add_cnt0)begin 100 if(end_cnt0) 101 square_sum <= 'd0; 102 else 103 square_sum <= square_sum + din*din; 104 end 105 else begin 106 square_sum <= 'd0; 107 end 108 end 109 // 110 always@(posedge clk or negedge rst_n)begin 111 if(rst_n==1'b0)begin 112 valid_variance<='b0; 113 end 114 else if(add_cnt0 && cnt0 == 'd511)begin 115 valid_variance<='b1; 116 end 117 else begin 118 valid_variance<='b0; 119 end 120 end 121 // 122 assign sum_square = (add_cnt0&& end_cnt0)?(sum*sum):'d0; 123 //8位 124 assign mean_square = sum_square[33-:16]; //----------[33:18] 125 assign square_mean = square_sum[24-:16];//-----------[24: 9] 126 assign variance = (add_cnt0&&end_cnt0&&(square_mean > mean_square))?(square_mean - mean_square):'d0; 127 // 128 wire m_axis_dout_tvalid; 129 wire [15:0] m_axis_dout_tdata; 130 cordic_0 cordic_0_uut ( 131 .aclk(clk), // input wire aclk 132 .s_axis_cartesian_tvalid(valid_variance), // input wire s_axis_cartesian_tvalid 133 .s_axis_cartesian_tdata(variance), // input wire [15 : 0] s_axis_cartesian_tdata 134 .m_axis_dout_tvalid(m_axis_dout_tvalid), // output wire m_axis_dout_tvalid 135 .m_axis_dout_tdata(m_axis_dout_tdata) // output wire [15 : 0] m_axis_dout_tdata 136 ); 137 assign down_sampling_dout_valid= m_axis_dout_tvalid; 138 assign down_sampling_dout = m_axis_dout_tdata[7:0]; 139 //8位 140 // ila_3 ila_3_uut ( 141 // .clk(clk), // input wire clk 142 143 // .probe0(din_valid ), // input wire [0:0] probe0 144 // .probe1(din ), // input wire [7:0] probe1 //din_test 145 // .probe2(m_axis_dout_tvalid ), // input wire [0:0] probe2 146 // .probe3(m_axis_dout_tdata ), // input wire [15:0] probe3 147 // .probe4(cnt0 ), // input wire [9:0] probe4 148 // .probe5(sum ), // input wire [16:0] probe5 149 // .probe6(square_sum ), // input wire [24:0] probe6 150 // .probe7(variance ), // input wire [15:0] probe7 151 // .probe8(valid_variance ) // input wire [0:0] probe8 152 // ); 153 endmodule 154 //test 155 // wire [7:0] din_test; 156 // assign din_test=(add_cnt0 && cnt0 == 'd127 && cnt0 < 'd150)?'d0:din; 157 // 158 //16位 159 // reg [24:0] sum; 160 // reg [40:0] square_sum; 161 // wire [31:0] square_mean; 162 // wire [31:0] mean_square; 163 // wire [49:0] sum_square; 164 // wire [31:0] variance; 165 // reg valid_variance; 166 //16位 167 // assign mean_square = sum_square[49-:32]; //----------[49:18] 168 // assign square_mean = square_sum[40-:32];//-----------[40: 9] 169 //16位 170 // ila_3 ila_3_uut ( 171 // .clk(clk), // input wire clk 172 173 // .probe0(din_valid ), // input wire [0:0] probe0 174 // .probe1(din ), // input wire [15:0] probe1 175 // .probe2(m_axis_dout_tvalid ), // input wire [0:0] probe2 176 // .probe3(m_axis_dout_tdata ), // input wire [16:0] probe3 177 // .probe4(cnt0 ), // input wire [9:0] probe4 178 // .probe5(sum ), // input wire [24:0] probe5 179 // .probe6(square_sum ), // input wire [40:0] probe6 180 // .probe7(variance ), // input wire [31:0] probe7 181 // .probe8(valid_variance ) // input wire [0:0] probe8 182 // );
posted on 2024-04-28 11:09 taylorrrrrrrrrr 阅读(23) 评论(0) 编辑 收藏 举报