mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Cleaned up some code. Still more work to do there.
This commit is contained in:
parent
e881bd3120
commit
c197d4a3c6
@ -273,7 +273,7 @@ module spi_apb import cvw::*; #(parameter cvw_t P) (
|
|||||||
READY: if (~TransmitFIFOReadEmpty & ~Transmitting) NextState = START;
|
READY: if (~TransmitFIFOReadEmpty & ~Transmitting) NextState = START;
|
||||||
else NextState = READY;
|
else NextState = READY;
|
||||||
START: NextState = WAIT;
|
START: NextState = WAIT;
|
||||||
WAIT: if (/*TransmitFIFOReadEmpty &*/ ~Transmitting & ~TransmitRegLoaded) NextState = READY;
|
WAIT: if (~Transmitting & ~TransmitRegLoaded) NextState = READY;
|
||||||
else NextState = WAIT;
|
else NextState = WAIT;
|
||||||
default: NextState = READY;
|
default: NextState = READY;
|
||||||
endcase
|
endcase
|
||||||
|
@ -80,6 +80,9 @@ module spi_controller (
|
|||||||
logic PreSampleEdge;
|
logic PreSampleEdge;
|
||||||
// logic ShiftEdge;
|
// logic ShiftEdge;
|
||||||
// logic SampleEdge;
|
// logic SampleEdge;
|
||||||
|
logic ShiftEdgePulse;
|
||||||
|
logic SampleEdgePulse;
|
||||||
|
logic EndOfFramePulse;
|
||||||
|
|
||||||
// Frame stuff
|
// Frame stuff
|
||||||
logic [3:0] BitNum;
|
logic [3:0] BitNum;
|
||||||
@ -220,6 +223,7 @@ module spi_controller (
|
|||||||
// EndOfFrame <= 1'b0;
|
// EndOfFrame <= 1'b0;
|
||||||
// end
|
// end
|
||||||
|
|
||||||
|
// TODO: Rename EndOfFrameDelay to EndOfFrame and remove this logic
|
||||||
if (~TransmitStart) begin
|
if (~TransmitStart) begin
|
||||||
EndOfFrame <= (SckMode[1] ^ SckMode[0] ^ SPICLK) & SCLKenable & LastBit & Transmitting;
|
EndOfFrame <= (SckMode[1] ^ SckMode[0] ^ SPICLK) & SCLKenable & LastBit & Transmitting;
|
||||||
end
|
end
|
||||||
@ -236,35 +240,39 @@ module spi_controller (
|
|||||||
// Delay ShiftEdge and SampleEdge by a half PCLK period
|
// Delay ShiftEdge and SampleEdge by a half PCLK period
|
||||||
// Aligned EXACTLY ON THE MIDDLE of the leading and trailing edges.
|
// Aligned EXACTLY ON THE MIDDLE of the leading and trailing edges.
|
||||||
// Sweeeeeeeeeet...
|
// Sweeeeeeeeeet...
|
||||||
|
|
||||||
|
assign ShiftEdgePulse = SCLKenable & ~LastBit & Transmitting;
|
||||||
|
assign SampleEdgePulse = SCLKenable & Transmitting & ~DelayIsNext;
|
||||||
|
assign EndOfFramePulse = SCLKenable & LastBit & Transmitting;
|
||||||
|
|
||||||
always_ff @(posedge ~PCLK) begin
|
always_ff @(posedge ~PCLK) begin
|
||||||
if (~PRESETn | TransmitStart) begin
|
if (~PRESETn | TransmitStart) begin
|
||||||
ShiftEdge <= 0;
|
ShiftEdge <= 0;
|
||||||
PhaseOneOffset <= 0;
|
PhaseOneOffset <= 0;
|
||||||
SampleEdge <= 0;
|
SampleEdge <= 0;
|
||||||
EndOfFrameDelay <= 0;
|
EndOfFrameDelay <= 0;
|
||||||
end else begin
|
end else begin
|
||||||
case(SckMode)
|
PhaseOneOffset <= (PhaseOneOffset == 0) ? Transmitting & SCLKenable : ~EndOfFrameDelay;
|
||||||
|
case(SckMode)
|
||||||
2'b00: begin
|
2'b00: begin
|
||||||
ShiftEdge <= SPICLK & SCLKenable & ~LastBit & Transmitting;
|
ShiftEdge <= SPICLK & ShiftEdgePulse;
|
||||||
SampleEdge <= ~SPICLK & SCLKenable & Transmitting & ~DelayIsNext;
|
SampleEdge <= ~SPICLK & SampleEdgePulse;
|
||||||
EndOfFrameDelay <= SPICLK & SCLKenable & LastBit & Transmitting;
|
EndOfFrameDelay <= SPICLK & EndOfFramePulse;
|
||||||
end
|
end
|
||||||
2'b01: begin
|
2'b01: begin
|
||||||
ShiftEdge <= ~SPICLK & SCLKenable & ~LastBit & Transmitting & PhaseOneOffset;
|
ShiftEdge <= ~SPICLK & ShiftEdgePulse & PhaseOneOffset;
|
||||||
SampleEdge <= SPICLK & SCLKenable & Transmitting & ~DelayIsNext;
|
SampleEdge <= SPICLK & SampleEdgePulse;
|
||||||
EndOfFrameDelay <= ~SPICLK & SCLKenable & LastBit & Transmitting;
|
EndOfFrameDelay <= ~SPICLK & EndOfFramePulse;
|
||||||
PhaseOneOffset <= (PhaseOneOffset == 0) ? Transmitting & SCLKenable : ~EndOfFrameDelay;
|
|
||||||
end
|
end
|
||||||
2'b10: begin
|
2'b10: begin
|
||||||
ShiftEdge <= ~SPICLK & SCLKenable & ~LastBit & Transmitting;
|
ShiftEdge <= ~SPICLK & ShiftEdgePulse;
|
||||||
SampleEdge <= SPICLK & SCLKenable & Transmitting & ~DelayIsNext;
|
SampleEdge <= SPICLK & SampleEdgePulse;
|
||||||
EndOfFrameDelay <= ~SPICLK & SCLKenable & LastBit & Transmitting;
|
EndOfFrameDelay <= ~SPICLK & EndOfFramePulse;
|
||||||
end
|
end
|
||||||
2'b11: begin
|
2'b11: begin
|
||||||
ShiftEdge <= SPICLK & SCLKenable & ~LastBit & Transmitting & PhaseOneOffset;
|
ShiftEdge <= SPICLK & ShiftEdgePulse & PhaseOneOffset;
|
||||||
SampleEdge <= ~SPICLK & SCLKenable & Transmitting & ~DelayIsNext;
|
SampleEdge <= ~SPICLK & SampleEdgePulse;
|
||||||
EndOfFrameDelay <= SPICLK & SCLKenable & LastBit & Transmitting;
|
EndOfFrameDelay <= SPICLK & EndOfFramePulse;
|
||||||
PhaseOneOffset <= (PhaseOneOffset == 0) ? Transmitting & SCLKenable : ~EndOfFrameDelay;
|
|
||||||
end
|
end
|
||||||
// ShiftEdge <= ((SckMode[1] ^ SckMode[0] ^ SPICLK) & SCLKenable & ~LastBit & Transmitting) & PhaseOneOffset;
|
// ShiftEdge <= ((SckMode[1] ^ SckMode[0] ^ SPICLK) & SCLKenable & ~LastBit & Transmitting) & PhaseOneOffset;
|
||||||
// PhaseOneOffset <= PhaseOneOffset == 0 ? Transmitting & SCLKenable : ~EndOfFrameDelay;
|
// PhaseOneOffset <= PhaseOneOffset == 0 ? Transmitting & SCLKenable : ~EndOfFrameDelay;
|
||||||
|
Loading…
Reference in New Issue
Block a user