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.