【代码更新】标准差

 

【代码更新】标准差

每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编辑  收藏  举报