RegMap.v 50 KB

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