RegMap.v 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516
  1. module RegMap #(
  2. parameter CmdRegWidth = 32,
  3. parameter AddrRegWidth = 12
  4. )
  5. (
  6. input [CmdRegWidth/2-1:0] Data_i,
  7. input [AddrRegWidth-1:0] Addr_i,
  8. input Val_i,
  9. input Clk_i,
  10. input Rst_i,
  11. input [1:0] SmcBe_i,
  12. output [CmdRegWidth/2-1:0] Spi0CtrlReg_o,
  13. output [CmdRegWidth/2-1:0] Spi0ClkReg_o,
  14. output [CmdRegWidth/2-1:0] Spi0CsDelayReg_o,
  15. output [CmdRegWidth/2-1:0] Spi0CsCtrlReg_o,
  16. output [CmdRegWidth/2-1:0] Spi0TxFifoCtrlReg_o,
  17. output [CmdRegWidth/2-1:0] Spi0RxFifoCtrlReg_o,
  18. output [CmdRegWidth/2-1:0] Spi0TxFifoReg_o,
  19. output [CmdRegWidth/2-1:0] Spi0RxFifoReg_o,
  20. output [CmdRegWidth/2-1:0] Spi1CtrlReg_o,
  21. output [CmdRegWidth/2-1:0] Spi1ClkReg_o,
  22. output [CmdRegWidth/2-1:0] Spi1CsDelayReg_o,
  23. output [CmdRegWidth/2-1:0] Spi1CsCtrlReg_o,
  24. output [CmdRegWidth/2-1:0] Spi1TxFifoCtrlReg_o,
  25. output [CmdRegWidth/2-1:0] Spi1RxFifoCtrlReg_o,
  26. output [CmdRegWidth/2-1:0] Spi1TxFifoReg_o,
  27. output [CmdRegWidth/2-1:0] Spi1RxFifoReg_o,
  28. output [CmdRegWidth/2-1:0] Spi2CtrlReg_o,
  29. output [CmdRegWidth/2-1:0] Spi2ClkReg_o,
  30. output [CmdRegWidth/2-1:0] Spi2CsDelayReg_o,
  31. output [CmdRegWidth/2-1:0] Spi2CsCtrlReg_o,
  32. output [CmdRegWidth/2-1:0] Spi2TxFifoCtrlReg_o,
  33. output [CmdRegWidth/2-1:0] Spi2RxFifoCtrlReg_o,
  34. output [CmdRegWidth/2-1:0] Spi2TxFifoReg_o,
  35. output [CmdRegWidth/2-1:0] Spi2RxFifoReg_o,
  36. output [CmdRegWidth/2-1:0] Spi3CtrlReg_o,
  37. output [CmdRegWidth/2-1:0] Spi3ClkReg_o,
  38. output [CmdRegWidth/2-1:0] Spi3CsDelayReg_o,
  39. output [CmdRegWidth/2-1:0] Spi3CsCtrlReg_o,
  40. output [CmdRegWidth/2-1:0] Spi3TxFifoCtrlReg_o,
  41. output [CmdRegWidth/2-1:0] Spi3RxFifoCtrlReg_o,
  42. output [CmdRegWidth/2-1:0] Spi3TxFifoReg_o,
  43. output [CmdRegWidth/2-1:0] Spi3RxFifoReg_o,
  44. output [CmdRegWidth/2-1:0] Spi4CtrlReg_o,
  45. output [CmdRegWidth/2-1:0] Spi4ClkReg_o,
  46. output [CmdRegWidth/2-1:0] Spi4CsDelayReg_o,
  47. output [CmdRegWidth/2-1:0] Spi4CsCtrlReg_o,
  48. output [CmdRegWidth/2-1:0] Spi4TxFifoCtrlReg_o,
  49. output [CmdRegWidth/2-1:0] Spi4RxFifoCtrlReg_o,
  50. output [CmdRegWidth/2-1:0] Spi4TxFifoReg_o,
  51. output [CmdRegWidth/2-1:0] Spi4RxFifoReg_o,
  52. output [CmdRegWidth/2-1:0] Spi5CtrlReg_o,
  53. output [CmdRegWidth/2-1:0] Spi5ClkReg_o,
  54. output [CmdRegWidth/2-1:0] Spi5CsDelayReg_o,
  55. output [CmdRegWidth/2-1:0] Spi5CsCtrlReg_o,
  56. output [CmdRegWidth/2-1:0] Spi5TxFifoCtrlReg_o,
  57. output [CmdRegWidth/2-1:0] Spi5RxFifoCtrlReg_o,
  58. output [CmdRegWidth/2-1:0] Spi5TxFifoReg_o,
  59. output [CmdRegWidth/2-1:0] Spi5RxFifoReg_o,
  60. output [CmdRegWidth/2-1:0] Spi6CtrlReg_o,
  61. output [CmdRegWidth/2-1:0] Spi6ClkReg_o,
  62. output [CmdRegWidth/2-1:0] Spi6CsDelayReg_o,
  63. output [CmdRegWidth/2-1:0] Spi6CsCtrlReg_o,
  64. output [CmdRegWidth/2-1:0] Spi6TxFifoCtrlReg_o,
  65. output [CmdRegWidth/2-1:0] Spi6RxFifoCtrlReg_o,
  66. output [CmdRegWidth/2-1:0] Spi6TxFifoReg_o,
  67. output [CmdRegWidth/2-1:0] Spi6RxFifoReg_o,
  68. output [CmdRegWidth/2-1:0] SpiTxRxEnReg_o,
  69. output [CmdRegWidth-1:0] GPIOAReg_o,
  70. output [CmdRegWidth/2-1:0] AnsDataReg_o,
  71. output Led_o
  72. );
  73. //================================================================================
  74. // REG/WIRE
  75. //================================================================================
  76. reg [CmdRegWidth/2-1:0] Spi0CtrlReg;
  77. reg [CmdRegWidth/2-1:0] Spi0ClkReg;
  78. reg [CmdRegWidth/2-1:0] Spi0CsDelayReg;
  79. reg [CmdRegWidth/2-1:0] Spi0CsCtrlReg;
  80. reg [CmdRegWidth/2-1:0] Spi0TxFifoCtrlReg;
  81. reg [CmdRegWidth/2-1:0] Spi0RxFifoCtrlReg;
  82. reg [CmdRegWidth/2-1:0] Spi0TxFifoReg;
  83. reg [CmdRegWidth/2-1:0] Spi0RxFifoReg;
  84. reg [CmdRegWidth/2-1:0] Spi1CtrlReg;
  85. reg [CmdRegWidth/2-1:0] Spi1ClkReg;
  86. reg [CmdRegWidth/2-1:0] Spi1CsDelayReg;
  87. reg [CmdRegWidth/2-1:0] Spi1CsCtrlReg;
  88. reg [CmdRegWidth/2-1:0] Spi1TxFifoCtrlReg;
  89. reg [CmdRegWidth/2-1:0] Spi1RxFifoCtrlReg;
  90. reg [CmdRegWidth/2-1:0] Spi1TxFifoReg;
  91. reg [CmdRegWidth/2-1:0] Spi1RxFifoReg;
  92. reg [CmdRegWidth/2-1:0] Spi2CtrlReg;
  93. reg [CmdRegWidth/2-1:0] Spi2ClkReg;
  94. reg [CmdRegWidth/2-1:0] Spi2CsDelayReg;
  95. reg [CmdRegWidth/2-1:0] Spi2CsCtrlReg;
  96. reg [CmdRegWidth/2-1:0] Spi2TxFifoCtrlReg;
  97. reg [CmdRegWidth/2-1:0] Spi2RxFifoCtrlReg;
  98. reg [CmdRegWidth/2-1:0] Spi2TxFifoReg;
  99. reg [CmdRegWidth/2-1:0] Spi2RxFifoReg;
  100. reg [CmdRegWidth/2-1:0] Spi3CtrlReg;
  101. reg [CmdRegWidth/2-1:0] Spi3ClkReg;
  102. reg [CmdRegWidth/2-1:0] Spi3CsDelayReg;
  103. reg [CmdRegWidth/2-1:0] Spi3CsCtrlReg;
  104. reg [CmdRegWidth/2-1:0] Spi3TxFifoCtrlReg;
  105. reg [CmdRegWidth/2-1:0] Spi3RxFifoCtrlReg;
  106. reg [CmdRegWidth/2-1:0] Spi3TxFifoReg;
  107. reg [CmdRegWidth/2-1:0] Spi3RxFifoReg;
  108. reg [CmdRegWidth/2-1:0] Spi4CtrlReg;
  109. reg [CmdRegWidth/2-1:0] Spi4ClkReg;
  110. reg [CmdRegWidth/2-1:0] Spi4CsDelayReg;
  111. reg [CmdRegWidth/2-1:0] Spi4CsCtrlReg;
  112. reg [CmdRegWidth/2-1:0] Spi4TxFifoCtrlReg;
  113. reg [CmdRegWidth/2-1:0] Spi4RxFifoCtrlReg;
  114. reg [CmdRegWidth/2-1:0] Spi4TxFifoReg;
  115. reg [CmdRegWidth/2-1:0] Spi4RxFifoReg;
  116. reg [CmdRegWidth/2-1:0] Spi5CtrlReg;
  117. reg [CmdRegWidth/2-1:0] Spi5ClkReg;
  118. reg [CmdRegWidth/2-1:0] Spi5CsDelayReg;
  119. reg [CmdRegWidth/2-1:0] Spi5CsCtrlReg;
  120. reg [CmdRegWidth/2-1:0] Spi5TxFifoCtrlReg;
  121. reg [CmdRegWidth/2-1:0] Spi5RxFifoCtrlReg;
  122. reg [CmdRegWidth/2-1:0] Spi5TxFifoReg;
  123. reg [CmdRegWidth/2-1:0] Spi5RxFifoReg;
  124. reg [CmdRegWidth/2-1:0] Spi6CtrlReg;
  125. reg [CmdRegWidth/2-1:0] Spi6ClkReg;
  126. reg [CmdRegWidth/2-1:0] Spi6CsDelayReg;
  127. reg [CmdRegWidth/2-1:0] Spi6CsCtrlReg;
  128. reg [CmdRegWidth/2-1:0] Spi6TxFifoCtrlReg;
  129. reg [CmdRegWidth/2-1:0] Spi6RxFifoCtrlReg;
  130. reg [CmdRegWidth/2-1:0] Spi6TxFifoReg;
  131. reg [CmdRegWidth/2-1:0] Spi6RxFifoReg;
  132. (* dont_touch = "yes" *)reg [CmdRegWidth/2-1:0] SpiTxRxEnReg;
  133. reg [CmdRegWidth/2-1:0] GPIOAReg;
  134. reg [CmdRegWidth/2-1:0] GPIOARegS;
  135. (* dont_touch = "yes" *)reg [CmdRegWidth/2-1:0] ansReg;
  136. (* dont_touch = "yes" *)reg [CmdRegWidth/2-1:0] LedReg;
  137. reg [1:0] beReg;
  138. //================================================================================
  139. // ASSIGNMENTS
  140. //================================================================================
  141. assign Spi0CtrlReg_o = Spi0CtrlReg;
  142. assign Spi0ClkReg_o = Spi0ClkReg;
  143. assign Spi0CsDelayReg_o = Spi0CsDelayReg;
  144. assign Spi0CsCtrlReg_o = Spi0CsCtrlReg;
  145. assign Spi0TxFifoCtrlReg_o = Spi0TxFifoCtrlReg;
  146. assign Spi0RxFifoCtrlReg_o = Spi0RxFifoCtrlReg;
  147. assign Spi0TxFifoReg_o = Spi0TxFifoReg;
  148. assign Spi0RxFifoReg_o = Spi0RxFifoReg;
  149. assign Spi1CtrlReg_o = Spi1CtrlReg;
  150. assign Spi1ClkReg_o = Spi1ClkReg;
  151. assign Spi1CsDelayReg_o = Spi1CsDelayReg;
  152. assign Spi1CsCtrlReg_o = Spi1CsCtrlReg;
  153. assign Spi1TxFifoCtrlReg_o = Spi1TxFifoCtrlReg;
  154. assign Spi1RxFifoCtrlReg_o = Spi1RxFifoCtrlReg;
  155. assign Spi1TxFifoReg_o = Spi1TxFifoReg;
  156. assign Spi1RxFifoReg_o = Spi1RxFifoReg;
  157. assign Spi2CtrlReg_o = Spi2CtrlReg;
  158. assign Spi2ClkReg_o = Spi2ClkReg;
  159. assign Spi2CsDelayReg_o = Spi2CsDelayReg;
  160. assign Spi2CsCtrlReg_o = Spi2CsCtrlReg;
  161. assign Spi2TxFifoCtrlReg_o = Spi2TxFifoCtrlReg;
  162. assign Spi2RxFifoCtrlReg_o = Spi2RxFifoCtrlReg;
  163. assign Spi2TxFifoReg_o = Spi2TxFifoReg;
  164. assign Spi2RxFifoReg_o = Spi2RxFifoReg;
  165. assign Spi3CtrlReg_o = Spi3CtrlReg;
  166. assign Spi3ClkReg_o = Spi3ClkReg;
  167. assign Spi3CsDelayReg_o = Spi3CsDelayReg;
  168. assign Spi3CsCtrlReg_o = Spi3CsCtrlReg;
  169. assign Spi3TxFifoCtrlReg_o = Spi3TxFifoCtrlReg;
  170. assign Spi3RxFifoCtrlReg_o = Spi3RxFifoCtrlReg;
  171. assign Spi3TxFifoReg_o = Spi3TxFifoReg;
  172. assign Spi3RxFifoReg_o = Spi3RxFifoReg;
  173. assign Spi4CtrlReg_o = Spi4CtrlReg;
  174. assign Spi4ClkReg_o = Spi4ClkReg;
  175. assign Spi4CsDelayReg_o = Spi4CsDelayReg;
  176. assign Spi4CsCtrlReg_o = Spi4CsCtrlReg;
  177. assign Spi4TxFifoCtrlReg_o = Spi4TxFifoCtrlReg;
  178. assign Spi4RxFifoCtrlReg_o = Spi4RxFifoCtrlReg;
  179. assign Spi4TxFifoReg_o = Spi4TxFifoReg;
  180. assign Spi4RxFifoReg_o = Spi4RxFifoReg;
  181. assign Spi5CtrlReg_o = Spi5CtrlReg;
  182. assign Spi5ClkReg_o = Spi5ClkReg;
  183. assign Spi5CsDelayReg_o = Spi5CsDelayReg;
  184. assign Spi5CsCtrlReg_o = Spi5CsCtrlReg;
  185. assign Spi5TxFifoCtrlReg_o = Spi5TxFifoCtrlReg;
  186. assign Spi5RxFifoCtrlReg_o = Spi5RxFifoCtrlReg;
  187. assign Spi5TxFifoReg_o = Spi5TxFifoReg;
  188. assign Spi5RxFifoReg_o = Spi5RxFifoReg;
  189. assign Spi6CtrlReg_o = Spi6CtrlReg;
  190. assign Spi6ClkReg_o = Spi6ClkReg;
  191. assign Spi6CsDelayReg_o = Spi6CsDelayReg;
  192. assign Spi6CsCtrlReg_o = Spi6CsCtrlReg;
  193. assign Spi6TxFifoCtrlReg_o = Spi6TxFifoCtrlReg;
  194. assign Spi6RxFifoCtrlReg_o = Spi6RxFifoCtrlReg;
  195. assign Spi6TxFifoReg_o = Spi6TxFifoReg;
  196. assign Spi6RxFifoReg_o = Spi6RxFifoReg;
  197. assign SpiTxRxEnReg_o = SpiTxRxEnReg;
  198. assign GPIOAReg_o = {GPIOARegS, GPIOAReg};
  199. assign AnsDataReg_o = ansReg;
  200. assign Led_o = LedReg[0];
  201. //================================================================================
  202. // LOCALPARAMS
  203. //================================================================================
  204. localparam Spi0CtrlAddr = 12'h00;
  205. localparam Spi0ClkAddr = 12'h04;
  206. localparam Spi0CsDelayAddr = 12'h08;
  207. localparam Spi0CsCtrlAddr = 12'h0c;
  208. localparam Spi0TxFifoCtrlAddr = 12'h10;
  209. localparam Spi0RxFifoCtrlAddr = 12'h14;
  210. localparam Spi0TxFifo = 12'h18;
  211. localparam Spi0RxFifo = 12'h1c;
  212. localparam Spi1CtrlAddr = 12'h50;
  213. localparam Spi1ClkAddr = 12'h54;
  214. localparam Spi1CsDelayAddr = 12'h58;
  215. localparam Spi1CsCtrlAddr = 12'h5c;
  216. localparam Spi1TxFifoCtrlAddr = 12'h60;
  217. localparam Spi1RxFifoCtrlAddr = 12'h64;
  218. localparam Spi1TxFifo = 12'h68;
  219. localparam Spi1RxFifo = 12'h6c;
  220. localparam Spi2CtrlAddr = 12'hF0;
  221. localparam Spi2ClkAddr = 12'hF4;
  222. localparam Spi2CsDelayAddr = 12'hF8;
  223. localparam Spi2CsCtrlAddr = 12'hFc;
  224. localparam Spi2TxFifoCtrlAddr = 12'h100;
  225. localparam Spi2RxFifoCtrlAddr = 12'h104;
  226. localparam Spi2TxFifo = 12'h108;
  227. localparam Spi2RxFifo = 12'h10c;
  228. localparam Spi3CtrlAddr = 12'h140;
  229. localparam Spi3ClkAddr = 12'h144;
  230. localparam Spi3CsDelayAddr = 12'h148;
  231. localparam Spi3CsCtrlAddr = 12'h14c;
  232. localparam Spi3TxFifoCtrlAddr = 12'h150;
  233. localparam Spi3RxFifoCtrlAddr = 12'h154;
  234. localparam Spi3TxFifo = 12'h158;
  235. localparam Spi3RxFifo = 12'h15c;
  236. localparam Spi4CtrlAddr = 12'h190;
  237. localparam Spi4ClkAddr = 12'h194;
  238. localparam Spi4CsDelayAddr = 12'h198;
  239. localparam Spi4CsCtrlAddr = 12'h19c;
  240. localparam Spi4TxFifoCtrlAddr = 12'h1a0;
  241. localparam Spi4RxFifoCtrlAddr = 12'h1a4;
  242. localparam Spi4TxFifo = 12'h1a8;
  243. localparam Spi4RxFifo = 12'h1ac;
  244. localparam Spi5CtrlAddr = 12'h1e0;
  245. localparam Spi5ClkAddr = 12'h1e4;
  246. localparam Spi5CsDelayAddr = 12'h1e8;
  247. localparam Spi5CsCtrlAddr = 12'h1ec;
  248. localparam Spi5TxFifoCtrlAddr = 12'h1f0;
  249. localparam Spi5RxFifoCtrlAddr = 12'h1f4;
  250. localparam Spi5TxFifo = 12'h1f8;
  251. localparam Spi5RxFifo = 12'h1fc;
  252. localparam Spi6CtrlAddr = 12'h230;
  253. localparam Spi6ClkAddr = 12'h234;
  254. localparam Spi6CsDelayAddr = 12'h238;
  255. localparam Spi6CsCtrlAddr = 12'h23c;
  256. localparam Spi6TxFifoCtrlAddr = 12'h240;
  257. localparam Spi6RxFifoCtrlAddr = 12'h244;
  258. localparam Spi6TxFifo = 12'h248;
  259. localparam Spi6RxFifo = 12'h24c;
  260. localparam SpiTxRxEn = 12'hF00;
  261. localparam GPIOCtrlAddr = 12'hFF0;
  262. localparam GPIOCtrlAddrS = 12'hFF2;
  263. localparam Debug0Addr = 12'hFF8;
  264. localparam Debug1Addr = 12'hFFC;
  265. //================================================================================
  266. always @(posedge Clk_i) begin
  267. if (!Rst_i) begin
  268. beReg <= 2'b0;
  269. end else begin
  270. beReg <= SmcBe_i;
  271. end
  272. end
  273. always @(posedge Clk_i) begin
  274. if (Rst_i) begin
  275. Spi0ClkReg <= 0;
  276. Spi0CtrlReg <= 0;
  277. Spi0CsDelayReg <= 0;
  278. Spi0CsCtrlReg <= 0;
  279. Spi0TxFifoCtrlReg <= 0;
  280. Spi0RxFifoCtrlReg <= 0;
  281. Spi0TxFifoReg <= 0;
  282. Spi0RxFifoReg <= 0;
  283. Spi1ClkReg <= 0;
  284. Spi1CtrlReg <= 0;
  285. Spi1CsDelayReg <= 0;
  286. Spi1CsCtrlReg <= 0;
  287. Spi1TxFifoCtrlReg <= 0;
  288. Spi1RxFifoCtrlReg <= 0;
  289. Spi1TxFifoReg <= 0;
  290. Spi1RxFifoReg <= 0;
  291. Spi2ClkReg <= 0;
  292. Spi2CtrlReg <= 0;
  293. Spi2CsDelayReg <= 0;
  294. Spi2CsCtrlReg <= 0;
  295. Spi2TxFifoCtrlReg <= 0;
  296. Spi2RxFifoCtrlReg <= 0;
  297. Spi2TxFifoReg <= 0;
  298. Spi2RxFifoReg <= 0;
  299. Spi3ClkReg <= 0;
  300. Spi3CtrlReg <= 0;
  301. Spi3CsDelayReg <= 0;
  302. Spi3CsCtrlReg <= 0;
  303. Spi3TxFifoCtrlReg <= 0;
  304. Spi3RxFifoCtrlReg <= 0;
  305. Spi3TxFifoReg <= 0;
  306. Spi3RxFifoReg <= 0;
  307. Spi4ClkReg <= 0;
  308. Spi4CtrlReg <= 0;
  309. Spi4CsDelayReg <= 0;
  310. Spi4CsCtrlReg <= 0;
  311. Spi4TxFifoCtrlReg <= 0;
  312. Spi4RxFifoCtrlReg <= 0;
  313. Spi4TxFifoReg <= 0;
  314. Spi4RxFifoReg <= 0;
  315. Spi5ClkReg <= 0;
  316. Spi5CtrlReg <= 0;
  317. Spi5CsDelayReg <= 0;
  318. Spi5CsCtrlReg <= 0;
  319. Spi5TxFifoCtrlReg <= 0;
  320. Spi5RxFifoCtrlReg <= 0;
  321. Spi5TxFifoReg <= 0;
  322. Spi5RxFifoReg <= 0;
  323. Spi6ClkReg <= 0;
  324. Spi6CtrlReg <= 0;
  325. Spi6CsDelayReg <= 0;
  326. Spi6CsCtrlReg <= 0;
  327. Spi6TxFifoCtrlReg <= 0;
  328. Spi6RxFifoCtrlReg <= 0;
  329. Spi6TxFifoReg <= 0;
  330. Spi6RxFifoReg <= 0;
  331. SpiTxRxEnReg <= 0;
  332. GPIOAReg <= 0;
  333. GPIOARegS <= 0;
  334. LedReg <= 0;
  335. end
  336. else begin
  337. if (Val_i) begin
  338. case (beReg)
  339. 0 : begin
  340. case (Addr_i)
  341. Spi0CtrlAddr : begin
  342. Spi0CtrlReg <= Data_i;
  343. end
  344. Spi0ClkAddr : begin
  345. Spi0ClkReg <= Data_i;
  346. end
  347. Spi0CsDelayAddr : begin
  348. Spi0CsDelayReg <= Data_i;
  349. end
  350. Spi0CsCtrlAddr : begin
  351. Spi0CsCtrlReg <= Data_i;
  352. end
  353. Spi0TxFifoCtrlAddr : begin
  354. Spi0TxFifoCtrlReg <= Data_i;
  355. end
  356. Spi0RxFifoCtrlAddr : begin
  357. Spi0RxFifoCtrlReg <= Data_i;
  358. end
  359. Spi0TxFifo : begin
  360. Spi0TxFifoReg <= Data_i;
  361. end
  362. Spi0RxFifo : begin
  363. Spi0RxFifoReg <= Data_i;
  364. end
  365. Spi1CtrlAddr : begin
  366. Spi1CtrlReg <= Data_i;
  367. end
  368. Spi1ClkAddr : begin
  369. Spi1ClkReg <= Data_i;
  370. end
  371. Spi1CsDelayAddr : begin
  372. Spi1CsDelayReg <= Data_i;
  373. end
  374. Spi1CsCtrlAddr : begin
  375. Spi1CsCtrlReg <= Data_i;
  376. end
  377. Spi1TxFifoCtrlAddr : begin
  378. Spi1TxFifoCtrlReg <= Data_i;
  379. end
  380. Spi1RxFifoCtrlAddr : begin
  381. Spi1RxFifoCtrlReg <= Data_i;
  382. end
  383. Spi1TxFifo : begin
  384. Spi1TxFifoReg <= Data_i;
  385. end
  386. Spi1RxFifo : begin
  387. Spi1RxFifoReg <= Data_i;
  388. end
  389. Spi2CtrlAddr : begin
  390. Spi2CtrlReg <= Data_i;
  391. end
  392. Spi2ClkAddr : begin
  393. Spi2ClkReg <= Data_i;
  394. end
  395. Spi2CsDelayAddr : begin
  396. Spi2CsDelayReg <= Data_i;
  397. end
  398. Spi2CsCtrlAddr : begin
  399. Spi2CsCtrlReg <= Data_i;
  400. end
  401. Spi2TxFifoCtrlAddr : begin
  402. Spi2TxFifoCtrlReg <= Data_i;
  403. end
  404. Spi2RxFifoCtrlAddr : begin
  405. Spi2RxFifoCtrlReg <= Data_i;
  406. end
  407. Spi2TxFifo : begin
  408. Spi2TxFifoReg <= Data_i;
  409. end
  410. Spi2RxFifo : begin
  411. Spi2RxFifoReg <= Data_i;
  412. end
  413. Spi3CtrlAddr : begin
  414. Spi3CtrlReg <= Data_i;
  415. end
  416. Spi3ClkAddr : begin
  417. Spi3ClkReg <= Data_i;
  418. end
  419. Spi3CsDelayAddr : begin
  420. Spi3CsDelayReg <= Data_i;
  421. end
  422. Spi3CsCtrlAddr : begin
  423. Spi3CsCtrlReg <= Data_i;
  424. end
  425. Spi3TxFifoCtrlAddr : begin
  426. Spi3TxFifoCtrlReg <= Data_i;
  427. end
  428. Spi3RxFifoCtrlAddr : begin
  429. Spi3RxFifoCtrlReg <= Data_i;
  430. end
  431. Spi3TxFifo : begin
  432. Spi3TxFifoReg <= Data_i;
  433. end
  434. Spi3RxFifo : begin
  435. Spi3RxFifoReg <= Data_i;
  436. end
  437. Spi4CtrlAddr : begin
  438. Spi4CtrlReg <= Data_i;
  439. end
  440. Spi4ClkAddr : begin
  441. Spi4ClkReg <= Data_i;
  442. end
  443. Spi4CsDelayAddr : begin
  444. Spi4CsDelayReg <= Data_i;
  445. end
  446. Spi4CsCtrlAddr : begin
  447. Spi4CsCtrlReg <= Data_i;
  448. end
  449. Spi4TxFifoCtrlAddr : begin
  450. Spi4TxFifoCtrlReg <= Data_i;
  451. end
  452. Spi4RxFifoCtrlAddr : begin
  453. Spi4RxFifoCtrlReg <= Data_i;
  454. end
  455. Spi4TxFifo : begin
  456. Spi4TxFifoReg <= Data_i;
  457. end
  458. Spi4RxFifo : begin
  459. Spi4RxFifoReg <= Data_i;
  460. end
  461. Spi5CtrlAddr : begin
  462. Spi5CtrlReg <= Data_i;
  463. end
  464. Spi5ClkAddr : begin
  465. Spi5ClkReg <= Data_i;
  466. end
  467. Spi5CsDelayAddr : begin
  468. Spi5CsDelayReg <= Data_i;
  469. end
  470. Spi5CsCtrlAddr : begin
  471. Spi5CsCtrlReg <= Data_i;
  472. end
  473. Spi5TxFifoCtrlAddr : begin
  474. Spi5TxFifoCtrlReg <= Data_i;
  475. end
  476. Spi5RxFifoCtrlAddr : begin
  477. Spi5RxFifoCtrlReg <= Data_i;
  478. end
  479. Spi5TxFifo : begin
  480. Spi5TxFifoReg <= Data_i;
  481. end
  482. Spi5RxFifo : begin
  483. Spi5RxFifoReg <= Data_i;
  484. end
  485. Spi6CtrlAddr : begin
  486. Spi6CtrlReg <= Data_i;
  487. end
  488. Spi6ClkAddr : begin
  489. Spi6ClkReg <= Data_i;
  490. end
  491. Spi6CsDelayAddr : begin
  492. Spi6CsDelayReg <= Data_i;
  493. end
  494. Spi6CsCtrlAddr : begin
  495. Spi6CsCtrlReg <= Data_i;
  496. end
  497. Spi6TxFifoCtrlAddr : begin
  498. Spi6TxFifoCtrlReg <= Data_i;
  499. end
  500. Spi6RxFifoCtrlAddr : begin
  501. Spi6RxFifoCtrlReg <= Data_i;
  502. end
  503. Spi6TxFifo : begin
  504. Spi6TxFifoReg <= Data_i;
  505. end
  506. Spi6RxFifo : begin
  507. Spi6RxFifoReg <= Data_i;
  508. end
  509. SpiTxRxEn : begin
  510. SpiTxRxEnReg <= Data_i;
  511. end
  512. GPIOCtrlAddr : begin
  513. GPIOAReg <= Data_i;
  514. end
  515. GPIOCtrlAddrS : begin
  516. GPIOARegS <= Data_i;
  517. end
  518. Debug0Addr : begin
  519. LedReg <= Data_i;
  520. end
  521. endcase
  522. end
  523. 1 : begin
  524. case (Addr_i)
  525. Spi0CtrlAddr : begin
  526. Spi0CtrlReg[15:8] <= Data_i[15:8];
  527. end
  528. Spi0ClkAddr : begin
  529. Spi0ClkReg[15:8] <= Data_i[15:8];
  530. end
  531. Spi0CsDelayAddr : begin
  532. Spi0CsDelayReg[15:8] <= Data_i[15:8];
  533. end
  534. Spi0CsCtrlAddr : begin
  535. Spi0CsCtrlReg[15:8] <= Data_i[15:8];
  536. end
  537. Spi0TxFifoCtrlAddr : begin
  538. Spi0TxFifoCtrlReg[15:8] <= Data_i[15:8];
  539. end
  540. Spi0RxFifoCtrlAddr : begin
  541. Spi0RxFifoCtrlReg[15:8] <= Data_i[15:8];
  542. end
  543. Spi0TxFifo : begin
  544. Spi0TxFifoReg[15:8] <= Data_i[15:8];
  545. end
  546. Spi0RxFifo : begin
  547. Spi0RxFifoReg[15:8] <= Data_i[15:8];
  548. end
  549. Spi1CtrlAddr : begin
  550. Spi1CtrlReg[15:8] <= Data_i[15:8];
  551. end
  552. Spi1ClkAddr : begin
  553. Spi1ClkReg[15:8] <= Data_i[15:8];
  554. end
  555. Spi1CsDelayAddr : begin
  556. Spi1CsDelayReg[15:8] <= Data_i[15:8];
  557. end
  558. Spi1CsCtrlAddr : begin
  559. Spi1CsCtrlReg[15:8] <= Data_i[15:8];
  560. end
  561. Spi1TxFifoCtrlAddr : begin
  562. Spi1TxFifoCtrlReg[15:8] <= Data_i[15:8];
  563. end
  564. Spi1RxFifoCtrlAddr : begin
  565. Spi1RxFifoCtrlReg[15:8] <= Data_i[15:8];
  566. end
  567. Spi1TxFifo : begin
  568. Spi1TxFifoReg[15:8] <= Data_i[15:8];
  569. end
  570. Spi1RxFifo : begin
  571. Spi1RxFifoReg[15:8] <= Data_i[15:8];
  572. end
  573. Spi2CtrlAddr : begin
  574. Spi2CtrlReg[15:8] <= Data_i[15:8];
  575. end
  576. Spi2ClkAddr : begin
  577. Spi2ClkReg[15:8] <= Data_i[15:8];
  578. end
  579. Spi2CsDelayAddr : begin
  580. Spi2CsDelayReg[15:8] <= Data_i[15:8];
  581. end
  582. Spi2CsCtrlAddr : begin
  583. Spi2CsCtrlReg[15:8] <= Data_i[15:8];
  584. end
  585. Spi2TxFifoCtrlAddr : begin
  586. Spi2TxFifoCtrlReg[15:8] <= Data_i[15:8];
  587. end
  588. Spi2RxFifoCtrlAddr : begin
  589. Spi2RxFifoCtrlReg[15:8] <= Data_i[15:8];
  590. end
  591. Spi2TxFifo : begin
  592. Spi2TxFifoReg[15:8] <= Data_i[15:8];
  593. end
  594. Spi2RxFifo : begin
  595. Spi2RxFifoReg[15:8] <= Data_i[15:8];
  596. end
  597. Spi3CtrlAddr : begin
  598. Spi3CtrlReg[15:8] <= Data_i[15:8];
  599. end
  600. Spi3ClkAddr : begin
  601. Spi3ClkReg[15:8] <= Data_i[15:8];
  602. end
  603. Spi3CsDelayAddr : begin
  604. Spi3CsDelayReg[15:8] <= Data_i[15:8];
  605. end
  606. Spi3CsCtrlAddr : begin
  607. Spi3CsCtrlReg[15:8] <= Data_i[15:8];
  608. end
  609. Spi3TxFifoCtrlAddr : begin
  610. Spi3TxFifoCtrlReg[15:8] <= Data_i[15:8];
  611. end
  612. Spi3RxFifoCtrlAddr : begin
  613. Spi3RxFifoCtrlReg[15:8] <= Data_i[15:8];
  614. end
  615. Spi3TxFifo : begin
  616. Spi3TxFifoReg[15:8] <= Data_i[15:8];
  617. end
  618. Spi3RxFifo : begin
  619. Spi3RxFifoReg[15:8] <= Data_i[15:8];
  620. end
  621. Spi4CtrlAddr : begin
  622. Spi4CtrlReg[15:8] <= Data_i[15:8];
  623. end
  624. Spi4ClkAddr : begin
  625. Spi4ClkReg[15:8] <= Data_i[15:8];
  626. end
  627. Spi4CsDelayAddr : begin
  628. Spi4CsDelayReg[15:8] <= Data_i[15:8];
  629. end
  630. Spi4CsCtrlAddr : begin
  631. Spi4CsCtrlReg[15:8] <= Data_i[15:8];
  632. end
  633. Spi4TxFifoCtrlAddr : begin
  634. Spi4TxFifoCtrlReg[15:8] <= Data_i[15:8];
  635. end
  636. Spi4RxFifoCtrlAddr : begin
  637. Spi4RxFifoCtrlReg[15:8] <= Data_i[15:8];
  638. end
  639. Spi4TxFifo : begin
  640. Spi4TxFifoReg[15:8] <= Data_i[15:8];
  641. end
  642. Spi4RxFifo : begin
  643. Spi4RxFifoReg[15:8] <= Data_i[15:8];
  644. end
  645. Spi5CtrlAddr : begin
  646. Spi5CtrlReg[15:8] <= Data_i[15:8];
  647. end
  648. Spi5ClkAddr : begin
  649. Spi5ClkReg[15:8] <= Data_i[15:8];
  650. end
  651. Spi5CsDelayAddr : begin
  652. Spi5CsDelayReg[15:8] <= Data_i[15:8];
  653. end
  654. Spi5CsCtrlAddr : begin
  655. Spi5CsCtrlReg[15:8] <= Data_i[15:8];
  656. end
  657. Spi5TxFifoCtrlAddr : begin
  658. Spi5TxFifoCtrlReg[15:8] <= Data_i[15:8];
  659. end
  660. Spi5RxFifoCtrlAddr : begin
  661. Spi5RxFifoCtrlReg[15:8] <= Data_i[15:8];
  662. end
  663. Spi5TxFifo : begin
  664. Spi5TxFifoReg[15:8] <= Data_i[15:8];
  665. end
  666. Spi5RxFifo : begin
  667. Spi5RxFifoReg[15:8] <= Data_i[15:8];
  668. end
  669. Spi6CtrlAddr : begin
  670. Spi6CtrlReg[15:8] <= Data_i[15:8];
  671. end
  672. Spi6ClkAddr : begin
  673. Spi6ClkReg[15:8] <= Data_i[15:8];
  674. end
  675. Spi6CsDelayAddr : begin
  676. Spi6CsDelayReg[15:8] <= Data_i[15:8];
  677. end
  678. Spi6CsCtrlAddr : begin
  679. Spi6CsCtrlReg[15:8] <= Data_i[15:8];
  680. end
  681. Spi6TxFifoCtrlAddr : begin
  682. Spi6TxFifoCtrlReg[15:8] <= Data_i[15:8];
  683. end
  684. Spi6RxFifoCtrlAddr : begin
  685. Spi6RxFifoCtrlReg[15:8] <= Data_i[15:8];
  686. end
  687. Spi6TxFifo : begin
  688. Spi6TxFifoReg[15:8] <= Data_i[15:8];
  689. end
  690. Spi6RxFifo : begin
  691. Spi6RxFifoReg[15:8] <= Data_i[15:8];
  692. end
  693. SpiTxRxEn : begin
  694. SpiTxRxEnReg[15:8] <= Data_i[15:8];
  695. end
  696. GPIOCtrlAddr : begin
  697. GPIOAReg[15:8] <= Data_i[15:8];
  698. end
  699. GPIOCtrlAddrS : begin
  700. GPIOARegS[15:8] <= Data_i[15:8];
  701. end
  702. Debug0Addr : begin
  703. LedReg[15:8] <= Data_i[15:8];
  704. end
  705. endcase
  706. end
  707. 2 : begin
  708. case (Addr_i)
  709. Spi0CtrlAddr : begin
  710. Spi0CtrlReg[7:0] <= Data_i[7:0];
  711. end
  712. Spi0ClkAddr : begin
  713. Spi0ClkReg[7:0] <= Data_i[7:0];
  714. end
  715. Spi0CsDelayAddr : begin
  716. Spi0CsDelayReg[7:0] <= Data_i[7:0];
  717. end
  718. Spi0CsCtrlAddr : begin
  719. Spi0CsCtrlReg[7:0] <= Data_i[7:0];
  720. end
  721. Spi0TxFifoCtrlAddr : begin
  722. Spi0TxFifoCtrlReg[7:0] <= Data_i[7:0];
  723. end
  724. Spi0RxFifoCtrlAddr : begin
  725. Spi0RxFifoCtrlReg[7:0] <= Data_i[7:0];
  726. end
  727. Spi0TxFifo : begin
  728. Spi0TxFifoReg[7:0] <= Data_i[7:0];
  729. end
  730. Spi0RxFifo : begin
  731. Spi0RxFifoReg[7:0] <= Data_i[7:0];
  732. end
  733. Spi1CtrlAddr : begin
  734. Spi1CtrlReg[7:0] <= Data_i[7:0];
  735. end
  736. Spi1ClkAddr : begin
  737. Spi1ClkReg[7:0] <= Data_i[7:0];
  738. end
  739. Spi1CsDelayAddr : begin
  740. Spi1CsDelayReg[7:0] <= Data_i[7:0];
  741. end
  742. Spi1CsCtrlAddr : begin
  743. Spi1CsCtrlReg[7:0] <= Data_i[7:0];
  744. end
  745. Spi1TxFifoCtrlAddr : begin
  746. Spi1TxFifoCtrlReg[7:0] <= Data_i[7:0];
  747. end
  748. Spi1RxFifoCtrlAddr : begin
  749. Spi1RxFifoCtrlReg[7:0] <= Data_i[7:0];
  750. end
  751. Spi1TxFifo : begin
  752. Spi1TxFifoReg[7:0] <= Data_i[7:0];
  753. end
  754. Spi1RxFifo : begin
  755. Spi1RxFifoReg[7:0] <= Data_i[7:0];
  756. end
  757. Spi2CtrlAddr : begin
  758. Spi2CtrlReg[7:0] <= Data_i[7:0];
  759. end
  760. Spi2ClkAddr : begin
  761. Spi2ClkReg[7:0] <= Data_i[7:0];
  762. end
  763. Spi2CsDelayAddr : begin
  764. Spi2CsDelayReg[7:0] <= Data_i[7:0];
  765. end
  766. Spi2CsCtrlAddr : begin
  767. Spi2CsCtrlReg[7:0] <= Data_i[7:0];
  768. end
  769. Spi2TxFifoCtrlAddr : begin
  770. Spi2TxFifoCtrlReg[7:0] <= Data_i[7:0];
  771. end
  772. Spi2RxFifoCtrlAddr : begin
  773. Spi2RxFifoCtrlReg[7:0] <= Data_i[7:0];
  774. end
  775. Spi2TxFifo : begin
  776. Spi2TxFifoReg[7:0] <= Data_i[7:0];
  777. end
  778. Spi2RxFifo : begin
  779. Spi2RxFifoReg[7:0] <= Data_i[7:0];
  780. end
  781. Spi3CtrlAddr : begin
  782. Spi3CtrlReg[7:0] <= Data_i[7:0];
  783. end
  784. Spi3ClkAddr : begin
  785. Spi3ClkReg[7:0] <= Data_i[7:0];
  786. end
  787. Spi3CsDelayAddr : begin
  788. Spi3CsDelayReg[7:0] <= Data_i[7:0];
  789. end
  790. Spi3CsCtrlAddr : begin
  791. Spi3CsCtrlReg[7:0] <= Data_i[7:0];
  792. end
  793. Spi3TxFifoCtrlAddr : begin
  794. Spi3TxFifoCtrlReg[7:0] <= Data_i[7:0];
  795. end
  796. Spi3RxFifoCtrlAddr : begin
  797. Spi3RxFifoCtrlReg[7:0] <= Data_i[7:0];
  798. end
  799. Spi3TxFifo : begin
  800. Spi3TxFifoReg[7:0] <= Data_i[7:0];
  801. end
  802. Spi3RxFifo : begin
  803. Spi3RxFifoReg[7:0] <= Data_i[7:0];
  804. end
  805. Spi4CtrlAddr : begin
  806. Spi4CtrlReg[7:0] <= Data_i[7:0];
  807. end
  808. Spi4ClkAddr : begin
  809. Spi4ClkReg[7:0] <= Data_i[7:0];
  810. end
  811. Spi4CsDelayAddr : begin
  812. Spi4CsDelayReg[7:0] <= Data_i[7:0];
  813. end
  814. Spi4CsCtrlAddr : begin
  815. Spi4CsCtrlReg[7:0] <= Data_i[7:0];
  816. end
  817. Spi4TxFifoCtrlAddr : begin
  818. Spi4TxFifoCtrlReg[7:0] <= Data_i[7:0];
  819. end
  820. Spi4RxFifoCtrlAddr : begin
  821. Spi4RxFifoCtrlReg[7:0] <= Data_i[7:0];
  822. end
  823. Spi4TxFifo : begin
  824. Spi4TxFifoReg[7:0] <= Data_i[7:0];
  825. end
  826. Spi4RxFifo : begin
  827. Spi4RxFifoReg[7:0] <= Data_i[7:0];
  828. end
  829. Spi5CtrlAddr : begin
  830. Spi5CtrlReg[7:0] <= Data_i[7:0];
  831. end
  832. Spi5ClkAddr : begin
  833. Spi5ClkReg[7:0] <= Data_i[7:0];
  834. end
  835. Spi5CsDelayAddr : begin
  836. Spi5CsDelayReg[7:0] <= Data_i[7:0];
  837. end
  838. Spi5CsCtrlAddr : begin
  839. Spi5CsCtrlReg[7:0] <= Data_i[7:0];
  840. end
  841. Spi5TxFifoCtrlAddr : begin
  842. Spi5TxFifoCtrlReg[7:0] <= Data_i[7:0];
  843. end
  844. Spi5RxFifoCtrlAddr : begin
  845. Spi5RxFifoCtrlReg[7:0] <= Data_i[7:0];
  846. end
  847. Spi5TxFifo : begin
  848. Spi5TxFifoReg[7:0] <= Data_i[7:0];
  849. end
  850. Spi5RxFifo : begin
  851. Spi5RxFifoReg[7:0] <= Data_i[7:0];
  852. end
  853. Spi6CtrlAddr : begin
  854. Spi6CtrlReg[7:0] <= Data_i[7:0];
  855. end
  856. Spi6ClkAddr : begin
  857. Spi6ClkReg[7:0] <= Data_i[7:0];
  858. end
  859. Spi6CsDelayAddr : begin
  860. Spi6CsDelayReg[7:0] <= Data_i[7:0];
  861. end
  862. Spi6CsCtrlAddr : begin
  863. Spi6CsCtrlReg[7:0] <= Data_i[7:0];
  864. end
  865. Spi6TxFifoCtrlAddr : begin
  866. Spi6TxFifoCtrlReg[7:0] <= Data_i[7:0];
  867. end
  868. Spi6RxFifoCtrlAddr : begin
  869. Spi6RxFifoCtrlReg[7:0] <= Data_i[7:0];
  870. end
  871. Spi6TxFifo : begin
  872. Spi6TxFifoReg[7:0] <= Data_i[7:0];
  873. end
  874. Spi6RxFifo : begin
  875. Spi6RxFifoReg[7:0] <= Data_i[7:0];
  876. end
  877. SpiTxRxEn : begin
  878. SpiTxRxEnReg[7:0] <= Data_i[7:0];
  879. end
  880. GPIOCtrlAddr : begin
  881. GPIOAReg[7:0] <= Data_i[7:0];
  882. end
  883. GPIOCtrlAddrS : begin
  884. GPIOARegS[7:0] <= Data_i[7:0];
  885. end
  886. Debug0Addr : begin
  887. LedReg[7:0] <= Data_i[7:0];
  888. end
  889. endcase
  890. end
  891. endcase
  892. end
  893. end
  894. end
  895. always @(*) begin
  896. if (Rst_i) begin
  897. ansReg = 0;
  898. end else begin
  899. if (Val_i) begin
  900. case(beReg)
  901. 0 : begin
  902. case (Addr_i)
  903. Spi0CtrlAddr : begin
  904. ansReg = Spi0CtrlReg;
  905. end
  906. Spi0ClkAddr : begin
  907. ansReg = Spi0ClkReg;
  908. end
  909. Spi0CsDelayAddr : begin
  910. ansReg = Spi0CsDelayReg;
  911. end
  912. Spi0CsCtrlAddr : begin
  913. ansReg = Spi0CsCtrlReg;
  914. end
  915. Spi0TxFifoCtrlAddr : begin
  916. ansReg = Spi0TxFifoCtrlReg;
  917. end
  918. Spi0RxFifoCtrlAddr : begin
  919. ansReg = Spi0RxFifoCtrlReg;
  920. end
  921. Spi0TxFifo : begin
  922. ansReg = Spi0TxFifoReg;
  923. end
  924. Spi0RxFifo : begin
  925. ansReg = Spi0RxFifoReg;
  926. end
  927. Spi1CtrlAddr : begin
  928. ansReg = Spi1CtrlReg;
  929. end
  930. Spi1ClkAddr : begin
  931. ansReg = Spi1ClkReg;
  932. end
  933. Spi1CsDelayAddr : begin
  934. ansReg = Spi1CsDelayReg;
  935. end
  936. Spi1CsCtrlAddr : begin
  937. ansReg = Spi1CsCtrlReg;
  938. end
  939. Spi1TxFifoCtrlAddr : begin
  940. ansReg = Spi1TxFifoCtrlReg;
  941. end
  942. Spi1RxFifoCtrlAddr : begin
  943. ansReg = Spi1RxFifoCtrlReg;
  944. end
  945. Spi1TxFifo : begin
  946. ansReg = Spi1TxFifoReg;
  947. end
  948. Spi1RxFifo : begin
  949. ansReg = Spi1RxFifoReg;
  950. end
  951. Spi2CtrlAddr : begin
  952. ansReg = Spi2CtrlReg;
  953. end
  954. Spi2ClkAddr : begin
  955. ansReg = Spi2ClkReg;
  956. end
  957. Spi2CsDelayAddr : begin
  958. ansReg = Spi2CsDelayReg;
  959. end
  960. Spi2CsCtrlAddr : begin
  961. ansReg = Spi2CsCtrlReg;
  962. end
  963. Spi2TxFifoCtrlAddr : begin
  964. ansReg = Spi2TxFifoCtrlReg;
  965. end
  966. Spi2RxFifoCtrlAddr : begin
  967. ansReg = Spi2RxFifoCtrlReg;
  968. end
  969. Spi2TxFifo : begin
  970. ansReg = Spi2TxFifoReg;
  971. end
  972. Spi2RxFifo : begin
  973. ansReg = Spi2RxFifoReg;
  974. end
  975. Spi3CtrlAddr : begin
  976. ansReg = Spi3CtrlReg;
  977. end
  978. Spi3ClkAddr : begin
  979. ansReg = Spi3ClkReg;
  980. end
  981. Spi3CsDelayAddr : begin
  982. ansReg = Spi3CsDelayReg;
  983. end
  984. Spi3CsCtrlAddr : begin
  985. ansReg = Spi3CsCtrlReg;
  986. end
  987. Spi3TxFifoCtrlAddr : begin
  988. ansReg = Spi3TxFifoCtrlReg;
  989. end
  990. Spi3RxFifoCtrlAddr : begin
  991. ansReg = Spi3RxFifoCtrlReg;
  992. end
  993. Spi3TxFifo : begin
  994. ansReg = Spi3TxFifoReg;
  995. end
  996. Spi3RxFifo : begin
  997. ansReg = Spi3RxFifoReg;
  998. end
  999. Spi4CtrlAddr : begin
  1000. ansReg = Spi4CtrlReg;
  1001. end
  1002. Spi4ClkAddr : begin
  1003. ansReg = Spi4ClkReg;
  1004. end
  1005. Spi4CsDelayAddr : begin
  1006. ansReg = Spi4CsDelayReg;
  1007. end
  1008. Spi4CsCtrlAddr : begin
  1009. ansReg = Spi4CsCtrlReg;
  1010. end
  1011. Spi4TxFifoCtrlAddr : begin
  1012. ansReg = Spi4TxFifoCtrlReg;
  1013. end
  1014. Spi4RxFifoCtrlAddr : begin
  1015. ansReg = Spi4RxFifoCtrlReg;
  1016. end
  1017. Spi4TxFifo : begin
  1018. ansReg = Spi4TxFifoReg;
  1019. end
  1020. Spi4RxFifo : begin
  1021. ansReg = Spi4RxFifoReg;
  1022. end
  1023. Spi5CtrlAddr : begin
  1024. ansReg = Spi5CtrlReg;
  1025. end
  1026. Spi5ClkAddr : begin
  1027. ansReg = Spi5ClkReg;
  1028. end
  1029. Spi5CsDelayAddr : begin
  1030. ansReg = Spi5CsDelayReg;
  1031. end
  1032. Spi5CsCtrlAddr : begin
  1033. ansReg = Spi5CsCtrlReg;
  1034. end
  1035. Spi5TxFifoCtrlAddr : begin
  1036. ansReg = Spi5TxFifoCtrlReg;
  1037. end
  1038. Spi5RxFifoCtrlAddr : begin
  1039. ansReg = Spi5RxFifoCtrlReg;
  1040. end
  1041. Spi5TxFifo : begin
  1042. ansReg = Spi5TxFifoReg;
  1043. end
  1044. Spi5RxFifo : begin
  1045. ansReg = Spi5RxFifoReg;
  1046. end
  1047. Spi6CtrlAddr : begin
  1048. ansReg = Spi6CtrlReg;
  1049. end
  1050. Spi6ClkAddr : begin
  1051. ansReg = Spi6ClkReg;
  1052. end
  1053. Spi6CsDelayAddr : begin
  1054. ansReg = Spi6CsDelayReg;
  1055. end
  1056. Spi6CsCtrlAddr : begin
  1057. ansReg = Spi6CsCtrlReg;
  1058. end
  1059. Spi6TxFifoCtrlAddr : begin
  1060. ansReg = Spi6TxFifoCtrlReg;
  1061. end
  1062. Spi6RxFifoCtrlAddr : begin
  1063. ansReg = Spi6RxFifoCtrlReg;
  1064. end
  1065. Spi6TxFifo : begin
  1066. ansReg = Spi6TxFifoReg;
  1067. end
  1068. Spi6RxFifo : begin
  1069. ansReg = Spi6RxFifoReg;
  1070. end
  1071. SpiTxRxEn : begin
  1072. ansReg = SpiTxRxEnReg;
  1073. end
  1074. GPIOCtrlAddr : begin
  1075. ansReg = GPIOAReg;
  1076. end
  1077. GPIOCtrlAddrS : begin
  1078. ansReg = GPIOARegS;
  1079. end
  1080. Debug0Addr : begin
  1081. ansReg = LedReg;
  1082. end
  1083. endcase
  1084. end
  1085. 1 : begin
  1086. case (Addr_i)
  1087. Spi0CtrlAddr : begin
  1088. ansReg = Spi0CtrlReg[15:8];
  1089. end
  1090. Spi0ClkAddr : begin
  1091. ansReg = Spi0ClkReg[15:8];
  1092. end
  1093. Spi0CsDelayAddr : begin
  1094. ansReg = Spi0CsDelayReg[15:8];
  1095. end
  1096. Spi0CsCtrlAddr : begin
  1097. ansReg = Spi0CsCtrlReg[15:8];
  1098. end
  1099. Spi0TxFifoCtrlAddr : begin
  1100. ansReg = Spi0TxFifoCtrlReg[15:8];
  1101. end
  1102. Spi0RxFifoCtrlAddr : begin
  1103. ansReg = Spi0RxFifoCtrlReg[15:8];
  1104. end
  1105. Spi0TxFifo : begin
  1106. ansReg = Spi0TxFifoReg[15:8];
  1107. end
  1108. Spi0RxFifo : begin
  1109. ansReg = Spi0RxFifoReg[15:8];
  1110. end
  1111. Spi1CtrlAddr : begin
  1112. ansReg = Spi1CtrlReg[15:8];
  1113. end
  1114. Spi1ClkAddr : begin
  1115. ansReg = Spi1ClkReg[15:8];
  1116. end
  1117. Spi1CsDelayAddr : begin
  1118. ansReg = Spi1CsDelayReg[15:8];
  1119. end
  1120. Spi1CsCtrlAddr : begin
  1121. ansReg = Spi1CsCtrlReg[15:8];
  1122. end
  1123. Spi1TxFifoCtrlAddr : begin
  1124. ansReg = Spi1TxFifoCtrlReg[15:8];
  1125. end
  1126. Spi1RxFifoCtrlAddr : begin
  1127. ansReg = Spi1RxFifoCtrlReg[15:8];
  1128. end
  1129. Spi1TxFifo : begin
  1130. ansReg = Spi1TxFifoReg[15:8];
  1131. end
  1132. Spi1RxFifo : begin
  1133. ansReg = Spi1RxFifoReg[15:8];
  1134. end
  1135. Spi2CtrlAddr : begin
  1136. ansReg = Spi2CtrlReg[15:8];
  1137. end
  1138. Spi2ClkAddr : begin
  1139. ansReg = Spi2ClkReg[15:8];
  1140. end
  1141. Spi2CsDelayAddr : begin
  1142. ansReg = Spi2CsDelayReg[15:8];
  1143. end
  1144. Spi2CsCtrlAddr : begin
  1145. ansReg = Spi2CsCtrlReg[15:8];
  1146. end
  1147. Spi2TxFifoCtrlAddr : begin
  1148. ansReg = Spi2TxFifoCtrlReg[15:8];
  1149. end
  1150. Spi2RxFifoCtrlAddr : begin
  1151. ansReg = Spi2RxFifoCtrlReg[15:8];
  1152. end
  1153. Spi2TxFifo : begin
  1154. ansReg = Spi2TxFifoReg[15:8];
  1155. end
  1156. Spi2RxFifo : begin
  1157. ansReg = Spi2RxFifoReg[15:8];
  1158. end
  1159. Spi3CtrlAddr : begin
  1160. ansReg = Spi3CtrlReg[15:8];
  1161. end
  1162. Spi3ClkAddr : begin
  1163. ansReg = Spi3ClkReg[15:8];
  1164. end
  1165. Spi3CsDelayAddr : begin
  1166. ansReg = Spi3CsDelayReg[15:8];
  1167. end
  1168. Spi3CsCtrlAddr : begin
  1169. ansReg = Spi3CsCtrlReg[15:8];
  1170. end
  1171. Spi3TxFifoCtrlAddr : begin
  1172. ansReg = Spi3TxFifoCtrlReg[15:8];
  1173. end
  1174. Spi3RxFifoCtrlAddr : begin
  1175. ansReg = Spi3RxFifoCtrlReg[15:8];
  1176. end
  1177. Spi3TxFifo : begin
  1178. ansReg = Spi3TxFifoReg[15:8];
  1179. end
  1180. Spi3RxFifo : begin
  1181. ansReg = Spi3RxFifoReg[15:8];
  1182. end
  1183. Spi4CtrlAddr : begin
  1184. ansReg = Spi4CtrlReg[15:8];
  1185. end
  1186. Spi4ClkAddr : begin
  1187. ansReg = Spi4ClkReg[15:8];
  1188. end
  1189. Spi4CsDelayAddr : begin
  1190. ansReg = Spi4CsDelayReg[15:8];
  1191. end
  1192. Spi4CsCtrlAddr : begin
  1193. ansReg = Spi4CsCtrlReg[15:8];
  1194. end
  1195. Spi4TxFifoCtrlAddr : begin
  1196. ansReg = Spi4TxFifoCtrlReg[15:8];
  1197. end
  1198. Spi4RxFifoCtrlAddr : begin
  1199. ansReg = Spi4RxFifoCtrlReg[15:8];
  1200. end
  1201. Spi4TxFifo : begin
  1202. ansReg = Spi4TxFifoReg[15:8];
  1203. end
  1204. Spi4RxFifo : begin
  1205. ansReg = Spi4RxFifoReg[15:8];
  1206. end
  1207. Spi5CtrlAddr : begin
  1208. ansReg = Spi5CtrlReg[15:8];
  1209. end
  1210. Spi5ClkAddr : begin
  1211. ansReg = Spi5ClkReg[15:8];
  1212. end
  1213. Spi5CsDelayAddr : begin
  1214. ansReg = Spi5CsDelayReg[15:8];
  1215. end
  1216. Spi5CsCtrlAddr : begin
  1217. ansReg = Spi5CsCtrlReg[15:8];
  1218. end
  1219. Spi5TxFifoCtrlAddr : begin
  1220. ansReg = Spi5TxFifoCtrlReg[15:8];
  1221. end
  1222. Spi5RxFifoCtrlAddr : begin
  1223. ansReg = Spi5RxFifoCtrlReg[15:8];
  1224. end
  1225. Spi5TxFifo : begin
  1226. ansReg = Spi5TxFifoReg[15:8];
  1227. end
  1228. Spi5RxFifo : begin
  1229. ansReg = Spi5RxFifoReg[15:8];
  1230. end
  1231. Spi6CtrlAddr : begin
  1232. ansReg = Spi6CtrlReg[15:8];
  1233. end
  1234. Spi6ClkAddr : begin
  1235. ansReg = Spi6ClkReg[15:8];
  1236. end
  1237. Spi6CsDelayAddr : begin
  1238. ansReg = Spi6CsDelayReg[15:8];
  1239. end
  1240. Spi6CsCtrlAddr : begin
  1241. ansReg = Spi6CsCtrlReg[15:8];
  1242. end
  1243. Spi6TxFifoCtrlAddr : begin
  1244. ansReg = Spi6TxFifoCtrlReg[15:8];
  1245. end
  1246. Spi6RxFifoCtrlAddr : begin
  1247. ansReg = Spi6RxFifoCtrlReg[15:8];
  1248. end
  1249. Spi6TxFifo : begin
  1250. ansReg = Spi6TxFifoReg[15:8];
  1251. end
  1252. Spi6RxFifo : begin
  1253. ansReg = Spi6RxFifoReg[15:8];
  1254. end
  1255. SpiTxRxEn : begin
  1256. ansReg = SpiTxRxEnReg[15:8];
  1257. end
  1258. GPIOCtrlAddr : begin
  1259. ansReg = GPIOAReg[15:8];
  1260. end
  1261. GPIOCtrlAddrS : begin
  1262. ansReg = GPIOARegS[15:8];
  1263. end
  1264. Debug0Addr : begin
  1265. ansReg = LedReg[15:8];
  1266. end
  1267. endcase
  1268. end
  1269. 2 : begin
  1270. case (Addr_i)
  1271. Spi0CtrlAddr : begin
  1272. ansReg = Spi0CtrlReg[7:0];
  1273. end
  1274. Spi0ClkAddr : begin
  1275. ansReg = Spi0ClkReg[7:0];
  1276. end
  1277. Spi0CsDelayAddr : begin
  1278. ansReg = Spi0CsDelayReg[7:0];
  1279. end
  1280. Spi0CsCtrlAddr : begin
  1281. ansReg = Spi0CsCtrlReg[7:0];
  1282. end
  1283. Spi0TxFifoCtrlAddr : begin
  1284. ansReg = Spi0TxFifoCtrlReg[7:0];
  1285. end
  1286. Spi0RxFifoCtrlAddr : begin
  1287. ansReg = Spi0RxFifoCtrlReg[7:0];
  1288. end
  1289. Spi0TxFifo : begin
  1290. ansReg = Spi0TxFifoReg[7:0];
  1291. end
  1292. Spi0RxFifo : begin
  1293. ansReg = Spi0RxFifoReg[7:0];
  1294. end
  1295. Spi1CtrlAddr : begin
  1296. ansReg = Spi1CtrlReg[7:0];
  1297. end
  1298. Spi1ClkAddr : begin
  1299. ansReg = Spi1ClkReg[7:0];
  1300. end
  1301. Spi1CsDelayAddr : begin
  1302. ansReg = Spi1CsDelayReg[7:0];
  1303. end
  1304. Spi1CsCtrlAddr : begin
  1305. ansReg = Spi1CsCtrlReg[7:0];
  1306. end
  1307. Spi1TxFifoCtrlAddr : begin
  1308. ansReg = Spi1TxFifoCtrlReg[7:0];
  1309. end
  1310. Spi1RxFifoCtrlAddr : begin
  1311. ansReg = Spi1RxFifoCtrlReg[7:0];
  1312. end
  1313. Spi1TxFifo : begin
  1314. ansReg = Spi1TxFifoReg[7:0];
  1315. end
  1316. Spi1RxFifo : begin
  1317. ansReg = Spi1RxFifoReg[7:0];
  1318. end
  1319. Spi2CtrlAddr : begin
  1320. ansReg = Spi2CtrlReg[7:0];
  1321. end
  1322. Spi2ClkAddr : begin
  1323. ansReg = Spi2ClkReg[7:0];
  1324. end
  1325. Spi2CsDelayAddr : begin
  1326. ansReg = Spi2CsDelayReg[7:0];
  1327. end
  1328. Spi2CsCtrlAddr : begin
  1329. ansReg = Spi2CsCtrlReg[7:0];
  1330. end
  1331. Spi2TxFifoCtrlAddr : begin
  1332. ansReg = Spi2TxFifoCtrlReg[7:0];
  1333. end
  1334. Spi2RxFifoCtrlAddr : begin
  1335. ansReg = Spi2RxFifoCtrlReg[7:0];
  1336. end
  1337. Spi2TxFifo : begin
  1338. ansReg = Spi2TxFifoReg[7:0];
  1339. end
  1340. Spi2RxFifo : begin
  1341. ansReg = Spi2RxFifoReg[7:0];
  1342. end
  1343. Spi3CtrlAddr : begin
  1344. ansReg = Spi3CtrlReg[7:0];
  1345. end
  1346. Spi3ClkAddr : begin
  1347. ansReg = Spi3ClkReg[7:0];
  1348. end
  1349. Spi3CsDelayAddr : begin
  1350. ansReg = Spi3CsDelayReg[7:0];
  1351. end
  1352. Spi3CsCtrlAddr : begin
  1353. ansReg = Spi3CsCtrlReg[7:0];
  1354. end
  1355. Spi3TxFifoCtrlAddr : begin
  1356. ansReg = Spi3TxFifoCtrlReg[7:0];
  1357. end
  1358. Spi3RxFifoCtrlAddr : begin
  1359. ansReg = Spi3RxFifoCtrlReg[7:0];
  1360. end
  1361. Spi3TxFifo : begin
  1362. ansReg = Spi3TxFifoReg[7:0];
  1363. end
  1364. Spi3RxFifo : begin
  1365. ansReg = Spi3RxFifoReg[7:0];
  1366. end
  1367. Spi4CtrlAddr : begin
  1368. ansReg = Spi4CtrlReg[7:0];
  1369. end
  1370. Spi4ClkAddr : begin
  1371. ansReg = Spi4ClkReg[7:0];
  1372. end
  1373. Spi4CsDelayAddr : begin
  1374. ansReg = Spi4CsDelayReg[7:0];
  1375. end
  1376. Spi4CsCtrlAddr : begin
  1377. ansReg = Spi4CsCtrlReg[7:0];
  1378. end
  1379. Spi4TxFifoCtrlAddr : begin
  1380. ansReg = Spi4TxFifoCtrlReg[7:0];
  1381. end
  1382. Spi4RxFifoCtrlAddr : begin
  1383. ansReg = Spi4RxFifoCtrlReg[7:0];
  1384. end
  1385. Spi4TxFifo : begin
  1386. ansReg = Spi4TxFifoReg[7:0];
  1387. end
  1388. Spi4RxFifo : begin
  1389. ansReg = Spi4RxFifoReg[7:0];
  1390. end
  1391. Spi5CtrlAddr : begin
  1392. ansReg = Spi5CtrlReg[7:0];
  1393. end
  1394. Spi5ClkAddr : begin
  1395. ansReg = Spi5ClkReg[7:0];
  1396. end
  1397. Spi5CsDelayAddr : begin
  1398. ansReg = Spi5CsDelayReg[7:0];
  1399. end
  1400. Spi5CsCtrlAddr : begin
  1401. ansReg = Spi5CsCtrlReg[7:0];
  1402. end
  1403. Spi5TxFifoCtrlAddr : begin
  1404. ansReg = Spi5TxFifoCtrlReg[7:0];
  1405. end
  1406. Spi5RxFifoCtrlAddr : begin
  1407. ansReg = Spi5RxFifoCtrlReg[7:0];
  1408. end
  1409. Spi5TxFifo : begin
  1410. ansReg = Spi5TxFifoReg[7:0];
  1411. end
  1412. Spi5RxFifo : begin
  1413. ansReg = Spi5RxFifoReg[7:0];
  1414. end
  1415. Spi6CtrlAddr : begin
  1416. ansReg = Spi6CtrlReg[7:0];
  1417. end
  1418. Spi6ClkAddr : begin
  1419. ansReg = Spi6ClkReg[7:0];
  1420. end
  1421. Spi6CsDelayAddr : begin
  1422. ansReg = Spi6CsDelayReg[7:0];
  1423. end
  1424. Spi6CsCtrlAddr : begin
  1425. ansReg = Spi6CsCtrlReg[7:0];
  1426. end
  1427. Spi6TxFifoCtrlAddr : begin
  1428. ansReg = Spi6TxFifoCtrlReg[7:0];
  1429. end
  1430. Spi6RxFifoCtrlAddr : begin
  1431. ansReg = Spi6RxFifoCtrlReg[7:0];
  1432. end
  1433. Spi6TxFifo : begin
  1434. ansReg = Spi6TxFifoReg[7:0];
  1435. end
  1436. Spi6RxFifo : begin
  1437. ansReg = Spi6RxFifoReg[7:0];
  1438. end
  1439. SpiTxRxEn : begin
  1440. ansReg = SpiTxRxEnReg[7:0];
  1441. end
  1442. GPIOCtrlAddr : begin
  1443. ansReg = GPIOAReg[7:0];
  1444. end
  1445. GPIOCtrlAddrS : begin
  1446. ansReg = GPIOARegS[7:0];
  1447. end
  1448. Debug0Addr : begin
  1449. ansReg = LedReg[7:0];
  1450. end
  1451. default : begin
  1452. ansReg = 0;
  1453. end
  1454. endcase
  1455. end
  1456. default:begin
  1457. ansReg = 0;
  1458. end
  1459. endcase
  1460. end
  1461. end
  1462. end
  1463. endmodule