RegMap.v 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000
  1. `timescale 1ns / 1ps
  2. //////////////////////////////////////////////////////////////////////////////////
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 18.09.2020 15:31:58
  7. // Design Name:
  8. // Module Name: RegMap
  9. // Project Name:
  10. // Target Devices:
  11. // Tool Versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. // нужно доработать модуль для получения возможности обновления регистров как снаружи (внешний dsp) так и изнутри (информацией из других модулей в системе).
  20. //////////////////////////////////////////////////////////////////////////////////
  21. module RegMap
  22. #(
  23. parameter CmdRegWidth = 32,
  24. parameter HeaderWidth = 7,
  25. parameter CmdDataRegWith = 24
  26. )
  27. (
  28. input Clk_i,
  29. input Rst_i,
  30. input PGenRstDone_i,
  31. input Val_i,
  32. input CalDone_i,
  33. input [CmdRegWidth-1:0] Data_i,
  34. input [HeaderWidth-1:0] AnsAddr_i,
  35. output [CmdDataRegWith-1:0] AnsDataReg_o,
  36. input [CmdDataRegWith-1:0] OverCtrlReg_i,
  37. output [CmdDataRegWith-1:0] GainCtrlReg_o,
  38. output [CmdDataRegWith-1:0] GainLowThreshT1Reg_o,
  39. output [CmdDataRegWith-1:0] GainHighThreshT1Reg_o,
  40. output [CmdDataRegWith-1:0] GainLowThreshR1Reg_o,
  41. output [CmdDataRegWith-1:0] GainHighThreshR1Reg_o,
  42. output [CmdDataRegWith-1:0] GainLowThreshT2Reg_o,
  43. output [CmdDataRegWith-1:0] GainHighThreshT2Reg_o,
  44. output [CmdDataRegWith-1:0] GainLowThreshR2Reg_o,
  45. output [CmdDataRegWith-1:0] GainHighThreshR2Reg_o,
  46. output [CmdDataRegWith-1:0] OverThreshReg_o,
  47. output [CmdDataRegWith-1:0] DitherCtrlReg_o,
  48. output [CmdDataRegWith-1:0] MeasCtrlReg_o,
  49. output [CmdDataRegWith-1:0] AdcCtrlReg_o,
  50. output [CmdDataRegWith-1:0] AdcDirectRd0Reg_o,
  51. output [CmdDataRegWith-1:0] AdcDirectRd1Reg_o,
  52. output [CmdDataRegWith-1:0] IfFtwRegL_o,
  53. output [CmdDataRegWith-1:0] IfFtwRegH_o,
  54. output [CmdDataRegWith-1:0] FilterCorrCoefRegL_o,
  55. output [CmdDataRegWith-1:0] FilterCorrCoefRegH_o,
  56. output [CmdDataRegWith-1:0] DspTrigInReg_o,
  57. output [CmdDataRegWith-1:0] DspTrigOutReg_o,
  58. output [CmdDataRegWith-1:0] DspTrigIn1Reg_o,
  59. output [CmdDataRegWith-1:0] DspTrigIn2Reg_o,
  60. output [CmdDataRegWith-1:0] DspTrigOut1Reg_o,
  61. output [CmdDataRegWith-1:0] DspTrigOut2Reg_o,
  62. //PG1 Regs
  63. output [CmdDataRegWith-1:0] PG1P1DelayReg_o,
  64. output [CmdDataRegWith-1:0] PG1P2DelayReg_o,
  65. output [CmdDataRegWith-1:0] PG1P3DelayReg_o,
  66. output [CmdDataRegWith-1:0] PG1P123DelayReg_o,
  67. output [CmdDataRegWith-1:0] PG1P1WidthReg_o,
  68. output [CmdDataRegWith-1:0] PG1P2WidthReg_o,
  69. output [CmdDataRegWith-1:0] PG1P3WidthReg_o,
  70. output [CmdDataRegWith-1:0] PG1P123WidthReg_o,
  71. //PG2 Regs
  72. output [CmdDataRegWith-1:0] PG2P1DelayReg_o,
  73. output [CmdDataRegWith-1:0] PG2P2DelayReg_o,
  74. output [CmdDataRegWith-1:0] PG2P3DelayReg_o,
  75. output [CmdDataRegWith-1:0] PG2P123DelayReg_o,
  76. output [CmdDataRegWith-1:0] PG2P1WidthReg_o,
  77. output [CmdDataRegWith-1:0] PG2P2WidthReg_o,
  78. output [CmdDataRegWith-1:0] PG2P3WidthReg_o,
  79. output [CmdDataRegWith-1:0] PG2P123WidthReg_o,
  80. //PG3 Regs
  81. output [CmdDataRegWith-1:0] PG3P1DelayReg_o,
  82. output [CmdDataRegWith-1:0] PG3P2DelayReg_o,
  83. output [CmdDataRegWith-1:0] PG3P3DelayReg_o,
  84. output [CmdDataRegWith-1:0] PG3P123DelayReg_o,
  85. output [CmdDataRegWith-1:0] PG3P1WidthReg_o,
  86. output [CmdDataRegWith-1:0] PG3P2WidthReg_o,
  87. output [CmdDataRegWith-1:0] PG3P3WidthReg_o,
  88. output [CmdDataRegWith-1:0] PG3P123WidthReg_o,
  89. //PG4 Regs
  90. output [CmdDataRegWith-1:0] PG4P1DelayReg_o,
  91. output [CmdDataRegWith-1:0] PG4P2DelayReg_o,
  92. output [CmdDataRegWith-1:0] PG4P3DelayReg_o,
  93. output [CmdDataRegWith-1:0] PG4P123DelayReg_o,
  94. output [CmdDataRegWith-1:0] PG4P1WidthReg_o,
  95. output [CmdDataRegWith-1:0] PG4P2WidthReg_o,
  96. output [CmdDataRegWith-1:0] PG4P3WidthReg_o,
  97. output [CmdDataRegWith-1:0] PG4P123WidthReg_o,
  98. //PG5 Regs
  99. output [CmdDataRegWith-1:0] PG5P1DelayReg_o,
  100. output [CmdDataRegWith-1:0] PG5P2DelayReg_o,
  101. output [CmdDataRegWith-1:0] PG5P3DelayReg_o,
  102. output [CmdDataRegWith-1:0] PG5P123DelayReg_o,
  103. output [CmdDataRegWith-1:0] PG5P1WidthReg_o,
  104. output [CmdDataRegWith-1:0] PG5P2WidthReg_o,
  105. output [CmdDataRegWith-1:0] PG5P3WidthReg_o,
  106. output [CmdDataRegWith-1:0] PG5P123WidthReg_o,
  107. //PG6 Regs
  108. output [CmdDataRegWith-1:0] PG6P1DelayReg_o,
  109. output [CmdDataRegWith-1:0] PG6P2DelayReg_o,
  110. output [CmdDataRegWith-1:0] PG6P3DelayReg_o,
  111. output [CmdDataRegWith-1:0] PG6P123DelayReg_o,
  112. output [CmdDataRegWith-1:0] PG6P1WidthReg_o,
  113. output [CmdDataRegWith-1:0] PG6P2WidthReg_o,
  114. output [CmdDataRegWith-1:0] PG6P3WidthReg_o,
  115. output [CmdDataRegWith-1:0] PG6P123WidthReg_o,
  116. //PG7 Regs
  117. output [CmdDataRegWith-1:0] PG7P1DelayReg_o,
  118. output [CmdDataRegWith-1:0] PG7P2DelayReg_o,
  119. output [CmdDataRegWith-1:0] PG7P3DelayReg_o,
  120. output [CmdDataRegWith-1:0] PG7P123DelayReg_o,
  121. output [CmdDataRegWith-1:0] PG7P1WidthReg_o,
  122. output [CmdDataRegWith-1:0] PG7P2WidthReg_o,
  123. output [CmdDataRegWith-1:0] PG7P3WidthReg_o,
  124. output [CmdDataRegWith-1:0] PG7P123WidthReg_o,
  125. output [CmdDataRegWith-1:0] MeasNum1Reg_o,
  126. output [CmdDataRegWith-1:0] MeasNum2Reg_o,
  127. output [CmdDataRegWith-1:0] PgMode0Reg_o,
  128. output [CmdDataRegWith-1:0] PgMode1Reg_o,
  129. output [CmdDataRegWith-1:0] MuxCtrl1Reg_o,
  130. output [CmdDataRegWith-1:0] MuxCtrl2Reg_o,
  131. output [CmdDataRegWith-1:0] MuxCtrl3Reg_o,
  132. output [CmdDataRegWith-1:0] MuxCtrl4Reg_o
  133. );
  134. //================================================================================
  135. // LOCALPARAMS
  136. //================================================================================
  137. localparam GainCtrlRegAddr = 7'h0;
  138. localparam GainLowThreshT1RegAddr = 7'h1;
  139. localparam GainHighThreshT1RegAddr = 7'h2;
  140. localparam GainLowThreshR1RegAddr = 7'h3;
  141. localparam GainHighThreshR1RegAddr = 7'h4;
  142. localparam GainLowThreshT2RegAddr = 7'h5;
  143. localparam GainHighThreshT2RegAddr = 7'h6;
  144. localparam GainLowThreshR2RegAddr = 7'h7;
  145. localparam GainHighThreshR2RegAddr = 7'h8;
  146. localparam OverCtrlRegAddr = 7'h9;
  147. localparam OverThreshRegAddr = 7'hA;
  148. localparam DitherCtrlRegAddr = 7'hE;
  149. localparam MeasCtrlRegAddr = 7'h11;
  150. localparam AdcCtrlRegAddr = 7'h12;
  151. localparam AdcDirectRd0RegAddr = 7'h13;
  152. localparam AdcDirectRd1RegAddr = 7'h14;
  153. localparam IfFtwRegHAddr = 7'h15;
  154. localparam IfFtwRegLAddr = 7'h16;
  155. localparam FilterCorrCoefHAddr = 7'h17;
  156. localparam FilterCorrCoefLAddr = 7'h18;
  157. localparam DspTrigInAddr = 7'h19;
  158. localparam DspTrigOutAddr = 7'h1a;
  159. localparam DspTrigIn1Addr = 7'h5a;
  160. localparam DspTrigIn2Addr = 7'h5b;
  161. localparam DspTrigOut1Addr = 7'h5c;
  162. localparam DspTrigOut2Addr = 7'h5d;
  163. //Pulse meas regs
  164. //PG7 Addr
  165. localparam PG7P1DelayRegAddr = 7'h20;
  166. localparam PG7P2DelayRegAddr = 7'h21;
  167. localparam PG7P3DelayRegAddr = 7'h22;
  168. localparam PG7P123DelayRegAddr = 7'h23;
  169. localparam PG7P1WidthRegAddr = 7'h24;
  170. localparam PG7P2WidthRegAddr = 7'h25;
  171. localparam PG7P3WidthRegAddr = 7'h26;
  172. localparam PG7P123WidthRegAddr = 7'h27;
  173. //PG1 Addr
  174. localparam PG1P1DelayRegAddr = 7'h28;
  175. localparam PG1P2DelayRegAddr = 7'h29;
  176. localparam PG1P3DelayRegAddr = 7'h2a;
  177. localparam PG1P123DelayRegAddr = 7'h2b;
  178. localparam PG1P1WidthRegAddr = 7'h2c;
  179. localparam PG1P2WidthRegAddr = 7'h2d;
  180. localparam PG1P3WidthRegAddr = 7'h2e;
  181. localparam PG1P123WidthRegAddr = 7'h2f;
  182. //PG2 Addr
  183. localparam PG2P1DelayRegAddr = 7'h30;
  184. localparam PG2P2DelayRegAddr = 7'h31;
  185. localparam PG2P3DelayRegAddr = 7'h32;
  186. localparam PG2P123DelayRegAddr = 7'h33;
  187. localparam PG2P1WidthRegAddr = 7'h34;
  188. localparam PG2P2WidthRegAddr = 7'h35;
  189. localparam PG2P3WidthRegAddr = 7'h36;
  190. localparam PG2P123WidthRegAddr = 7'h37;
  191. //PG3 Addr
  192. localparam PG3P1DelayRegAddr = 7'h38;
  193. localparam PG3P2DelayRegAddr = 7'h39;
  194. localparam PG3P3DelayRegAddr = 7'h3a;
  195. localparam PG3P123DelayRegAddr = 7'h3b;
  196. localparam PG3P1WidthRegAddr = 7'h3c;
  197. localparam PG3P2WidthRegAddr = 7'h3d;
  198. localparam PG3P3WidthRegAddr = 7'h3e;
  199. localparam PG3P123WidthRegAddr = 7'h3f;
  200. //PG4 Addr
  201. localparam PG4P1DelayRegAddr = 7'h40;
  202. localparam PG4P2DelayRegAddr = 7'h41;
  203. localparam PG4P3DelayRegAddr = 7'h42;
  204. localparam PG4P123DelayRegAddr = 7'h43;
  205. localparam PG4P1WidthRegAddr = 7'h44;
  206. localparam PG4P2WidthRegAddr = 7'h45;
  207. localparam PG4P3WidthRegAddr = 7'h46;
  208. localparam PG4P123WidthRegAddr = 7'h47;
  209. //PG5 Addr
  210. localparam PG5P1DelayRegAddr = 7'h48;
  211. localparam PG5P2DelayRegAddr = 7'h49;
  212. localparam PG5P3DelayRegAddr = 7'h4a;
  213. localparam PG5P123DelayRegAddr = 7'h4b;
  214. localparam PG5P1WidthRegAddr = 7'h4c;
  215. localparam PG5P2WidthRegAddr = 7'h4d;
  216. localparam PG5P3WidthRegAddr = 7'h4e;
  217. localparam PG5P123WidthRegAddr = 7'h4f;
  218. //PG6 Addr
  219. localparam PG6P1DelayRegAddr = 7'h50;
  220. localparam PG6P2DelayRegAddr = 7'h51;
  221. localparam PG6P3DelayRegAddr = 7'h52;
  222. localparam PG6P123DelayRegAddr = 7'h53;
  223. localparam PG6P1WidthRegAddr = 7'h54;
  224. localparam PG6P2WidthRegAddr = 7'h55;
  225. localparam PG6P3WidthRegAddr = 7'h56;
  226. localparam PG6P123WidthRegAddr = 7'h57;
  227. localparam MeasNum1RegAddr = 7'h58;
  228. localparam MeasNum2RegAddr = 7'h59;
  229. localparam PGMode0RegAddr = 7'h0b;
  230. localparam PGMode1RegAddr = 7'h1b;
  231. localparam MuxCtrl1RegAddr = 7'h1c;
  232. localparam MuxCtrl2RegAddr = 7'h1d;
  233. localparam MuxCtrl3RegAddr = 7'h1e;
  234. localparam MuxCtrl4RegAddr = 7'h1f;
  235. //================================================================================
  236. // REG/WIRE
  237. //================================================================================
  238. // common regs
  239. reg [CmdDataRegWith-1:0] gainCtrlReg; //Use the same reg for store gain ctrl lines on both working modes
  240. reg [CmdDataRegWith-1:0] gainLowThreshT1Reg;
  241. reg [CmdDataRegWith-1:0] gainHighThreshT1Reg;
  242. reg [CmdDataRegWith-1:0] gainLowThreshR1Reg;
  243. reg [CmdDataRegWith-1:0] gainHighThreshR1Reg;
  244. reg [CmdDataRegWith-1:0] gainLowThreshT2Reg;
  245. reg [CmdDataRegWith-1:0] gainHighThreshT2Reg;
  246. reg [CmdDataRegWith-1:0] gainLowThreshR2Reg;
  247. reg [CmdDataRegWith-1:0] gainHighThreshR2Reg;
  248. reg [CmdDataRegWith-1:0] overCtrlReg;
  249. reg [CmdDataRegWith-1:0] overThreshReg;
  250. reg [CmdDataRegWith-1:0] ditherCtrlReg;
  251. reg [CmdDataRegWith-1:0] measCtrlReg;
  252. reg [CmdDataRegWith-1:0] adcCtrlReg;
  253. reg [CmdDataRegWith-1:0] adcDirectRd0Reg;
  254. reg [CmdDataRegWith-1:0] adcDirectRd1Reg;
  255. reg [CmdDataRegWith-1:0] ifFtwRegL;
  256. reg [CmdDataRegWith-1:0] ifFtwRegH;
  257. reg [CmdDataRegWith-1:0] filterCorrCoefRegL;
  258. reg [CmdDataRegWith-1:0] filterCorrCoefRegH;
  259. reg [CmdDataRegWith-1:0] dspTrigInReg;
  260. reg [CmdDataRegWith-1:0] dspTrigOutReg;
  261. reg [CmdDataRegWith-1:0] dspTrigIn1Reg;
  262. reg [CmdDataRegWith-1:0] dspTrigIn2Reg;
  263. reg [CmdDataRegWith-1:0] dspTrigOut1Reg;
  264. reg [CmdDataRegWith-1:0] dspTrigOut2Reg;
  265. //pulse meas regs
  266. reg [CmdDataRegWith-1:0] pGMode0Reg;
  267. reg [CmdDataRegWith-1:0] pGMode1Reg;
  268. reg [CmdDataRegWith-1:0] measNum1Reg;
  269. reg [CmdDataRegWith-1:0] measNum2Reg;
  270. reg [CmdDataRegWith-1:0] muxCtrl1Reg;
  271. reg [CmdDataRegWith-1:0] muxCtrl2Reg;
  272. reg [CmdDataRegWith-1:0] muxCtrl3Reg;
  273. reg [CmdDataRegWith-1:0] muxCtrl4Reg;
  274. //PG1 Regs
  275. reg [CmdDataRegWith-1:0] pG1P1DelayReg;
  276. reg [CmdDataRegWith-1:0] pG1P2DelayReg;
  277. reg [CmdDataRegWith-1:0] pG1P3DelayReg;
  278. reg [CmdDataRegWith-1:0] pG1P123DelayReg;
  279. reg [CmdDataRegWith-1:0] pG1P1WidthReg;
  280. reg [CmdDataRegWith-1:0] pG1P2WidthReg;
  281. reg [CmdDataRegWith-1:0] pG1P3WidthReg;
  282. reg [CmdDataRegWith-1:0] pG1P123WidthReg;
  283. //PG2 Regs
  284. reg [CmdDataRegWith-1:0] pG2P1DelayReg;
  285. reg [CmdDataRegWith-1:0] pG2P2DelayReg;
  286. reg [CmdDataRegWith-1:0] pG2P3DelayReg;
  287. reg [CmdDataRegWith-1:0] pG2P123DelayReg;
  288. reg [CmdDataRegWith-1:0] pG2P1WidthReg;
  289. reg [CmdDataRegWith-1:0] pG2P2WidthReg;
  290. reg [CmdDataRegWith-1:0] pG2P3WidthReg;
  291. reg [CmdDataRegWith-1:0] pG2P123WidthReg;
  292. //PG3 Regs
  293. reg [CmdDataRegWith-1:0] pG3P1DelayReg;
  294. reg [CmdDataRegWith-1:0] pG3P2DelayReg;
  295. reg [CmdDataRegWith-1:0] pG3P3DelayReg;
  296. reg [CmdDataRegWith-1:0] pG3P123DelayReg;
  297. reg [CmdDataRegWith-1:0] pG3P1WidthReg;
  298. reg [CmdDataRegWith-1:0] pG3P2WidthReg;
  299. reg [CmdDataRegWith-1:0] pG3P3WidthReg;
  300. reg [CmdDataRegWith-1:0] pG3P123WidthReg;
  301. //PG4 Regs
  302. reg [CmdDataRegWith-1:0] pG4P1DelayReg;
  303. reg [CmdDataRegWith-1:0] pG4P2DelayReg;
  304. reg [CmdDataRegWith-1:0] pG4P3DelayReg;
  305. reg [CmdDataRegWith-1:0] pG4P123DelayReg;
  306. reg [CmdDataRegWith-1:0] pG4P1WidthReg;
  307. reg [CmdDataRegWith-1:0] pG4P2WidthReg;
  308. reg [CmdDataRegWith-1:0] pG4P3WidthReg;
  309. reg [CmdDataRegWith-1:0] pG4P123WidthReg;
  310. //PG5 Regs
  311. reg [CmdDataRegWith-1:0] pG5P1DelayReg;
  312. reg [CmdDataRegWith-1:0] pG5P2DelayReg;
  313. reg [CmdDataRegWith-1:0] pG5P3DelayReg;
  314. reg [CmdDataRegWith-1:0] pG5P123DelayReg;
  315. reg [CmdDataRegWith-1:0] pG5P1WidthReg;
  316. reg [CmdDataRegWith-1:0] pG5P2WidthReg;
  317. reg [CmdDataRegWith-1:0] pG5P3WidthReg;
  318. reg [CmdDataRegWith-1:0] pG5P123WidthReg;
  319. //PG6 Regs
  320. reg [CmdDataRegWith-1:0] pG6P1DelayReg;
  321. reg [CmdDataRegWith-1:0] pG6P2DelayReg;
  322. reg [CmdDataRegWith-1:0] pG6P3DelayReg;
  323. reg [CmdDataRegWith-1:0] pG6P123DelayReg;
  324. reg [CmdDataRegWith-1:0] pG6P1WidthReg;
  325. reg [CmdDataRegWith-1:0] pG6P2WidthReg;
  326. reg [CmdDataRegWith-1:0] pG6P3WidthReg;
  327. reg [CmdDataRegWith-1:0] pG6P123WidthReg;
  328. //PG7 Regs
  329. reg [CmdDataRegWith-1:0] pG7P1DelayReg;
  330. reg [CmdDataRegWith-1:0] pG7P2DelayReg;
  331. reg [CmdDataRegWith-1:0] pG7P3DelayReg;
  332. reg [CmdDataRegWith-1:0] pG7P123DelayReg;
  333. reg [CmdDataRegWith-1:0] pG7P1WidthReg;
  334. reg [CmdDataRegWith-1:0] pG7P2WidthReg;
  335. reg [CmdDataRegWith-1:0] pG7P3WidthReg;
  336. reg [CmdDataRegWith-1:0] pG7P123WidthReg;
  337. //ans reg
  338. reg [CmdDataRegWith-1:0] ansReg;
  339. //================================================================================
  340. // ASSIGNMENTS
  341. //================================================================================
  342. assign GainCtrlReg_o = gainCtrlReg;
  343. assign GainLowThreshT1Reg_o = gainLowThreshT1Reg;
  344. assign GainHighThreshT1Reg_o = gainHighThreshT1Reg;
  345. assign GainLowThreshR1Reg_o = gainLowThreshR1Reg;
  346. assign GainHighThreshR1Reg_o = gainHighThreshR1Reg;
  347. assign GainLowThreshT2Reg_o = gainLowThreshT2Reg;
  348. assign GainHighThreshT2Reg_o = gainHighThreshT2Reg;
  349. assign GainLowThreshR2Reg_o = gainLowThreshR2Reg;
  350. assign GainHighThreshR2Reg_o = gainHighThreshR2Reg;
  351. assign OverThreshReg_o = overThreshReg;
  352. assign DitherCtrlReg_o = ditherCtrlReg;
  353. assign MeasCtrlReg_o = measCtrlReg;
  354. assign AdcCtrlReg_o = adcCtrlReg;
  355. assign AdcDirectRd0Reg_o = adcDirectRd0Reg;
  356. assign AdcDirectRd1Reg_o = adcDirectRd1Reg;
  357. assign IfFtwRegL_o = ifFtwRegL;
  358. assign IfFtwRegH_o = ifFtwRegH;
  359. assign FilterCorrCoefRegL_o = filterCorrCoefRegL;
  360. assign FilterCorrCoefRegH_o = filterCorrCoefRegH;
  361. assign DspTrigInReg_o = dspTrigInReg;
  362. assign DspTrigOutReg_o = dspTrigOutReg;
  363. assign DspTrigIn1Reg_o = dspTrigIn1Reg;
  364. assign DspTrigIn2Reg_o = dspTrigIn2Reg;
  365. assign DspTrigOut1Reg_o = dspTrigOut1Reg;
  366. assign DspTrigOut2Reg_o = dspTrigOut2Reg;
  367. //PG1 Regs
  368. assign PG1P1DelayReg_o = pG1P1DelayReg;
  369. assign PG1P2DelayReg_o = pG1P2DelayReg;
  370. assign PG1P3DelayReg_o = pG1P3DelayReg;
  371. assign PG1P123DelayReg_o = pG1P123DelayReg;
  372. assign PG1P1WidthReg_o = pG1P1WidthReg;
  373. assign PG1P2WidthReg_o = pG1P2WidthReg;
  374. assign PG1P3WidthReg_o = pG1P3WidthReg;
  375. assign PG1P123WidthReg_o = pG1P123WidthReg;
  376. //PG2 Regs
  377. assign PG2P1DelayReg_o = pG2P1DelayReg;
  378. assign PG2P2DelayReg_o = pG2P2DelayReg;
  379. assign PG2P3DelayReg_o = pG2P3DelayReg;
  380. assign PG2P123DelayReg_o = pG2P123DelayReg;
  381. assign PG2P1WidthReg_o = pG2P1WidthReg;
  382. assign PG2P2WidthReg_o = pG2P2WidthReg;
  383. assign PG2P3WidthReg_o = pG2P3WidthReg;
  384. assign PG2P123WidthReg_o = pG2P123WidthReg;
  385. //PG3 Regs
  386. assign PG3P1DelayReg_o = pG3P1DelayReg;
  387. assign PG3P2DelayReg_o = pG3P2DelayReg;
  388. assign PG3P3DelayReg_o = pG3P3DelayReg;
  389. assign PG3P123DelayReg_o = pG3P123DelayReg;
  390. assign PG3P1WidthReg_o = pG3P1WidthReg;
  391. assign PG3P2WidthReg_o = pG3P2WidthReg;
  392. assign PG3P3WidthReg_o = pG3P3WidthReg;
  393. assign PG3P123WidthReg_o = pG3P123WidthReg;
  394. //PG4 Regs
  395. assign PG4P1DelayReg_o = pG4P1DelayReg;
  396. assign PG4P2DelayReg_o = pG4P2DelayReg;
  397. assign PG4P3DelayReg_o = pG4P3DelayReg;
  398. assign PG4P123DelayReg_o = pG4P123DelayReg;
  399. assign PG4P1WidthReg_o = pG4P1WidthReg;
  400. assign PG4P2WidthReg_o = pG4P2WidthReg;
  401. assign PG4P3WidthReg_o = pG4P3WidthReg;
  402. assign PG4P123WidthReg_o = pG4P123WidthReg;
  403. //PG5 Regs
  404. assign PG5P1DelayReg_o = pG5P1DelayReg;
  405. assign PG5P2DelayReg_o = pG5P2DelayReg;
  406. assign PG5P3DelayReg_o = pG5P3DelayReg;
  407. assign PG5P123DelayReg_o = pG5P123DelayReg;
  408. assign PG5P1WidthReg_o = pG5P1WidthReg;
  409. assign PG5P2WidthReg_o = pG5P2WidthReg;
  410. assign PG5P3WidthReg_o = pG5P3WidthReg;
  411. assign PG5P123WidthReg_o = pG5P123WidthReg;
  412. //PG6 Regs
  413. assign PG6P1DelayReg_o = pG6P1DelayReg;
  414. assign PG6P2DelayReg_o = pG6P2DelayReg;
  415. assign PG6P3DelayReg_o = pG6P3DelayReg;
  416. assign PG6P123DelayReg_o = pG6P123DelayReg;
  417. assign PG6P1WidthReg_o = pG6P1WidthReg;
  418. assign PG6P2WidthReg_o = pG6P2WidthReg;
  419. assign PG6P3WidthReg_o = pG6P3WidthReg;
  420. assign PG6P123WidthReg_o = pG6P123WidthReg;
  421. //PG7 Regs
  422. assign PG7P1DelayReg_o = pG7P1DelayReg;
  423. assign PG7P2DelayReg_o = pG7P2DelayReg;
  424. assign PG7P3DelayReg_o = pG7P3DelayReg;
  425. assign PG7P123DelayReg_o = pG7P123DelayReg;
  426. assign PG7P1WidthReg_o = pG7P1WidthReg;
  427. assign PG7P2WidthReg_o = pG7P2WidthReg;
  428. assign PG7P3WidthReg_o = pG7P3WidthReg;
  429. assign PG7P123WidthReg_o = pG7P123WidthReg;
  430. assign MeasNum1Reg_o = measNum1Reg;
  431. assign MeasNum2Reg_o = measNum2Reg;
  432. assign PgMode0Reg_o = pGMode0Reg;
  433. assign PgMode1Reg_o = pGMode1Reg;
  434. assign MuxCtrl1Reg_o = muxCtrl1Reg;
  435. assign MuxCtrl2Reg_o = muxCtrl2Reg;
  436. assign MuxCtrl3Reg_o = muxCtrl3Reg;
  437. assign MuxCtrl4Reg_o = muxCtrl4Reg;
  438. assign AnsDataReg_o = ansReg;
  439. //================================================================================
  440. // CODING
  441. //================================================================================
  442. always @(posedge Clk_i) begin
  443. if (!Rst_i) begin
  444. if (Val_i) begin
  445. case (Data_i[CmdRegWidth-2-:HeaderWidth])
  446. GainCtrlRegAddr: begin
  447. gainCtrlReg <= Data_i [CmdDataRegWith-1:0];
  448. end
  449. GainLowThreshT1RegAddr: begin
  450. gainLowThreshT1Reg <= Data_i [CmdDataRegWith-1:0];
  451. end
  452. GainHighThreshT1RegAddr:begin
  453. gainHighThreshT1Reg <= Data_i [CmdDataRegWith-1:0];
  454. end
  455. GainLowThreshR1RegAddr: begin
  456. gainLowThreshR1Reg <= Data_i [CmdDataRegWith-1:0];
  457. end
  458. GainHighThreshR1RegAddr:begin
  459. gainHighThreshR1Reg <= Data_i [CmdDataRegWith-1:0];
  460. end
  461. GainLowThreshT2RegAddr: begin
  462. gainLowThreshT2Reg <= Data_i [CmdDataRegWith-1:0];
  463. end
  464. GainHighThreshT2RegAddr:begin
  465. gainHighThreshT2Reg <= Data_i [CmdDataRegWith-1:0];
  466. end
  467. GainLowThreshR2RegAddr: begin
  468. gainLowThreshR2Reg <= Data_i [CmdDataRegWith-1:0];
  469. end
  470. GainHighThreshR2RegAddr:begin
  471. gainHighThreshR2Reg <= Data_i [CmdDataRegWith-1:0];
  472. end
  473. OverThreshRegAddr: begin
  474. overThreshReg <= Data_i [CmdDataRegWith-1:0];
  475. end
  476. DitherCtrlRegAddr: begin
  477. ditherCtrlReg <= Data_i [CmdDataRegWith-1:0];
  478. end
  479. MeasCtrlRegAddr: begin
  480. measCtrlReg <= Data_i [CmdDataRegWith-1:0];
  481. end
  482. AdcDirectRd0RegAddr: begin
  483. adcDirectRd0Reg <= Data_i [CmdDataRegWith-1:0];
  484. end
  485. AdcDirectRd1RegAddr: begin
  486. adcDirectRd1Reg <= Data_i [CmdDataRegWith-1:0];
  487. end
  488. IfFtwRegLAddr: begin
  489. ifFtwRegL <= Data_i [CmdDataRegWith-1:0];
  490. end
  491. IfFtwRegHAddr: begin
  492. ifFtwRegH <= Data_i [CmdDataRegWith-1:0];
  493. end
  494. FilterCorrCoefLAddr: begin
  495. filterCorrCoefRegL <= Data_i [CmdDataRegWith-1:0];
  496. end
  497. FilterCorrCoefHAddr: begin
  498. filterCorrCoefRegH <= Data_i [CmdDataRegWith-1:0];
  499. end
  500. DspTrigInAddr: begin
  501. dspTrigInReg <= Data_i [CmdDataRegWith-1:0];
  502. end
  503. DspTrigOutAddr: begin
  504. dspTrigOutReg <= Data_i [CmdDataRegWith-1:0];
  505. end
  506. PG1P1DelayRegAddr: begin
  507. pG1P1DelayReg <= Data_i [CmdDataRegWith-1:0];
  508. end
  509. PG1P2DelayRegAddr: begin
  510. pG1P2DelayReg <= Data_i [CmdDataRegWith-1:0];
  511. end
  512. PG1P3DelayRegAddr: begin
  513. pG1P3DelayReg <= Data_i [CmdDataRegWith-1:0];
  514. end
  515. PG1P123DelayRegAddr: begin
  516. pG1P123DelayReg <= Data_i [CmdDataRegWith-1:0];
  517. end
  518. PG1P1WidthRegAddr: begin
  519. pG1P1WidthReg <= Data_i [CmdDataRegWith-1:0];
  520. end
  521. PG1P2WidthRegAddr: begin
  522. pG1P2WidthReg <= Data_i [CmdDataRegWith-1:0];
  523. end
  524. PG1P3WidthRegAddr: begin
  525. pG1P3WidthReg <= Data_i [CmdDataRegWith-1:0];
  526. end
  527. PG1P123WidthRegAddr: begin
  528. pG1P123WidthReg <= Data_i [CmdDataRegWith-1:0];
  529. end
  530. PG2P1DelayRegAddr: begin
  531. pG2P1DelayReg <= Data_i [CmdDataRegWith-1:0];
  532. end
  533. PG2P2DelayRegAddr: begin
  534. pG2P2DelayReg <= Data_i [CmdDataRegWith-1:0];
  535. end
  536. PG2P3DelayRegAddr: begin
  537. pG2P3DelayReg <= Data_i [CmdDataRegWith-1:0];
  538. end
  539. PG2P123DelayRegAddr: begin
  540. pG2P123DelayReg <= Data_i [CmdDataRegWith-1:0];
  541. end
  542. PG2P1WidthRegAddr: begin
  543. pG2P1WidthReg <= Data_i [CmdDataRegWith-1:0];
  544. end
  545. PG2P2WidthRegAddr: begin
  546. pG2P2WidthReg <= Data_i [CmdDataRegWith-1:0];
  547. end
  548. PG2P3WidthRegAddr: begin
  549. pG2P3WidthReg <= Data_i [CmdDataRegWith-1:0];
  550. end
  551. PG2P123WidthRegAddr: begin
  552. pG2P123WidthReg <= Data_i [CmdDataRegWith-1:0];
  553. end
  554. PG3P1DelayRegAddr: begin
  555. pG3P1DelayReg <= Data_i [CmdDataRegWith-1:0];
  556. end
  557. PG3P2DelayRegAddr: begin
  558. pG3P2DelayReg <= Data_i [CmdDataRegWith-1:0];
  559. end
  560. PG3P3DelayRegAddr: begin
  561. pG3P3DelayReg <= Data_i [CmdDataRegWith-1:0];
  562. end
  563. PG3P123DelayRegAddr: begin
  564. pG3P123DelayReg <= Data_i [CmdDataRegWith-1:0];
  565. end
  566. PG3P1WidthRegAddr: begin
  567. pG3P1WidthReg <= Data_i [CmdDataRegWith-1:0];
  568. end
  569. PG3P2WidthRegAddr: begin
  570. pG3P2WidthReg <= Data_i [CmdDataRegWith-1:0];
  571. end
  572. PG3P3WidthRegAddr: begin
  573. pG3P3WidthReg <= Data_i [CmdDataRegWith-1:0];
  574. end
  575. PG3P123WidthRegAddr: begin
  576. pG3P123WidthReg <= Data_i [CmdDataRegWith-1:0];
  577. end
  578. PG4P1DelayRegAddr: begin
  579. pG4P1DelayReg <= Data_i [CmdDataRegWith-1:0];
  580. end
  581. PG4P2DelayRegAddr: begin
  582. pG4P2DelayReg <= Data_i [CmdDataRegWith-1:0];
  583. end
  584. PG4P3DelayRegAddr: begin
  585. pG4P3DelayReg <= Data_i [CmdDataRegWith-1:0];
  586. end
  587. PG4P123DelayRegAddr: begin
  588. pG4P123DelayReg <= Data_i [CmdDataRegWith-1:0];
  589. end
  590. PG4P1WidthRegAddr: begin
  591. pG4P1WidthReg <= Data_i [CmdDataRegWith-1:0];
  592. end
  593. PG4P2WidthRegAddr: begin
  594. pG4P2WidthReg <= Data_i [CmdDataRegWith-1:0];
  595. end
  596. PG4P3WidthRegAddr: begin
  597. pG4P3WidthReg <= Data_i [CmdDataRegWith-1:0];
  598. end
  599. PG4P123WidthRegAddr: begin
  600. pG4P123WidthReg <= Data_i [CmdDataRegWith-1:0];
  601. end
  602. PG5P1DelayRegAddr: begin
  603. pG5P1DelayReg <= Data_i [CmdDataRegWith-1:0];
  604. end
  605. PG5P2DelayRegAddr: begin
  606. pG5P2DelayReg <= Data_i [CmdDataRegWith-1:0];
  607. end
  608. PG5P3DelayRegAddr: begin
  609. pG5P3DelayReg <= Data_i [CmdDataRegWith-1:0];
  610. end
  611. PG5P123DelayRegAddr: begin
  612. pG5P123DelayReg <= Data_i [CmdDataRegWith-1:0];
  613. end
  614. PG5P1WidthRegAddr: begin
  615. pG5P1WidthReg <= Data_i [CmdDataRegWith-1:0];
  616. end
  617. PG5P2WidthRegAddr: begin
  618. pG5P2WidthReg <= Data_i [CmdDataRegWith-1:0];
  619. end
  620. PG5P3WidthRegAddr: begin
  621. pG5P3WidthReg <= Data_i [CmdDataRegWith-1:0];
  622. end
  623. PG5P123WidthRegAddr: begin
  624. pG5P123WidthReg <= Data_i [CmdDataRegWith-1:0];
  625. end
  626. PG6P1DelayRegAddr: begin
  627. pG6P1DelayReg <= Data_i [CmdDataRegWith-1:0];
  628. end
  629. PG6P2DelayRegAddr: begin
  630. pG6P2DelayReg <= Data_i [CmdDataRegWith-1:0];
  631. end
  632. PG6P3DelayRegAddr: begin
  633. pG6P3DelayReg <= Data_i [CmdDataRegWith-1:0];
  634. end
  635. PG6P123DelayRegAddr: begin
  636. pG6P123DelayReg <= Data_i [CmdDataRegWith-1:0];
  637. end
  638. PG6P1WidthRegAddr: begin
  639. pG6P1WidthReg <= Data_i [CmdDataRegWith-1:0];
  640. end
  641. PG6P2WidthRegAddr: begin
  642. pG6P2WidthReg <= Data_i [CmdDataRegWith-1:0];
  643. end
  644. PG6P3WidthRegAddr: begin
  645. pG6P3WidthReg <= Data_i [CmdDataRegWith-1:0];
  646. end
  647. PG6P123WidthRegAddr: begin
  648. pG6P123WidthReg <= Data_i [CmdDataRegWith-1:0];
  649. end
  650. PG7P1DelayRegAddr: begin
  651. pG7P1DelayReg <= Data_i [CmdDataRegWith-1:0];
  652. end
  653. PG7P2DelayRegAddr: begin
  654. pG7P2DelayReg <= Data_i [CmdDataRegWith-1:0];
  655. end
  656. PG7P3DelayRegAddr: begin
  657. pG7P3DelayReg <= Data_i [CmdDataRegWith-1:0];
  658. end
  659. PG7P123DelayRegAddr: begin
  660. pG7P123DelayReg <= Data_i [CmdDataRegWith-1:0];
  661. end
  662. PG7P1WidthRegAddr: begin
  663. pG7P1WidthReg <= Data_i [CmdDataRegWith-1:0];
  664. end
  665. PG7P2WidthRegAddr: begin
  666. pG7P2WidthReg <= Data_i [CmdDataRegWith-1:0];
  667. end
  668. PG7P3WidthRegAddr: begin
  669. pG7P3WidthReg <= Data_i [CmdDataRegWith-1:0];
  670. end
  671. PG7P123WidthRegAddr: begin
  672. pG7P123WidthReg <= Data_i [CmdDataRegWith-1:0];
  673. end
  674. MeasNum1RegAddr: begin
  675. measNum1Reg <= Data_i [CmdDataRegWith-1:0];
  676. end
  677. MeasNum2RegAddr: begin
  678. measNum2Reg <= Data_i [CmdDataRegWith-1:0];
  679. end
  680. PGMode0RegAddr: begin
  681. pGMode0Reg <= Data_i [CmdDataRegWith-1:0];
  682. end
  683. // PGMode1RegAddr: begin
  684. // pGMode1Reg <= Data_i [CmdDataRegWith-1:0];
  685. // end
  686. MuxCtrl1RegAddr: begin
  687. muxCtrl1Reg <= Data_i [CmdDataRegWith-1:0];
  688. end
  689. MuxCtrl2RegAddr: begin
  690. muxCtrl2Reg <= Data_i [CmdDataRegWith-1:0];
  691. end
  692. MuxCtrl3RegAddr: begin
  693. muxCtrl3Reg <= Data_i [CmdDataRegWith-1:0];
  694. end
  695. MuxCtrl4RegAddr: begin
  696. muxCtrl4Reg <= Data_i [CmdDataRegWith-1:0];
  697. end
  698. DspTrigIn1Addr: begin
  699. dspTrigIn1Reg <= Data_i [CmdDataRegWith-1:0];
  700. end
  701. DspTrigIn2Addr: begin
  702. dspTrigIn2Reg <= Data_i [CmdDataRegWith-1:0];
  703. end
  704. DspTrigOut1Addr: begin
  705. dspTrigOut1Reg <= Data_i [CmdDataRegWith-1:0];
  706. end
  707. DspTrigOut2Addr: begin
  708. dspTrigOut2Reg <= Data_i [CmdDataRegWith-1:0];
  709. end
  710. endcase
  711. end
  712. end else begin
  713. gainCtrlReg <= {CmdDataRegWith{1'b0}};
  714. gainLowThreshT1Reg <= {CmdDataRegWith{1'b0}};
  715. gainHighThreshT1Reg <= {CmdDataRegWith{1'b0}};
  716. gainLowThreshR1Reg <= {CmdDataRegWith{1'b0}};
  717. gainHighThreshR1Reg <= {CmdDataRegWith{1'b0}};
  718. gainLowThreshT2Reg <= {CmdDataRegWith{1'b0}};
  719. gainHighThreshT2Reg <= {CmdDataRegWith{1'b0}};
  720. gainLowThreshR2Reg <= {CmdDataRegWith{1'b0}};
  721. gainHighThreshR2Reg <= {CmdDataRegWith{1'b0}};
  722. overThreshReg <= {CmdDataRegWith{1'b0}};
  723. ditherCtrlReg <= {CmdDataRegWith{1'b0}};
  724. measCtrlReg <= {CmdDataRegWith{1'b0}};
  725. adcDirectRd0Reg <= {CmdDataRegWith{1'b0}};
  726. adcDirectRd1Reg <= {CmdDataRegWith{1'b0}};
  727. ifFtwRegL <= {CmdDataRegWith{1'b0}};
  728. ifFtwRegH <= {CmdDataRegWith{1'b0}};
  729. filterCorrCoefRegL <= {CmdDataRegWith{1'b0}};
  730. filterCorrCoefRegH <= {CmdDataRegWith{1'b0}};
  731. dspTrigInReg <= {CmdDataRegWith{1'b0}};
  732. dspTrigOutReg <= {CmdDataRegWith{1'b0}};
  733. dspTrigIn1Reg <= {CmdDataRegWith{1'b0}};
  734. dspTrigIn2Reg <= {CmdDataRegWith{1'b0}};
  735. dspTrigOut1Reg <= {CmdDataRegWith{1'b0}};
  736. dspTrigOut2Reg <= {CmdDataRegWith{1'b0}};
  737. pG1P1DelayReg <= {CmdDataRegWith{1'b0}};
  738. pG1P2DelayReg <= {CmdDataRegWith{1'b0}};
  739. pG1P3DelayReg <= {CmdDataRegWith{1'b0}};
  740. pG1P123DelayReg <= {CmdDataRegWith{1'b0}};
  741. pG1P1WidthReg <= {CmdDataRegWith{1'b0}};
  742. pG1P2WidthReg <= {CmdDataRegWith{1'b0}};
  743. pG1P3WidthReg <= {CmdDataRegWith{1'b0}};
  744. pG1P123WidthReg <= {CmdDataRegWith{1'b0}};
  745. pG2P1DelayReg <= {CmdDataRegWith{1'b0}};
  746. pG2P2DelayReg <= {CmdDataRegWith{1'b0}};
  747. pG2P3DelayReg <= {CmdDataRegWith{1'b0}};
  748. pG2P123DelayReg <= {CmdDataRegWith{1'b0}};
  749. pG2P1WidthReg <= {CmdDataRegWith{1'b0}};
  750. pG2P2WidthReg <= {CmdDataRegWith{1'b0}};
  751. pG2P3WidthReg <= {CmdDataRegWith{1'b0}};
  752. pG2P123WidthReg <= {CmdDataRegWith{1'b0}};
  753. pG3P1DelayReg <= {CmdDataRegWith{1'b0}};
  754. pG3P2DelayReg <= {CmdDataRegWith{1'b0}};
  755. pG3P3DelayReg <= {CmdDataRegWith{1'b0}};
  756. pG3P123DelayReg <= {CmdDataRegWith{1'b0}};
  757. pG3P1WidthReg <= {CmdDataRegWith{1'b0}};
  758. pG3P2WidthReg <= {CmdDataRegWith{1'b0}};
  759. pG3P3WidthReg <= {CmdDataRegWith{1'b0}};
  760. pG3P123WidthReg <= {CmdDataRegWith{1'b0}};
  761. pG4P1DelayReg <= {CmdDataRegWith{1'b0}};
  762. pG4P2DelayReg <= {CmdDataRegWith{1'b0}};
  763. pG4P3DelayReg <= {CmdDataRegWith{1'b0}};
  764. pG4P123DelayReg <= {CmdDataRegWith{1'b0}};
  765. pG4P1WidthReg <= {CmdDataRegWith{1'b0}};
  766. pG4P2WidthReg <= {CmdDataRegWith{1'b0}};
  767. pG4P3WidthReg <= {CmdDataRegWith{1'b0}};
  768. pG4P123WidthReg <= {CmdDataRegWith{1'b0}};
  769. pG5P1DelayReg <= {CmdDataRegWith{1'b0}};
  770. pG5P2DelayReg <= {CmdDataRegWith{1'b0}};
  771. pG5P3DelayReg <= {CmdDataRegWith{1'b0}};
  772. pG5P123DelayReg <= {CmdDataRegWith{1'b0}};
  773. pG5P1WidthReg <= {CmdDataRegWith{1'b0}};
  774. pG5P2WidthReg <= {CmdDataRegWith{1'b0}};
  775. pG5P3WidthReg <= {CmdDataRegWith{1'b0}};
  776. pG5P123WidthReg <= {CmdDataRegWith{1'b0}};
  777. pG6P1DelayReg <= {CmdDataRegWith{1'b0}};
  778. pG6P2DelayReg <= {CmdDataRegWith{1'b0}};
  779. pG6P3DelayReg <= {CmdDataRegWith{1'b0}};
  780. pG6P123DelayReg <= {CmdDataRegWith{1'b0}};
  781. pG6P1WidthReg <= {CmdDataRegWith{1'b0}};
  782. pG6P2WidthReg <= {CmdDataRegWith{1'b0}};
  783. pG6P3WidthReg <= {CmdDataRegWith{1'b0}};
  784. pG6P123WidthReg <= {CmdDataRegWith{1'b0}};
  785. pG7P1DelayReg <= {CmdDataRegWith{1'b0}};
  786. pG7P2DelayReg <= {CmdDataRegWith{1'b0}};
  787. pG7P3DelayReg <= {CmdDataRegWith{1'b0}};
  788. pG7P123DelayReg <= {CmdDataRegWith{1'b0}};
  789. pG7P1WidthReg <= {CmdDataRegWith{1'b0}};
  790. pG7P2WidthReg <= {CmdDataRegWith{1'b0}};
  791. pG7P3WidthReg <= {CmdDataRegWith{1'b0}};
  792. pG7P123WidthReg <= {CmdDataRegWith{1'b0}};
  793. measNum1Reg <= {CmdDataRegWith{1'b0}};
  794. measNum2Reg <= {CmdDataRegWith{1'b0}};
  795. pGMode0Reg <= {CmdDataRegWith{1'b0}};
  796. // pGMode1Reg <= {CmdDataRegWith{1'b0}};
  797. muxCtrl1Reg <= {CmdDataRegWith{1'b0}};
  798. muxCtrl2Reg <= {CmdDataRegWith{1'b0}};
  799. muxCtrl3Reg <= {CmdDataRegWith{1'b0}};
  800. muxCtrl4Reg <= {CmdDataRegWith{1'b0}};
  801. end
  802. end
  803. always @(posedge Clk_i) begin
  804. if (!Rst_i) begin
  805. if (Val_i) begin
  806. if ((Data_i[CmdRegWidth-2-:HeaderWidth]) == PGMode1RegAddr) begin
  807. pGMode1Reg <= Data_i [CmdDataRegWith-1:0];
  808. end
  809. end else begin
  810. if (PGenRstDone_i) begin
  811. pGMode1Reg <= {pGMode1Reg[CmdDataRegWith-1:7],7'b0};
  812. end
  813. end
  814. end else begin
  815. pGMode1Reg <= {CmdDataRegWith{1'b0}};
  816. end
  817. end
  818. always @(posedge Clk_i) begin
  819. if (!Rst_i) begin
  820. if (Val_i) begin
  821. case (Data_i[CmdRegWidth-2-:HeaderWidth])
  822. AdcCtrlRegAddr: begin
  823. adcCtrlReg <= Data_i [CmdDataRegWith-1:0];
  824. end
  825. endcase
  826. end else if (CalDone_i) begin
  827. adcCtrlReg [1] <= 1'b0;
  828. end
  829. end else begin
  830. adcCtrlReg <= {CmdDataRegWith{1'b0}};
  831. end
  832. end
  833. always @(posedge Clk_i) begin
  834. if (!Rst_i) begin
  835. overCtrlReg <= OverCtrlReg_i;
  836. end
  837. end
  838. always @(*) begin
  839. if (!Rst_i) begin
  840. case (AnsAddr_i)
  841. GainCtrlRegAddr: begin
  842. ansReg = gainCtrlReg;
  843. end
  844. GainLowThreshT1RegAddr: begin
  845. ansReg = gainLowThreshT1Reg;
  846. end
  847. GainHighThreshT1RegAddr:begin
  848. ansReg = gainHighThreshT1Reg;
  849. end
  850. GainLowThreshR1RegAddr: begin
  851. ansReg = gainLowThreshR1Reg;
  852. end
  853. GainHighThreshR1RegAddr:begin
  854. ansReg = gainHighThreshR1Reg;
  855. end
  856. GainLowThreshT2RegAddr: begin
  857. ansReg = gainLowThreshT2Reg;
  858. end
  859. GainHighThreshT2RegAddr:begin
  860. ansReg = gainHighThreshT2Reg;
  861. end
  862. GainLowThreshR2RegAddr: begin
  863. ansReg = gainLowThreshR2Reg;
  864. end
  865. GainHighThreshR2RegAddr:begin
  866. ansReg = gainHighThreshR2Reg;
  867. end
  868. OverCtrlRegAddr :begin
  869. ansReg = overCtrlReg;
  870. end
  871. OverThreshRegAddr: begin
  872. ansReg = overThreshReg;
  873. end
  874. DitherCtrlRegAddr: begin
  875. ansReg = ditherCtrlReg;
  876. end
  877. MeasCtrlRegAddr: begin
  878. ansReg = measCtrlReg;
  879. end
  880. AdcCtrlRegAddr: begin
  881. ansReg = adcCtrlReg;
  882. end
  883. AdcDirectRd0RegAddr: begin
  884. ansReg = adcDirectRd0Reg;
  885. end
  886. AdcDirectRd1RegAddr: begin
  887. ansReg = adcDirectRd1Reg;
  888. end
  889. IfFtwRegLAddr: begin
  890. ansReg = ifFtwRegL;
  891. end
  892. IfFtwRegHAddr: begin
  893. ansReg = ifFtwRegH;
  894. end
  895. FilterCorrCoefLAddr: begin
  896. ansReg = filterCorrCoefRegL;
  897. end
  898. FilterCorrCoefHAddr: begin
  899. ansReg = filterCorrCoefRegH;
  900. end
  901. DspTrigInAddr: begin
  902. ansReg = dspTrigInReg;
  903. end
  904. DspTrigOutAddr: begin
  905. ansReg = dspTrigOutReg;
  906. end
  907. DspTrigIn1Addr: begin
  908. ansReg = dspTrigIn1Reg;
  909. end
  910. DspTrigIn2Addr: begin
  911. ansReg = dspTrigIn2Reg;
  912. end
  913. DspTrigOut1Addr: begin
  914. ansReg = dspTrigOut1Reg;
  915. end
  916. DspTrigOut2Addr: begin
  917. ansReg = dspTrigOut2Reg;
  918. end
  919. default: begin
  920. ansReg = 0;
  921. end
  922. endcase
  923. end else begin
  924. ansReg = {CmdDataRegWith{1'b0}};
  925. end
  926. end
  927. endmodule