RegMap.v 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897
  1. module RegMap #(
  2. parameter CmdRegWidth = 32,
  3. parameter AddrRegWidth = 12
  4. )
  5. (
  6. input Clk_i,
  7. input Rst_i,
  8. input [1:0] SmcBe_i,
  9. input [CMD_REG_WIDTH/2-1:0] Data_i,
  10. input [ADDR_REG_WIDTH-1:0] Addr_i,
  11. input Val_i,
  12. input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg0_i,
  13. input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg0_i,
  14. input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg1_i,
  15. input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg1_i,
  16. input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg2_i,
  17. input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg2_i,
  18. input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg3_i,
  19. input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg3_i,
  20. input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg4_i,
  21. input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg4_i,
  22. input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg5_i,
  23. input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg5_i,
  24. input [CMD_REG_WIDTH-1:0] TxFifoCtrlReg6_i,
  25. input [CMD_REG_WIDTH-1:0] RxFifoCtrlReg6_i,
  26. input [6:0] LdReg_i,
  27. output reg [CMD_REG_WIDTH/2-1:0] Spi0CtrlReg_o,
  28. output reg [CMD_REG_WIDTH/2-1:0] Spi0ClkReg_o,
  29. output reg [CMD_REG_WIDTH/2-1:0] Spi0CsDelayReg_o,
  30. output reg [CMD_REG_WIDTH/2-1:0] Spi0CsCtrlReg_o,
  31. output reg [CMD_REG_WIDTH/2-1:0] Spi0TxFifoCtrlReg_o,
  32. output reg [CMD_REG_WIDTH/2-1:0] Spi0RxFifoCtrlReg_o,
  33. output reg [CMD_REG_WIDTH/2-1:0] Spi0TxFifoReg_o,
  34. output reg [CMD_REG_WIDTH/2-1:0] Spi0RxFifoReg_o,
  35. output reg [CMD_REG_WIDTH/2-1:0] Spi1CtrlReg_o,
  36. output reg [CMD_REG_WIDTH/2-1:0] Spi1ClkReg_o,
  37. output reg [CMD_REG_WIDTH/2-1:0] Spi1CsDelayReg_o,
  38. output reg [CMD_REG_WIDTH/2-1:0] Spi1CsCtrlReg_o,
  39. output reg [CMD_REG_WIDTH/2-1:0] Spi1TxFifoCtrlReg_o,
  40. output reg [CMD_REG_WIDTH/2-1:0] Spi1RxFifoCtrlReg_o,
  41. output reg [CMD_REG_WIDTH/2-1:0] Spi1TxFifoReg_o,
  42. output reg [CMD_REG_WIDTH/2-1:0] Spi1RxFifoReg_o,
  43. output reg [CMD_REG_WIDTH/2-1:0] Spi2CtrlReg_o,
  44. output reg [CMD_REG_WIDTH/2-1:0] Spi2ClkReg_o,
  45. output reg [CMD_REG_WIDTH/2-1:0] Spi2CsDelayReg_o,
  46. output reg [CMD_REG_WIDTH/2-1:0] Spi2CsCtrlReg_o,
  47. output reg [CMD_REG_WIDTH/2-1:0] Spi2TxFifoCtrlReg_o,
  48. output reg [CMD_REG_WIDTH/2-1:0] Spi2RxFifoCtrlReg_o,
  49. output reg [CMD_REG_WIDTH/2-1:0] Spi2TxFifoReg_o,
  50. output reg [CMD_REG_WIDTH/2-1:0] Spi2RxFifoReg_o,
  51. output reg [CMD_REG_WIDTH/2-1:0] Spi3CtrlReg_o,
  52. output reg [CMD_REG_WIDTH/2-1:0] Spi3ClkReg_o,
  53. output reg [CMD_REG_WIDTH/2-1:0] Spi3CsDelayReg_o,
  54. output reg [CMD_REG_WIDTH/2-1:0] Spi3CsCtrlReg_o,
  55. output reg [CMD_REG_WIDTH/2-1:0] Spi3TxFifoCtrlReg_o,
  56. output reg [CMD_REG_WIDTH/2-1:0] Spi3RxFifoCtrlReg_o,
  57. output reg [CMD_REG_WIDTH/2-1:0] Spi3TxFifoReg_o,
  58. output reg [CMD_REG_WIDTH/2-1:0] Spi3RxFifoReg_o,
  59. output reg [CMD_REG_WIDTH/2-1:0] Spi4CtrlReg_o,
  60. output reg [CMD_REG_WIDTH/2-1:0] Spi4ClkReg_o,
  61. output reg [CMD_REG_WIDTH/2-1:0] Spi4CsDelayReg_o,
  62. output reg [CMD_REG_WIDTH/2-1:0] Spi4CsCtrlReg_o,
  63. output reg [CMD_REG_WIDTH/2-1:0] Spi4TxFifoCtrlReg_o,
  64. output reg [CMD_REG_WIDTH/2-1:0] Spi4RxFifoCtrlReg_o,
  65. output reg [CMD_REG_WIDTH/2-1:0] Spi4TxFifoReg_o,
  66. output reg [CMD_REG_WIDTH/2-1:0] Spi4RxFifoReg_o,
  67. output reg [CMD_REG_WIDTH/2-1:0] Spi5CtrlReg_o,
  68. output reg [CMD_REG_WIDTH/2-1:0] Spi5ClkReg_o,
  69. output reg [CMD_REG_WIDTH/2-1:0] Spi5CsDelayReg_o,
  70. output reg [CMD_REG_WIDTH/2-1:0] Spi5CsCtrlReg_o,
  71. output reg [CMD_REG_WIDTH/2-1:0] Spi5TxFifoCtrlReg_o,
  72. output reg [CMD_REG_WIDTH/2-1:0] Spi5RxFifoCtrlReg_o,
  73. output reg [CMD_REG_WIDTH/2-1:0] Spi5TxFifoReg_o,
  74. output reg [CMD_REG_WIDTH/2-1:0] Spi5RxFifoReg_o,
  75. output reg [CMD_REG_WIDTH/2-1:0] Spi6CtrlReg_o,
  76. output reg [CMD_REG_WIDTH/2-1:0] Spi6ClkReg_o,
  77. output reg [CMD_REG_WIDTH/2-1:0] Spi6CsDelayReg_o,
  78. output reg [CMD_REG_WIDTH/2-1:0] Spi6CsCtrlReg_o,
  79. output reg [CMD_REG_WIDTH/2-1:0] Spi6TxFifoCtrlReg_o,
  80. output reg [CMD_REG_WIDTH/2-1:0] Spi6RxFifoCtrlReg_o,
  81. output reg [CMD_REG_WIDTH/2-1:0] Spi6TxFifoReg_o,
  82. output reg [CMD_REG_WIDTH/2-1:0] Spi6RxFifoReg_o,
  83. output [CMD_REG_WIDTH/2-1:0] SpiTxRxEnReg_o,
  84. output [CMD_REG_WIDTH-1:0] GPIOAReg_o,
  85. output [CMD_REG_WIDTH/2-1:0] AnsDataReg_o,
  86. output Led_o
  87. );
  88. //================================================================================
  89. // REG/WIRE
  90. //================================================================================
  91. (* dont_touch = "yes" *)reg [CMD_REG_WIDTH/2-1:0] spiTxRxEnReg;
  92. reg [CMD_REG_WIDTH/2-1:0] GPIOAReg;
  93. reg [CMD_REG_WIDTH/2-1:0] GPIOARegS;
  94. (* dont_touch = "yes" *)reg [CMD_REG_WIDTH/2-1:0] ansReg;
  95. (* dont_touch = "yes" *)reg [CMD_REG_WIDTH/2-1:0] ledReg;
  96. reg [1:0] beReg;
  97. //================================================================================
  98. // ASSIGNMENTS
  99. //================================================================================
  100. assign SpiTxRxEnReg_o = spiTxRxEnReg;
  101. assign GPIOAReg_o = {GPIOARegS, GPIOAReg};
  102. assign AnsDataReg_o = ansReg;
  103. assign Led_o = ledReg[0];
  104. //================================================================================
  105. // LOCALPARAMS
  106. //================================================================================
  107. localparam SPI_0_CTRL_ADDR = 12'h00;
  108. localparam SPI_0_CLK_ADDR = 12'h04;
  109. localparam SPI_0_CS_DELAY_ADDR = 12'h08;
  110. localparam SPI_0_CS_CTRL_ADDR = 12'h0c;
  111. localparam SPI_0_TX_FIFO_CTRL_ADDR_LSB = 12'h10;
  112. localparam SPI_0_TX_FIFO_CTRL_ADDR_MSB = 12'h12;
  113. localparam SPI_0_RX_FIFO_CTRL_ADDR_LSB = 12'h14;
  114. localparam SPI_0_RX_FIFO_CTRL_ADDR_MSB = 12'h16;
  115. localparam SPI_0_TX_FIFO = 12'h18;
  116. localparam SPI_0_RX_FIFO = 12'h1c;
  117. localparam SPI_1_CTRL_ADDR = 12'h50;
  118. localparam SPI_1_CLK_ADDR = 12'h54;
  119. localparam SPI_1_CS_DELAY_ADDR = 12'h58;
  120. localparam SPI_1_CS_CTRL_ADDR = 12'h5c;
  121. localparam SPI_1_TX_FIFO_CTRL_ADDR_LSB = 12'h60;
  122. localparam SPI_1_TX_FIFO_CTRL_ADDR_MSB = 12'h62;
  123. localparam SPI_1_RX_FIFO_CTRL_ADDR_LSB = 12'h64;
  124. localparam SPI_1_RX_FIFO_CTRL_ADDR_MSB = 12'h66;
  125. localparam SPI_1_TX_FIFO = 12'h68;
  126. localparam SPI_1_RX_FIFO = 12'h6c;
  127. localparam SPI_2_CTRL_ADDR = 12'hF0;
  128. localparam SPI_2_CLK_ADDR = 12'hF4;
  129. localparam SPI_2_CS_DELAY_ADDR = 12'hF8;
  130. localparam SPI_2_CS_CTRL_ADDR = 12'hFc;
  131. localparam SPI_2_TX_FIFO_CTRL_ADDR_LSB = 12'h100;
  132. localparam SPI_2_TX_FIFO_CTRL_ADDR_MSB = 12'h102;
  133. localparam SPI_2_RX_FIFO_CTRL_ADDR_LSB = 12'h104;
  134. localparam SPI_2_RX_FIFO_CTRL_ADDR_MSB = 12'h106;
  135. localparam SPI_2_TX_FIFO = 12'h108;
  136. localparam SPI_2_RX_FIFO = 12'h10c;
  137. localparam SPI_3_CTRL_ADDR = 12'h140;
  138. localparam SPI_3_CLK_ADDR = 12'h144;
  139. localparam SPI_3_CS_DELAY_ADDR = 12'h148;
  140. localparam SPI_3_CS_CTRL_ADDR = 12'h14c;
  141. localparam SPI_3_TX_FIFO_CTRL_ADDR_LSB = 12'h150;
  142. localparam SPI_3_TX_FIFO_CTRL_ADDR_MSB = 12'h152;
  143. localparam SPI_3_RX_FIFO_CTRL_ADDR_LSB = 12'h154;
  144. localparam SPI_3_RX_FIFO_CTRL_ADDR_MSB = 12'h156;
  145. localparam SPI_3_TX_FIFO = 12'h158;
  146. localparam SPI_3_RX_FIFO = 12'h15c;
  147. localparam SPI_4_CTRL_ADDR = 12'h190;
  148. localparam SPI_4_CLK_ADDR = 12'h194;
  149. localparam SPI_4_CS_DELAY_ADDR = 12'h198;
  150. localparam SPI_4_CS_CTRL_ADDR = 12'h19c;
  151. localparam SPI_4_TX_FIFO_CTRL_ADDR_LSB = 12'h1a0;
  152. localparam SPI_4_TX_FIFO_CTRL_ADDR_MSB = 12'h1a2;
  153. localparam SPI_4_RX_FIFO_CTRL_ADDR_LSB = 12'h1a4;
  154. localparam SPI_4_RX_FIFO_CTRL_ADDR_MSB = 12'h1a6;
  155. localparam SPI_4_TX_FIFO = 12'h1a8;
  156. localparam SPI_4_RX_FIFO = 12'h1ac;
  157. localparam SPI_5_CTRL_ADDR = 12'h1e0;
  158. localparam SPI_5_CLK_ADDR = 12'h1e4;
  159. localparam SPI_5_CS_DELAY_ADDR = 12'h1e8;
  160. localparam SPI_5_CS_CTRL_ADDR = 12'h1ec;
  161. localparam SPI_5_TX_FIFO_CTRL_ADDR_LSB = 12'h1f0;
  162. localparam SPI_5_TX_FIFO_CTRL_ADDR_MSB = 12'h1f2;
  163. localparam SPI_5_RX_FIFO_CTRL_ADDR_LSB = 12'h1f4;
  164. localparam SPI_5_RX_FIFO_CTRL_ADDR_MSB = 12'h1f6;
  165. localparam SPI_5_TX_FIFO = 12'h1f8;
  166. localparam SPI_5_RX_FIFO = 12'h1fc;
  167. localparam SPI_6_CTRL_ADDR = 12'h230;
  168. localparam SPI_6_CLK_ADDR = 12'h234;
  169. localparam SPI_6_CS_DELAY_ADDR = 12'h238;
  170. localparam SPI_6_CS_CTRL_ADDR = 12'h23c;
  171. localparam SPI_6_TX_FIFO_CTRL_ADDR_LSB = 12'h240;
  172. localparam SPI_6_TX_FIFO_CTRL_ADDR_MSB = 12'h242;
  173. localparam SPI_6_RX_FIFO_CTRL_ADDR_LSB = 12'h244;
  174. localparam SPI_6_RX_FIFO_CTRL_ADDR_MSB = 12'h246;
  175. localparam SPI_6_TX_FIFO = 12'h248;
  176. localparam SPI_6_RX_FIFO = 12'h24c;
  177. localparam SPI_TX_RX_EN = 12'hF00;
  178. localparam GPIO_CTRL_ADDR = 12'hFF0;
  179. localparam GPIO_CTRL_ADDR_S = 12'hFF2;
  180. localparam DEBUG_0_ADDR = 12'hFF8;
  181. localparam DEBUG_1_ADDR = 12'hFFC;
  182. //================================================================================
  183. // CODING
  184. //================================================================================
  185. always @(posedge Clk_i) begin
  186. if (!Rst_i) begin
  187. beReg <= 2'b0;
  188. end else begin
  189. beReg <= SmcBe_i;
  190. end
  191. end
  192. always @(posedge Clk_i) begin
  193. if (Rst_i) begin
  194. Spi0ClkReg_o <= 0;
  195. Spi0CtrlReg_o <= 0;
  196. Spi0CsDelayReg_o <= 0;
  197. Spi0CsCtrlReg_o <= 0;
  198. Spi0TxFifoCtrlReg_o <= 0;
  199. Spi0RxFifoCtrlReg_o <= 0;
  200. Spi1ClkReg_o <= 0;
  201. Spi1CtrlReg_o <= 0;
  202. Spi1CsDelayReg_o <= 0;
  203. Spi1CsCtrlReg_o <= 0;
  204. Spi1TxFifoCtrlReg_o <= 0;
  205. Spi1RxFifoCtrlReg_o <= 0;
  206. Spi2ClkReg_o <= 0;
  207. Spi2CtrlReg_o <= 0;
  208. Spi2CsDelayReg_o <= 0;
  209. Spi2CsCtrlReg_o <= 0;
  210. Spi2TxFifoCtrlReg_o <= 0;
  211. Spi2RxFifoCtrlReg_o <= 0;
  212. Spi3ClkReg_o <= 0;
  213. Spi3CtrlReg_o <= 0;
  214. Spi3CsDelayReg_o <= 0;
  215. Spi3CsCtrlReg_o <= 0;
  216. Spi3TxFifoCtrlReg_o <= 0;
  217. Spi3RxFifoCtrlReg_o <= 0;
  218. Spi4ClkReg_o <= 0;
  219. Spi4CtrlReg_o <= 0;
  220. Spi4CsDelayReg_o <= 0;
  221. Spi4CsCtrlReg_o <= 0;
  222. Spi4TxFifoCtrlReg_o <= 0;
  223. Spi4RxFifoCtrlReg_o <= 0;
  224. Spi5ClkReg_o <= 0;
  225. Spi5CtrlReg_o <= 0;
  226. Spi5CsDelayReg_o <= 0;
  227. Spi5CsCtrlReg_o <= 0;
  228. Spi5TxFifoCtrlReg_o <= 0;
  229. Spi5RxFifoCtrlReg_o <= 0;
  230. Spi6ClkReg_o <= 0;
  231. Spi6CtrlReg_o <= 0;
  232. Spi6CsDelayReg_o <= 0;
  233. Spi6CsCtrlReg_o <= 0;
  234. Spi6TxFifoCtrlReg_o <= 0;
  235. Spi6RxFifoCtrlReg_o <= 0;
  236. spiTxRxEnReg <= 0;
  237. GPIOAReg <= 0;
  238. GPIOARegS <= 0;
  239. ledReg <= 0;
  240. end
  241. else begin
  242. if (Val_i) begin
  243. case (beReg)
  244. 0 : begin
  245. case (Addr_i)
  246. SPI_0_CTRL_ADDR : begin
  247. Spi0CtrlReg_o <= Data_i;
  248. end
  249. SPI_0_CLK_ADDR : begin
  250. Spi0ClkReg_o <= Data_i;
  251. end
  252. SPI_0_CS_DELAY_ADDR : begin
  253. Spi0CsDelayReg_o <= Data_i;
  254. end
  255. SPI_0_CS_CTRL_ADDR : begin
  256. Spi0CsCtrlReg_o <= Data_i;
  257. end
  258. SPI_0_TX_FIFO_CTRL_ADDR_LSB : begin
  259. Spi0TxFifoCtrlReg_o <= Data_i;
  260. end
  261. SPI_0_RX_FIFO_CTRL_ADDR_LSB : begin
  262. Spi0RxFifoCtrlReg_o <= Data_i;
  263. end
  264. SPI_1_CTRL_ADDR : begin
  265. Spi1CtrlReg_o <= Data_i;
  266. end
  267. SPI_1_CLK_ADDR : begin
  268. Spi1ClkReg_o <= Data_i;
  269. end
  270. SPI_1_CS_DELAY_ADDR : begin
  271. Spi1CsDelayReg_o <= Data_i;
  272. end
  273. SPI_1_CS_CTRL_ADDR : begin
  274. Spi1CsCtrlReg_o <= Data_i;
  275. end
  276. SPI_1_TX_FIFO_CTRL_ADDR_LSB : begin
  277. Spi1TxFifoCtrlReg_o <= Data_i;
  278. end
  279. SPI_1_RX_FIFO_CTRL_ADDR_LSB : begin
  280. Spi1RxFifoCtrlReg_o <= Data_i;
  281. end
  282. SPI_2_CTRL_ADDR : begin
  283. Spi2CtrlReg_o <= Data_i;
  284. end
  285. SPI_2_CLK_ADDR : begin
  286. Spi2ClkReg_o <= Data_i;
  287. end
  288. SPI_2_CS_DELAY_ADDR : begin
  289. Spi2CsDelayReg_o <= Data_i;
  290. end
  291. SPI_2_CS_CTRL_ADDR : begin
  292. Spi2CsCtrlReg_o <= Data_i;
  293. end
  294. SPI_2_TX_FIFO_CTRL_ADDR_LSB : begin
  295. Spi2TxFifoCtrlReg_o <= Data_i;
  296. end
  297. SPI_2_RX_FIFO_CTRL_ADDR_LSB : begin
  298. Spi2RxFifoCtrlReg_o <= Data_i;
  299. end
  300. SPI_3_CTRL_ADDR : begin
  301. Spi3CtrlReg_o <= Data_i;
  302. end
  303. SPI_3_CLK_ADDR : begin
  304. Spi3ClkReg_o <= Data_i;
  305. end
  306. SPI_3_CS_DELAY_ADDR : begin
  307. Spi3CsDelayReg_o <= Data_i;
  308. end
  309. SPI_3_CS_CTRL_ADDR : begin
  310. Spi3CsCtrlReg_o <= Data_i;
  311. end
  312. SPI_3_TX_FIFO_CTRL_ADDR_LSB : begin
  313. Spi3TxFifoCtrlReg_o <= Data_i;
  314. end
  315. SPI_3_RX_FIFO_CTRL_ADDR_LSB : begin
  316. Spi3RxFifoCtrlReg_o <= Data_i;
  317. end
  318. SPI_4_CTRL_ADDR : begin
  319. Spi4CtrlReg_o <= Data_i;
  320. end
  321. SPI_4_CLK_ADDR : begin
  322. Spi4ClkReg_o <= Data_i;
  323. end
  324. SPI_4_CS_DELAY_ADDR : begin
  325. Spi4CsDelayReg_o <= Data_i;
  326. end
  327. SPI_4_CS_CTRL_ADDR : begin
  328. Spi4CsCtrlReg_o <= Data_i;
  329. end
  330. SPI_4_TX_FIFO_CTRL_ADDR_LSB : begin
  331. Spi4TxFifoCtrlReg_o <= Data_i;
  332. end
  333. SPI_4_RX_FIFO_CTRL_ADDR_LSB : begin
  334. Spi4RxFifoCtrlReg_o <= Data_i;
  335. end
  336. SPI_5_CTRL_ADDR : begin
  337. Spi5CtrlReg_o <= Data_i;
  338. end
  339. SPI_5_CLK_ADDR : begin
  340. Spi5ClkReg_o <= Data_i;
  341. end
  342. SPI_5_CS_DELAY_ADDR : begin
  343. Spi5CsDelayReg_o <= Data_i;
  344. end
  345. SPI_5_CS_CTRL_ADDR : begin
  346. Spi5CsCtrlReg_o <= Data_i;
  347. end
  348. SPI_5_TX_FIFO_CTRL_ADDR_LSB : begin
  349. Spi5TxFifoCtrlReg_o <= Data_i;
  350. end
  351. SPI_5_RX_FIFO_CTRL_ADDR_LSB : begin
  352. Spi5RxFifoCtrlReg_o <= Data_i;
  353. end
  354. SPI_6_CTRL_ADDR : begin
  355. Spi6CtrlReg_o <= Data_i;
  356. end
  357. SPI_6_CLK_ADDR : begin
  358. Spi6ClkReg_o <= Data_i;
  359. end
  360. SPI_6_CS_DELAY_ADDR : begin
  361. Spi6CsDelayReg_o <= Data_i;
  362. end
  363. SPI_6_CS_CTRL_ADDR : begin
  364. Spi6CsCtrlReg_o <= Data_i;
  365. end
  366. SPI_6_TX_FIFO_CTRL_ADDR_LSB : begin
  367. Spi6TxFifoCtrlReg_o <= Data_i;
  368. end
  369. SPI_6_RX_FIFO_CTRL_ADDR_LSB : begin
  370. Spi6RxFifoCtrlReg_o <= Data_i;
  371. end
  372. SPI_TX_RX_EN : begin
  373. spiTxRxEnReg <= Data_i;
  374. end
  375. GPIO_CTRL_ADDR : begin
  376. GPIOAReg <= Data_i;
  377. end
  378. GPIO_CTRL_ADDR_S : begin
  379. GPIOARegS <= Data_i;
  380. end
  381. DEBUG_0_ADDR : begin
  382. ledReg <= Data_i;
  383. end
  384. endcase
  385. end
  386. 1 : begin
  387. case (Addr_i)
  388. SPI_0_CTRL_ADDR : begin
  389. Spi0CtrlReg_o[15:8] <= Data_i[15:8];
  390. end
  391. SPI_0_CLK_ADDR : begin
  392. Spi0ClkReg_o[15:8] <= Data_i[15:8];
  393. end
  394. SPI_0_CS_DELAY_ADDR : begin
  395. Spi0CsDelayReg_o[15:8] <= Data_i[15:8];
  396. end
  397. SPI_0_CS_CTRL_ADDR : begin
  398. Spi0CsCtrlReg_o[15:8] <= Data_i[15:8];
  399. end
  400. SPI_0_TX_FIFO_CTRL_ADDR_LSB : begin
  401. Spi0TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  402. end
  403. SPI_0_RX_FIFO_CTRL_ADDR_LSB : begin
  404. Spi0RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  405. end
  406. SPI_1_CTRL_ADDR : begin
  407. Spi1CtrlReg_o[15:8] <= Data_i[15:8];
  408. end
  409. SPI_1_CLK_ADDR : begin
  410. Spi1ClkReg_o[15:8] <= Data_i[15:8];
  411. end
  412. SPI_1_CS_DELAY_ADDR : begin
  413. Spi1CsDelayReg_o[15:8] <= Data_i[15:8];
  414. end
  415. SPI_1_CS_CTRL_ADDR : begin
  416. Spi1CsCtrlReg_o[15:8] <= Data_i[15:8];
  417. end
  418. SPI_1_TX_FIFO_CTRL_ADDR_LSB : begin
  419. Spi1TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  420. end
  421. SPI_1_RX_FIFO_CTRL_ADDR_LSB : begin
  422. Spi1RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  423. end
  424. SPI_2_CTRL_ADDR : begin
  425. Spi2CtrlReg_o[15:8] <= Data_i[15:8];
  426. end
  427. SPI_2_CLK_ADDR : begin
  428. Spi2ClkReg_o[15:8] <= Data_i[15:8];
  429. end
  430. SPI_2_CS_DELAY_ADDR : begin
  431. Spi2CsDelayReg_o[15:8] <= Data_i[15:8];
  432. end
  433. SPI_2_CS_CTRL_ADDR : begin
  434. Spi2CsCtrlReg_o[15:8] <= Data_i[15:8];
  435. end
  436. SPI_2_TX_FIFO_CTRL_ADDR_LSB : begin
  437. Spi2TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  438. end
  439. SPI_2_RX_FIFO_CTRL_ADDR_LSB : begin
  440. Spi2RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  441. end
  442. SPI_3_CTRL_ADDR : begin
  443. Spi3CtrlReg_o[15:8] <= Data_i[15:8];
  444. end
  445. SPI_3_CLK_ADDR : begin
  446. Spi3ClkReg_o[15:8] <= Data_i[15:8];
  447. end
  448. SPI_3_CS_DELAY_ADDR : begin
  449. Spi3CsDelayReg_o[15:8] <= Data_i[15:8];
  450. end
  451. SPI_3_CS_CTRL_ADDR : begin
  452. Spi3CsCtrlReg_o[15:8] <= Data_i[15:8];
  453. end
  454. SPI_3_TX_FIFO_CTRL_ADDR_LSB : begin
  455. Spi3TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  456. end
  457. SPI_3_RX_FIFO_CTRL_ADDR_LSB : begin
  458. Spi3RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  459. end
  460. SPI_4_CTRL_ADDR : begin
  461. Spi4CtrlReg_o[15:8] <= Data_i[15:8];
  462. end
  463. SPI_4_CLK_ADDR : begin
  464. Spi4ClkReg_o[15:8] <= Data_i[15:8];
  465. end
  466. SPI_4_CS_DELAY_ADDR : begin
  467. Spi4CsDelayReg_o[15:8] <= Data_i[15:8];
  468. end
  469. SPI_4_CS_CTRL_ADDR : begin
  470. Spi4CsCtrlReg_o[15:8] <= Data_i[15:8];
  471. end
  472. SPI_4_TX_FIFO_CTRL_ADDR_LSB : begin
  473. Spi4TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  474. end
  475. SPI_4_RX_FIFO_CTRL_ADDR_LSB : begin
  476. Spi4RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  477. end
  478. SPI_5_CTRL_ADDR : begin
  479. Spi5CtrlReg_o[15:8] <= Data_i[15:8];
  480. end
  481. SPI_5_CLK_ADDR : begin
  482. Spi5ClkReg_o[15:8] <= Data_i[15:8];
  483. end
  484. SPI_5_CS_DELAY_ADDR : begin
  485. Spi5CsDelayReg_o[15:8] <= Data_i[15:8];
  486. end
  487. SPI_5_CS_CTRL_ADDR : begin
  488. Spi5CsCtrlReg_o[15:8] <= Data_i[15:8];
  489. end
  490. SPI_5_TX_FIFO_CTRL_ADDR_LSB : begin
  491. Spi5TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  492. end
  493. SPI_5_RX_FIFO_CTRL_ADDR_LSB : begin
  494. Spi5RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  495. end
  496. SPI_6_CTRL_ADDR : begin
  497. Spi6CtrlReg_o[15:8] <= Data_i[15:8];
  498. end
  499. SPI_6_CLK_ADDR : begin
  500. Spi6ClkReg_o[15:8] <= Data_i[15:8];
  501. end
  502. SPI_6_CS_DELAY_ADDR : begin
  503. Spi6CsDelayReg_o[15:8] <= Data_i[15:8];
  504. end
  505. SPI_6_CS_CTRL_ADDR : begin
  506. Spi6CsCtrlReg_o[15:8] <= Data_i[15:8];
  507. end
  508. SPI_6_TX_FIFO_CTRL_ADDR_LSB : begin
  509. Spi6TxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  510. end
  511. SPI_6_RX_FIFO_CTRL_ADDR_LSB : begin
  512. Spi6RxFifoCtrlReg_o[15:8] <= Data_i[15:8];
  513. end
  514. SPI_TX_RX_EN : begin
  515. spiTxRxEnReg[15:8] <= Data_i[15:8];
  516. end
  517. GPIO_CTRL_ADDR : begin
  518. GPIOAReg[15:8] <= Data_i[15:8];
  519. end
  520. GPIO_CTRL_ADDR_S : begin
  521. GPIOARegS[15:8] <= Data_i[15:8];
  522. end
  523. DEBUG_0_ADDR : begin
  524. ledReg[15:8] <= Data_i[15:8];
  525. end
  526. endcase
  527. end
  528. 2 : begin
  529. case (Addr_i)
  530. SPI_0_CTRL_ADDR : begin
  531. Spi0CtrlReg_o[7:0] <= Data_i[7:0];
  532. end
  533. SPI_0_CLK_ADDR : begin
  534. Spi0ClkReg_o[7:0] <= Data_i[7:0];
  535. end
  536. SPI_0_CS_DELAY_ADDR : begin
  537. Spi0CsDelayReg_o[7:0] <= Data_i[7:0];
  538. end
  539. SPI_0_CS_CTRL_ADDR : begin
  540. Spi0CsCtrlReg_o[7:0] <= Data_i[7:0];
  541. end
  542. SPI_0_TX_FIFO_CTRL_ADDR_LSB : begin
  543. Spi0TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  544. end
  545. SPI_0_RX_FIFO_CTRL_ADDR_LSB : begin
  546. Spi0RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  547. end
  548. SPI_1_CTRL_ADDR : begin
  549. Spi1CtrlReg_o[7:0] <= Data_i[7:0];
  550. end
  551. SPI_1_CLK_ADDR : begin
  552. Spi1ClkReg_o[7:0] <= Data_i[7:0];
  553. end
  554. SPI_1_CS_DELAY_ADDR : begin
  555. Spi1CsDelayReg_o[7:0] <= Data_i[7:0];
  556. end
  557. SPI_1_CS_CTRL_ADDR : begin
  558. Spi1CsCtrlReg_o[7:0] <= Data_i[7:0];
  559. end
  560. SPI_1_TX_FIFO_CTRL_ADDR_LSB : begin
  561. Spi1TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  562. end
  563. SPI_1_RX_FIFO_CTRL_ADDR_LSB : begin
  564. Spi1RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  565. end
  566. SPI_2_CTRL_ADDR : begin
  567. Spi2CtrlReg_o[7:0] <= Data_i[7:0];
  568. end
  569. SPI_2_CLK_ADDR : begin
  570. Spi2ClkReg_o[7:0] <= Data_i[7:0];
  571. end
  572. SPI_2_CS_DELAY_ADDR : begin
  573. Spi2CsDelayReg_o[7:0] <= Data_i[7:0];
  574. end
  575. SPI_2_CS_CTRL_ADDR : begin
  576. Spi2CsCtrlReg_o[7:0] <= Data_i[7:0];
  577. end
  578. SPI_2_TX_FIFO_CTRL_ADDR_LSB : begin
  579. Spi2TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  580. end
  581. SPI_2_RX_FIFO_CTRL_ADDR_LSB : begin
  582. Spi2RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  583. end
  584. SPI_3_CTRL_ADDR : begin
  585. Spi3CtrlReg_o[7:0] <= Data_i[7:0];
  586. end
  587. SPI_3_CLK_ADDR : begin
  588. Spi3ClkReg_o[7:0] <= Data_i[7:0];
  589. end
  590. SPI_3_CS_DELAY_ADDR : begin
  591. Spi3CsDelayReg_o[7:0] <= Data_i[7:0];
  592. end
  593. SPI_3_CS_CTRL_ADDR : begin
  594. Spi3CsCtrlReg_o[7:0] <= Data_i[7:0];
  595. end
  596. SPI_3_TX_FIFO_CTRL_ADDR_LSB : begin
  597. Spi3TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  598. end
  599. SPI_3_RX_FIFO_CTRL_ADDR_LSB : begin
  600. Spi3RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  601. end
  602. SPI_4_CTRL_ADDR : begin
  603. Spi4CtrlReg_o[7:0] <= Data_i[7:0];
  604. end
  605. SPI_4_CLK_ADDR : begin
  606. Spi4ClkReg_o[7:0] <= Data_i[7:0];
  607. end
  608. SPI_4_CS_DELAY_ADDR : begin
  609. Spi4CsDelayReg_o[7:0] <= Data_i[7:0];
  610. end
  611. SPI_4_CS_CTRL_ADDR : begin
  612. Spi4CsCtrlReg_o[7:0] <= Data_i[7:0];
  613. end
  614. SPI_4_TX_FIFO_CTRL_ADDR_LSB : begin
  615. Spi4TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  616. end
  617. SPI_4_RX_FIFO_CTRL_ADDR_LSB : begin
  618. Spi4RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  619. end
  620. SPI_5_CTRL_ADDR : begin
  621. Spi5CtrlReg_o[7:0] <= Data_i[7:0];
  622. end
  623. SPI_5_CLK_ADDR : begin
  624. Spi5ClkReg_o[7:0] <= Data_i[7:0];
  625. end
  626. SPI_5_CS_DELAY_ADDR : begin
  627. Spi5CsDelayReg_o[7:0] <= Data_i[7:0];
  628. end
  629. SPI_5_CS_CTRL_ADDR : begin
  630. Spi5CsCtrlReg_o[7:0] <= Data_i[7:0];
  631. end
  632. SPI_5_TX_FIFO_CTRL_ADDR_LSB : begin
  633. Spi5TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  634. end
  635. SPI_5_RX_FIFO_CTRL_ADDR_LSB : begin
  636. Spi5RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  637. end
  638. SPI_6_CTRL_ADDR : begin
  639. Spi6CtrlReg_o[7:0] <= Data_i[7:0];
  640. end
  641. SPI_6_CLK_ADDR : begin
  642. Spi6ClkReg_o[7:0] <= Data_i[7:0];
  643. end
  644. SPI_6_CS_DELAY_ADDR : begin
  645. Spi6CsDelayReg_o[7:0] <= Data_i[7:0];
  646. end
  647. SPI_6_CS_CTRL_ADDR : begin
  648. Spi6CsCtrlReg_o[7:0] <= Data_i[7:0];
  649. end
  650. SPI_6_TX_FIFO_CTRL_ADDR_LSB : begin
  651. Spi6TxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  652. end
  653. SPI_6_RX_FIFO_CTRL_ADDR_LSB : begin
  654. Spi6RxFifoCtrlReg_o[7:0] <= Data_i[7:0];
  655. end
  656. SPI_TX_RX_EN : begin
  657. spiTxRxEnReg[7:0] <= Data_i[7:0];
  658. end
  659. GPIO_CTRL_ADDR : begin
  660. GPIOAReg[7:0] <= Data_i[7:0];
  661. end
  662. GPIO_CTRL_ADDR_S : begin
  663. GPIOARegS[7:0] <= Data_i[7:0];
  664. end
  665. DEBUG_0_ADDR : begin
  666. ledReg[7:0] <= Data_i[7:0];
  667. end
  668. endcase
  669. end
  670. endcase
  671. end
  672. end
  673. end
  674. always @(*) begin
  675. if (Rst_i) begin
  676. ansReg = 0;
  677. end else begin
  678. case (Addr_i)
  679. SPI_0_CTRL_ADDR : begin
  680. ansReg = Spi0CtrlReg_o;
  681. end
  682. SPI_0_CLK_ADDR : begin
  683. ansReg = Spi0ClkReg_o;
  684. end
  685. SPI_0_CS_DELAY_ADDR : begin
  686. ansReg = Spi0CsDelayReg_o;
  687. end
  688. SPI_0_CS_CTRL_ADDR : begin
  689. ansReg = Spi0CsCtrlReg_o;
  690. end
  691. SPI_0_TX_FIFO_CTRL_ADDR_LSB : begin
  692. ansReg = TxFifoCtrlReg0_i[15:0];
  693. end
  694. SPI_0_TX_FIFO_CTRL_ADDR_MSB : begin
  695. ansReg = TxFifoCtrlReg0_i[31:16];
  696. end
  697. SPI_0_RX_FIFO_CTRL_ADDR_LSB : begin
  698. ansReg = RxFifoCtrlReg0_i[15:0];
  699. end
  700. SPI_0_RX_FIFO_CTRL_ADDR_MSB : begin
  701. ansReg = RxFifoCtrlReg0_i[31:16];
  702. end
  703. SPI_1_CTRL_ADDR : begin
  704. ansReg = Spi1CtrlReg_o;
  705. end
  706. SPI_1_CLK_ADDR : begin
  707. ansReg = Spi1ClkReg_o;
  708. end
  709. SPI_1_CS_DELAY_ADDR : begin
  710. ansReg = Spi1CsDelayReg_o;
  711. end
  712. SPI_1_CS_CTRL_ADDR : begin
  713. ansReg = Spi1CsCtrlReg_o;
  714. end
  715. SPI_1_TX_FIFO_CTRL_ADDR_LSB : begin
  716. ansReg = TxFifoCtrlReg1_i[15:0];
  717. end
  718. SPI_1_TX_FIFO_CTRL_ADDR_MSB : begin
  719. ansReg = TxFifoCtrlReg1_i[31:16];
  720. end
  721. SPI_1_RX_FIFO_CTRL_ADDR_LSB : begin
  722. ansReg = RxFifoCtrlReg1_i[15:0];
  723. end
  724. SPI_1_RX_FIFO_CTRL_ADDR_MSB : begin
  725. ansReg = RxFifoCtrlReg1_i[31:16];
  726. end
  727. SPI_2_CTRL_ADDR : begin
  728. ansReg = Spi2CtrlReg_o;
  729. end
  730. SPI_2_CLK_ADDR : begin
  731. ansReg = Spi2ClkReg_o;
  732. end
  733. SPI_2_CS_DELAY_ADDR : begin
  734. ansReg = Spi2CsDelayReg_o;
  735. end
  736. SPI_2_CS_CTRL_ADDR : begin
  737. ansReg = Spi2CsCtrlReg_o;
  738. end
  739. SPI_2_TX_FIFO_CTRL_ADDR_LSB : begin
  740. ansReg = TxFifoCtrlReg2_i[15:0];
  741. end
  742. SPI_2_TX_FIFO_CTRL_ADDR_MSB : begin
  743. ansReg = TxFifoCtrlReg2_i[31:16];
  744. end
  745. SPI_2_RX_FIFO_CTRL_ADDR_LSB : begin
  746. ansReg = RxFifoCtrlReg2_i[15:0];
  747. end
  748. SPI_2_RX_FIFO_CTRL_ADDR_MSB : begin
  749. ansReg = RxFifoCtrlReg2_i[31:16];
  750. end
  751. SPI_3_CTRL_ADDR : begin
  752. ansReg = Spi3CtrlReg_o;
  753. end
  754. SPI_3_CLK_ADDR : begin
  755. ansReg = Spi3ClkReg_o;
  756. end
  757. SPI_3_CS_DELAY_ADDR : begin
  758. ansReg = Spi3CsDelayReg_o;
  759. end
  760. SPI_3_CS_CTRL_ADDR : begin
  761. ansReg = Spi3CsCtrlReg_o;
  762. end
  763. SPI_3_TX_FIFO_CTRL_ADDR_LSB : begin
  764. ansReg = TxFifoCtrlReg3_i[15:0];
  765. end
  766. SPI_3_TX_FIFO_CTRL_ADDR_MSB : begin
  767. ansReg = TxFifoCtrlReg3_i[31:16];
  768. end
  769. SPI_3_RX_FIFO_CTRL_ADDR_LSB : begin
  770. ansReg = RxFifoCtrlReg3_i[15:0];
  771. end
  772. SPI_3_RX_FIFO_CTRL_ADDR_MSB : begin
  773. ansReg = RxFifoCtrlReg3_i[31:16];
  774. end
  775. SPI_4_CTRL_ADDR : begin
  776. ansReg = Spi4CtrlReg_o;
  777. end
  778. SPI_4_CLK_ADDR : begin
  779. ansReg = Spi4ClkReg_o;
  780. end
  781. SPI_4_CS_DELAY_ADDR : begin
  782. ansReg = Spi4CsDelayReg_o;
  783. end
  784. SPI_4_CS_CTRL_ADDR : begin
  785. ansReg = Spi4CsCtrlReg_o;
  786. end
  787. SPI_4_TX_FIFO_CTRL_ADDR_LSB : begin
  788. ansReg = TxFifoCtrlReg4_i[15:0];
  789. end
  790. SPI_4_TX_FIFO_CTRL_ADDR_MSB : begin
  791. ansReg = TxFifoCtrlReg4_i[31:16];
  792. end
  793. SPI_4_RX_FIFO_CTRL_ADDR_LSB : begin
  794. ansReg = RxFifoCtrlReg4_i[15:0];
  795. end
  796. SPI_4_RX_FIFO_CTRL_ADDR_MSB : begin
  797. ansReg = RxFifoCtrlReg4_i[31:16];
  798. end
  799. SPI_5_CTRL_ADDR : begin
  800. ansReg = Spi5CtrlReg_o;
  801. end
  802. SPI_5_CLK_ADDR : begin
  803. ansReg = Spi5ClkReg_o;
  804. end
  805. SPI_5_CS_DELAY_ADDR : begin
  806. ansReg = Spi5CsDelayReg_o;
  807. end
  808. SPI_5_CS_CTRL_ADDR : begin
  809. ansReg = Spi5CsCtrlReg_o;
  810. end
  811. SPI_5_TX_FIFO_CTRL_ADDR_LSB : begin
  812. ansReg = TxFifoCtrlReg5_i[15:0];
  813. end
  814. SPI_5_TX_FIFO_CTRL_ADDR_MSB : begin
  815. ansReg = TxFifoCtrlReg5_i[31:16];
  816. end
  817. SPI_5_RX_FIFO_CTRL_ADDR_LSB : begin
  818. ansReg = RxFifoCtrlReg5_i[15:0];
  819. end
  820. SPI_5_RX_FIFO_CTRL_ADDR_MSB : begin
  821. ansReg = RxFifoCtrlReg5_i[31:16];
  822. end
  823. SPI_6_CTRL_ADDR : begin
  824. ansReg = Spi6CtrlReg_o;
  825. end
  826. SPI_6_CLK_ADDR : begin
  827. ansReg = Spi6ClkReg_o;
  828. end
  829. SPI_6_CS_DELAY_ADDR : begin
  830. ansReg = Spi6CsDelayReg_o;
  831. end
  832. SPI_6_CS_CTRL_ADDR : begin
  833. ansReg = Spi6CsCtrlReg_o;
  834. end
  835. SPI_6_TX_FIFO_CTRL_ADDR_LSB : begin
  836. ansReg = TxFifoCtrlReg6_i[15:0];
  837. end
  838. SPI_6_TX_FIFO_CTRL_ADDR_MSB : begin
  839. ansReg = TxFifoCtrlReg6_i[31:16];
  840. end
  841. SPI_6_RX_FIFO_CTRL_ADDR_LSB : begin
  842. ansReg = RxFifoCtrlReg6_i[15:0];
  843. end
  844. SPI_6_RX_FIFO_CTRL_ADDR_MSB : begin
  845. ansReg = RxFifoCtrlReg6_i[31:16];
  846. end
  847. SPI_TX_RX_EN : begin
  848. ansReg = spiTxRxEnReg;
  849. end
  850. GPIO_CTRL_ADDR : begin
  851. ansReg = GPIOAReg;
  852. end
  853. GPIO_CTRL_ADDR_S : begin
  854. ansReg = {9'd0,LdReg_i};
  855. end
  856. DEBUG_0_ADDR : begin
  857. ansReg = ledReg;
  858. end
  859. default : begin
  860. ansReg = 0;
  861. end
  862. endcase
  863. end
  864. end
  865. endmodule