Lösung vom Drive kopiert und mit ChatGPT korrigieren lassen.
This commit is contained in:
@@ -3,13 +3,14 @@ module sr_fsm (
|
||||
input reset,
|
||||
input run,
|
||||
input Sync,
|
||||
input CYCLE_CTR,
|
||||
input MISO,
|
||||
output MOSI,
|
||||
output [7:0] SSn,
|
||||
output ENA
|
||||
);
|
||||
|
||||
reg CYCLE_CTR; //= Anzahl der zu verschickende Daten
|
||||
|
||||
//Definition der States
|
||||
parameter STATE_WAIT = 3'h0;
|
||||
parameter STATE_INIT = 3'h1;
|
||||
@@ -36,51 +37,65 @@ always @(STATE) begin
|
||||
case (STATE)
|
||||
STATE_WAIT:
|
||||
if (run == 1'b1) begin
|
||||
NEXT_STATE = STATE_INIT;
|
||||
NEXT_STATE <= STATE_INIT;
|
||||
end
|
||||
else begin
|
||||
NEXT_STATE = STATE_WAIT;
|
||||
NEXT_STATE <= STATE_WAIT;
|
||||
end
|
||||
|
||||
STATE_INIT:
|
||||
if (Sync == 1'b1) begin
|
||||
NEXT_STATE = STATE_SHIFT;
|
||||
NEXT_STATE <= STATE_SHIFT;
|
||||
end
|
||||
else begin
|
||||
NEXT_STATE = STATE_INIT;
|
||||
NEXT_STATE <= STATE_INIT;
|
||||
end
|
||||
|
||||
STATE_SHIFT:
|
||||
CYCLE_CTR = CYCLE_CTR - 1; //CYCLE_CTR dekrementieren
|
||||
//Schieberegister schieben??
|
||||
|
||||
if (Sync == 1'b1) begin
|
||||
NEXT_STATE = STATE_LATCH;
|
||||
NEXT_STATE <= STATE_LATCH;
|
||||
end
|
||||
else begin
|
||||
NEXT_STATE = STATE_SHIFT;
|
||||
NEXT_STATE <= STATE_SHIFT;
|
||||
end
|
||||
|
||||
STATE_LATCH:
|
||||
if (Sync == 1'b1 && CYCLE_CTR != 6'h0) begin
|
||||
NEXT_STATE = STATE_SHIFT;
|
||||
NEXT_STATE <= STATE_SHIFT;
|
||||
end
|
||||
else if (Sync == 1'b1 && CYCLE_CTR == 6'h0) begin
|
||||
NEXT_STATE = STATE_CLEAR;
|
||||
NEXT_STATE <= STATE_CLEAR;
|
||||
end
|
||||
else begin
|
||||
NEXT_STATE = STATE_LATCH;
|
||||
NEXT_STATE <= STATE_LATCH;
|
||||
end
|
||||
|
||||
STATE_CLEAR:
|
||||
if (Sync == 1'b1) begin
|
||||
NEXT_STATE = STATE_WAIT;
|
||||
NEXT_STATE <= STATE_WAIT;
|
||||
end
|
||||
else begin
|
||||
NEXT_STATE = STATE_CLEAR;
|
||||
NEXT_STATE <= STATE_CLEAR;
|
||||
end
|
||||
|
||||
default: NEXT_STATE = STATE;
|
||||
default: NEXT_STATE <= STATE_WAIT;
|
||||
endcase
|
||||
end
|
||||
|
||||
always @(STATE) begin
|
||||
case (STATE)
|
||||
STATE_WAIT:
|
||||
|
||||
STATE_INIT:
|
||||
|
||||
STATE_SHIFT:
|
||||
CYCLE_CTR <= CYCLE_CTR - 1;
|
||||
|
||||
STATE_LATCH:
|
||||
|
||||
STATE_CLEAR:
|
||||
|
||||
default:
|
||||
endcase
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user