Cdc.v 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. module CDC #(
  2. parameter WIDTH = 32,
  3. parameter STAGES = 3,
  4. parameter SpiNum = 7
  5. )
  6. (
  7. input ClkFast_i,
  8. input [SpiNum-1:0] ClkSlow_i,
  9. input [WIDTH-1:0] Spi0Ctrl_i,
  10. input [WIDTH-1:0] Spi0CsCtrl_i,
  11. input [WIDTH-1:0] Spi0CsDelay_i,
  12. input [WIDTH-1:0] Spi0TxFifoCtrl_i,
  13. input [WIDTH-1:0] Spi0RxFifoCtrl_i,
  14. input [WIDTH-1:0] Spi1Ctrl_i,
  15. input [WIDTH-1:0] Spi1CsCtrl_i,
  16. input [WIDTH-1:0] Spi1CsDelay_i,
  17. input [WIDTH-1:0] Spi1TxFifoCtrl_i,
  18. input [WIDTH-1:0] Spi1RxFifoCtrl_i,
  19. input [WIDTH-1:0] Spi2Ctrl_i,
  20. input [WIDTH-1:0] Spi2CsCtrl_i,
  21. input [WIDTH-1:0] Spi2CsDelay_i,
  22. input [WIDTH-1:0] Spi2TxFifoCtrl_i,
  23. input [WIDTH-1:0] Spi2RxFifoCtrl_i,
  24. input [WIDTH-1:0] Spi3Ctrl_i,
  25. input [WIDTH-1:0] Spi3CsCtrl_i,
  26. input [WIDTH-1:0] Spi3CsDelay_i,
  27. input [WIDTH-1:0] Spi3TxFifoCtrl_i,
  28. input [WIDTH-1:0] Spi3RxFifoCtrl_i,
  29. input [WIDTH-1:0] Spi4Ctrl_i,
  30. input [WIDTH-1:0] Spi4CsCtrl_i,
  31. input [WIDTH-1:0] Spi4CsDelay_i,
  32. input [WIDTH-1:0] Spi4TxFifoCtrl_i,
  33. input [WIDTH-1:0] Spi4RxFifoCtrl_i,
  34. input [WIDTH-1:0] Spi5Ctrl_i,
  35. input [WIDTH-1:0] Spi5CsCtrl_i,
  36. input [WIDTH-1:0] Spi5CsDelay_i,
  37. input [WIDTH-1:0] Spi5TxFifoCtrl_i,
  38. input [WIDTH-1:0] Spi5RxFifoCtrl_i,
  39. input [WIDTH-1:0] Spi6Ctrl_i,
  40. input [WIDTH-1:0] Spi6CsCtrl_i,
  41. input [WIDTH-1:0] Spi6CsDelay_i,
  42. input [WIDTH-1:0] Spi6TxFifoCtrl_i,
  43. input [WIDTH-1:0] Spi6RxFifoCtrl_i,
  44. output [WIDTH-1:0] Spi0Ctrl_o,
  45. output [WIDTH-1:0] Spi0CsCtrl_o,
  46. output [WIDTH-1:0] Spi0CsDelay_o,
  47. output [WIDTH-1:0] Spi0TxFifoCtrl_o,
  48. output [WIDTH-1:0] Spi0RxFifoCtrl_o,
  49. output [WIDTH-1:0] Spi1Ctrl_o,
  50. output [WIDTH-1:0] Spi1CsCtrl_o,
  51. output [WIDTH-1:0] Spi1CsDelay_o,
  52. output [WIDTH-1:0] Spi1TxFifoCtrl_o,
  53. output [WIDTH-1:0] Spi1RxFifoCtrl_o,
  54. output [WIDTH-1:0] Spi2Ctrl_o,
  55. output [WIDTH-1:0] Spi2CsCtrl_o,
  56. output [WIDTH-1:0] Spi2CsDelay_o,
  57. output [WIDTH-1:0] Spi2TxFifoCtrl_o,
  58. output [WIDTH-1:0] Spi2RxFifoCtrl_o,
  59. output [WIDTH-1:0] Spi3Ctrl_o,
  60. output [WIDTH-1:0] Spi3CsCtrl_o,
  61. output [WIDTH-1:0] Spi3CsDelay_o,
  62. output [WIDTH-1:0] Spi3TxFifoCtrl_o,
  63. output [WIDTH-1:0] Spi3RxFifoCtrl_o,
  64. output [WIDTH-1:0] Spi4Ctrl_o,
  65. output [WIDTH-1:0] Spi4CsCtrl_o,
  66. output [WIDTH-1:0] Spi4CsDelay_o,
  67. output [WIDTH-1:0] Spi4TxFifoCtrl_o,
  68. output [WIDTH-1:0] Spi4RxFifoCtrl_o,
  69. output [WIDTH-1:0] Spi5Ctrl_o,
  70. output [WIDTH-1:0] Spi5CsCtrl_o,
  71. output [WIDTH-1:0] Spi5CsDelay_o,
  72. output [WIDTH-1:0] Spi5TxFifoCtrl_o,
  73. output [WIDTH-1:0] Spi5RxFifoCtrl_o,
  74. output [WIDTH-1:0] Spi6Ctrl_o,
  75. output [WIDTH-1:0] Spi6CsCtrl_o,
  76. output [WIDTH-1:0] Spi6CsDelay_o,
  77. output [WIDTH-1:0] Spi6TxFifoCtrl_o,
  78. output [WIDTH-1:0] Spi6RxFifoCtrl_o
  79. );
  80. //lauch registers
  81. reg [WIDTH-1:0] spi0Ctrl;
  82. reg [WIDTH-1:0] spi0CsCtrl;
  83. reg [WIDTH-1:0] spi0CsDelay;
  84. reg [WIDTH-1:0] spi0TxFifoCtrl;
  85. reg [WIDTH-1:0] spi0RxFifoCtrl;
  86. reg [WIDTH-1:0] spi1Ctrl;
  87. reg [WIDTH-1:0] spi1CsCtrl;
  88. reg [WIDTH-1:0] spi1CsDelay;
  89. reg [WIDTH-1:0] spi1TxFifoCtrl;
  90. reg [WIDTH-1:0] spi1RxFifoCtrl;
  91. reg [WIDTH-1:0] spi2Ctrl;
  92. reg [WIDTH-1:0] spi2CsCtrl;
  93. reg [WIDTH-1:0] spi2CsDelay;
  94. reg [WIDTH-1:0] spi2TxFifoCtrl;
  95. reg [WIDTH-1:0] spi2RxFifoCtrl;
  96. reg [WIDTH-1:0] spi3Ctrl;
  97. reg [WIDTH-1:0] spi3CsCtrl;
  98. reg [WIDTH-1:0] spi3CsDelay;
  99. reg [WIDTH-1:0] spi3TxFifoCtrl;
  100. reg [WIDTH-1:0] spi3RxFifoCtrl;
  101. reg [WIDTH-1:0] spi4Ctrl;
  102. reg [WIDTH-1:0] spi4CsCtrl;
  103. reg [WIDTH-1:0] spi4CsDelay;
  104. reg [WIDTH-1:0] spi4TxFifoCtrl;
  105. reg [WIDTH-1:0] spi4RxFifoCtrl;
  106. reg [WIDTH-1:0] spi5Ctrl;
  107. reg [WIDTH-1:0] spi5CsCtrl;
  108. reg [WIDTH-1:0] spi5CsDelay;
  109. reg [WIDTH-1:0] spi5TxFifoCtrl;
  110. reg [WIDTH-1:0] spi5RxFifoCtrl;
  111. reg [WIDTH-1:0] spi6Ctrl;
  112. reg [WIDTH-1:0] spi6CsCtrl;
  113. reg [WIDTH-1:0] spi6CsDelay;
  114. reg [WIDTH-1:0] spi6TxFifoCtrl;
  115. reg [WIDTH-1:0] spi6RxFifoCtrl;
  116. // capture registers
  117. (* ASYNC_REG = "TRUE" *)reg [STAGES*WIDTH-1:0] spi0Ctrl_c;
  118. (* ASYNC_REG = "TRUE" *)reg [STAGES*WIDTH-1:0] spi0CsCtrl_c;
  119. (* ASYNC_REG = "TRUE" *)reg [STAGES*WIDTH-1:0] spi0CsDelay_c;
  120. (* ASYNC_REG = "TRUE" *)reg [STAGES*WIDTH-1:0] spi0TxFifoCtrl_c;
  121. (* ASYNC_REG = "TRUE" *)reg [STAGES*WIDTH-1:0] spi0RxFifoCtrl_c;
  122. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi1Ctrl_c;
  123. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi1CsCtrl_c;
  124. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi1CsDelay_c;
  125. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi1TxFifoCtrl_c;
  126. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi1RxFifoCtrl_c;
  127. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi2Ctrl_c;
  128. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi2CsCtrl_c;
  129. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi2CsDelay_c;
  130. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi2TxFifoCtrl_c;
  131. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi2RxFifoCtrl_c;
  132. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi3Ctrl_c;
  133. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi3CsCtrl_c;
  134. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi3CsDelay_c;
  135. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi3TxFifoCtrl_c;
  136. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi3RxFifoCtrl_c;
  137. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi4Ctrl_c;
  138. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi4CsCtrl_c;
  139. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi4CsDelay_c;
  140. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi4TxFifoCtrl_c;
  141. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi4RxFifoCtrl_c;
  142. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi5Ctrl_c;
  143. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi5CsCtrl_c;
  144. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi5CsDelay_c;
  145. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi5TxFifoCtrl_c;
  146. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi5RxFifoCtrl_c;
  147. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi6Ctrl_c;
  148. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi6CsCtrl_c;
  149. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi6CsDelay_c;
  150. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi6TxFifoCtrl_c;
  151. (*ASYNC_REG = "TRUE"*)reg [STAGES*WIDTH-1:0] spi6RxFifoCtrl_c;
  152. //SPI0
  153. assign Spi0Ctrl_o = spi0Ctrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  154. assign Spi0CsDelay_o = spi0CsDelay_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  155. assign Spi0CsCtrl_o = spi0CsCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  156. assign Spi0TxFifoCtrl_o = spi0TxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  157. assign Spi0RxFifoCtrl_o = spi0RxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  158. //SPI1
  159. assign Spi1Ctrl_o = spi1Ctrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  160. assign Spi1CsDelay_o = spi1CsDelay_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  161. assign Spi1CsCtrl_o = spi1CsCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  162. assign Spi1TxFifoCtrl_o = spi1TxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  163. assign Spi1RxFifoCtrl_o = spi1RxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  164. //SPI2
  165. assign Spi2Ctrl_o = spi2Ctrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  166. assign Spi2CsDelay_o = spi2CsDelay_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  167. assign Spi2CsCtrl_o = spi2CsCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  168. assign Spi2TxFifoCtrl_o = spi2TxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  169. assign Spi2RxFifoCtrl_o = spi2RxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  170. //SPI3
  171. assign Spi3Ctrl_o = spi3Ctrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  172. assign Spi3CsDelay_o = spi3CsDelay_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  173. assign Spi3CsCtrl_o = spi3CsCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  174. assign Spi3TxFifoCtrl_o = spi3TxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  175. assign Spi3RxFifoCtrl_o = spi3RxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  176. //SPI4
  177. assign Spi4Ctrl_o = spi4Ctrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  178. assign Spi4CsDelay_o = spi4CsDelay_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  179. assign Spi4CsCtrl_o = spi4CsCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  180. assign Spi4TxFifoCtrl_o = spi4TxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  181. assign Spi4RxFifoCtrl_o = spi4RxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  182. //SPI5
  183. assign Spi5Ctrl_o = spi5Ctrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  184. assign Spi5CsDelay_o = spi5CsDelay_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  185. assign Spi5CsCtrl_o = spi5CsCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  186. assign Spi5TxFifoCtrl_o = spi5TxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  187. assign Spi5RxFifoCtrl_o = spi5RxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  188. //SPI6
  189. assign Spi6Ctrl_o = spi6Ctrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  190. assign Spi6CsDelay_o = spi6CsDelay_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  191. assign Spi6CsCtrl_o = spi6CsCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  192. assign Spi6TxFifoCtrl_o = spi6TxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  193. assign Spi6RxFifoCtrl_o = spi6RxFifoCtrl_c[STAGES*WIDTH-1:(STAGES-1)*WIDTH];
  194. always @(posedge ClkFast_i) begin
  195. spi0Ctrl <= Spi0Ctrl_i;
  196. spi0CsDelay <= Spi0CsDelay_i;
  197. spi0CsCtrl <= Spi0CsCtrl_i;
  198. spi0TxFifoCtrl <= Spi0TxFifoCtrl_i;
  199. spi0RxFifoCtrl <= Spi0RxFifoCtrl_i;
  200. spi1Ctrl <= Spi1Ctrl_i;
  201. spi1CsDelay <= Spi1CsDelay_i;
  202. spi1CsCtrl <= Spi1CsCtrl_i;
  203. spi1TxFifoCtrl <= Spi1TxFifoCtrl_i;
  204. spi1RxFifoCtrl <= Spi1RxFifoCtrl_i;
  205. spi2Ctrl <= Spi2Ctrl_i;
  206. spi2CsDelay <= Spi2CsDelay_i;
  207. spi2CsCtrl <= Spi2CsCtrl_i;
  208. spi2TxFifoCtrl <= Spi2TxFifoCtrl_i;
  209. spi2RxFifoCtrl <= Spi2RxFifoCtrl_i;
  210. spi3Ctrl <= Spi3Ctrl_i;
  211. spi3CsDelay <= Spi3CsDelay_i;
  212. spi3CsCtrl <= Spi3CsCtrl_i;
  213. spi3TxFifoCtrl <= Spi3TxFifoCtrl_i;
  214. spi3RxFifoCtrl <= Spi3RxFifoCtrl_i;
  215. spi4Ctrl <= Spi4Ctrl_i;
  216. spi4CsDelay <= Spi4CsDelay_i;
  217. spi4CsCtrl <= Spi4CsCtrl_i;
  218. spi4TxFifoCtrl <= Spi4TxFifoCtrl_i;
  219. spi4RxFifoCtrl <= Spi4RxFifoCtrl_i;
  220. spi5Ctrl <= Spi5Ctrl_i;
  221. spi5CsDelay <= Spi5CsDelay_i;
  222. spi5CsCtrl <= Spi5CsCtrl_i;
  223. spi5TxFifoCtrl <= Spi5TxFifoCtrl_i;
  224. spi5RxFifoCtrl <= Spi5RxFifoCtrl_i;
  225. spi6Ctrl <= Spi6Ctrl_i;
  226. spi6CsDelay <= Spi6CsDelay_i;
  227. spi6CsCtrl <= Spi6CsCtrl_i;
  228. spi6TxFifoCtrl <= Spi6TxFifoCtrl_i;
  229. spi6RxFifoCtrl <= Spi6RxFifoCtrl_i;
  230. end
  231. always @(posedge ClkSlow_i[0]) begin
  232. spi0Ctrl_c <= {spi0Ctrl_c[(STAGES-1)*WIDTH-1:0],spi0Ctrl};
  233. spi0CsDelay_c <= {spi0CsDelay_c[(STAGES-1)*WIDTH-1:0],spi0CsDelay};
  234. spi0CsCtrl_c <= {spi0CsCtrl_c[(STAGES-1)*WIDTH-1:0],spi0CsCtrl};
  235. spi0TxFifoCtrl_c <= {spi0TxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi0TxFifoCtrl};
  236. spi0RxFifoCtrl_c <= {spi0RxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi0RxFifoCtrl};
  237. end
  238. always@(posedge ClkSlow_i[1]) begin
  239. spi1Ctrl_c <= {spi1Ctrl_c[(STAGES-1)*WIDTH-1:0],spi1Ctrl};
  240. spi1CsDelay_c <= {spi1CsDelay_c[(STAGES-1)*WIDTH-1:0],spi1CsDelay};
  241. spi1CsCtrl_c <= {spi1CsCtrl_c[(STAGES-1)*WIDTH-1:0],spi1CsCtrl};
  242. spi1TxFifoCtrl_c <= {spi1TxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi1TxFifoCtrl};
  243. spi1RxFifoCtrl_c <= {spi1RxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi1RxFifoCtrl};
  244. end
  245. always@(posedge ClkSlow_i[2]) begin
  246. spi2Ctrl_c <= {spi2Ctrl_c[(STAGES-1)*WIDTH-1:0],spi2Ctrl};
  247. spi2CsDelay_c <= {spi2CsDelay_c[(STAGES-1)*WIDTH-1:0],spi2CsDelay};
  248. spi2CsCtrl_c <= {spi2CsCtrl_c[(STAGES-1)*WIDTH-1:0],spi2CsCtrl};
  249. spi2TxFifoCtrl_c <= {spi2TxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi2TxFifoCtrl};
  250. spi2RxFifoCtrl_c <= {spi2RxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi2RxFifoCtrl};
  251. end
  252. always@(posedge ClkSlow_i[3]) begin
  253. spi3Ctrl_c <= {spi3Ctrl_c[(STAGES-1)*WIDTH-1:0],spi3Ctrl};
  254. spi3CsDelay_c <= {spi3CsDelay_c[(STAGES-1)*WIDTH-1:0],spi3CsDelay};
  255. spi3CsCtrl_c <= {spi3CsCtrl_c[(STAGES-1)*WIDTH-1:0],spi3CsCtrl};
  256. spi3TxFifoCtrl_c <= {spi3TxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi3TxFifoCtrl};
  257. spi3RxFifoCtrl_c <= {spi3RxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi3RxFifoCtrl};
  258. end
  259. always@(posedge ClkSlow_i[4]) begin
  260. spi4Ctrl_c <= {spi4Ctrl_c[(STAGES-1)*WIDTH-1:0],spi4Ctrl};
  261. spi4CsDelay_c <= {spi4CsDelay_c[(STAGES-1)*WIDTH-1:0],spi4CsDelay};
  262. spi4CsCtrl_c <= {spi4CsCtrl_c[(STAGES-1)*WIDTH-1:0],spi4CsCtrl};
  263. spi4TxFifoCtrl_c <= {spi4TxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi4TxFifoCtrl};
  264. spi4RxFifoCtrl_c <= {spi4RxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi4RxFifoCtrl};
  265. end
  266. always@(posedge ClkSlow_i[5]) begin
  267. spi5Ctrl_c <= {spi5Ctrl_c[(STAGES-1)*WIDTH-1:0],spi5Ctrl};
  268. spi5CsDelay_c <= {spi5CsDelay_c[(STAGES-1)*WIDTH-1:0],spi5CsDelay};
  269. spi5CsCtrl_c <= {spi5CsCtrl_c[(STAGES-1)*WIDTH-1:0],spi5CsCtrl};
  270. spi5TxFifoCtrl_c <= {spi5TxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi5TxFifoCtrl};
  271. spi5RxFifoCtrl_c <= {spi5RxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi5RxFifoCtrl};
  272. end
  273. always@(posedge ClkSlow_i[6]) begin
  274. spi6Ctrl_c <= {spi6Ctrl_c[(STAGES-1)*WIDTH-1:0],spi6Ctrl};
  275. spi6CsDelay_c <= {spi6CsDelay_c[(STAGES-1)*WIDTH-1:0],spi6CsDelay};
  276. spi6CsCtrl_c <= {spi6CsCtrl_c[(STAGES-1)*WIDTH-1:0],spi6CsCtrl};
  277. spi6TxFifoCtrl_c <= {spi6TxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi6TxFifoCtrl};
  278. spi6RxFifoCtrl_c <= {spi6RxFifoCtrl_c[(STAGES-1)*WIDTH-1:0],spi6RxFifoCtrl};
  279. end
  280. endmodule