WinParameters.v 8.6 KB

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