RegMap.v 44 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214
  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. input [CmdRegWidth-1:0] TxFifoCtrlReg0_i,
  13. input [CmdRegWidth-1:0] RxFifoCtrlReg0_i,
  14. input [CmdRegWidth-1:0] TxFifoCtrlReg1_i,
  15. input [CmdRegWidth-1:0] RxFifoCtrlReg1_i,
  16. input [CmdRegWidth-1:0] TxFifoCtrlReg2_i,
  17. input [CmdRegWidth-1:0] RxFifoCtrlReg2_i,
  18. input [CmdRegWidth-1:0] TxFifoCtrlReg3_i,
  19. input [CmdRegWidth-1:0] RxFifoCtrlReg3_i,
  20. input [CmdRegWidth-1:0] TxFifoCtrlReg4_i,
  21. input [CmdRegWidth-1:0] RxFifoCtrlReg4_i,
  22. input [CmdRegWidth-1:0] TxFifoCtrlReg5_i,
  23. input [CmdRegWidth-1:0] RxFifoCtrlReg5_i,
  24. input [CmdRegWidth-1:0] TxFifoCtrlReg6_i,
  25. input [CmdRegWidth-1:0] RxFifoCtrlReg6_i,
  26. output [CmdRegWidth/2-1:0] Spi0CtrlReg_o,
  27. output [CmdRegWidth/2-1:0] Spi0ClkReg_o,
  28. output [CmdRegWidth/2-1:0] Spi0CsDelayReg_o,
  29. output [CmdRegWidth/2-1:0] Spi0CsCtrlReg_o,
  30. output [CmdRegWidth/2-1:0] Spi0TxFifoCtrlReg_o,
  31. output [CmdRegWidth/2-1:0] Spi0RxFifoCtrlReg_o,
  32. output [CmdRegWidth/2-1:0] Spi0TxFifoReg_o,
  33. output [CmdRegWidth/2-1:0] Spi0RxFifoReg_o,
  34. output [CmdRegWidth/2-1:0] Spi1CtrlReg_o,
  35. output [CmdRegWidth/2-1:0] Spi1ClkReg_o,
  36. output [CmdRegWidth/2-1:0] Spi1CsDelayReg_o,
  37. output [CmdRegWidth/2-1:0] Spi1CsCtrlReg_o,
  38. output [CmdRegWidth/2-1:0] Spi1TxFifoCtrlReg_o,
  39. output [CmdRegWidth/2-1:0] Spi1RxFifoCtrlReg_o,
  40. output [CmdRegWidth/2-1:0] Spi1TxFifoReg_o,
  41. output [CmdRegWidth/2-1:0] Spi1RxFifoReg_o,
  42. output [CmdRegWidth/2-1:0] Spi2CtrlReg_o,
  43. output [CmdRegWidth/2-1:0] Spi2ClkReg_o,
  44. output [CmdRegWidth/2-1:0] Spi2CsDelayReg_o,
  45. output [CmdRegWidth/2-1:0] Spi2CsCtrlReg_o,
  46. output [CmdRegWidth/2-1:0] Spi2TxFifoCtrlReg_o,
  47. output [CmdRegWidth/2-1:0] Spi2RxFifoCtrlReg_o,
  48. output [CmdRegWidth/2-1:0] Spi2TxFifoReg_o,
  49. output [CmdRegWidth/2-1:0] Spi2RxFifoReg_o,
  50. output [CmdRegWidth/2-1:0] Spi3CtrlReg_o,
  51. output [CmdRegWidth/2-1:0] Spi3ClkReg_o,
  52. output [CmdRegWidth/2-1:0] Spi3CsDelayReg_o,
  53. output [CmdRegWidth/2-1:0] Spi3CsCtrlReg_o,
  54. output [CmdRegWidth/2-1:0] Spi3TxFifoCtrlReg_o,
  55. output [CmdRegWidth/2-1:0] Spi3RxFifoCtrlReg_o,
  56. output [CmdRegWidth/2-1:0] Spi3TxFifoReg_o,
  57. output [CmdRegWidth/2-1:0] Spi3RxFifoReg_o,
  58. output [CmdRegWidth/2-1:0] Spi4CtrlReg_o,
  59. output [CmdRegWidth/2-1:0] Spi4ClkReg_o,
  60. output [CmdRegWidth/2-1:0] Spi4CsDelayReg_o,
  61. output [CmdRegWidth/2-1:0] Spi4CsCtrlReg_o,
  62. output [CmdRegWidth/2-1:0] Spi4TxFifoCtrlReg_o,
  63. output [CmdRegWidth/2-1:0] Spi4RxFifoCtrlReg_o,
  64. output [CmdRegWidth/2-1:0] Spi4TxFifoReg_o,
  65. output [CmdRegWidth/2-1:0] Spi4RxFifoReg_o,
  66. output [CmdRegWidth/2-1:0] Spi5CtrlReg_o,
  67. output [CmdRegWidth/2-1:0] Spi5ClkReg_o,
  68. output [CmdRegWidth/2-1:0] Spi5CsDelayReg_o,
  69. output [CmdRegWidth/2-1:0] Spi5CsCtrlReg_o,
  70. output [CmdRegWidth/2-1:0] Spi5TxFifoCtrlReg_o,
  71. output [CmdRegWidth/2-1:0] Spi5RxFifoCtrlReg_o,
  72. output [CmdRegWidth/2-1:0] Spi5TxFifoReg_o,
  73. output [CmdRegWidth/2-1:0] Spi5RxFifoReg_o,
  74. output [CmdRegWidth/2-1:0] Spi6CtrlReg_o,
  75. output [CmdRegWidth/2-1:0] Spi6ClkReg_o,
  76. output [CmdRegWidth/2-1:0] Spi6CsDelayReg_o,
  77. output [CmdRegWidth/2-1:0] Spi6CsCtrlReg_o,
  78. output [CmdRegWidth/2-1:0] Spi6TxFifoCtrlReg_o,
  79. output [CmdRegWidth/2-1:0] Spi6RxFifoCtrlReg_o,
  80. output [CmdRegWidth/2-1:0] Spi6TxFifoReg_o,
  81. output [CmdRegWidth/2-1:0] Spi6RxFifoReg_o,
  82. output [CmdRegWidth/2-1:0] SpiTxRxEnReg_o,
  83. output [CmdRegWidth-1:0] GPIOAReg_o,
  84. output [CmdRegWidth/2-1:0] AnsDataReg_o,
  85. output Led_o
  86. );
  87. //================================================================================
  88. // REG/WIRE
  89. //================================================================================
  90. reg [CmdRegWidth/2-1:0] Spi0CtrlReg;
  91. reg [CmdRegWidth/2-1:0] Spi0ClkReg;
  92. reg [CmdRegWidth/2-1:0] Spi0CsDelayReg;
  93. reg [CmdRegWidth/2-1:0] Spi0CsCtrlReg;
  94. reg [CmdRegWidth/2-1:0] Spi0TxFifoCtrlReg;
  95. reg [CmdRegWidth/2-1:0] Spi0RxFifoCtrlReg;
  96. reg [CmdRegWidth/2-1:0] Spi0TxFifoReg;
  97. reg [CmdRegWidth/2-1:0] Spi0RxFifoReg;
  98. reg [CmdRegWidth/2-1:0] Spi1CtrlReg;
  99. reg [CmdRegWidth/2-1:0] Spi1ClkReg;
  100. reg [CmdRegWidth/2-1:0] Spi1CsDelayReg;
  101. reg [CmdRegWidth/2-1:0] Spi1CsCtrlReg;
  102. reg [CmdRegWidth/2-1:0] Spi1TxFifoCtrlReg;
  103. reg [CmdRegWidth/2-1:0] Spi1RxFifoCtrlReg;
  104. reg [CmdRegWidth/2-1:0] Spi1TxFifoReg;
  105. reg [CmdRegWidth/2-1:0] Spi1RxFifoReg;
  106. reg [CmdRegWidth/2-1:0] Spi2CtrlReg;
  107. reg [CmdRegWidth/2-1:0] Spi2ClkReg;
  108. reg [CmdRegWidth/2-1:0] Spi2CsDelayReg;
  109. reg [CmdRegWidth/2-1:0] Spi2CsCtrlReg;
  110. reg [CmdRegWidth/2-1:0] Spi2TxFifoCtrlReg;
  111. reg [CmdRegWidth/2-1:0] Spi2RxFifoCtrlReg;
  112. reg [CmdRegWidth/2-1:0] Spi2TxFifoReg;
  113. reg [CmdRegWidth/2-1:0] Spi2RxFifoReg;
  114. reg [CmdRegWidth/2-1:0] Spi3CtrlReg;
  115. reg [CmdRegWidth/2-1:0] Spi3ClkReg;
  116. reg [CmdRegWidth/2-1:0] Spi3CsDelayReg;
  117. reg [CmdRegWidth/2-1:0] Spi3CsCtrlReg;
  118. reg [CmdRegWidth/2-1:0] Spi3TxFifoCtrlReg;
  119. reg [CmdRegWidth/2-1:0] Spi3RxFifoCtrlReg;
  120. reg [CmdRegWidth/2-1:0] Spi3TxFifoReg;
  121. reg [CmdRegWidth/2-1:0] Spi3RxFifoReg;
  122. reg [CmdRegWidth/2-1:0] Spi4CtrlReg;
  123. reg [CmdRegWidth/2-1:0] Spi4ClkReg;
  124. reg [CmdRegWidth/2-1:0] Spi4CsDelayReg;
  125. reg [CmdRegWidth/2-1:0] Spi4CsCtrlReg;
  126. reg [CmdRegWidth/2-1:0] Spi4TxFifoCtrlReg;
  127. reg [CmdRegWidth/2-1:0] Spi4RxFifoCtrlReg;
  128. reg [CmdRegWidth/2-1:0] Spi4TxFifoReg;
  129. reg [CmdRegWidth/2-1:0] Spi4RxFifoReg;
  130. reg [CmdRegWidth/2-1:0] Spi5CtrlReg;
  131. reg [CmdRegWidth/2-1:0] Spi5ClkReg;
  132. reg [CmdRegWidth/2-1:0] Spi5CsDelayReg;
  133. reg [CmdRegWidth/2-1:0] Spi5CsCtrlReg;
  134. reg [CmdRegWidth/2-1:0] Spi5TxFifoCtrlReg;
  135. reg [CmdRegWidth/2-1:0] Spi5RxFifoCtrlReg;
  136. reg [CmdRegWidth/2-1:0] Spi5TxFifoReg;
  137. reg [CmdRegWidth/2-1:0] Spi5RxFifoReg;
  138. reg [CmdRegWidth/2-1:0] Spi6CtrlReg;
  139. reg [CmdRegWidth/2-1:0] Spi6ClkReg;
  140. reg [CmdRegWidth/2-1:0] Spi6CsDelayReg;
  141. reg [CmdRegWidth/2-1:0] Spi6CsCtrlReg;
  142. reg [CmdRegWidth/2-1:0] Spi6TxFifoCtrlReg;
  143. reg [CmdRegWidth/2-1:0] Spi6RxFifoCtrlReg;
  144. reg [CmdRegWidth/2-1:0] Spi6TxFifoReg;
  145. reg [CmdRegWidth/2-1:0] Spi6RxFifoReg;
  146. (* dont_touch = "yes" *)reg [CmdRegWidth/2-1:0] SpiTxRxEnReg;
  147. reg [CmdRegWidth/2-1:0] GPIOAReg;
  148. reg [CmdRegWidth/2-1:0] GPIOARegS;
  149. (* dont_touch = "yes" *)reg [CmdRegWidth/2-1:0] ansReg;
  150. (* dont_touch = "yes" *)reg [CmdRegWidth/2-1:0] LedReg;
  151. reg [1:0] beReg;
  152. //================================================================================
  153. // ASSIGNMENTS
  154. //================================================================================
  155. assign Spi0CtrlReg_o = Spi0CtrlReg;
  156. assign Spi0ClkReg_o = Spi0ClkReg;
  157. assign Spi0CsDelayReg_o = Spi0CsDelayReg;
  158. assign Spi0CsCtrlReg_o = Spi0CsCtrlReg;
  159. assign Spi0TxFifoCtrlReg_o = Spi0TxFifoCtrlReg;
  160. assign Spi0RxFifoCtrlReg_o = Spi0RxFifoCtrlReg;
  161. assign Spi0TxFifoReg_o = Spi0TxFifoReg;
  162. assign Spi0RxFifoReg_o = Spi0RxFifoReg;
  163. assign Spi1CtrlReg_o = Spi1CtrlReg;
  164. assign Spi1ClkReg_o = Spi1ClkReg;
  165. assign Spi1CsDelayReg_o = Spi1CsDelayReg;
  166. assign Spi1CsCtrlReg_o = Spi1CsCtrlReg;
  167. assign Spi1TxFifoCtrlReg_o = Spi1TxFifoCtrlReg;
  168. assign Spi1RxFifoCtrlReg_o = Spi1RxFifoCtrlReg;
  169. assign Spi1TxFifoReg_o = Spi1TxFifoReg;
  170. assign Spi1RxFifoReg_o = Spi1RxFifoReg;
  171. assign Spi2CtrlReg_o = Spi2CtrlReg;
  172. assign Spi2ClkReg_o = Spi2ClkReg;
  173. assign Spi2CsDelayReg_o = Spi2CsDelayReg;
  174. assign Spi2CsCtrlReg_o = Spi2CsCtrlReg;
  175. assign Spi2TxFifoCtrlReg_o = Spi2TxFifoCtrlReg;
  176. assign Spi2RxFifoCtrlReg_o = Spi2RxFifoCtrlReg;
  177. assign Spi2TxFifoReg_o = Spi2TxFifoReg;
  178. assign Spi2RxFifoReg_o = Spi2RxFifoReg;
  179. assign Spi3CtrlReg_o = Spi3CtrlReg;
  180. assign Spi3ClkReg_o = Spi3ClkReg;
  181. assign Spi3CsDelayReg_o = Spi3CsDelayReg;
  182. assign Spi3CsCtrlReg_o = Spi3CsCtrlReg;
  183. assign Spi3TxFifoCtrlReg_o = Spi3TxFifoCtrlReg;
  184. assign Spi3RxFifoCtrlReg_o = Spi3RxFifoCtrlReg;
  185. assign Spi3TxFifoReg_o = Spi3TxFifoReg;
  186. assign Spi3RxFifoReg_o = Spi3RxFifoReg;
  187. assign Spi4CtrlReg_o = Spi4CtrlReg;
  188. assign Spi4ClkReg_o = Spi4ClkReg;
  189. assign Spi4CsDelayReg_o = Spi4CsDelayReg;
  190. assign Spi4CsCtrlReg_o = Spi4CsCtrlReg;
  191. assign Spi4TxFifoCtrlReg_o = Spi4TxFifoCtrlReg;
  192. assign Spi4RxFifoCtrlReg_o = Spi4RxFifoCtrlReg;
  193. assign Spi4TxFifoReg_o = Spi4TxFifoReg;
  194. assign Spi4RxFifoReg_o = Spi4RxFifoReg;
  195. assign Spi5CtrlReg_o = Spi5CtrlReg;
  196. assign Spi5ClkReg_o = Spi5ClkReg;
  197. assign Spi5CsDelayReg_o = Spi5CsDelayReg;
  198. assign Spi5CsCtrlReg_o = Spi5CsCtrlReg;
  199. assign Spi5TxFifoCtrlReg_o = Spi5TxFifoCtrlReg;
  200. assign Spi5RxFifoCtrlReg_o = Spi5RxFifoCtrlReg;
  201. assign Spi5TxFifoReg_o = Spi5TxFifoReg;
  202. assign Spi5RxFifoReg_o = Spi5RxFifoReg;
  203. assign Spi6CtrlReg_o = Spi6CtrlReg;
  204. assign Spi6ClkReg_o = Spi6ClkReg;
  205. assign Spi6CsDelayReg_o = Spi6CsDelayReg;
  206. assign Spi6CsCtrlReg_o = Spi6CsCtrlReg;
  207. assign Spi6TxFifoCtrlReg_o = Spi6TxFifoCtrlReg;
  208. assign Spi6RxFifoCtrlReg_o = Spi6RxFifoCtrlReg;
  209. assign Spi6TxFifoReg_o = Spi6TxFifoReg;
  210. assign Spi6RxFifoReg_o = Spi6RxFifoReg;
  211. assign SpiTxRxEnReg_o = SpiTxRxEnReg;
  212. assign GPIOAReg_o = {GPIOARegS, GPIOAReg};
  213. assign AnsDataReg_o = ansReg;
  214. assign Led_o = LedReg[0];
  215. //================================================================================
  216. // LOCALPARAMS
  217. //================================================================================
  218. localparam Spi0CtrlAddr = 12'h00;
  219. localparam Spi0ClkAddr = 12'h04;
  220. localparam Spi0CsDelayAddr = 12'h08;
  221. localparam Spi0CsCtrlAddr = 12'h0c;
  222. localparam Spi0TxFifoCtrlAddrLsb = 12'h10;
  223. localparam Spi0TxFifoCtrlAddrMsb = 12'h12;
  224. localparam Spi0RxFifoCtrlAddrLsb = 12'h14;
  225. localparam Spi0RxFifoCtrlAddrMsb = 12'h16;
  226. localparam Spi0TxFifo = 12'h18;
  227. localparam Spi0RxFifo = 12'h1c;
  228. localparam Spi1CtrlAddr = 12'h50;
  229. localparam Spi1ClkAddr = 12'h54;
  230. localparam Spi1CsDelayAddr = 12'h58;
  231. localparam Spi1CsCtrlAddr = 12'h5c;
  232. localparam Spi1TxFifoCtrlAddrLsb = 12'h60;
  233. localparam Spi1TxFifoCtrlAddrMsb = 12'h62;
  234. localparam Spi1RxFifoCtrlAddrLsb = 12'h64;
  235. localparam Spi1RxFifoCtrlAddrMsb = 12'h66;
  236. localparam Spi1TxFifo = 12'h68;
  237. localparam Spi1RxFifo = 12'h6c;
  238. localparam Spi2CtrlAddr = 12'hF0;
  239. localparam Spi2ClkAddr = 12'hF4;
  240. localparam Spi2CsDelayAddr = 12'hF8;
  241. localparam Spi2CsCtrlAddr = 12'hFc;
  242. localparam Spi2TxFifoCtrlAddrLsb = 12'h100;
  243. localparam Spi2TxFifoCtrlAddrMsb = 12'h102;
  244. localparam Spi2RxFifoCtrlAddrLsb = 12'h104;
  245. localparam Spi2RxFifoCtrlAddrMsb = 12'h106;
  246. localparam Spi2TxFifo = 12'h108;
  247. localparam Spi2RxFifo = 12'h10c;
  248. localparam Spi3CtrlAddr = 12'h140;
  249. localparam Spi3ClkAddr = 12'h144;
  250. localparam Spi3CsDelayAddr = 12'h148;
  251. localparam Spi3CsCtrlAddr = 12'h14c;
  252. localparam Spi3TxFifoCtrlAddrLsb = 12'h150;
  253. localparam Spi3TxFifoCtrlAddrMsb = 12'h152;
  254. localparam Spi3RxFifoCtrlAddrLsb = 12'h154;
  255. localparam Spi3RxFifoCtrlAddrMsb = 12'h156;
  256. localparam Spi3TxFifo = 12'h158;
  257. localparam Spi3RxFifo = 12'h15c;
  258. localparam Spi4CtrlAddr = 12'h190;
  259. localparam Spi4ClkAddr = 12'h194;
  260. localparam Spi4CsDelayAddr = 12'h198;
  261. localparam Spi4CsCtrlAddr = 12'h19c;
  262. localparam Spi4TxFifoCtrlAddrLsb = 12'h1a0;
  263. localparam Spi4TxFifoCtrlAddrMsb = 12'h1a2;
  264. localparam Spi4RxFifoCtrlAddrLsb = 12'h1a4;
  265. localparam Spi4RxFifoCtrlAddrMsb = 12'h1a6;
  266. localparam Spi4TxFifo = 12'h1a8;
  267. localparam Spi4RxFifo = 12'h1ac;
  268. localparam Spi5CtrlAddr = 12'h1e0;
  269. localparam Spi5ClkAddr = 12'h1e4;
  270. localparam Spi5CsDelayAddr = 12'h1e8;
  271. localparam Spi5CsCtrlAddr = 12'h1ec;
  272. localparam Spi5TxFifoCtrlAddrLsb = 12'h1f0;
  273. localparam Spi5TxFifoCtrlAddrMsb = 12'h1f2;
  274. localparam Spi5RxFifoCtrlAddrLsb = 12'h1f4;
  275. localparam Spi5RxFifoCtrlAddrMsb = 12'h1f6;
  276. localparam Spi5TxFifo = 12'h1f8;
  277. localparam Spi5RxFifo = 12'h1fc;
  278. localparam Spi6CtrlAddr = 12'h230;
  279. localparam Spi6ClkAddr = 12'h234;
  280. localparam Spi6CsDelayAddr = 12'h238;
  281. localparam Spi6CsCtrlAddr = 12'h23c;
  282. localparam Spi6TxFifoCtrlAddrLsb = 12'h240;
  283. localparam Spi6TxFifoCtrlAddrMsb = 12'h242;
  284. localparam Spi6RxFifoCtrlAddrLsb = 12'h244;
  285. localparam Spi6RxFifoCtrlAddrMsb = 12'h246;
  286. localparam Spi6TxFifo = 12'h248;
  287. localparam Spi6RxFifo = 12'h24c;
  288. localparam SpiTxRxEn = 12'hF00;
  289. localparam GPIOCtrlAddr = 12'hFF0;
  290. localparam GPIOCtrlAddrS = 12'hFF2;
  291. localparam Debug0Addr = 12'hFF8;
  292. localparam Debug1Addr = 12'hFFC;
  293. //================================================================================
  294. always @(posedge Clk_i) begin
  295. if (!Rst_i) begin
  296. beReg <= 2'b0;
  297. end else begin
  298. beReg <= SmcBe_i;
  299. end
  300. end
  301. always @(posedge Clk_i) begin
  302. if (Rst_i) begin
  303. Spi0ClkReg <= 0;
  304. Spi0CtrlReg <= 0;
  305. Spi0CsDelayReg <= 0;
  306. Spi0CsCtrlReg <= 0;
  307. Spi0TxFifoCtrlReg <= 0;
  308. Spi0RxFifoCtrlReg <= 0;
  309. Spi0TxFifoReg <= 0;
  310. Spi0RxFifoReg <= 0;
  311. Spi1ClkReg <= 0;
  312. Spi1CtrlReg <= 0;
  313. Spi1CsDelayReg <= 0;
  314. Spi1CsCtrlReg <= 0;
  315. Spi1TxFifoCtrlReg <= 0;
  316. Spi1RxFifoCtrlReg <= 0;
  317. Spi1TxFifoReg <= 0;
  318. Spi1RxFifoReg <= 0;
  319. Spi2ClkReg <= 0;
  320. Spi2CtrlReg <= 0;
  321. Spi2CsDelayReg <= 0;
  322. Spi2CsCtrlReg <= 0;
  323. Spi2TxFifoCtrlReg <= 0;
  324. Spi2RxFifoCtrlReg <= 0;
  325. Spi2TxFifoReg <= 0;
  326. Spi2RxFifoReg <= 0;
  327. Spi3ClkReg <= 0;
  328. Spi3CtrlReg <= 0;
  329. Spi3CsDelayReg <= 0;
  330. Spi3CsCtrlReg <= 0;
  331. Spi3TxFifoCtrlReg <= 0;
  332. Spi3RxFifoCtrlReg <= 0;
  333. Spi3TxFifoReg <= 0;
  334. Spi3RxFifoReg <= 0;
  335. Spi4ClkReg <= 0;
  336. Spi4CtrlReg <= 0;
  337. Spi4CsDelayReg <= 0;
  338. Spi4CsCtrlReg <= 0;
  339. Spi4TxFifoCtrlReg <= 0;
  340. Spi4RxFifoCtrlReg <= 0;
  341. Spi4TxFifoReg <= 0;
  342. Spi4RxFifoReg <= 0;
  343. Spi5ClkReg <= 0;
  344. Spi5CtrlReg <= 0;
  345. Spi5CsDelayReg <= 0;
  346. Spi5CsCtrlReg <= 0;
  347. Spi5TxFifoCtrlReg <= 0;
  348. Spi5RxFifoCtrlReg <= 0;
  349. Spi5TxFifoReg <= 0;
  350. Spi5RxFifoReg <= 0;
  351. Spi6ClkReg <= 0;
  352. Spi6CtrlReg <= 0;
  353. Spi6CsDelayReg <= 0;
  354. Spi6CsCtrlReg <= 0;
  355. Spi6TxFifoCtrlReg <= 0;
  356. Spi6RxFifoCtrlReg <= 0;
  357. Spi6TxFifoReg <= 0;
  358. Spi6RxFifoReg <= 0;
  359. SpiTxRxEnReg <= 0;
  360. GPIOAReg <= 0;
  361. GPIOARegS <= 0;
  362. LedReg <= 0;
  363. end
  364. else begin
  365. if (Val_i) begin
  366. case (beReg)
  367. 0 : begin
  368. case (Addr_i)
  369. Spi0CtrlAddr : begin
  370. Spi0CtrlReg <= Data_i;
  371. end
  372. Spi0ClkAddr : begin
  373. Spi0ClkReg <= Data_i;
  374. end
  375. Spi0CsDelayAddr : begin
  376. Spi0CsDelayReg <= Data_i;
  377. end
  378. Spi0CsCtrlAddr : begin
  379. Spi0CsCtrlReg <= Data_i;
  380. end
  381. Spi0TxFifoCtrlAddrLsb : begin
  382. Spi0TxFifoCtrlReg <= Data_i;
  383. end
  384. Spi0RxFifoCtrlAddrLsb : begin
  385. Spi0RxFifoCtrlReg <= Data_i;
  386. end
  387. Spi0TxFifo : begin
  388. Spi0TxFifoReg <= Data_i;
  389. end
  390. Spi0RxFifo : begin
  391. Spi0RxFifoReg <= Data_i;
  392. end
  393. Spi1CtrlAddr : begin
  394. Spi1CtrlReg <= Data_i;
  395. end
  396. Spi1ClkAddr : begin
  397. Spi1ClkReg <= Data_i;
  398. end
  399. Spi1CsDelayAddr : begin
  400. Spi1CsDelayReg <= Data_i;
  401. end
  402. Spi1CsCtrlAddr : begin
  403. Spi1CsCtrlReg <= Data_i;
  404. end
  405. Spi1TxFifoCtrlAddrLsb : begin
  406. Spi1TxFifoCtrlReg <= Data_i;
  407. end
  408. Spi1RxFifoCtrlAddrLsb : begin
  409. Spi1RxFifoCtrlReg <= Data_i;
  410. end
  411. Spi1TxFifo : begin
  412. Spi1TxFifoReg <= Data_i;
  413. end
  414. Spi1RxFifo : begin
  415. Spi1RxFifoReg <= Data_i;
  416. end
  417. Spi2CtrlAddr : begin
  418. Spi2CtrlReg <= Data_i;
  419. end
  420. Spi2ClkAddr : begin
  421. Spi2ClkReg <= Data_i;
  422. end
  423. Spi2CsDelayAddr : begin
  424. Spi2CsDelayReg <= Data_i;
  425. end
  426. Spi2CsCtrlAddr : begin
  427. Spi2CsCtrlReg <= Data_i;
  428. end
  429. Spi2TxFifoCtrlAddrLsb : begin
  430. Spi2TxFifoCtrlReg <= Data_i;
  431. end
  432. Spi2RxFifoCtrlAddrLsb : begin
  433. Spi2RxFifoCtrlReg <= Data_i;
  434. end
  435. Spi2TxFifo : begin
  436. Spi2TxFifoReg <= Data_i;
  437. end
  438. Spi2RxFifo : begin
  439. Spi2RxFifoReg <= Data_i;
  440. end
  441. Spi3CtrlAddr : begin
  442. Spi3CtrlReg <= Data_i;
  443. end
  444. Spi3ClkAddr : begin
  445. Spi3ClkReg <= Data_i;
  446. end
  447. Spi3CsDelayAddr : begin
  448. Spi3CsDelayReg <= Data_i;
  449. end
  450. Spi3CsCtrlAddr : begin
  451. Spi3CsCtrlReg <= Data_i;
  452. end
  453. Spi3TxFifoCtrlAddrLsb : begin
  454. Spi3TxFifoCtrlReg <= Data_i;
  455. end
  456. Spi3RxFifoCtrlAddrLsb : begin
  457. Spi3RxFifoCtrlReg <= Data_i;
  458. end
  459. Spi3TxFifo : begin
  460. Spi3TxFifoReg <= Data_i;
  461. end
  462. Spi3RxFifo : begin
  463. Spi3RxFifoReg <= Data_i;
  464. end
  465. Spi4CtrlAddr : begin
  466. Spi4CtrlReg <= Data_i;
  467. end
  468. Spi4ClkAddr : begin
  469. Spi4ClkReg <= Data_i;
  470. end
  471. Spi4CsDelayAddr : begin
  472. Spi4CsDelayReg <= Data_i;
  473. end
  474. Spi4CsCtrlAddr : begin
  475. Spi4CsCtrlReg <= Data_i;
  476. end
  477. Spi4TxFifoCtrlAddrLsb : begin
  478. Spi4TxFifoCtrlReg <= Data_i;
  479. end
  480. Spi4RxFifoCtrlAddrLsb : begin
  481. Spi4RxFifoCtrlReg <= Data_i;
  482. end
  483. Spi4TxFifo : begin
  484. Spi4TxFifoReg <= Data_i;
  485. end
  486. Spi4RxFifo : begin
  487. Spi4RxFifoReg <= Data_i;
  488. end
  489. Spi5CtrlAddr : begin
  490. Spi5CtrlReg <= Data_i;
  491. end
  492. Spi5ClkAddr : begin
  493. Spi5ClkReg <= Data_i;
  494. end
  495. Spi5CsDelayAddr : begin
  496. Spi5CsDelayReg <= Data_i;
  497. end
  498. Spi5CsCtrlAddr : begin
  499. Spi5CsCtrlReg <= Data_i;
  500. end
  501. Spi5TxFifoCtrlAddrLsb : begin
  502. Spi5TxFifoCtrlReg <= Data_i;
  503. end
  504. Spi5RxFifoCtrlAddrLsb : begin
  505. Spi5RxFifoCtrlReg <= Data_i;
  506. end
  507. Spi5TxFifo : begin
  508. Spi5TxFifoReg <= Data_i;
  509. end
  510. Spi5RxFifo : begin
  511. Spi5RxFifoReg <= Data_i;
  512. end
  513. Spi6CtrlAddr : begin
  514. Spi6CtrlReg <= Data_i;
  515. end
  516. Spi6ClkAddr : begin
  517. Spi6ClkReg <= Data_i;
  518. end
  519. Spi6CsDelayAddr : begin
  520. Spi6CsDelayReg <= Data_i;
  521. end
  522. Spi6CsCtrlAddr : begin
  523. Spi6CsCtrlReg <= Data_i;
  524. end
  525. Spi6TxFifoCtrlAddrLsb : begin
  526. Spi6TxFifoCtrlReg <= Data_i;
  527. end
  528. Spi6RxFifoCtrlAddrLsb : begin
  529. Spi6RxFifoCtrlReg <= Data_i;
  530. end
  531. Spi6TxFifo : begin
  532. Spi6TxFifoReg <= Data_i;
  533. end
  534. Spi6RxFifo : begin
  535. Spi6RxFifoReg <= Data_i;
  536. end
  537. SpiTxRxEn : begin
  538. SpiTxRxEnReg <= Data_i;
  539. end
  540. GPIOCtrlAddr : begin
  541. GPIOAReg <= Data_i;
  542. end
  543. GPIOCtrlAddrS : begin
  544. GPIOARegS <= Data_i;
  545. end
  546. Debug0Addr : begin
  547. LedReg <= Data_i;
  548. end
  549. endcase
  550. end
  551. 1 : begin
  552. case (Addr_i)
  553. Spi0CtrlAddr : begin
  554. Spi0CtrlReg[15:8] <= Data_i[15:8];
  555. end
  556. Spi0ClkAddr : begin
  557. Spi0ClkReg[15:8] <= Data_i[15:8];
  558. end
  559. Spi0CsDelayAddr : begin
  560. Spi0CsDelayReg[15:8] <= Data_i[15:8];
  561. end
  562. Spi0CsCtrlAddr : begin
  563. Spi0CsCtrlReg[15:8] <= Data_i[15:8];
  564. end
  565. Spi0TxFifoCtrlAddrLsb : begin
  566. Spi0TxFifoCtrlReg[15:8] <= Data_i[15:8];
  567. end
  568. Spi0RxFifoCtrlAddrLsb : begin
  569. Spi0RxFifoCtrlReg[15:8] <= Data_i[15:8];
  570. end
  571. Spi0TxFifo : begin
  572. Spi0TxFifoReg[15:8] <= Data_i[15:8];
  573. end
  574. Spi0RxFifo : begin
  575. Spi0RxFifoReg[15:8] <= Data_i[15:8];
  576. end
  577. Spi1CtrlAddr : begin
  578. Spi1CtrlReg[15:8] <= Data_i[15:8];
  579. end
  580. Spi1ClkAddr : begin
  581. Spi1ClkReg[15:8] <= Data_i[15:8];
  582. end
  583. Spi1CsDelayAddr : begin
  584. Spi1CsDelayReg[15:8] <= Data_i[15:8];
  585. end
  586. Spi1CsCtrlAddr : begin
  587. Spi1CsCtrlReg[15:8] <= Data_i[15:8];
  588. end
  589. Spi1TxFifoCtrlAddrLsb : begin
  590. Spi1TxFifoCtrlReg[15:8] <= Data_i[15:8];
  591. end
  592. Spi1RxFifoCtrlAddrLsb : begin
  593. Spi1RxFifoCtrlReg[15:8] <= Data_i[15:8];
  594. end
  595. Spi1TxFifo : begin
  596. Spi1TxFifoReg[15:8] <= Data_i[15:8];
  597. end
  598. Spi1RxFifo : begin
  599. Spi1RxFifoReg[15:8] <= Data_i[15:8];
  600. end
  601. Spi2CtrlAddr : begin
  602. Spi2CtrlReg[15:8] <= Data_i[15:8];
  603. end
  604. Spi2ClkAddr : begin
  605. Spi2ClkReg[15:8] <= Data_i[15:8];
  606. end
  607. Spi2CsDelayAddr : begin
  608. Spi2CsDelayReg[15:8] <= Data_i[15:8];
  609. end
  610. Spi2CsCtrlAddr : begin
  611. Spi2CsCtrlReg[15:8] <= Data_i[15:8];
  612. end
  613. Spi2TxFifoCtrlAddrLsb : begin
  614. Spi2TxFifoCtrlReg[15:8] <= Data_i[15:8];
  615. end
  616. Spi2RxFifoCtrlAddrLsb : begin
  617. Spi2RxFifoCtrlReg[15:8] <= Data_i[15:8];
  618. end
  619. Spi2TxFifo : begin
  620. Spi2TxFifoReg[15:8] <= Data_i[15:8];
  621. end
  622. Spi2RxFifo : begin
  623. Spi2RxFifoReg[15:8] <= Data_i[15:8];
  624. end
  625. Spi3CtrlAddr : begin
  626. Spi3CtrlReg[15:8] <= Data_i[15:8];
  627. end
  628. Spi3ClkAddr : begin
  629. Spi3ClkReg[15:8] <= Data_i[15:8];
  630. end
  631. Spi3CsDelayAddr : begin
  632. Spi3CsDelayReg[15:8] <= Data_i[15:8];
  633. end
  634. Spi3CsCtrlAddr : begin
  635. Spi3CsCtrlReg[15:8] <= Data_i[15:8];
  636. end
  637. Spi3TxFifoCtrlAddrLsb : begin
  638. Spi3TxFifoCtrlReg[15:8] <= Data_i[15:8];
  639. end
  640. Spi3RxFifoCtrlAddrLsb : begin
  641. Spi3RxFifoCtrlReg[15:8] <= Data_i[15:8];
  642. end
  643. Spi3TxFifo : begin
  644. Spi3TxFifoReg[15:8] <= Data_i[15:8];
  645. end
  646. Spi3RxFifo : begin
  647. Spi3RxFifoReg[15:8] <= Data_i[15:8];
  648. end
  649. Spi4CtrlAddr : begin
  650. Spi4CtrlReg[15:8] <= Data_i[15:8];
  651. end
  652. Spi4ClkAddr : begin
  653. Spi4ClkReg[15:8] <= Data_i[15:8];
  654. end
  655. Spi4CsDelayAddr : begin
  656. Spi4CsDelayReg[15:8] <= Data_i[15:8];
  657. end
  658. Spi4CsCtrlAddr : begin
  659. Spi4CsCtrlReg[15:8] <= Data_i[15:8];
  660. end
  661. Spi4TxFifoCtrlAddrLsb : begin
  662. Spi4TxFifoCtrlReg[15:8] <= Data_i[15:8];
  663. end
  664. Spi4RxFifoCtrlAddrLsb : begin
  665. Spi4RxFifoCtrlReg[15:8] <= Data_i[15:8];
  666. end
  667. Spi4TxFifo : begin
  668. Spi4TxFifoReg[15:8] <= Data_i[15:8];
  669. end
  670. Spi4RxFifo : begin
  671. Spi4RxFifoReg[15:8] <= Data_i[15:8];
  672. end
  673. Spi5CtrlAddr : begin
  674. Spi5CtrlReg[15:8] <= Data_i[15:8];
  675. end
  676. Spi5ClkAddr : begin
  677. Spi5ClkReg[15:8] <= Data_i[15:8];
  678. end
  679. Spi5CsDelayAddr : begin
  680. Spi5CsDelayReg[15:8] <= Data_i[15:8];
  681. end
  682. Spi5CsCtrlAddr : begin
  683. Spi5CsCtrlReg[15:8] <= Data_i[15:8];
  684. end
  685. Spi5TxFifoCtrlAddrLsb : begin
  686. Spi5TxFifoCtrlReg[15:8] <= Data_i[15:8];
  687. end
  688. Spi5RxFifoCtrlAddrLsb : begin
  689. Spi5RxFifoCtrlReg[15:8] <= Data_i[15:8];
  690. end
  691. Spi5TxFifo : begin
  692. Spi5TxFifoReg[15:8] <= Data_i[15:8];
  693. end
  694. Spi5RxFifo : begin
  695. Spi5RxFifoReg[15:8] <= Data_i[15:8];
  696. end
  697. Spi6CtrlAddr : begin
  698. Spi6CtrlReg[15:8] <= Data_i[15:8];
  699. end
  700. Spi6ClkAddr : begin
  701. Spi6ClkReg[15:8] <= Data_i[15:8];
  702. end
  703. Spi6CsDelayAddr : begin
  704. Spi6CsDelayReg[15:8] <= Data_i[15:8];
  705. end
  706. Spi6CsCtrlAddr : begin
  707. Spi6CsCtrlReg[15:8] <= Data_i[15:8];
  708. end
  709. Spi6TxFifoCtrlAddrLsb : begin
  710. Spi6TxFifoCtrlReg[15:8] <= Data_i[15:8];
  711. end
  712. Spi6RxFifoCtrlAddrLsb : begin
  713. Spi6RxFifoCtrlReg[15:8] <= Data_i[15:8];
  714. end
  715. Spi6TxFifo : begin
  716. Spi6TxFifoReg[15:8] <= Data_i[15:8];
  717. end
  718. Spi6RxFifo : begin
  719. Spi6RxFifoReg[15:8] <= Data_i[15:8];
  720. end
  721. SpiTxRxEn : begin
  722. SpiTxRxEnReg[15:8] <= Data_i[15:8];
  723. end
  724. GPIOCtrlAddr : begin
  725. GPIOAReg[15:8] <= Data_i[15:8];
  726. end
  727. GPIOCtrlAddrS : begin
  728. GPIOARegS[15:8] <= Data_i[15:8];
  729. end
  730. Debug0Addr : begin
  731. LedReg[15:8] <= Data_i[15:8];
  732. end
  733. endcase
  734. end
  735. 2 : begin
  736. case (Addr_i)
  737. Spi0CtrlAddr : begin
  738. Spi0CtrlReg[7:0] <= Data_i[7:0];
  739. end
  740. Spi0ClkAddr : begin
  741. Spi0ClkReg[7:0] <= Data_i[7:0];
  742. end
  743. Spi0CsDelayAddr : begin
  744. Spi0CsDelayReg[7:0] <= Data_i[7:0];
  745. end
  746. Spi0CsCtrlAddr : begin
  747. Spi0CsCtrlReg[7:0] <= Data_i[7:0];
  748. end
  749. Spi0TxFifoCtrlAddrLsb : begin
  750. Spi0TxFifoCtrlReg[7:0] <= Data_i[7:0];
  751. end
  752. Spi0RxFifoCtrlAddrLsb : begin
  753. Spi0RxFifoCtrlReg[7:0] <= Data_i[7:0];
  754. end
  755. Spi0TxFifo : begin
  756. Spi0TxFifoReg[7:0] <= Data_i[7:0];
  757. end
  758. Spi0RxFifo : begin
  759. Spi0RxFifoReg[7:0] <= Data_i[7:0];
  760. end
  761. Spi1CtrlAddr : begin
  762. Spi1CtrlReg[7:0] <= Data_i[7:0];
  763. end
  764. Spi1ClkAddr : begin
  765. Spi1ClkReg[7:0] <= Data_i[7:0];
  766. end
  767. Spi1CsDelayAddr : begin
  768. Spi1CsDelayReg[7:0] <= Data_i[7:0];
  769. end
  770. Spi1CsCtrlAddr : begin
  771. Spi1CsCtrlReg[7:0] <= Data_i[7:0];
  772. end
  773. Spi1TxFifoCtrlAddrLsb : begin
  774. Spi1TxFifoCtrlReg[7:0] <= Data_i[7:0];
  775. end
  776. Spi1RxFifoCtrlAddrLsb : begin
  777. Spi1RxFifoCtrlReg[7:0] <= Data_i[7:0];
  778. end
  779. Spi1TxFifo : begin
  780. Spi1TxFifoReg[7:0] <= Data_i[7:0];
  781. end
  782. Spi1RxFifo : begin
  783. Spi1RxFifoReg[7:0] <= Data_i[7:0];
  784. end
  785. Spi2CtrlAddr : begin
  786. Spi2CtrlReg[7:0] <= Data_i[7:0];
  787. end
  788. Spi2ClkAddr : begin
  789. Spi2ClkReg[7:0] <= Data_i[7:0];
  790. end
  791. Spi2CsDelayAddr : begin
  792. Spi2CsDelayReg[7:0] <= Data_i[7:0];
  793. end
  794. Spi2CsCtrlAddr : begin
  795. Spi2CsCtrlReg[7:0] <= Data_i[7:0];
  796. end
  797. Spi2TxFifoCtrlAddrLsb : begin
  798. Spi2TxFifoCtrlReg[7:0] <= Data_i[7:0];
  799. end
  800. Spi2RxFifoCtrlAddrLsb : begin
  801. Spi2RxFifoCtrlReg[7:0] <= Data_i[7:0];
  802. end
  803. Spi2TxFifo : begin
  804. Spi2TxFifoReg[7:0] <= Data_i[7:0];
  805. end
  806. Spi2RxFifo : begin
  807. Spi2RxFifoReg[7:0] <= Data_i[7:0];
  808. end
  809. Spi3CtrlAddr : begin
  810. Spi3CtrlReg[7:0] <= Data_i[7:0];
  811. end
  812. Spi3ClkAddr : begin
  813. Spi3ClkReg[7:0] <= Data_i[7:0];
  814. end
  815. Spi3CsDelayAddr : begin
  816. Spi3CsDelayReg[7:0] <= Data_i[7:0];
  817. end
  818. Spi3CsCtrlAddr : begin
  819. Spi3CsCtrlReg[7:0] <= Data_i[7:0];
  820. end
  821. Spi3TxFifoCtrlAddrLsb : begin
  822. Spi3TxFifoCtrlReg[7:0] <= Data_i[7:0];
  823. end
  824. Spi3RxFifoCtrlAddrLsb : begin
  825. Spi3RxFifoCtrlReg[7:0] <= Data_i[7:0];
  826. end
  827. Spi3TxFifo : begin
  828. Spi3TxFifoReg[7:0] <= Data_i[7:0];
  829. end
  830. Spi3RxFifo : begin
  831. Spi3RxFifoReg[7:0] <= Data_i[7:0];
  832. end
  833. Spi4CtrlAddr : begin
  834. Spi4CtrlReg[7:0] <= Data_i[7:0];
  835. end
  836. Spi4ClkAddr : begin
  837. Spi4ClkReg[7:0] <= Data_i[7:0];
  838. end
  839. Spi4CsDelayAddr : begin
  840. Spi4CsDelayReg[7:0] <= Data_i[7:0];
  841. end
  842. Spi4CsCtrlAddr : begin
  843. Spi4CsCtrlReg[7:0] <= Data_i[7:0];
  844. end
  845. Spi4TxFifoCtrlAddrLsb : begin
  846. Spi4TxFifoCtrlReg[7:0] <= Data_i[7:0];
  847. end
  848. Spi4RxFifoCtrlAddrLsb : begin
  849. Spi4RxFifoCtrlReg[7:0] <= Data_i[7:0];
  850. end
  851. Spi4TxFifo : begin
  852. Spi4TxFifoReg[7:0] <= Data_i[7:0];
  853. end
  854. Spi4RxFifo : begin
  855. Spi4RxFifoReg[7:0] <= Data_i[7:0];
  856. end
  857. Spi5CtrlAddr : begin
  858. Spi5CtrlReg[7:0] <= Data_i[7:0];
  859. end
  860. Spi5ClkAddr : begin
  861. Spi5ClkReg[7:0] <= Data_i[7:0];
  862. end
  863. Spi5CsDelayAddr : begin
  864. Spi5CsDelayReg[7:0] <= Data_i[7:0];
  865. end
  866. Spi5CsCtrlAddr : begin
  867. Spi5CsCtrlReg[7:0] <= Data_i[7:0];
  868. end
  869. Spi5TxFifoCtrlAddrLsb : begin
  870. Spi5TxFifoCtrlReg[7:0] <= Data_i[7:0];
  871. end
  872. Spi5RxFifoCtrlAddrLsb : begin
  873. Spi5RxFifoCtrlReg[7:0] <= Data_i[7:0];
  874. end
  875. Spi5TxFifo : begin
  876. Spi5TxFifoReg[7:0] <= Data_i[7:0];
  877. end
  878. Spi5RxFifo : begin
  879. Spi5RxFifoReg[7:0] <= Data_i[7:0];
  880. end
  881. Spi6CtrlAddr : begin
  882. Spi6CtrlReg[7:0] <= Data_i[7:0];
  883. end
  884. Spi6ClkAddr : begin
  885. Spi6ClkReg[7:0] <= Data_i[7:0];
  886. end
  887. Spi6CsDelayAddr : begin
  888. Spi6CsDelayReg[7:0] <= Data_i[7:0];
  889. end
  890. Spi6CsCtrlAddr : begin
  891. Spi6CsCtrlReg[7:0] <= Data_i[7:0];
  892. end
  893. Spi6TxFifoCtrlAddrLsb : begin
  894. Spi6TxFifoCtrlReg[7:0] <= Data_i[7:0];
  895. end
  896. Spi6RxFifoCtrlAddrLsb : begin
  897. Spi6RxFifoCtrlReg[7:0] <= Data_i[7:0];
  898. end
  899. Spi6TxFifo : begin
  900. Spi6TxFifoReg[7:0] <= Data_i[7:0];
  901. end
  902. Spi6RxFifo : begin
  903. Spi6RxFifoReg[7:0] <= Data_i[7:0];
  904. end
  905. SpiTxRxEn : begin
  906. SpiTxRxEnReg[7:0] <= Data_i[7:0];
  907. end
  908. GPIOCtrlAddr : begin
  909. GPIOAReg[7:0] <= Data_i[7:0];
  910. end
  911. GPIOCtrlAddrS : begin
  912. GPIOARegS[7:0] <= Data_i[7:0];
  913. end
  914. Debug0Addr : begin
  915. LedReg[7:0] <= Data_i[7:0];
  916. end
  917. endcase
  918. end
  919. endcase
  920. end
  921. end
  922. end
  923. always @(*) begin
  924. if (Rst_i) begin
  925. ansReg = 0;
  926. end else begin
  927. case (Addr_i)
  928. Spi0CtrlAddr : begin
  929. ansReg = Spi0CtrlReg;
  930. end
  931. Spi0ClkAddr : begin
  932. ansReg = Spi0ClkReg;
  933. end
  934. Spi0CsDelayAddr : begin
  935. ansReg = Spi0CsDelayReg;
  936. end
  937. Spi0CsCtrlAddr : begin
  938. ansReg = Spi0CsCtrlReg;
  939. end
  940. Spi0TxFifoCtrlAddrLsb : begin
  941. ansReg = TxFifoCtrlReg0_i[15:0];
  942. end
  943. Spi0TxFifoCtrlAddrMsb : begin
  944. ansReg = TxFifoCtrlReg0_i[31:16];
  945. end
  946. Spi0RxFifoCtrlAddrLsb : begin
  947. ansReg = RxFifoCtrlReg0_i[15:0];
  948. end
  949. Spi0RxFifoCtrlAddrMsb : begin
  950. ansReg = RxFifoCtrlReg0_i[31:16];
  951. end
  952. Spi0TxFifo : begin
  953. ansReg = Spi0TxFifoReg;
  954. end
  955. Spi0RxFifo : begin
  956. ansReg = Spi0RxFifoReg;
  957. end
  958. Spi1CtrlAddr : begin
  959. ansReg = Spi1CtrlReg;
  960. end
  961. Spi1ClkAddr : begin
  962. ansReg = Spi1ClkReg;
  963. end
  964. Spi1CsDelayAddr : begin
  965. ansReg = Spi1CsDelayReg;
  966. end
  967. Spi1CsCtrlAddr : begin
  968. ansReg = Spi1CsCtrlReg;
  969. end
  970. Spi1TxFifoCtrlAddrLsb : begin
  971. ansReg = TxFifoCtrlReg1_i[15:0];
  972. end
  973. Spi1TxFifoCtrlAddrMsb : begin
  974. ansReg = TxFifoCtrlReg1_i[31:16];
  975. end
  976. Spi1RxFifoCtrlAddrLsb : begin
  977. ansReg = RxFifoCtrlReg1_i[15:0];
  978. end
  979. Spi1RxFifoCtrlAddrMsb : begin
  980. ansReg = RxFifoCtrlReg1_i[31:16];
  981. end
  982. Spi1TxFifo : begin
  983. ansReg = Spi1TxFifoReg;
  984. end
  985. Spi1RxFifo : begin
  986. ansReg = Spi1RxFifoReg;
  987. end
  988. Spi2CtrlAddr : begin
  989. ansReg = Spi2CtrlReg;
  990. end
  991. Spi2ClkAddr : begin
  992. ansReg = Spi2ClkReg;
  993. end
  994. Spi2CsDelayAddr : begin
  995. ansReg = Spi2CsDelayReg;
  996. end
  997. Spi2CsCtrlAddr : begin
  998. ansReg = Spi2CsCtrlReg;
  999. end
  1000. Spi2TxFifoCtrlAddrLsb : begin
  1001. ansReg = TxFifoCtrlReg2_i[15:0];
  1002. end
  1003. Spi2TxFifoCtrlAddrMsb : begin
  1004. ansReg = TxFifoCtrlReg2_i[31:16];
  1005. end
  1006. Spi2RxFifoCtrlAddrLsb : begin
  1007. ansReg = RxFifoCtrlReg2_i[15:0];
  1008. end
  1009. Spi2RxFifoCtrlAddrMsb : begin
  1010. ansReg = RxFifoCtrlReg2_i[31:16];
  1011. end
  1012. Spi2TxFifo : begin
  1013. ansReg = Spi2TxFifoReg;
  1014. end
  1015. Spi2RxFifo : begin
  1016. ansReg = Spi2RxFifoReg;
  1017. end
  1018. Spi3CtrlAddr : begin
  1019. ansReg = Spi3CtrlReg;
  1020. end
  1021. Spi3ClkAddr : begin
  1022. ansReg = Spi3ClkReg;
  1023. end
  1024. Spi3CsDelayAddr : begin
  1025. ansReg = Spi3CsDelayReg;
  1026. end
  1027. Spi3CsCtrlAddr : begin
  1028. ansReg = Spi3CsCtrlReg;
  1029. end
  1030. Spi3TxFifoCtrlAddrLsb : begin
  1031. ansReg = TxFifoCtrlReg3_i[15:0];
  1032. end
  1033. Spi3TxFifoCtrlAddrMsb : begin
  1034. ansReg = TxFifoCtrlReg3_i[31:16];
  1035. end
  1036. Spi3RxFifoCtrlAddrLsb : begin
  1037. ansReg = RxFifoCtrlReg3_i[15:0];
  1038. end
  1039. Spi3RxFifoCtrlAddrMsb : begin
  1040. ansReg = RxFifoCtrlReg3_i[31:16];
  1041. end
  1042. Spi3TxFifo : begin
  1043. ansReg = Spi3TxFifoReg;
  1044. end
  1045. Spi3RxFifo : begin
  1046. ansReg = Spi3RxFifoReg;
  1047. end
  1048. Spi4CtrlAddr : begin
  1049. ansReg = Spi4CtrlReg;
  1050. end
  1051. Spi4ClkAddr : begin
  1052. ansReg = Spi4ClkReg;
  1053. end
  1054. Spi4CsDelayAddr : begin
  1055. ansReg = Spi4CsDelayReg;
  1056. end
  1057. Spi4CsCtrlAddr : begin
  1058. ansReg = Spi4CsCtrlReg;
  1059. end
  1060. Spi4TxFifoCtrlAddrLsb : begin
  1061. ansReg = TxFifoCtrlReg4_i[15:0];
  1062. end
  1063. Spi4TxFifoCtrlAddrMsb : begin
  1064. ansReg = TxFifoCtrlReg4_i[31:16];
  1065. end
  1066. Spi4RxFifoCtrlAddrLsb : begin
  1067. ansReg = RxFifoCtrlReg4_i[15:0];
  1068. end
  1069. Spi4RxFifoCtrlAddrMsb : begin
  1070. ansReg = RxFifoCtrlReg4_i[31:16];
  1071. end
  1072. Spi4TxFifo : begin
  1073. ansReg = Spi4TxFifoReg;
  1074. end
  1075. Spi4RxFifo : begin
  1076. ansReg = Spi4RxFifoReg;
  1077. end
  1078. Spi5CtrlAddr : begin
  1079. ansReg = Spi5CtrlReg;
  1080. end
  1081. Spi5ClkAddr : begin
  1082. ansReg = Spi5ClkReg;
  1083. end
  1084. Spi5CsDelayAddr : begin
  1085. ansReg = Spi5CsDelayReg;
  1086. end
  1087. Spi5CsCtrlAddr : begin
  1088. ansReg = Spi5CsCtrlReg;
  1089. end
  1090. Spi5TxFifoCtrlAddrLsb : begin
  1091. ansReg = TxFifoCtrlReg5_i[15:0];
  1092. end
  1093. Spi5TxFifoCtrlAddrMsb : begin
  1094. ansReg = TxFifoCtrlReg5_i[31:16];
  1095. end
  1096. Spi5RxFifoCtrlAddrLsb : begin
  1097. ansReg = RxFifoCtrlReg5_i[15:0];
  1098. end
  1099. Spi5RxFifoCtrlAddrMsb : begin
  1100. ansReg = RxFifoCtrlReg5_i[31:16];
  1101. end
  1102. Spi5TxFifo : begin
  1103. ansReg = Spi5TxFifoReg;
  1104. end
  1105. Spi5RxFifo : begin
  1106. ansReg = Spi5RxFifoReg;
  1107. end
  1108. Spi6CtrlAddr : begin
  1109. ansReg = Spi6CtrlReg;
  1110. end
  1111. Spi6ClkAddr : begin
  1112. ansReg = Spi6ClkReg;
  1113. end
  1114. Spi6CsDelayAddr : begin
  1115. ansReg = Spi6CsDelayReg;
  1116. end
  1117. Spi6CsCtrlAddr : begin
  1118. ansReg = Spi6CsCtrlReg;
  1119. end
  1120. Spi6TxFifoCtrlAddrLsb : begin
  1121. ansReg = TxFifoCtrlReg6_i[15:0];
  1122. end
  1123. Spi6TxFifoCtrlAddrMsb : begin
  1124. ansReg = TxFifoCtrlReg6_i[31:16];
  1125. end
  1126. Spi6RxFifoCtrlAddrLsb : begin
  1127. ansReg = RxFifoCtrlReg6_i[15:0];
  1128. end
  1129. Spi6RxFifoCtrlAddrMsb : begin
  1130. ansReg = RxFifoCtrlReg6_i[31:16];
  1131. end
  1132. Spi6TxFifo : begin
  1133. ansReg = Spi6TxFifoReg;
  1134. end
  1135. Spi6RxFifo : begin
  1136. ansReg = Spi6RxFifoReg;
  1137. end
  1138. SpiTxRxEn : begin
  1139. ansReg = SpiTxRxEnReg;
  1140. end
  1141. GPIOCtrlAddr : begin
  1142. ansReg = GPIOAReg;
  1143. end
  1144. GPIOCtrlAddrS : begin
  1145. ansReg = GPIOARegS;
  1146. end
  1147. Debug0Addr : begin
  1148. ansReg = LedReg;
  1149. end
  1150. default : begin
  1151. ansReg = 0;
  1152. end
  1153. endcase
  1154. end
  1155. end
  1156. endmodule