首页 > 其他分享 >【代码更新】标准差

【代码更新】标准差

时间:2024-04-28 11:25:53浏览次数:26  
标签:wire dout 代码 更新 square 标准差 cnt0 input axis

 

【代码更新】标准差

每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 // );

 

标签:wire,dout,代码,更新,square,标准差,cnt0,input,axis
From: https://www.cnblogs.com/taylorrrrrrrrrrr/p/18163329

相关文章

  • DataGear 5.0.0 新特性之图表追加更新模式
    DataGear企业版1.1.0已发布!http://datagear.tech/pro/DataGear在新发布的5.0.0版本中,新增了图表追加更新模式支持,包括dgUpdateAppendMode图表选项,以及chart.updateAppendMode()函数,可以非常方便地制作具有追加更新效果的图表,比如实时曲线图、柱状图等。在5.0.0版本之前,......
  • SpringBoot中几种好用的代码生成器(基于Mybatis-plus生成entity、mapper、xml等)
    前言熟悉Spring框架的同学一定都知道MVC开发模式吧,控制器(Controller)、业务类(Service)、持久层(Repository)、数据库映射(Mapper)、各种DO类构成了我们服务端的代码。初学的时候,觉得新鲜手写这些东西不觉得有啥,但是写久了就会觉得很烦。好不容易在数据库中写完了一遍字段,在Java代码又要......
  • VS和jetbrains比较容易忘记的几个快捷键(更新至20230428)
    //PS:这几个是我经常忘记的,记录一下,//         暂时只记录用到的,其他的用到后再去补充添加,后面会陆续补充。 VS2022Ctrl+T :在所有代码里面搜索的快捷键,(不是Ctrl+Q)快速搜索并定位文件名称的快捷:在当前文件快速搜索函数名称的快捷键: JetBrains在所有......
  • 记录一些写代码遇到的小错误
    写代码时报错:SyntaxError:Non-UTF-8codestartingwith'\xbc'infileE:\pythonproject\flaskProject2\model\KSql_clean.pyonline5,butnoencodingdeclared;seehttps://peps.python.org/pep-0263/fordetails这个错误通常表示您的Python文件包含非UTF-8编码......
  • Go语言高并发与微服务实战专题精讲——远程过程调用 RPC——客户端处理RPC请求的原理
    远程过程调用RPC——客户端处理RPC请求的原理及源代码分析 客户端无论是同步调用还是异步调用,每次RPC请求都会生成一个Call对象,并使用seq作为key保存在map中,服务端返回响应值时再根据响应值中的seq从map中取出Call,进行相应处理。 客户端发起RPC调用的过程大致如下所示,我们......
  • Go的Gin框架中使用Cgo调用Python的CApi调用Python代码
    在Gin项目中定义Services用以唤起Python,值得注意的是需要在引入Python.h前使用#cgo声明依赖库packagecpython//#cgoCFLAGS:-I"Q:/Sill-/anaconda/envs/poetry/include"//#cgoLDFLAGS:-L"Q:/Sill-/anaconda/envs/poetry/libs"-lpython311//#include<Python.h>imp......
  • access数据库批量更新中无法使用replace,出现“表达式中 'replace' 函数未定义”的替代
    如果我们想要批量修改数据库table_name表中aa字段中数据,将“|bbbb”删除sql的批量更新中,通用语法是:UPDATEtable_nameSETaa=REPLACE(aa,'|bbbb','')但是,如果是access数据库,就可能出现以下的报错信息:MicrosoftJETDatabaseEngine错误'80040e14'表达式中'replace'函......
  • 好久没关注uCOS系统的消息了,全家桶免费后,竟一直以全新的名字Flexible Safety RTOS登场
    【视频版】https://www.bilibili.com/video/BV1Kb421Y7v9【前言】2020年初,uCOS全家桶宣布免费后,其Github上uCOS-III更新过两个小版本,uCOS-II仅更新了一次,后面就一直没有更新。uCOS-II的最后一次更新定格在2021年:uCOS-III的最后一次更新定格在2022年末  【现状】开源......
  • 在数据库的查询与更新中,CHARINDEX与instr的区别?
    在数据库和字符串处理的领域中,CHARINDEX和INSTR是两个常用的函数,它们都用于查找子字符串在主字符串中的位置。尽管这两个函数在功能上有所重叠,但它们之间存在一些关键的区别,这些区别可能会影响开发者在选择使用哪一个函数时的决策。首先,CHARINDEX是SQLServer中的一个内置函数,它......
  • git命令合集(持续更新)
    环境配置设置用户信息gitconfig--globaluser.name“用户名”gitconfig--globaluser.email“邮箱”查看配置信息gitconfig--listgitconfiguser.name初始化本地仓库(新本地仓库只需要操作一次即可)gitinit本地仓库的操作git操作的文件状态* untracked 未......