Si tengo más reg declarado, cada reg necesita tener su propio bloque always , por ejemplo:
output reg[3:0] A;
output reg[3:0] B;
output reg[3:0] C;
always @(posedge clock) begin
if(reset) begin
A <= 4'b0;
end
.
.
.
end
always @(posedge clock) begin
if(reset) begin
B <= 4'b0;
end
.
.
.
end
always @(posedge clock) begin
if(reset) begin
C <= 4'b0;
end
.
.
.
end
¿Qué pasa si tengo un bucle? Digamos algo como esto:
repeat n times
if(C<0) begin
shift C two positions
C <= C + 1;
else
shift A one position
A <= C + 1;
end
Como se ve aquí, dentro del bloque if(C<0) , no puedo tener
C <= C << 2;
C <= C + 1;
así que necesitaré un registro separado para almacenar C cambiado, digamos que será output reg[8:0] shiftC , así que por cierto necesito un bloque separado always . Y, por supuesto, también se bloquea el bloque always para A .
Mi pregunta es, ¿cómo puedo hacer que este bucle funcione, si uso varios bloques always ?
PD: aquí, el número de bits es solo informativo, y no importa.