|
|
@@ -17,7 +17,8 @@
|
|
|
//
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
module SpiM #(
|
|
|
- parameter DATA_WIDTH = 24
|
|
|
+ parameter DATA_WIDTH = 24,
|
|
|
+ parameter IS_LMX_DELAY = 0
|
|
|
)(
|
|
|
input Clk_i,
|
|
|
input Rst_i,
|
|
|
@@ -58,8 +59,17 @@ reg ssReg;
|
|
|
// ASSIGNMENTS
|
|
|
//================================================================================
|
|
|
assign Ss_o = ssReg;
|
|
|
-assign Mosi_o = (!ssReg) ? mosiReg[DATA_WIDTH-1] : 1'b0;
|
|
|
-assign Sck_o = (!ssReg) ? Clk_i : 1'b0;
|
|
|
+generate
|
|
|
+ if (IS_LMX_DELAY) begin
|
|
|
+ assign Sck_o = (!ssReg && ssCnt < DATA_WIDTH) ? Clk_i : 1'b0;
|
|
|
+ assign Mosi_o = (!ssReg && ssCnt < DATA_WIDTH) ? mosiReg[DATA_WIDTH-1] : 1'b0;
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ assign Sck_o = (!ssReg) ? Clk_i : 1'b0;
|
|
|
+ assign Mosi_o = (!ssReg) ? mosiReg[DATA_WIDTH-1] : 1'b0;
|
|
|
+ end
|
|
|
+endgenerate
|
|
|
+
|
|
|
assign Busy_o = !ssReg;
|
|
|
|
|
|
//================================================================================
|
|
|
@@ -94,18 +104,37 @@ always @(negedge Clk_i) begin
|
|
|
end
|
|
|
end
|
|
|
|
|
|
-always @(negedge Clk_i) begin
|
|
|
- if (Rst_i) begin
|
|
|
- ssReg <= 1'b1;
|
|
|
+generate
|
|
|
+ if (IS_LMX_DELAY) begin
|
|
|
+ always @(negedge Clk_i) begin
|
|
|
+ if (Rst_i) begin
|
|
|
+ ssReg <= 1'b1;
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (Val_i) begin
|
|
|
+ ssReg <= 0;
|
|
|
+ end
|
|
|
+ if (ssCnt == DATA_WIDTH) begin
|
|
|
+ ssReg <= 1;
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
end
|
|
|
else begin
|
|
|
- if (Val_i) begin
|
|
|
- ssReg <= 0;
|
|
|
- end
|
|
|
- if (ssCnt == DATA_WIDTH-1) begin
|
|
|
- ssReg <= 1;
|
|
|
- end
|
|
|
+ always @(negedge Clk_i) begin
|
|
|
+ if (Rst_i) begin
|
|
|
+ ssReg <= 1'b1;
|
|
|
+ end
|
|
|
+ else begin
|
|
|
+ if (Val_i) begin
|
|
|
+ ssReg <= 0;
|
|
|
+ end
|
|
|
+ if (ssCnt == DATA_WIDTH - 1 ) begin
|
|
|
+ ssReg <= 1;
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
end
|
|
|
-end
|
|
|
+endgenerate
|
|
|
|
|
|
endmodule
|