hola tengo que hacer el codigo de control de semaforo de una intersección pero una duda gigante respecto a la sintaxis del codigo no se si se pueden asignar 2 registros y quizas halla algun otro error del que no me he percatado.
Código:
//control semáforo para intersección, A1(avenida 1) A2(Avenida 2) TA(sensor de trafico 1) //TB(sensor de trafico 2). Si A1 verde y hay tráfico no pasa nada si no A1=Amarillo->rojo //&A2=Amarillo->Verde
//Estado inicial A1: Verde, A2: rojo.
//C/5seg TA y TB revisan si hay tráfico
Module semaforo (
input clk,
Input luzA,
Input LuzB,
input TA,
input TB,
output y,
output z);
//aqui ingreso los 2 estados de trafico 1 para cuando hay y cero para cuando no hay no estoy seguro de si es una entrada valida
TA=2b’10
TB=2b’10
//hago el registro de cada semaforo por separado no encontré la forma de meter todo en un solo //registro no estoy seguro de si tengo que escribir state o es solo el nombre de el ejemplo que vi //en el libro XP
Reg [2;0] state luzA, nexstate;
// r a v “ rojo, amarillo, verde, 1bit por cada bombilla en el parámetro”
Parameter S0 = 3b’001
Parameter S1 = 3b’010
Parameter S2 = 3b’100
Parameter S3 = 3b’100
Reg[2;0] sate LuzB nexstate;
Parameter S0 = 3b’100
Parameter S1 = 3b’100
Parameter S2 = 3b’001
Parameter S3 = 3b’100
Always @ (posedge clk, posedge reset)
If (reset) state luzA<= S0;
state LuzB<= S0;
Else state luzA<= nexstate;
State LuzB<= nexstate;
Always @ (*)
Case (state LuzA)
S0: if (TA=1) nexstate= S0;
else nexstate=S1;
S1: nexstate= S2;
S2: nexstate= S3;
S3; nexstate= S0;
Default nexstate S0;
Endcase
assign z=(state==S0) //aqui no estoy seguro de si es S0 o algún Sn.
Case (state LuzA)
S0: nexstate=S1;
S1: nexstate= S2;
S2: if (TB=1) nexstate= S2;
else nexstate=S3;
S3; nexstate= S0;
Default nexstate S0;
endcase
assign y=(state==S0) //aqui no estoy seguro de si es S0 o algún Sn.