QuadSPIm.v.bak 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220
  1. module QuadSPIm(
  2. input Clk_i,
  3. input Rst_i,
  4. input Start_i,
  5. input EmptyFlag_i,
  6. input ClockPhase_i,
  7. input [31:0] SpiData_i,
  8. input SpiDataVal_i,
  9. input SelSt_i,
  10. input [1:0] WidthSel_i,
  11. input Lag_i,
  12. input Lead_i,
  13. input EndianSel_i,
  14. input [5:0] Stop_i,
  15. input PulsePol_i,
  16. output reg Mosi0_i,
  17. output reg Mosi1_i,
  18. output reg Mosi2_i,
  19. output reg Mosi3_i,
  20. output reg Sck_o,
  21. output reg Val_o,
  22. output Ss_o
  23. );
  24. //================================================================================
  25. // REG/WIRE
  26. //================================================================================
  27. reg startFlag;
  28. reg startR;
  29. reg [31:0] trCnt;
  30. reg valReg;
  31. reg lineBusy;
  32. reg [5:0] ssCnt;
  33. reg ss;
  34. reg ssR;
  35. reg [31:0] spiDataR;
  36. reg oldDataFlag;
  37. reg [7:0] mosiReg0;
  38. reg [7:0] mosiReg1;
  39. reg [7:0] mosiReg2;
  40. reg [7:0] mosiReg3;
  41. reg [3:0] ssNum;
  42. reg [2:0] delayCnt;
  43. reg stopFlag;
  44. //================================================================================
  45. // ASSIGNMENTS
  46. //================================================================================
  47. assign Ss_o = ss;
  48. //================================================================================
  49. // CODING
  50. //================================================================================
  51. always @(*) begin
  52. if (Start_i) begin
  53. Val_o = valReg;
  54. end
  55. else begin
  56. Val_o = 1'b0;
  57. end
  58. end
  59. always @(*) begin
  60. if (SelSt_i) begin
  61. if (!ss) begin
  62. lineBusy = 1'b1;
  63. end
  64. else begin
  65. lineBusy = 1'b0;
  66. end
  67. end
  68. else begin
  69. if (ss) begin
  70. lineBusy = 1'b1;
  71. end
  72. else begin
  73. lineBusy = 1'b0;
  74. end
  75. end
  76. end
  77. // always @(posedge Clk_i) begin
  78. // if (Rst_i) begin
  79. // trCnt <= 1'b0;
  80. // end
  81. // else begin
  82. // if ( ssCnt == (ssNum + Lead_i + Lag_i)) begin
  83. // trCnt <= trCnt + 1'b1;
  84. // end
  85. // else if (oldDataFlag) begin
  86. // trCnt <= 1'b0;
  87. // end
  88. // end
  89. // end
  90. always @(posedge Clk_i) begin
  91. if (Rst_i) begin
  92. delayCnt <= 1'b0;
  93. end
  94. else begin
  95. if (stopFlag &&delayCnt < Stop_i) begin
  96. delayCnt <= delayCnt + 1'b1;
  97. end
  98. else begin
  99. delayCnt <= 1'b0;
  100. end
  101. end
  102. end
  103. always @(posedge Clk_i) begin
  104. if (Rst_i) begin
  105. stopFlag <= 1'b0;
  106. end
  107. else begin
  108. if (SelSt_i) begin
  109. if (ss && !ssR) begin
  110. stopFlag <= 1'b1;
  111. end
  112. else if ( delayCnt == Stop_i) begin
  113. stopFlag <= 1'b0;
  114. end
  115. end
  116. else begin
  117. if (!ss && ssR) begin
  118. stopFlag <= 1'b1;
  119. end
  120. else if (delayCnt == Stop_i) begin
  121. stopFlag <= 1'b0;
  122. end
  123. end
  124. end
  125. end
  126. always @(*) begin
  127. if (SelSt_i) begin
  128. if (PulsePol_i) begin
  129. if (ClockPhase_i) begin
  130. if (Lead_i == 0) begin
  131. if (!ss && (ssCnt <= ssNum+Lag_i+Lead_i && ssCnt > Lag_i) ) begin
  132. Sck_o = ~(~Clk_i);
  133. end
  134. else begin
  135. Sck_o = 1'b0;
  136. end
  137. end
  138. else begin
  139. if (!ss && (ssCnt < ssNum+Lag_i+Lead_i && ssCnt > Lag_i)) begin
  140. Sck_o = ~(~Clk_i);
  141. end
  142. else begin
  143. Sck_o = 1'b0;
  144. end
  145. end
  146. end
  147. else begin
  148. if (Lead_i == 0) begin
  149. if (!ss && (ssCnt <= ssNum+Lag_i+Lead_i && ssCnt > Lag_i) ) begin
  150. Sck_o = ~(Clk_i);
  151. end
  152. else begin
  153. Sck_o = 1'b0;
  154. end
  155. end
  156. else begin
  157. if (!ss && (ssCnt < ssNum + Lag_i + Lead_i && ssCnt > Lag_i)) begin
  158. Sck_o = ~(Clk_i);
  159. end
  160. else begin
  161. Sck_o = 1'b0;
  162. end
  163. end
  164. end
  165. end
  166. else begin
  167. if (ClockPhase_i) begin
  168. if (Lead_i == 0) begin
  169. if (!ss && (ssCnt <= ssNum+Lag_i+Lead_i && ssCnt > Lag_i) ) begin
  170. Sck_o = ~(Clk_i);
  171. end
  172. else begin
  173. Sck_o = 1'b0;
  174. end
  175. end
  176. else begin
  177. if (!ss && (ssCnt <ssNum + Lag_i + Lag_i && ssCnt > Lag_i)) begin
  178. Sck_o = ~(Clk_i);
  179. end
  180. else begin
  181. Sck_o = 1'b0;
  182. end
  183. end
  184. end
  185. else begin
  186. if (Lead_i == 0) begin
  187. if (!ss && (ssCnt <= ssNum+Lag_i+Lead_i && ssCnt > Lag_i) ) begin
  188. Sck_o = ~(~Clk_i);
  189. end
  190. else begin
  191. Sck_o = 1'b0;
  192. end
  193. end
  194. else begin
  195. if (!ss && (ssCnt < ssNum + Lag_i + Lead_i && ssCnt > Lag_i)) begin
  196. Sck_o = ~(~Clk_i);
  197. end
  198. else begin
  199. Sck_o = 1'b0;
  200. end
  201. end
  202. end
  203. end
  204. end
  205. else begin
  206. if (PulsePol_i) begin
  207. if (ClockPhase_i) begin
  208. if (Lead_i == 0) begin
  209. if (ss && (ssCnt <= ssNum+Lag_i+Lead_i && ssCnt > Lag_i) ) begin
  210. Sck_o = ~(~Clk_i);
  211. end
  212. else begin
  213. Sck_o = 1'b0;
  214. end
  215. end
  216. else begin
  217. if (ss && (ssCnt < ssNum+Lag_i+Lead_i && ssCnt > Lag_i)) begin
  218. Sck_o = ~(~Clk_i);
  219. end
  220. else begin
  221. Sck_o = 1'b0;
  222. end
  223. end
  224. end
  225. else begin
  226. if (Lead_i == 0) begin
  227. if (ss && (ssCnt <= ssNum+Lag_i+Lead_i && ssCnt > Lag_i) ) begin
  228. Sck_o = ~(Clk_i);
  229. end
  230. else begin
  231. Sck_o = 1'b0;
  232. end
  233. end
  234. else begin
  235. if (ss && (ssCnt < ssNum + Lag_i + Lead_i && ssCnt > Lag_i)) begin
  236. Sck_o = ~(Clk_i);
  237. end
  238. else begin
  239. Sck_o = 1'b0;
  240. end
  241. end
  242. end
  243. end
  244. else begin
  245. if (ClockPhase_i) begin
  246. if (Lead_i == 0) begin
  247. if (ss && (ssCnt <= ssNum+Lag_i+Lead_i && ssCnt > Lag_i) ) begin
  248. Sck_o = ~(Clk_i);
  249. end
  250. else begin
  251. Sck_o = 1'b0;
  252. end
  253. end
  254. else begin
  255. if (ss && (ssCnt <ssNum + Lag_i + Lag_i && ssCnt > Lag_i)) begin
  256. Sck_o = ~(Clk_i);
  257. end
  258. else begin
  259. Sck_o = 1'b0;
  260. end
  261. end
  262. end
  263. else begin
  264. if (Lead_i == 0) begin
  265. if (ss && (ssCnt <= ssNum+Lag_i+Lead_i && ssCnt > Lag_i) ) begin
  266. Sck_o = ~(~Clk_i);
  267. end
  268. else begin
  269. Sck_o = 1'b0;
  270. end
  271. end
  272. else begin
  273. if (ss && (ssCnt < ssNum + Lag_i + Lead_i && ssCnt > Lag_i)) begin
  274. Sck_o = ~(~Clk_i);
  275. end
  276. else begin
  277. Sck_o = 1'b0;
  278. end
  279. end
  280. end
  281. end
  282. end
  283. end
  284. always @(*) begin
  285. if (SelSt_i) begin
  286. if (EndianSel_i) begin
  287. case (WidthSel_i)
  288. 0 : begin
  289. Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i) ) ? (mosiReg3[0]):1'b0;
  290. Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
  291. Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
  292. Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
  293. end
  294. 1 : begin
  295. Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
  296. Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
  297. Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
  298. Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
  299. end
  300. 2 : begin
  301. Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
  302. Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
  303. Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
  304. Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
  305. end
  306. 3 : begin
  307. Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
  308. Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
  309. Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
  310. Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
  311. end
  312. endcase
  313. end
  314. else begin
  315. case (WidthSel_i)
  316. 0 : begin
  317. Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[1]):1'b0;
  318. Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[1]):1'b0;
  319. Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[1]):1'b0;
  320. Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[1]):1'b0;
  321. end
  322. 1 : begin
  323. Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[3]):1'b0;
  324. Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[3]):1'b0;
  325. Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[3]):1'b0;
  326. Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt >Lag_i))? (mosiReg3[3]):1'b0;
  327. end
  328. 2 : begin
  329. Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[5]):1'b0;
  330. Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[5]):1'b0;
  331. Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[5]):1'b0;
  332. Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[5]):1'b0;
  333. end
  334. 3 : begin
  335. Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[7]):1'b0;
  336. Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[7]):1'b0;
  337. Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[7]):1'b0;
  338. Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[7]):1'b0;
  339. end
  340. endcase
  341. end
  342. end
  343. else begin
  344. if (EndianSel_i) begin
  345. case (WidthSel_i)
  346. 0 : begin
  347. Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i) )?(mosiReg3[0]):1'b0;
  348. Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
  349. Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
  350. Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
  351. end
  352. 1 : begin
  353. Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
  354. Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
  355. Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
  356. Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
  357. end
  358. 2 : begin
  359. Mosi0_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
  360. Mosi1_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
  361. Mosi2_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
  362. Mosi3_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
  363. end
  364. 3 : begin
  365. Mosi0_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg3[0]):1'b0;
  366. Mosi1_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg2[0]):1'b0;
  367. Mosi2_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg1[0]):1'b0;
  368. Mosi3_i = (ss && (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i)) ? (mosiReg0[0]):1'b0;
  369. end
  370. endcase
  371. end
  372. else begin
  373. case (WidthSel_i)
  374. 0 : begin
  375. Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[1]):1'b0;
  376. Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[1]):1'b0;
  377. Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[1]):1'b0;
  378. Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[1]):1'b0;
  379. end
  380. 1 : begin
  381. Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[3]):1'b0;
  382. Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[3]):1'b0;
  383. Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[3]):1'b0;
  384. Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt >Lag_i))? (mosiReg3[3]):1'b0;
  385. end
  386. 2 : begin
  387. Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[5]):1'b0;
  388. Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[5]):1'b0;
  389. Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[5]):1'b0;
  390. Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[5]):1'b0;
  391. end
  392. 3 : begin
  393. Mosi0_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[7]):1'b0;
  394. Mosi1_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[7]):1'b0;
  395. Mosi2_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[7]):1'b0;
  396. Mosi3_i = (ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[7]):1'b0;
  397. end
  398. endcase
  399. end
  400. end
  401. end
  402. always @(posedge Clk_i) begin
  403. ssR <= ss;
  404. end
  405. always @(*) begin
  406. if (SelSt_i) begin
  407. if (ss && !ssR) begin
  408. valReg = 1'b1;
  409. end
  410. else begin
  411. valReg = 1'b0;
  412. end
  413. end
  414. else begin
  415. if (!ss&& ssR) begin
  416. valReg = 1'b1;
  417. end
  418. else begin
  419. valReg = 1'b0;
  420. end
  421. end
  422. end
  423. always @(posedge Clk_i) begin
  424. if (valReg) begin
  425. spiDataR <= SpiData_i;
  426. end
  427. end
  428. // always @(*) begin
  429. // if (Rst_i) begin
  430. // oldDataFlag = 1'b0;
  431. // end
  432. // else begin
  433. // if (spiDataR == SpiData_i && (SpiData_i != 0) || EmptyFlag_i ) begin
  434. // oldDataFlag = 1'b1;
  435. // end
  436. // else begin
  437. // oldDataFlag = 1'b0;
  438. // end
  439. // end
  440. // end
  441. always @(*) begin
  442. if (Rst_i) begin
  443. startFlag = 1'b0;
  444. end
  445. else begin
  446. if (Start_i && !stopFlag && !EmptyFlag_i && !oldDataFlag ) begin
  447. startFlag = 1'b1;
  448. end
  449. else begin
  450. startFlag = 1'b0;
  451. end
  452. end
  453. end
  454. always @(*) begin
  455. if (Rst_i) begin
  456. ssNum = 1'b0;
  457. end
  458. else begin
  459. case (WidthSel_i)
  460. 0 : begin
  461. ssNum = 2;
  462. end
  463. 1 : begin
  464. ssNum = 4;
  465. end
  466. 2 : begin
  467. ssNum = 6;
  468. end
  469. 3 : begin
  470. ssNum = 8;
  471. end
  472. endcase
  473. end
  474. end
  475. always @(negedge Clk_i) begin
  476. if (Rst_i) begin
  477. ssCnt <= 1'b0;
  478. end
  479. else if (ssCnt < (ssNum+Lag_i+Lead_i) && startFlag ) begin
  480. ssCnt <= ssCnt + 1'b1;
  481. end
  482. else begin
  483. if (ssCnt == ssNum-1 || !startFlag) begin
  484. ssCnt <= 1'b0;
  485. end
  486. end
  487. end
  488. always @(negedge Clk_i) begin
  489. if (SelSt_i) begin
  490. if (Rst_i) begin
  491. ss <= 1'b1;
  492. end
  493. else begin
  494. if (ssCnt < (ssNum+Lag_i+Lead_i) && startFlag ) begin
  495. ss <= 1'b0;
  496. end
  497. else begin
  498. ss <= 1'b1;
  499. end
  500. end
  501. end
  502. else begin
  503. if (Rst_i) begin
  504. ss <= 1'b0;
  505. end
  506. else begin
  507. if (ssCnt < (ssNum+Lag_i+Lead_i) && startFlag ) begin
  508. ss <= 1'b1;
  509. end
  510. else begin
  511. ss <= 1'b0;
  512. end
  513. end
  514. end
  515. end
  516. always @(negedge Clk_i) begin
  517. if (Rst_i) begin
  518. mosiReg0 <= SpiData_i[31:24];
  519. end
  520. else begin
  521. case (WidthSel_i)
  522. 3: begin
  523. if (!EndianSel_i) begin
  524. if (SelSt_i) begin
  525. if (!ssR && (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  526. mosiReg0 <= { mosiReg0[6:0],1'b0 };
  527. end
  528. else begin
  529. mosiReg0 <= SpiData_i[31:24];
  530. end
  531. end
  532. else begin
  533. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  534. mosiReg0 <= { mosiReg0[6:0],1'b0 };
  535. end
  536. else begin
  537. mosiReg0 <= SpiData_i[31:24];
  538. end
  539. end
  540. end
  541. else begin
  542. if (SelSt_i) begin
  543. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  544. mosiReg0 <= {1'b0, mosiReg0[7:1] };
  545. end
  546. else begin
  547. mosiReg0 <= SpiData_i[31:24];
  548. end
  549. end
  550. else begin
  551. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  552. mosiReg0 <= {1'b0, mosiReg0[7:1] };
  553. end
  554. else begin
  555. mosiReg0 <= SpiData_i[31:24];
  556. end
  557. end
  558. end
  559. end
  560. 2: begin
  561. if (!EndianSel_i) begin
  562. if (SelSt_i) begin
  563. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  564. mosiReg0 <= { mosiReg0[4:0],1'b0 };
  565. end
  566. else begin
  567. mosiReg0 <= SpiData_i[23:18];
  568. end
  569. end
  570. else begin
  571. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  572. mosiReg0 <= { mosiReg0[4:0],1'b0 };
  573. end
  574. else begin
  575. mosiReg0 <= SpiData_i[23:18];
  576. end
  577. end
  578. end
  579. else begin
  580. if (SelSt_i) begin
  581. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  582. mosiReg0 <= {1'b0, mosiReg0[5:1] };
  583. end
  584. else begin
  585. mosiReg0 <= SpiData_i[23:18];
  586. end
  587. end
  588. else begin
  589. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  590. mosiReg0 <= {1'b0, mosiReg0[5:1] };
  591. end
  592. else begin
  593. mosiReg0 <= SpiData_i[23:18];
  594. end
  595. end
  596. end
  597. end
  598. 1: begin
  599. if (!EndianSel_i) begin
  600. if (SelSt_i) begin
  601. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  602. mosiReg0 <= { mosiReg0[2:0],1'b0 };
  603. end
  604. else begin
  605. mosiReg0 <= SpiData_i[15:12];
  606. end
  607. end
  608. else begin
  609. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  610. mosiReg0 <= { mosiReg0[2:0],1'b0 };
  611. end
  612. else begin
  613. mosiReg0 <= SpiData_i[15:12];
  614. end
  615. end
  616. end
  617. else begin
  618. if (SelSt_i) begin
  619. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  620. mosiReg0 <= {1'b0, mosiReg0[3:1] };
  621. end
  622. else begin
  623. mosiReg0 <= SpiData_i[15:12];
  624. end
  625. end
  626. else begin
  627. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  628. mosiReg0 <= {1'b0, mosiReg0[3:1] };
  629. end
  630. else begin
  631. mosiReg0 <= SpiData_i[15:12];
  632. end
  633. end
  634. end
  635. end
  636. 0: begin
  637. if (!EndianSel_i) begin
  638. if (SelSt_i) begin
  639. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  640. mosiReg0 <= { mosiReg0[0],1'b0 };
  641. end
  642. else begin
  643. mosiReg0 <= SpiData_i[7:6];
  644. end
  645. end
  646. else begin
  647. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  648. mosiReg0 <= { mosiReg0[0],1'b0 };
  649. end
  650. else begin
  651. mosiReg0 <= SpiData_i[7:6];
  652. end
  653. end
  654. end
  655. else begin
  656. if (SelSt_i) begin
  657. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  658. mosiReg0 <= {1'b0, mosiReg0[1:1] };
  659. end
  660. else begin
  661. mosiReg0 <= SpiData_i[7:6];
  662. end
  663. end
  664. else begin
  665. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  666. mosiReg0 <= {1'b0, mosiReg0[1:1] };
  667. end
  668. else begin
  669. mosiReg0 <= SpiData_i[7:6];
  670. end
  671. end
  672. end
  673. end
  674. endcase
  675. end
  676. end
  677. always @(negedge Clk_i) begin
  678. if (Rst_i) begin
  679. mosiReg1 <= SpiData_i[23:16];
  680. end
  681. else begin
  682. case(WidthSel_i)
  683. 3: begin
  684. if (!EndianSel_i) begin
  685. if (SelSt_i) begin
  686. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  687. mosiReg1 <= { mosiReg1[6:0],1'b0 };
  688. end
  689. else begin
  690. mosiReg1 <= SpiData_i[23:16];
  691. end
  692. end
  693. else begin
  694. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  695. mosiReg1 <= { mosiReg1[6:0],1'b0 };
  696. end
  697. else begin
  698. mosiReg1 <= SpiData_i[23:16];
  699. end
  700. end
  701. end
  702. else begin
  703. if (SelSt_i) begin
  704. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  705. mosiReg1 <= {1'b0, mosiReg1[7:1] };
  706. end
  707. else begin
  708. mosiReg1 <= SpiData_i[23:16];
  709. end
  710. end
  711. else begin
  712. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  713. mosiReg1 <= {1'b0, mosiReg1[7:1] };
  714. end
  715. else begin
  716. mosiReg1 <= SpiData_i[23:16];
  717. end
  718. end
  719. end
  720. end
  721. 2: begin
  722. if (!EndianSel_i) begin
  723. if (SelSt_i) begin
  724. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  725. mosiReg1 <= { mosiReg1[4:0],1'b0 };
  726. end
  727. else begin
  728. mosiReg1 <= SpiData_i[17:12];
  729. end
  730. end
  731. else begin
  732. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  733. mosiReg1 <= { mosiReg1[4:0],1'b0 };
  734. end
  735. else begin
  736. mosiReg1 <= SpiData_i[17:12];
  737. end
  738. end
  739. end
  740. else begin
  741. if (SelSt_i) begin
  742. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  743. mosiReg1 <= {1'b0, mosiReg1[5:1] };
  744. end
  745. else begin
  746. mosiReg1 <= SpiData_i[17:12];
  747. end
  748. end
  749. else begin
  750. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  751. mosiReg1 <= {1'b0, mosiReg1[5:1] };
  752. end
  753. else begin
  754. mosiReg1 <= SpiData_i[17:12];
  755. end
  756. end
  757. end
  758. end
  759. 1: begin
  760. if (!EndianSel_i) begin
  761. if (SelSt_i) begin
  762. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  763. mosiReg1 <= { mosiReg1[2:0],1'b0 };
  764. end
  765. else begin
  766. mosiReg1 <= SpiData_i[11:8];
  767. end
  768. end
  769. else begin
  770. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  771. mosiReg1 <= { mosiReg1[2:0],1'b0 };
  772. end
  773. else begin
  774. mosiReg1 <= SpiData_i[11:8];
  775. end
  776. end
  777. end
  778. else begin
  779. if (SelSt_i) begin
  780. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  781. mosiReg1 <= {1'b0, mosiReg1[3:1] };
  782. end
  783. else begin
  784. mosiReg1 <= SpiData_i[11:8];
  785. end
  786. end
  787. else begin
  788. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  789. mosiReg1 <= {1'b0, mosiReg1[3:1] };
  790. end
  791. else begin
  792. mosiReg1 <= SpiData_i[11:8];
  793. end
  794. end
  795. end
  796. end
  797. 0: begin
  798. if (!EndianSel_i) begin
  799. if (SelSt_i) begin
  800. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  801. mosiReg1 <= { mosiReg1[0],1'b0 };
  802. end
  803. else begin
  804. mosiReg1 <= SpiData_i[5:4];
  805. end
  806. end
  807. else begin
  808. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  809. mosiReg1 <= { mosiReg1[0],1'b0 };
  810. end
  811. else begin
  812. mosiReg1 <= SpiData_i[5:4];
  813. end
  814. end
  815. end
  816. else begin
  817. if (SelSt_i) begin
  818. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  819. mosiReg1 <= {1'b0, mosiReg1[1:1] };
  820. end
  821. else begin
  822. mosiReg1 <= SpiData_i[5:4];
  823. end
  824. end
  825. else begin
  826. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  827. mosiReg1 <= {1'b0, mosiReg1[1:1] };
  828. end
  829. else begin
  830. mosiReg1 <= SpiData_i[5:4];
  831. end
  832. end
  833. end
  834. end
  835. endcase
  836. end
  837. end
  838. always @(negedge Clk_i) begin
  839. if (Rst_i) begin
  840. mosiReg2 <= SpiData_i[15:8];
  841. end
  842. else begin
  843. case(WidthSel_i)
  844. 3 : begin
  845. if (!EndianSel_i) begin
  846. if (SelSt_i) begin
  847. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  848. mosiReg2 <= { mosiReg2[6:0],1'b0 };
  849. end
  850. else begin
  851. mosiReg2 <= SpiData_i[15:8];
  852. end
  853. end
  854. else begin
  855. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  856. mosiReg2 <= { mosiReg2[6:0],1'b0 };
  857. end
  858. else begin
  859. mosiReg2 <= SpiData_i[15:8];
  860. end
  861. end
  862. end
  863. else begin
  864. if (SelSt_i) begin
  865. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  866. mosiReg2 <= {1'b0, mosiReg2[7:1] };
  867. end
  868. else begin
  869. mosiReg2 <= SpiData_i[15:8];
  870. end
  871. end
  872. else begin
  873. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  874. mosiReg2 <= {1'b0, mosiReg2[7:1] };
  875. end
  876. else begin
  877. mosiReg2 <= SpiData_i[15:8];
  878. end
  879. end
  880. end
  881. end
  882. 2 : begin
  883. if (!EndianSel_i) begin
  884. if (SelSt_i) begin
  885. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  886. mosiReg2 <= { mosiReg2[4:0],1'b0 };
  887. end
  888. else begin
  889. mosiReg2 <= SpiData_i[11:6];
  890. end
  891. end
  892. else begin
  893. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  894. mosiReg2 <= { mosiReg2[4:0],1'b0 };
  895. end
  896. else begin
  897. mosiReg2 <= SpiData_i[11:6];
  898. end
  899. end
  900. end
  901. else begin
  902. if (SelSt_i) begin
  903. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  904. mosiReg2 <= {1'b0, mosiReg2[5:1] };
  905. end
  906. else begin
  907. mosiReg2 <= SpiData_i[11:6];
  908. end
  909. end
  910. else begin
  911. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  912. mosiReg2 <= {1'b0, mosiReg2[5:1] };
  913. end
  914. else begin
  915. mosiReg2 <= SpiData_i[11:6];
  916. end
  917. end
  918. end
  919. end
  920. 1 : begin
  921. if (!EndianSel_i) begin
  922. if (SelSt_i) begin
  923. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  924. mosiReg2 <= { mosiReg2[2:0],1'b0 };
  925. end
  926. else begin
  927. mosiReg2 <= SpiData_i[7:4];
  928. end
  929. end
  930. else begin
  931. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  932. mosiReg2 <= { mosiReg2[2:0],1'b0 };
  933. end
  934. else begin
  935. mosiReg2 <= SpiData_i[7:4];
  936. end
  937. end
  938. end
  939. else begin
  940. if (SelSt_i) begin
  941. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  942. mosiReg2 <= {1'b0, mosiReg2[3:1] };
  943. end
  944. else begin
  945. mosiReg2 <= SpiData_i[7:4];
  946. end
  947. end
  948. else begin
  949. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  950. mosiReg2 <= {1'b0, mosiReg2[3:1] };
  951. end
  952. else begin
  953. mosiReg2 <= SpiData_i[7:4];
  954. end
  955. end
  956. end
  957. end
  958. 0 : begin
  959. if (!EndianSel_i) begin
  960. if (SelSt_i) begin
  961. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  962. mosiReg2 <= { mosiReg2[0],1'b0 };
  963. end
  964. else begin
  965. mosiReg2 <= SpiData_i[3:2];
  966. end
  967. end
  968. else begin
  969. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  970. mosiReg2 <= { mosiReg2[0],1'b0 };
  971. end
  972. else begin
  973. mosiReg2 <= SpiData_i[3:2];
  974. end
  975. end
  976. end
  977. else begin
  978. if (SelSt_i) begin
  979. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  980. mosiReg2 <= {1'b0, mosiReg2[1:1] };
  981. end
  982. else begin
  983. mosiReg2 <= SpiData_i[3:2];
  984. end
  985. end
  986. else begin
  987. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  988. mosiReg2 <= {1'b0, mosiReg2[1:1] };
  989. end
  990. else begin
  991. mosiReg2 <= SpiData_i[3:2];
  992. end
  993. end
  994. end
  995. end
  996. endcase
  997. end
  998. end
  999. always @(negedge Clk_i) begin
  1000. if (Rst_i) begin
  1001. mosiReg3 <= SpiData_i[7:0];
  1002. end
  1003. else begin
  1004. case (WidthSel_i)
  1005. 3: begin
  1006. if (!EndianSel_i) begin
  1007. if (SelSt_i) begin
  1008. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1009. mosiReg3 <= { mosiReg3[6:0],1'b0 };
  1010. end
  1011. else begin
  1012. mosiReg3 <= SpiData_i[7:0];
  1013. end
  1014. end
  1015. else begin
  1016. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1017. mosiReg3 <= { mosiReg3[6:0],1'b0 };
  1018. end
  1019. else begin
  1020. mosiReg3 <= SpiData_i[7:0];
  1021. end
  1022. end
  1023. end
  1024. else begin
  1025. if (SelSt_i) begin
  1026. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1027. mosiReg3 <= {1'b0, mosiReg3[7:1] };
  1028. end
  1029. else begin
  1030. mosiReg3 <= SpiData_i[7:0];
  1031. end
  1032. end
  1033. else begin
  1034. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1035. mosiReg3 <= {1'b0, mosiReg3[7:1] };
  1036. end
  1037. else begin
  1038. mosiReg3 <= SpiData_i[7:0];
  1039. end
  1040. end
  1041. end
  1042. end
  1043. 2: begin
  1044. if (!EndianSel_i) begin
  1045. if (SelSt_i) begin
  1046. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1047. mosiReg3 <= { mosiReg3[4:0],1'b0 };
  1048. end
  1049. else begin
  1050. mosiReg3 <= SpiData_i[5:0];
  1051. end
  1052. end
  1053. else begin
  1054. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1055. mosiReg3 <= { mosiReg3[4:0],1'b0 };
  1056. end
  1057. else begin
  1058. mosiReg3 <= SpiData_i[5:0];
  1059. end
  1060. end
  1061. end
  1062. else begin
  1063. if (SelSt_i) begin
  1064. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1065. mosiReg3 <= {1'b0, mosiReg3[5:1] };
  1066. end
  1067. else begin
  1068. mosiReg3 <= SpiData_i[5:0];
  1069. end
  1070. end
  1071. else begin
  1072. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1073. mosiReg3 <= {1'b0, mosiReg3[5:1] };
  1074. end
  1075. else begin
  1076. mosiReg3 <= SpiData_i[5:0];
  1077. end
  1078. end
  1079. end
  1080. end
  1081. 1: begin
  1082. if (!EndianSel_i) begin
  1083. if (SelSt_i) begin
  1084. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1085. mosiReg3 <= { mosiReg3[2:0],1'b0 };
  1086. end
  1087. else begin
  1088. mosiReg3 <= SpiData_i[3:0];
  1089. end
  1090. end
  1091. else begin
  1092. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1093. mosiReg3 <= { mosiReg3[2:0],1'b0 };
  1094. end
  1095. else begin
  1096. mosiReg3 <= SpiData_i[3:0];
  1097. end
  1098. end
  1099. end
  1100. else begin
  1101. if (SelSt_i) begin
  1102. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1103. mosiReg3 <= {1'b0, mosiReg3[3:1] };
  1104. end
  1105. else begin
  1106. mosiReg3 <= SpiData_i[3:0];
  1107. end
  1108. end
  1109. else begin
  1110. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1111. mosiReg3 <= {1'b0, mosiReg3[3:1] };
  1112. end
  1113. else begin
  1114. mosiReg3 <= SpiData_i[3:0];
  1115. end
  1116. end
  1117. end
  1118. end
  1119. 0: begin
  1120. if (!EndianSel_i) begin
  1121. if (SelSt_i) begin
  1122. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1123. mosiReg3 <= { mosiReg3[0],1'b0 };
  1124. end
  1125. else begin
  1126. mosiReg3 <= SpiData_i[1:0];
  1127. end
  1128. end
  1129. else begin
  1130. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1131. mosiReg3 <= { mosiReg3[0],1'b0 };
  1132. end
  1133. else begin
  1134. mosiReg3 <= SpiData_i[1:0];
  1135. end
  1136. end
  1137. end
  1138. else begin
  1139. if (SelSt_i) begin
  1140. if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1141. mosiReg3 <= {1'b0, mosiReg3[1:1] };
  1142. end
  1143. else begin
  1144. mosiReg3 <= SpiData_i[1:0];
  1145. end
  1146. end
  1147. else begin
  1148. if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
  1149. mosiReg3 <= {1'b0, mosiReg3[1:1] };
  1150. end
  1151. else begin
  1152. mosiReg3 <= SpiData_i[1:0];
  1153. end
  1154. end
  1155. end
  1156. end
  1157. endcase
  1158. end
  1159. end
  1160. endmodule