Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Implementación de Circuitos combinacionales (página 3)




Enviado por Pablo Turmero



Partes: 1, 2, 3

Monografias.com
41
Máquina de Moore: Implementación en HDL
Body: module maq_Moore(X, CLK, RST, Z);
input X;
input CLK;
input RST;
output reg Z;

reg[1:0] state;
parameter S0=2'b00, S1=2'b01, S2=2'b10, S3=2'b11;

always @ (posedge CLK or negedge RST)
if (~RST) state <= S0;
else
case (state)
S0: begin
Z <= 0;
if (~X) state <= S1;
else state <= S0;
end
S1: begin
Z <= 1;
if (X) state <= S2;
else state <= S3;
end
S2: begin
Z <= 0;
if (~X) state <= S3;
else state <= S2;
end
S3: begin
Z <= 1;
if (~X) state <= S0;
else state <= S3;
end
endcase
endmodule

Monografias.com
42
Otra forma de implementar máquina de Moore
Body: module moore_Mejor(X, CLK, RST, Z);
input X;
input CLK;
input RST;
output reg Z;
reg [1:0] ESTADO_ACTUAL, ESTADO_SIGUIENTE;
parameter [1:0] S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;

always @ (posedge CLK)
if(RST) ESTADO_ACTUAL <= S0;
else ESTADO_ACTUAL <= ESTADO_SIGUIENTE;

always @ (ESTADO_ACTUAL or X)
case(ESTADO_ACTUAL)
S0:
if(X) ESTADO_SIGUIENTE = S0;
else ESTADO_SIGUIENTE = S1;
S1:
if(X) ESTADO_SIGUIENTE = S2;
else ESTADO_SIGUIENTE = S3;
S2:
if(~X) ESTADO_SIGUIENTE = S3;
else ESTADO_SIGUIENTE = S2;
S3:
if(~X) ESTADO_SIGUIENTE = S0;
else ESTADO_SIGUIENTE = S3;
endcase
always @ (ESTADO_ACTUAL)
case(ESTADO_ACTUAL)
S0:
Z = 0;
S1:
Z = 1;
S2:
Z = 0;
S3:
Z = 1;
default:
Z = 0;
endcase
endmodule

Monografias.com
43
Máquina de Mealy
Las salidas dependen tanto del estado actual como de las entradas

Monografias.com
44
Máquina de Mealy (cont.)
0
1 0
1
1 1
1
0 0
0
1 1
0
1 0
1
1 0
1
0 0
0
1 0
0
1 1
1
0 1
1
0 0
0
0 1
0
0 1
1
0 0
0
0 0
0
0 0
Salida
Z
Siguiente Estado
A B
Entrada
X
Estado Actual
A B
Las salidas se activan en las transiciones entre los estados
Salidas responden inmediatamente a las entradas

Monografias.com
45
Máquina de Mealy: Implementación en HDL
Body: module maq_Mealy(X, RST, CLK, Z);
input X;
input RST;
input CLK;
output reg Z;
reg [1:0] ESTADO_ACTUAL, ESTADO_SIGUIENTE;
parameter [1:0] S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;

always @ (posedge CLK)
if(RST) ESTADO_ACTUAL <= S0;
else ESTADO_ACTUAL <= ESTADO_SIGUIENTE;

always @ (ESTADO_ACTUAL or X)
case(ESTADO_ACTUAL)
S0: if(X) ESTADO_SIGUIENTE = S1;
else ESTADO_SIGUIENTE = S0;
S1: if(X) ESTADO_SIGUIENTE = S3;
else ESTADO_SIGUIENTE = S0;
S2: if(~X) ESTADO_SIGUIENTE = S0;
else ESTADO_SIGUIENTE = S2;
S3: if(X) ESTADO_SIGUIENTE = S2;
else ESTADO_SIGUIENTE = S0;
endcase
always @ (ESTADO_ACTUAL or X)
case(ESTADO_ACTUAL)
S0: Z = 0;
S1: if (X) Z = 0;
else Z = 1;
S2: if (X) Z = 0;
else Z = 1;
S3: if (X) Z = 0;
else Z = 1;
default:
Z = 0;
endcase
endmodule

Monografias.com
46
Máquina de estados microprogramada

Monografias.com
47
Mux de condiciones: tabla de funcionamiento
(Gp:) Carga paralela de contador
(Gp:) X
(Gp:) X
(Gp:) 3
(Gp:) Incremente contador
(Gp:) F
(Gp:) X
(Gp:) 2
(Gp:) Carga paralela de contador
(Gp:) T
(Gp:) X
(Gp:) 2
(Gp:) Incremente contador
(Gp:) X
(Gp:) F
(Gp:) 1
(Gp:) Carga paralela de contador
(Gp:) X
(Gp:) T
(Gp:) 1
(Gp:) Incremente contador
(Gp:) X
(Gp:) X
(Gp:) 0
(Gp:) Función
(Gp:) Cond1
(Gp:) Cond0
(Gp:) LD. Sel

Monografias.com
48
Características de máquina microprogramada
Body: Se sustituyen los bloques combinacionales por memoria tipo PROM (Programmable Read Only Memory)
Con una sola arquitectura se pueden tener muchas máquinas de estados o una muy grande almacenadas en la PROM
Facilita realizar cambios en un diseño, simplemente debemos cambiar el microprograma almacenado.

Monografias.com
49
Ejemplo de Implementación en Verilog

Monografias.com
50
Tabla de microprograma y configuración Mux
(Gp:) 01
(Gp:) 101
(Gp:) 101
(Gp:) 101
(Gp:) 11
(Gp:) 001
(Gp:) 100
(Gp:) 100
(Gp:) 00
(Gp:) 000
(Gp:) 000
(Gp:) 011
(Gp:) 01
(Gp:) 100
(Gp:) 100
(Gp:) 010
(Gp:) 10
(Gp:) 100
(Gp:) 001
(Gp:) 001
(Gp:) Salidas
(Gp:) LD. Sel
(Gp:) Dir. Salto
(Gp:) Estado Actual
(Gp:) 000
(Gp:) 000
(Gp:) 010
(Gp:) 00

Monografias.com
51
Código Verilog
Body: //Top level

module FSM_uPROGRAMADA(CLK, RST, E1, E2, S1, S2);

input CLK, RST;
input E1, E2;
output S1, S2;

wire [2:0] SEL_MUX;
wire LD;
wire [2:0] DIR_SALTO, ESTADO_ACTUAL;

MUX_8_A_1 MUX_CONDICIONES({1'b0, E1, !E1, E2, !E2, 1'b1, 1'b0, 1'b0}, SEL_MUX, LD);

COUNT_FSM CONTADOR(CLK, RST, DIR_SALTO, LD, ESTADO_ACTUAL);

MEM_uPROGRAMA uPROGRAMA(ESTADO_ACTUAL, {DIR_SALTO, SEL_MUX, S1, S2});

endmodule

Monografias.com
52
Código Verilog (cont.)
Body: //Mux de condiciones y contador de microprograma

module MUX_8_A_1(ENTRADAS, SEL, SALIDA);

input [0:7] ENTRADAS;
input [2:0] SEL;
output SALIDA;

assign SALIDA = ENTRADAS[SEL];

endmodule

module COUNT_FSM(CLK, RST, IN, LD, OUT);

input CLK, RST;
input [2:0] IN;
input LD;
output reg [2:0] OUT;

always @ (posedge CLK or posedge RST)
if(RST)
OUT <= 0;
else if(LD)
OUT <= IN;
else
OUT <= OUT + 1;

endmodule

Monografias.com
53
Código Verilog (cont.)
Body: //memoria de microprograma
module MEM_uPROGRAMA(DIR, SALIDAS);

input [2:0] DIR;
output reg [7:0] SALIDAS;

always @ (DIR)
case(DIR)
3'b000: SALIDAS = 8'b000_010_00;
3'b001: SALIDAS = 8'b001_100_10;
3'b010: SALIDAS = 8'b100_100_01;
3'b011: SALIDAS = 8'b000_000_00;
3'b100: SALIDAS = 8'b100_001_11;
3'b101: SALIDAS = 8'b101_101_01;
default: SALIDAS = 8'b000_101_00;
endcase

endmodule

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter