Vous êtes sur la page 1sur 10

ALUMNO: JOSE LUIS SANCHEZ SANCHEZ

MATRICULA: 201772666

MATERIA: DESARROLLO DE APLICACIONES

PROFESOR: MARIA AURORA VARGAS TREVIÑO

EJERCICIOS QUARTUS II

Contenido
CODIGOS, DIAGRAMAS Y SIMULACIONES ......................................................................................... 2

1
CONTADOR (MÁQUINA DE ESTADOS) ................................................................................ 2
BUS ................................................................................................................................................ 3
CONTADOR .................................................................................................................................. 4
CONTADOR ASCENDENTE DESCENDENTE ...................................................................... 5
REGISTRO .................................................................................................................................... 7
REGISTRO 6 BITS ...................................................................................................................... 7
MAQUINA DE ESTADOS ........................................................................................................... 9

CODIGOS, DIAGRAMAS Y SIMULACIONES

CONTADOR (MÁQUINA DE ESTADOS)

SUBDESIGN Contador
(
CLK :INPUT;
RESETN :INPUT;
CONTA[5..0] :OUTPUT;
SALIDA :OUTPUT;
)

VARIABLE
conta[5..0] :DFF;
estados :machine with states (ST0, ST1);

BEGIN
conta[].(clk,clrn)=(clk,resetN);
estados.(clk,reset)=(clk,!resetN);
CASE estados IS
WHEN ST0=>
IF conta[ ]<16 THEN
conta[]=conta[]+1;
ELSE
conta[].d=conta [].q;
estados=ST1;
END IF;
WHEN ST1=>
IF conta[]>0 THEN
conta []=conta []-1;

2
SALIDA=VCC;
ELSE
conta[].d=conta[].q;
estados=ST0;
END IF;
WHEN OTHERS =>
estados=ST0;
END CASE;
END;

BUS

SUBDESIGN BUS1
(
entrada, clock, resetN :INPUT;
salida[2..0] :OUTPUT;
)

VARIABLE

salida[2..0] :DFF;

BEGIN

3
salida[].(clk,clrn)=(clock,resetN);
IF entrada==GND THEN
salida[]=3;
ELSE
salida[]=4;
END IF;
END;

CONTADOR

SUBDESIGN Contador2
(
entrada, reloj,resetN :INPUT;
conta[3..0],salida :OUTPUT;
)

VARIABLE
conta[3..0] :DFF;

BEGIN
conta[].(clk,clrn)=(reloj,resetN);
IF(entrada==GND&conta[]<8)THEN
conta[]=conta[]+1;
ELSIF(entrada==GND&CONTA[]>8)THEN

4
conta[]=8;
salida=VCC;
ELSIF(entrada==VCC)THEN
conta[]=0;
END IF;
END;

CONTADOR ASCENDENTE DESCENDENTE

SUBDESIGN Contador3
(
entrada, reloj,resetN :INPUT;
conta[3..0],salida :OUTPUT;
)

VARIABLE
conta[3..0] :DFF;

BEGIN
conta[].(clk,clrn)=(reloj,resetN);
IF(entrada==GND&conta[]<8)THEN

5
conta[]=conta[]+1;
ELSIF(entrada==GND&conta[]>8)THEN
conta[]=8;
ELSIF(entrada==VCC&conta[]!=0)THEN
conta[]=conta[]-1;
ELSIF(entrada==VCC&conta[]==0)THEN
conta[]=8;
Salida=vcc;
END IF;
END;

6
REGISTRO

REGISTRO 6 BITS

SUBDESIGN REGISTRO6B
(
entrada, clock, resetN, aviso :INPUT;
dato[5..0] :OUTPUT;
)

7
VARIABLE
registro[5..0] :DFF;
dato[5..0] :DFF;

BEGIN
registro[].(clk, clrn)=(clock, resetN);
dato[].(clk, clrn)= (clock, resetN);
registro[0]=entrada;
registro[1]=registro[0];
registro[2]=registro[1];
registro[3]=registro[2];
registro[4]=registro[3];
registro[5]=registro[4];

IF aviso==VCC THEN
dato[].d=registro[];
ELSE
dato[].d=dato[].q;
END IF;
END;

8
MAQUINA DE ESTADOS

SUBDESIGN Maquina3E
(
a,b,c,reloj,resetN :INPUT;
sal[3..0] :OUTPUT;
)

VARIABLE
sal[3..0] :DFF;
estados :MACHINE WITH

STATES(S0,S1,S2);

BEGIN
sal[].(clk,clrn)=(reloj,resetN);
estados.(clk,reset)=(reloj,!resetN);

CASE estados IS
WHEN S0 =>
sal[]=12;
IF a==GND THEN
estados=S1;
ELSE
estados=S2;
END IF;
WHEN S1 =>
sal[]=10;
IF b==GND THEN
estados=S0;
ELSE
estados=S2;
END IF;
WHEN S2 =>
sal[]=8;
IF c==GND THEN
estados=S1;
ELSE
estados=S2;
END IF;
END CASE;

9
END;

10

Vous aimerez peut-être aussi