|
|
@@ -3,6 +3,7 @@ module QuadSPIm(
|
|
|
input Clk_i,
|
|
|
input Rst_i,
|
|
|
input Start_i,
|
|
|
+ input EmptyFlag_i,
|
|
|
input ClockPhase_i,
|
|
|
input [31:0] SpiData_i,
|
|
|
input SpiDataVal_i,
|
|
|
@@ -83,19 +84,19 @@ module QuadSPIm(
|
|
|
end
|
|
|
|
|
|
|
|
|
- always @(posedge Clk_i) begin
|
|
|
- if (Rst_i) begin
|
|
|
- trCnt <= 1'b0;
|
|
|
- end
|
|
|
- else begin
|
|
|
- if ( ssCnt == (ssNum + Lead_i + Lag_i)) begin
|
|
|
- trCnt <= trCnt + 1'b1;
|
|
|
- end
|
|
|
- else if (oldDataFlag) begin
|
|
|
- trCnt <= 1'b0;
|
|
|
- end
|
|
|
- end
|
|
|
- end
|
|
|
+ // always @(posedge Clk_i) begin
|
|
|
+ // if (Rst_i) begin
|
|
|
+ // trCnt <= 1'b0;
|
|
|
+ // end
|
|
|
+ // else begin
|
|
|
+ // if ( ssCnt == (ssNum + Lead_i + Lag_i)) begin
|
|
|
+ // trCnt <= trCnt + 1'b1;
|
|
|
+ // end
|
|
|
+ // else if (oldDataFlag) begin
|
|
|
+ // trCnt <= 1'b0;
|
|
|
+ // end
|
|
|
+ // end
|
|
|
+ // end
|
|
|
|
|
|
|
|
|
|
|
|
@@ -348,7 +349,7 @@ module QuadSPIm(
|
|
|
Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[5]):1'b0;
|
|
|
Mosi1_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg1[5]):1'b0;
|
|
|
Mosi2_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg2[5]):1'b0;
|
|
|
- Mosi3_i = (!ss&& (ssCnt < ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[5]):1'b0;
|
|
|
+ Mosi3_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg3[5]):1'b0;
|
|
|
end
|
|
|
3 : begin
|
|
|
Mosi0_i = (!ss&& (ssCnt <= ssNum+Lag_i && ssCnt > Lag_i))? (mosiReg0[7]):1'b0;
|
|
|
@@ -458,7 +459,7 @@ module QuadSPIm(
|
|
|
oldDataFlag = 1'b0;
|
|
|
end
|
|
|
else begin
|
|
|
- if (spiDataR == SpiData_i) begin
|
|
|
+ if (spiDataR == SpiData_i && (SpiData_i != 0) || EmptyFlag_i ) begin
|
|
|
oldDataFlag = 1'b1;
|
|
|
end
|
|
|
else begin
|
|
|
@@ -474,7 +475,7 @@ module QuadSPIm(
|
|
|
startFlag = 1'b0;
|
|
|
end
|
|
|
else begin
|
|
|
- if (Start_i&& !stopFlag && SpiData_i != 0 && !oldDataFlag ) begin
|
|
|
+ if (Start_i && !stopFlag && !EmptyFlag_i && !oldDataFlag ) begin
|
|
|
startFlag = 1'b1;
|
|
|
end
|
|
|
else begin
|
|
|
@@ -558,42 +559,160 @@ module QuadSPIm(
|
|
|
mosiReg0 <= SpiData_i[31:24];
|
|
|
end
|
|
|
else begin
|
|
|
- if (!EndianSel_i) begin
|
|
|
- if (SelSt_i) begin
|
|
|
- if (!ssR && (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg0 <= { mosiReg0[6:0],1'b0 };
|
|
|
+ case (WidthSel_i)
|
|
|
+ 3: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR && (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= { mosiReg0[6:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[31:24];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg0 <= SpiData_i[31:24];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= { mosiReg0[6:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[31:24];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
else begin
|
|
|
- if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg0 <= { mosiReg0[6:0],1'b0 };
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= {1'b0, mosiReg0[7:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[31:24];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg0 <= SpiData_i[31:24];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= {1'b0, mosiReg0[7:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[31:24];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
- else begin
|
|
|
- if (SelSt_i) begin
|
|
|
- if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg0 <= {1'b0, mosiReg0[7:1] };
|
|
|
+ 2: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= { mosiReg0[4:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[23:18];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg0 <= SpiData_i[31:24];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= { mosiReg0[4:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[23:18];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
else begin
|
|
|
- if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg0 <= {1'b0, mosiReg0[7:1] };
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= {1'b0, mosiReg0[5:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[23:18];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= {1'b0, mosiReg0[5:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[23:18];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ 1: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= { mosiReg0[2:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[15:12];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= { mosiReg0[2:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[15:12];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= {1'b0, mosiReg0[3:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[15:12];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= {1'b0, mosiReg0[3:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[15:12];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ 0: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= { mosiReg0[0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[7:6];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= { mosiReg0[0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[7:6];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= {1'b0, mosiReg0[1:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[7:6];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg0 <= SpiData_i[31:24];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg0 <= {1'b0, mosiReg0[1:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg0 <= SpiData_i[7:6];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
+ endcase
|
|
|
end
|
|
|
end
|
|
|
|
|
|
@@ -602,42 +721,160 @@ module QuadSPIm(
|
|
|
mosiReg1 <= SpiData_i[23:16];
|
|
|
end
|
|
|
else begin
|
|
|
- if (!EndianSel_i) begin
|
|
|
- if (SelSt_i) begin
|
|
|
- if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg1 <= { mosiReg1[6:0],1'b0 };
|
|
|
+ case(WidthSel_i)
|
|
|
+ 3: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= { mosiReg1[6:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[23:16];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg1 <= SpiData_i[23:16];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= { mosiReg1[6:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[23:16];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
else begin
|
|
|
- if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg1 <= { mosiReg1[6:0],1'b0 };
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= {1'b0, mosiReg1[7:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[23:16];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg1 <= SpiData_i[23:16];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= {1'b0, mosiReg1[7:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[23:16];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
- else begin
|
|
|
- if (SelSt_i) begin
|
|
|
- if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg1 <= {1'b0, mosiReg1[7:1] };
|
|
|
+ 2: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= { mosiReg1[4:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[17:12];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg1 <= SpiData_i[23:16];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= { mosiReg1[4:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[17:12];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
else begin
|
|
|
- if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg1 <= {1'b0, mosiReg1[7:1] };
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= {1'b0, mosiReg1[5:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[17:12];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg1 <= SpiData_i[23:16];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= {1'b0, mosiReg1[5:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[17:12];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
+ 1: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= { mosiReg1[2:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[11:8];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= { mosiReg1[2:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[11:8];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= {1'b0, mosiReg1[3:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[11:8];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= {1'b0, mosiReg1[3:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[11:8];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ 0: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= { mosiReg1[0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[5:4];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= { mosiReg1[0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[5:4];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= {1'b0, mosiReg1[1:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[5:4];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg1 <= {1'b0, mosiReg1[1:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg1 <= SpiData_i[5:4];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ endcase
|
|
|
end
|
|
|
end
|
|
|
|
|
|
@@ -646,86 +883,324 @@ module QuadSPIm(
|
|
|
mosiReg2 <= SpiData_i[15:8];
|
|
|
end
|
|
|
else begin
|
|
|
- if (!EndianSel_i) begin
|
|
|
- if (SelSt_i) begin
|
|
|
- if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg2 <= { mosiReg2[6:0],1'b0 };
|
|
|
+ case(WidthSel_i)
|
|
|
+ 3 : begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= { mosiReg2[6:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[15:8];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg2 <= SpiData_i[15:8];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= { mosiReg2[6:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[15:8];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
else begin
|
|
|
- if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg2 <= { mosiReg2[6:0],1'b0 };
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= {1'b0, mosiReg2[7:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[15:8];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg2 <= SpiData_i[15:8];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= {1'b0, mosiReg2[7:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[15:8];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
- else begin
|
|
|
- if (SelSt_i) begin
|
|
|
- if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg2 <= {1'b0, mosiReg2[7:1] };
|
|
|
+ 2 : begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= { mosiReg2[4:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[11:6];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg2 <= SpiData_i[15:8];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= { mosiReg2[4:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[11:6];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
else begin
|
|
|
- if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg2 <= {1'b0, mosiReg2[7:1] };
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= {1'b0, mosiReg2[5:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[11:6];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg2 <= SpiData_i[15:8];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= {1'b0, mosiReg2[5:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[11:6];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
+ 1 : begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= { mosiReg2[2:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[7:4];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= { mosiReg2[2:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[7:4];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= {1'b0, mosiReg2[3:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[7:4];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= {1'b0, mosiReg2[3:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[7:4];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ 0 : begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= { mosiReg2[0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[3:2];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= { mosiReg2[0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[3:2];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= {1'b0, mosiReg2[1:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[3:2];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg2 <= {1'b0, mosiReg2[1:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg2 <= SpiData_i[3:2];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ endcase
|
|
|
end
|
|
|
end
|
|
|
+
|
|
|
+
|
|
|
|
|
|
always @(negedge Clk_i) begin
|
|
|
if (Rst_i) begin
|
|
|
mosiReg3 <= SpiData_i[7:0];
|
|
|
end
|
|
|
else begin
|
|
|
- if (!EndianSel_i) begin
|
|
|
- if (SelSt_i) begin
|
|
|
- if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg3 <= { mosiReg3[6:0],1'b0 };
|
|
|
+ case (WidthSel_i)
|
|
|
+ 3: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= { mosiReg3[6:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[7:0];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg3 <= SpiData_i[7:0];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= { mosiReg3[6:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[7:0];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
else begin
|
|
|
- if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg3 <= { mosiReg3[6:0],1'b0 };
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= {1'b0, mosiReg3[7:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[7:0];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg3 <= SpiData_i[7:0];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= {1'b0, mosiReg3[7:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[7:0];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
- else begin
|
|
|
- if (SelSt_i) begin
|
|
|
- if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg3 <= {1'b0, mosiReg3[7:1] };
|
|
|
+ 2: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= { mosiReg3[4:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[5:0];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= { mosiReg3[4:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[5:0];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= {1'b0, mosiReg3[5:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[5:0];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= {1'b0, mosiReg3[5:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[5:0];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ 1: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= { mosiReg3[2:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[3:0];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= { mosiReg3[2:0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[3:0];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= {1'b0, mosiReg3[3:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[3:0];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= {1'b0, mosiReg3[3:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[3:0];
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ 0: begin
|
|
|
+ if (!EndianSel_i) begin
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= { mosiReg3[0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[1:0];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg3 <= SpiData_i[7:0];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= { mosiReg3[0],1'b0 };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[1:0];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
else begin
|
|
|
- if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
- mosiReg3 <= {1'b0, mosiReg3[7:1] };
|
|
|
+ if (SelSt_i) begin
|
|
|
+ if (!ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= {1'b0, mosiReg3[1:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[1:0];
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- mosiReg3 <= SpiData_i[7:0];
|
|
|
+ if (ssR&& (ssCnt > Lag_i && ssCnt < ssNum + Lag_i + Lead_i)) begin
|
|
|
+ mosiReg3 <= {1'b0, mosiReg3[1:1] };
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ mosiReg3 <= SpiData_i[1:0];
|
|
|
+ end
|
|
|
end
|
|
|
end
|
|
|
end
|
|
|
+ endcase
|
|
|
end
|
|
|
end
|
|
|
|
|
|
@@ -741,4 +1216,5 @@ module QuadSPIm(
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
endmodule
|