WinParameters.v 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 14:12:30 06/03/2020
  7. // Design Name:
  8. // Module Name: WinParameters
  9. // Project Name:
  10. // Target Devices:
  11. // Tool versions:
  12. // Description:
  13. //
  14. // Dependencies: kek
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //////////////////////////////////////////////////////////////////////////////////
  21. module WinParameters
  22. #(
  23. parameter WindPhIncWidth = 48,
  24. parameter WindNormCoefWidth = 14,
  25. parameter WindPNumWidth = 32,
  26. parameter BandCmdWidth = 16
  27. )
  28. (
  29. input Clk_i,
  30. input Rst_i,
  31. input [BandCmdWidth-1:0] FilterCmd_i,
  32. output [WindPhIncWidth-1:0] WinPhInc_o,
  33. output [WindPhIncWidth-1:0] WinPhIncStart_o,
  34. output [WindNormCoefWidth-1:0] WinNormCoef_o,
  35. output [WindPNumWidth-1:0] WinPointsNum_o,
  36. output [WindPNumWidth-1:0] AverageNoiseLvl_o
  37. );
  38. //================================================================================
  39. // REG/WIRE
  40. //================================================================================
  41. reg [WindPhIncWidth-1:0] windPhInc;
  42. reg [WindNormCoefWidth-1:0] winNormCoef;
  43. reg [WindPNumWidth-1:0] winPointsNum;
  44. reg [WindPNumWidth-1:0] averageNoiseLvl;
  45. //================================================================================
  46. // ASSIGNMENTS
  47. //================================================================================
  48. assign WinPhInc_o = windPhInc;
  49. assign WinPhIncStart_o = 32'h80000000;
  50. assign WinNormCoef_o = winNormCoef;
  51. assign WinPointsNum_o = winPointsNum;
  52. assign AverageNoiseLvl_o = averageNoiseLvl;
  53. //================================================================================
  54. // CODING
  55. //================================================================================
  56. always @ (posedge Clk_i) begin
  57. if (!Rst_i) begin
  58. case (FilterCmd_i)
  59. 8'h0 : begin // 1 Hz
  60. windPhInc <= 32'h2a8;
  61. winNormCoef <= 32'h3342b45d;
  62. winPointsNum <= 32'h30291a0;
  63. averageNoiseLvl <= 32'h0;
  64. end
  65. 8'h1 : begin// 1.5 Hz
  66. windPhInc <= 32'h3fc;
  67. winNormCoef <= 32'h3391cf5e;
  68. winPointsNum <= 32'h201b66a;
  69. averageNoiseLvl <= 32'h0;
  70. end
  71. 8'h2 : begin// 2 Hz
  72. windPhInc <= 32'h550;
  73. winNormCoef <= 32'h33c269d2;
  74. winPointsNum <= 32'h18148d0;
  75. averageNoiseLvl <= 32'h0;
  76. end
  77. 8'h3 : begin// 3 Hz
  78. windPhInc <= 32'h7f9;
  79. winNormCoef <= 32'h3411ccc1;
  80. winPointsNum <= 32'h100db35;
  81. averageNoiseLvl <= 32'h0;
  82. end
  83. 8'h4 : begin// 5 Hz
  84. windPhInc <= 32'hd49;
  85. winNormCoef <= 32'h347301aa;
  86. winPointsNum <= 32'h9a1d20;
  87. averageNoiseLvl <= 32'h0;
  88. end
  89. 8'h5 : begin// 7 Hz
  90. windPhInc <= 32'h129a;
  91. winNormCoef <= 32'h34aa19fd;
  92. winPointsNum <= 32'h6e14cd;
  93. averageNoiseLvl <= 32'h0;
  94. end
  95. 8'h10 : begin// 10 Hz
  96. windPhInc <= 32'h1a93;
  97. winNormCoef <= 32'h34f3005d;
  98. winPointsNum <= 32'h4d0e90;
  99. averageNoiseLvl <= 32'h0;
  100. end
  101. 8'h11 : begin// 15 Hz
  102. windPhInc <= 32'h27dd;
  103. winNormCoef <= 32'h35363ff7;
  104. winPointsNum <= 32'h335f0a;
  105. averageNoiseLvl <= 32'h0;
  106. end
  107. 8'h12 : begin// 20 Hz
  108. windPhInc <= 32'h3527;
  109. winNormCoef <= 32'h3572ffba;
  110. winPointsNum <= 32'h268748;
  111. averageNoiseLvl <= 32'h0;
  112. end
  113. 8'h13 : begin// 30 Hz
  114. windPhInc <= 32'h4fbb;
  115. winNormCoef <= 32'h35b63fa7;
  116. winPointsNum <= 32'h19af85;
  117. averageNoiseLvl <= 32'h0;
  118. end
  119. 8'h14 : begin// 50 Hz
  120. windPhInc <= 32'h84e3;
  121. winNormCoef <= 32'h3617df9c;
  122. winPointsNum <= 32'hf6950;
  123. averageNoiseLvl <= 32'h0;
  124. end
  125. 8'h15 : begin// 70 Hz
  126. windPhInc <= 32'hba0b;
  127. winNormCoef <= 32'h36549f77;
  128. winPointsNum <= 32'hb0214;
  129. averageNoiseLvl <= 32'h0;
  130. end
  131. 8'h20 : begin// 100 Hz
  132. windPhInc <= 32'h109c7;
  133. winNormCoef <= 32'h3697df93;
  134. winPointsNum <= 32'h7b4a8;
  135. averageNoiseLvl <= 32'h0;
  136. end
  137. 8'h21 : begin// 150 Hz
  138. windPhInc <= 32'h18eab;
  139. winNormCoef <= 32'h36e3cf84;
  140. winPointsNum <= 32'h5231a;
  141. averageNoiseLvl <= 32'h0;
  142. end
  143. 8'h22 : begin// 200 Hz
  144. windPhInc <= 32'h21390;
  145. winNormCoef <= 32'h3717df94;
  146. winPointsNum <= 32'h3da54;
  147. averageNoiseLvl <= 32'h0;
  148. end
  149. 8'h23 : begin// 300 Hz
  150. windPhInc <= 32'h31d5b;
  151. winNormCoef <= 32'h3763cf83;
  152. winPointsNum <= 32'h2918d;
  153. averageNoiseLvl <= 32'h0;
  154. end
  155. 8'h24 : begin// 500 Hz
  156. windPhInc <= 32'h530e3;
  157. winNormCoef <= 32'h37bdd7e8;
  158. winPointsNum <= 32'h18a88;
  159. averageNoiseLvl <= 32'h0;
  160. end
  161. 8'h25 : begin// 700 Hz
  162. windPhInc <= 32'h7449e;
  163. winNormCoef <= 32'h3804e417;
  164. winPointsNum <= 32'h119ce;
  165. averageNoiseLvl <= 32'h0;
  166. end
  167. 8'h30 : begin// 1 kHz
  168. windPhInc <= 32'ha61fc;
  169. winNormCoef <= 32'h383dd7e8;
  170. winPointsNum <= 32'hc544;
  171. averageNoiseLvl <= 32'h0;
  172. end
  173. 8'h31 : begin// 1.5 kHz
  174. windPhInc <= 32'hf92fb;
  175. winNormCoef <= 32'h388e6329;
  176. winPointsNum <= 32'h8382;
  177. averageNoiseLvl <= 32'h0;
  178. end
  179. 8'h32 : begin// 2 kHz
  180. windPhInc <= 32'h14c3f9;
  181. winNormCoef <= 32'h38bdd900;
  182. winPointsNum <= 32'h62a2;
  183. averageNoiseLvl <= 32'h0;
  184. end
  185. 8'h33 : begin// 3 kHz
  186. windPhInc <= 32'h1f25f6;
  187. winNormCoef <= 32'h390e6466;
  188. winPointsNum <= 32'h41c1;
  189. averageNoiseLvl <= 32'h0;
  190. end
  191. 8'h34 : begin// 5 kHz
  192. windPhInc <= 32'h33ee26;
  193. winNormCoef <= 32'h396d509f;
  194. winPointsNum <= 32'h2774;
  195. averageNoiseLvl <= 32'h0;
  196. end
  197. 8'h35 : begin// 7 kHz
  198. windPhInc <= 32'h48bca9;
  199. winNormCoef <= 32'h39a61fcc;
  200. winPointsNum <= 32'h1c2e;
  201. averageNoiseLvl <= 32'h0;
  202. end
  203. 8'h40 : begin// 10 kHz
  204. windPhInc <= 32'h67dc4c;
  205. winNormCoef <= 32'h39ed577f;
  206. winPointsNum <= 32'h13ba;
  207. averageNoiseLvl <= 32'h0;
  208. end
  209. 8'h41 : begin// 15 kHz
  210. windPhInc <= 32'h9c09c0;
  211. winNormCoef <= 32'h3a3206c8;
  212. winPointsNum <= 32'hd26;
  213. averageNoiseLvl <= 32'h0;
  214. end
  215. 8'h42 : begin// 20 kHz
  216. windPhInc <= 32'hd00d00;
  217. winNormCoef <= 32'h3a6d577f;
  218. winPointsNum <= 32'h9dd;
  219. averageNoiseLvl <= 32'h0;
  220. end
  221. 8'h43 : begin// 30 kHz
  222. windPhInc <= 32'h1381381;
  223. winNormCoef <= 32'h3ab1e1ce;
  224. winPointsNum <= 32'h693;
  225. averageNoiseLvl <= 32'h0;
  226. end
  227. 8'h44 : begin// 50 kHz
  228. windPhInc <= 32'h2082082;
  229. winNormCoef <= 32'h3b1444c4;
  230. winPointsNum <= 32'h3f2;
  231. averageNoiseLvl <= 32'h0;
  232. end
  233. 8'h45 : begin// 70 KHz
  234. windPhInc <= 32'h2d82d82;
  235. winNormCoef <= 32'h3b4fb73a;
  236. winPointsNum <= 32'h2d1;
  237. averageNoiseLvl <= 32'h0;
  238. end
  239. 8'h50 : begin// 100 KHz
  240. windPhInc <= 32'h4104104;
  241. winNormCoef <= 32'h3b944cd1;
  242. winPointsNum <= 32'h1f9;
  243. averageNoiseLvl <= 32'h0;
  244. end
  245. 8'h51 : begin// 150 KHz
  246. windPhInc <= 32'h6186186;
  247. winNormCoef <= 32'h3bdeed44;
  248. winPointsNum <= 32'h150;
  249. averageNoiseLvl <= 32'h0;
  250. end
  251. 8'h52 : begin// 200 KHz
  252. windPhInc <= 32'h8421084;
  253. winNormCoef <= 32'h3c1442d8;
  254. winPointsNum <= 32'hfc;
  255. averageNoiseLvl <= 32'h0;
  256. end
  257. 8'h53 : begin// 300 KHz
  258. windPhInc <= 32'hc30c30c;
  259. winNormCoef <= 32'h3c5ed0fd;
  260. winPointsNum <= 32'ha8;
  261. averageNoiseLvl <= 32'h0;
  262. end
  263. 8'h54 : begin// 500 KHz
  264. windPhInc <= 32'h1c71c71;
  265. winNormCoef <= 32'h3ce38e38;
  266. winPointsNum <= 32'h90;
  267. averageNoiseLvl <= 32'h0;
  268. end
  269. 8'h55 : begin// 700 KHz
  270. windPhInc <= 32'h2828282;
  271. winNormCoef <= 32'h3d20a0a0;
  272. winPointsNum <= 32'h66;
  273. averageNoiseLvl <= 32'h0;
  274. end
  275. 8'h60 : begin// 1 MHz
  276. windPhInc <= 32'h38e38e3;
  277. winNormCoef <= 32'h3d638e39;
  278. winPointsNum <= 32'h48;
  279. averageNoiseLvl <= 32'h0;
  280. end
  281. 8'h61 : begin// 1.5 MHz
  282. windPhInc <= 32'h5555555;
  283. winNormCoef <= 32'h3daaaaab;
  284. winPointsNum <= 32'h30;
  285. averageNoiseLvl <= 32'h0;
  286. end
  287. 8'h62 : begin// 2 MHz
  288. windPhInc <= 32'h71c71c7;
  289. winNormCoef <= 32'h3de38e39;
  290. winPointsNum <= 32'h24;
  291. averageNoiseLvl <= 32'h0;
  292. end
  293. 8'h63 : begin
  294. windPhInc <= 32'h0;
  295. winNormCoef <= 32'h3e124925;
  296. winPointsNum <= 32'he;
  297. averageNoiseLvl <= 32'h3b83126f;
  298. end
  299. // 8'h64 : begin// 5 MHz
  300. // windPhInc <= 32'h12492492;
  301. // winNormCoef <= 32'h3e924925;
  302. // winPointsNum <= 32'he;
  303. // end
  304. // 8'h64 : begin// 2,46 MHz
  305. // windPhInc <= 32'h9d89d89;
  306. // winNormCoef <= 32'h3df76c57;
  307. // winPointsNum <= 32'h1a;
  308. // end
  309. // 8'h70 : begin
  310. // параметры для калибровки - прямоугольное окно 65536 отсчетов 2^16
  311. // windPhInc <= 32'h1FFFFFFF;
  312. // winNormCoef <= 32'h6D13892;
  313. // winPointsNum <= 32'h10000;
  314. // end
  315. // 8'h71 : begin
  316. // 7.5MHZ
  317. // windPhInc <= 32'h1c71c71c;
  318. // winNormCoef <= 32'h3ee38e39;
  319. // winPointsNum <= 32'h9;
  320. // end
  321. // 8'h72 : begin
  322. // 10MHZ
  323. // windPhInc <= 32'h24924924;
  324. // winNormCoef <= 32'h3f124925;
  325. // winPointsNum <= 32'h7;
  326. // end
  327. 8'h64 : begin
  328. windPhInc <= 32'h0;
  329. winNormCoef <= 32'h3e800000;
  330. winPointsNum <= 32'h8;
  331. averageNoiseLvl <= 32'h3bc49ba6;
  332. end
  333. 8'h70 : begin
  334. // параметры для калибровки - прямоугольное окно 65536 отсчетов 2^16
  335. windPhInc <= 32'h1FFFFFFF;
  336. winNormCoef <= 32'h6D13892;
  337. winPointsNum <= 32'h10000;
  338. averageNoiseLvl <= 32'h0;
  339. end
  340. 8'h71 : begin
  341. windPhInc <= 32'h0;
  342. winNormCoef <= 32'h3eaaaaab;
  343. winPointsNum <= 32'h6;
  344. averageNoiseLvl <= 32'h3c03126f;
  345. end
  346. 8'h72 : begin
  347. windPhInc <= 32'h0;
  348. winNormCoef <= 32'h3f000000;
  349. winPointsNum <= 32'h4;
  350. averageNoiseLvl <= 32'h3a83126f;
  351. end
  352. default: begin
  353. windPhInc <= 32'h15555555;
  354. winNormCoef <= 32'h3e86cfea;
  355. winPointsNum <= 32'hc;
  356. averageNoiseLvl <= 32'h0;
  357. end
  358. endcase
  359. end
  360. end
  361. endmodule