Also versuche ich meine erste FSM zu implementieren, und ich bin sehr verwirrt.Umgang mit vielen Ausgaben in einem endlichen Automaten verilog
Die Codes ein bisschen zu lang, so lassen Sie mich zusammenfassen: ich mit deklarieren Ein- und Ausgänge Dann Zustand Erklärungen (Ich habe fünf plus drei Platzhalter) Dann Aktueller Stand Zuordnung, beginnen die
sequentiell istalways @(posedge clk)
begin
if (rst == 1'b1)
Current_State <= MainGreen;
else
Current_State <= Next_state;
end
Und dann ... Ich verliere mich. Ich hatte ursprünglich nur eine große ol 'sequentielle Schaltung, die next_state und Ausgänge zugewiesen, aber das war chaotisch/wahrscheinlich hatte viele Fehler.
Was ich jetzt einfach haben muss next_state Logik, aber nichts mit Ausgängen zu tun:
always @*
begin
Next_state = Current_State;
case (Current_State)
MainGreen:
begin
if (count && expired)
begin
Next_state = MainYel;
end
end
MainYel:
begin
if (WR && expired)
Next_state = AllRed;
else if (expired)
Next_state = SideGreen;
end
AllRed:
begin
if (expired)
Next_state = SideGreen;
end
SideGreen:
begin
if(sensor && expired)
Next_state = SideYel;
end
SideYel:
begin
if(expired)
Next_state = MainGreen;
end
endcase
end
Ich habe etwa acht Ausgänge auf der Basis modern allein und vier auf der Basis modern und Eingang. Wie sollte ich sie zuordnen?
Sie sehen aus, als ob Sie auf dem richtigen Weg sind. Warum nicht 'output foo; ... assign foo = (Current_State == AllRed); '? – toolic
Sie könnten sie auch in Ihre Fallaussage aufnehmen; Sie haben bereits die Logik für 'Current_State == AllRed' über den Fall für' AllRed' – Unn