Open Akisha11 opened 1 year ago
module sync_subsystem (
input wire clk_50mhz, // señal de reloj principal de 50 MHz
input wire reset, // señal de reset
input wire in_signal, // señal de entrada que necesita sincronización
output wire out_signal // señal de salida sincronizada
);
reg [2:0] state = 3'b000; // estado inicial
reg in_sync; // señal sincronizada
reg out_sync; // señal de salida sincronizada
// máquina de estados para sincronizar la señal de entrada
always @(posedge clk_50mhz or posedge reset) begin
if (reset) begin
state <= 3'b000; // estado de reinicio
in_sync <= 1'b0; // señal sincronizada inicial
end
else begin
case (state)
3'b000: begin
in_sync <= in_signal; // captura la señal de entrada
state <= 3'b001; // pasa al siguiente estado
end
3'b001: begin
in_sync <= in_signal; // sigue capturando la señal de entrada
state <= 3'b010; // pasa al siguiente estado
end
3'b010: begin
in_sync <= in_signal; // sigue capturando la señal de entrada
state <= 3'b011; // pasa al siguiente estado
end
3'b011: begin
in_sync <= in_signal; // sigue capturando la señal de entrada
state <= 3'b100; // pasa al siguiente estado
end
3'b100: begin
in_sync <= in_signal; // sigue capturando la señal de entrada
state <= 3'b101; // pasa al siguiente estado
end
3'b101: begin
in_sync <= in_signal; // sigue capturando la señal de entrada
state <= 3'b110; // pasa al siguiente estado
end
3'b110: begin
in_sync <= in_signal; // sigue capturando la señal de entrada
state <= 3'b111; // pasa al siguiente estado
end
3'b111: begin
in_sync <= in_signal; // sigue capturando la señal de entrada
state <= 3'b000; // vuelve al estado inicial
end
endcase
end
end
// retarda la señal de entrada para sincronizarla con la señal de salida
always @(posedge clk_50mhz or posedge reset) begin
if (reset) begin
out_sync <= 1'b0; // señal de salida sincronizada inicial
end
else begin
out_sync <= in_sync; // retarda la señal de entrada para sincronizarla con la señal de salida
end
end
assign out_signal = out_sync; // conecta la señal de salida sincronizada a la salida
endmodule
crear e implementar en el proyecto el subsistema encargado del sorteo de los datos procesados por el subsistema de lectura e indicar el proceso consecuente.