Lösung vom Drive kopiert und mit ChatGPT korrigieren lassen.

This commit is contained in:
2024-02-29 16:33:57 +01:00
parent 673abf9c48
commit 8f9d0cd001
31 changed files with 1313 additions and 107 deletions

View File

@@ -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