RegMap.v 59 KB

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