Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module tanque(HB1_0, HB2_0, HC_0,YPB,YPRS,YTLL,HB1, HB2, HC);
- input HB1_0, HB2_0, HC_0, YPB, YPRS, YTLL;
- output HB1,HB2, HC;
- //assign HB1 = (~HB1_0 & ~HC_0 & YPRS & ~YTLL) | (~HB1_0 & YPB & ~YTLL) | (YPB & YPRS & ~YTLL) | (~HB1_0 & HB2_0 & YPRS & ~YTLL) | (HB1_0 & HB2_0 & HC_0 & YPB & YPRS);
- //assign HB2 = (~HB1_0 & ~HB2_0 & ~HC_0 & YPB & YPRS) | (HB2_0 & ~HC_0 & YPRS & ~YTLL) | (HB2_0 & YPB & YPRS & ~YTLL) | (HB1_0 & YPRS & ~YTLL) | (HB1_0 & YPB & ~YTLL) | (HB1_0 & HB2_0 & HC_0 & YPB & YPRS);
- //assign HC = (YPB & YTLL);
- assign HB1 = (~HB1_0 & ~HC_0 & ~YPB & YPRS & ~YTLL) | (~HB1_0 & YPB & ~YPRS & ~YTLL) | (~HB1_0 & HB2_0 & ~YPB & YPRS & ~YTLL);
- assign HB2 = (HB2_0 & ~HC_0 & ~YPB & YPRS & ~YTLL) | (HB1_0 & ~YPB & YPRS & ~YTLL) | (HB1_0 & YPB & ~YPRS & ~YTLL);
- assign HC = (YPB & ~YPRS & YTLL);
- endmodule
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- module flip_flop_d(CLK, D, Q);
- input CLK, D;
- output Q;
- reg Q, temp;
- always @ (posedge CLK)begin
- temp = D;
- Q = temp;
- end
- endmodule
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- module flip_flop_d2(CLK, D2, Q2);
- input CLK, D2;
- output Q2;
- reg Q2, temp2;
- always @ (posedge CLK)begin
- temp2 = D2;
- Q2 = temp2;
- end
- endmodule
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- module flip_flop_d3(CLK, D3, Q3);
- input CLK, D3;
- output Q3;
- reg Q3, temp3;
- always @ (posedge CLK)begin
- temp3 = D3;
- Q3 = temp3;
- end
- endmodule
- ///////////////////////////////////////////////////////////////////////////////////////////////////
- module test(); //En un archivo test-and. Fïjese que no tiene entradas ni salidas. Es una caja negra que envuelve el módulo
- reg HB1_0, HB2_0, HC_0, YPB, YPRS, YTLL; // Entradas
- wire HB1_0_W, HB2_0_W, HC_0_W, YPB_W, YPRS_W, YTLL_W;
- wire HB1,HB2, HC; // Cables para las salidas
- tanque ins1 (.HB1_0(Q), .HB2_0(Q2), .HC_0(Q3), .YPB(YPB_W), .YPRS(YPRS_W), .YTLL(YTLL_W),.HB1(HB1),.HB2(HB2), .HC(HC));
- reg CLK,D,D2,D3; // Reloj
- wire CLK_W,Q,Q2,Q3;
- // wire D_W,D2_W,D3_W;
- flip_flop_d registro (.CLK(CLK_W), .D(HB1), .Q(Q));
- flip_flop_d2 registro2 (.CLK(CLK_W), .D2(HB2), .Q2(Q2));
- flip_flop_d3 registro3 (.CLK(CLK_W), .D3(HC), .Q3(Q3));
- assign HB1_0_W=HB1_0;
- assign HB2_0_W=HB2_0;
- assign HC_0_W=HC_0;
- assign YPB_W=YPB;
- assign YPRS_W=YPRS;
- assign YTLL_W=YTLL;
- assign CLK_W=CLK;
- //assign D_W=D;
- //assign D2_W=D2;
- //assign D3_W=D3;
- //initial forever #10 CLK = !CLK;
- initial
- begin
- /// VALORES INICIALES (NO MODIFICAR ESTO)
- HB1_0=1'b0;
- HB2_0=1'b0;
- HC_0=1'b0;
- YPB=1'b0;
- YPRS=1'b0;
- YTLL=1'b0;
- #10
- // ACTIVANDO RELOJ Y FLIP FLOP (NO MODIFICAR ESTO)
- D=0;
- D2=0;
- D3=0;
- CLK=1;
- #10
- CLK=0;
- #10
- // TESTING (ESPACIO DE MODIFICACIONES Y PRUEBAS)
- /// PRUEBA 1
- $display("");
- $display("EN ESTE PUNTO EL CLOCK SE ENCIENDE PERO LAS VARIABLES SIGUEN ESTANDO IGUAL.");
- $display("NO SE HA INTRODUCIDO DATOS:");
- $display("- Estado del reloj: ", CLK);
- if (Q==0)$display("- Estado de Bomba 1: Apagada");else $display("- Estado de Bomba 1: Encendida");
- if (Q2==0)$display("- Estado de Bomba 2: Apagada");else $display("- Estado de Bomba 2: Encendida");
- if (Q3==0)$display("- Estado de Compresor: Desactivado");else $display("- Estado de Compresor: Activo");
- if (YPB!=0)$display("- Estado de Presion: Baja");
- if (YPRS!=0)$display("- Estado de Presion: Muy Baja");
- if (YPRS==0 && YPB==0)$display("- Estado de Presion: Estabilizada");
- if (YTLL==0)$display("Nivel del Tanque: Bajo");else $display("- Nivel del Tanque: Lleno");
- /// PRUEBA 2
- $display("");
- YPB=1;
- #10
- $display("AHORA YPB TIENE EL VALOR DE 1. PERO EL RELOJ SIGUE EN CERO.");
- $display("DEBIDO A ESTO, NO HA CAMBIADO NADA EN EL CIRCUITO");
- $display("- Estado del reloj: ", CLK);
- if (Q==0)$display("- Estado de Bomba 1: Apagada");else $display("- Estado de Bomba 1: Encendida");
- if (Q2==0)$display("- Estado de Bomba 2: Apagada");else $display("- Estado de Bomba 2: Encendida");
- if (Q3==0)$display("- Estado de Compresor: Desactivado");else $display("- Estado de Compresor: Activo");
- if (YPB!=0)$display("- Estado de Presion: Baja");
- if (YPRS!=0)$display("- Estado de Presion: Muy Baja");
- if (YPRS==0 && YPB==0)$display("- Estado de Presion: Estabilizada");
- if (YTLL==0)$display("Nivel del Tanque: Bajo");else $display("- Nivel del Tanque: Lleno");
- /// PRUEBA 3
- $display("");
- CLK=1;
- #10
- $display("AL ACCIONAR EL CLOCK, SE DEBERIA ENCENDER LA PRIMERA BOMBA, PUES YPB ESTA ENCENDIDO");
- $display("- Estado del reloj: ", CLK);
- if (Q==0)$display("- Estado de Bomba 1: Apagada");else $display("- Estado de Bomba 1: Encendida (OBSERVE QUE LA BOMBA SE HA ENCENDIDO)");
- if (Q2==0)$display("- Estado de Bomba 2: Apagada");else $display("- Estado de Bomba 2: Encendida");
- if (Q3==0)$display("- Estado de Compresor: Desactivado");else $display("- Estado de Compresor: Activo");
- if (YPB!=0)$display("- Estado de Presion: Baja");
- if (YPRS!=0)$display("- Estado de Presion: Muy Baja");
- if (YPRS==0 && YPB==0)$display("- Estado de Presion: Estabilizada");
- if (YTLL==0)$display("Nivel del Tanque: Bajo");else $display("- Nivel del Tanque: Lleno");
- /// PRUEBA 4
- $display("");
- YTLL=1;
- #10
- $display("AHORA SE ACTIVO LA ENTRADA DE NIVEL LLENO. APAGAMOS Y ENCENDEMOS EL RELOJ.");
- CLK=0;
- YPB=1;
- $display("- Estado del reloj: ", CLK);
- CLK=1;
- #10
- $display("- Estado del reloj: ", CLK);
- $display("COMO AHORA YPB Y YTLL ESTAN ENCENDIDOS, OBSERVE COMO SE ACTIVA EL COMPRESOR DE AIRE");
- if (Q==0)$display("- Estado de Bomba 1: Apagada (OBSERVE QUE SE APAGO LA BOMBA)");else $display("- Estado de Bomba 1: Encendida") ;
- if (Q2==0)$display("- Estado de Bomba 2: Apagada");else $display("- Estado de Bomba 2: Encendida");
- if (Q3==0)$display("- Estado de Compresor: Desactivado");else $display("- Estado de Compresor: Activo (OBSERVE QUE EL COMPRESOR SE ENCENDIO)");
- if (YPB!=0)$display("- Estado de Presion: Baja");
- if (YPRS!=0)$display("- Estado de Presion: Muy Baja");
- if (YPRS==0 && YPB==0)$display("- Estado de Presion: Estabilizada");
- if (YTLL==0)$display("Nivel del Tanque: Bajo");else $display("- Nivel del Tanque: Lleno");
- //$display("");
- //YPB=1;
- //CLK=0;
- //#10
- //CLK=1;
- //#10
- //$display(Q,Q2,Q3);
- //#10;
- //$display("");
- //YPB=1;
- //YTLL=1;
- //CLK=0;
- //#10
- //CLK=1;
- //#10
- //$display(Q,Q2,Q3);
- //#10;
- // PRUEBA INICIAL DEL FLIP FLOP
- //D=0;
- //CLK=1;
- //$display("Estado FlipFlop: ",Q);
- //D=1;
- //CLK=0;
- //#10
- //$display("Estado FlipFlop: ",Q);
- //D=1;
- //CLK=1;
- //#10
- //$display("Estado FlipFlop: ",Q);
- //D=1;
- //CLK=0;
- //#10
- //$display("Estado FlipFlop: ",Q);
- //D=0;
- //CLK=0;
- //#10
- //$display("Estado FlipFlop: ",Q);
- //D=0;
- //CLK=1;
- //#10
- //$display("Estado FlipFlop: ",Q);
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement