Я пытаюсь написать код для De1-Soc, чтобы сделать вращающиеся светодиоды. Это система, которая вращает один светодиод слева направо, вращает его справа налево или останавливает вращение. Направление вращения определяется входным сигналом: L / R. Светодиодный индикатор будет продолжать менять положение до тех пор, пока не будет получен сигнал остановки. Но я застрял и не мог больше писать. Вот мой код
module led_rotate_top_module(clock,reset,lr, led );
input clock, reset,lr, stop;
output [9:0] led;
reg [3:0] next_state;
reg [3:0]current_state;
parameter led1 = 4'b0001;
parameter led2 = 4'b0010;
parameter led3 = 4'b0011;
parameter led4 = 4'b0100;
parameter led5 = 4'b0101;
parameter led6 = 4'b0110;
parameter led7 = 4'b0111;
parameter led8 = 4'b1000;
parameter led9 = 4'b1001;
parameter led10 = 4'b1010;
always @ (posedge clock)
if (reset)
current_state <= led4;
else
current_state <= next_state;
always @ (lr, current_state)
begin
case (current_state)
led1: if (lr)
next_state <= led2;
else
next_state <= current_state;
led2:if (lr)
next_state <= led3;
else
next_state <= current_state;
led3:if (lr)
next_state <= led4;
else
next_state <= current_state;
led4:if (lr)
next_state <= led5;
else
next_state <= current_state;
led5:if (lr)
next_state <= led6;
else
next_state <= current_state;
led6:if (lr)
next_state <= led7;
else
next_state <= current_state;
led7:if (lr)
next_state <= led8;
else
next_state <= current_state;
led8:if (lr)
next_state <= led9;
else
next_state <= current_state;
led9:if (lr)
next_state <= led10;
else
next_state <= current_state;
led10:if (lr)
next_state <= led1;
else
next_state <= current_state;
default: next_state <= led4;
endcase
end
И я не уверен, должен ли я следовать этому пути? Я имею в виду, должен ли я сделать этот проект со сдвиговым регистром?