Clase

Anuncio
LAB 6
Máquinas Secuenciales
Laboratorio de Sistemas Digitales
ELO212
Primer Semestre de 2011
Objetivos Generales




Describir máquinas secuenciales sincrónicas y
asincrónicas.
Aplicar estrategias de modelado y asignación de
estados para sistemas secuenciales.
Comunicar la FPGA con el PC vía puerto serial.
Generar módulos de prueba para máquinas
secuenciales.
Módulo buart
`define CLK
50000000
module buart(rst, clk,
ld_tx_data, tx_data, tx_enable, tx, tx_empty,
uld_rx_data, rx_data, rx_enable, rx, rx_empty,
rx_err);
parameter
parameter
parameter
parameter
……….
endmodule
BAUD_RATE = 115200;
FRAME = 8;
// frame lenght 4 - 8.
PARITY = 0;
// 0: none, 1: odd, 2: even
STPBIT = 0;
// 0: 1 sb, 1: 2 sb
Reconocedor de Secuencias


Máquinas secuenciales
Hay básicamente dos tipos


de secuencia fija
contínuo
Reconcedor Secuencia 01 (1)
module rec01(clk, e, s, q);
input clk, e;
output s;
output reg [1:0] q;
assign s = (q == 2);
always @(posedge clk)
case (q)
0: if (!e) q <= 1;
1: if (e) q <= 2;
2,3: if (e) q <= 0; else q <= 1;
endcase
endmodule
Reconcedor Secuencia 01 (2)

En el sitio del curso se encuentra el módulo
mrec() que implementa el reconocedor
anterior:

instancia módulo rec01 (pero puede ser genérico)
instancia módulo buart()

Usa led para indicar reconocimiento

Reconcedor Secuencia 01 (3)

Uso del generador de señales con mrec()



usa S0 como señal de reloj
usa S1 como señal de entrada
entrada se captura con canto de subida
Cerebro de Hormiga (1)



Una hormiga busca la salida de un laberinto
La hormiga tiene 2 antenas (sensores)
Cada antena tiene 2 estados: 1 ó 0



El estado ‘uno’ indica contacto con un muro
El estado ‘cero’ indica que no hay contacto con un muro
(aire libre)
Desafío: proponer un algoritmo para sacar a la
hormiga del laberinto. El ejemplo aquí propuesto
considera que la hormiga mantiene la muralla a su
derecha, modifique según corresponda.
Cerebro de Hormiga (2)
r+l
r’l’
F
L
r’l’
r+l
Cerebro de Hormiga (3)
Motores
{4’b0, R, L, B, F}
Controlador
FPGA
Emulador
Laberinto - Hormiga
Sensores
{6’b0, ra, la}
Cerebro de Hormiga (4)
Cerebro de Hormiga (5)
`define
`define
`define
`define
`define
`define
`define
State_F 0
State_L 1
Antenna_L d[7]
Antenna_R d[6]
Action_F 8
Action_L 2
Reset d[4]
Cerebro de Hormiga (6)
module BasicAnt(clk, d, s);
input clk; input [7:0] d; output [3:0] s; reg State;
assign s = State == `State_F ? `Action_F : `Action_L;
always @ (posedge clk or posedge `Reset) begin
if (`Reset) State <= `State_F;
else
case (State)
`State_F:
if (`Antenna_R || `Antenna_L) State <= `State_L;
else State <= `State_F;
`State_L:
if (`Antenna_R || `Antenna_L) State <= `State_L;
else State <= `State_F;
endcase
endmodule
Cerebro de Hormiga (7)

En el sitio se encuentra un archivo ant.v
que implementa una hormiga de 2 estados
usando el simulador.
Trabajo Previo (1)

Reconocedor de P2 si P0 y P3 si P1 si switch
está en alto, o reconocedor de P4 si switch
está en bajo





P0: #grupo % 16,
P1:( ~P0+1)%16,
P2: rol sin dígito verificador 1er integrante %
16,
P3: (P2 + 3) % 16,
P4: Dado por el profesor.
Trabajo Previo (2)

Cerebro de hormiga


Diseñar un algoritmo que haga circular la hormiga
con la muralla al lado derecho o izquierdo según
el valor de un switch.
Mostrar estado en displays 7 segmentos, e indicar
mediante leds el estado de los sensores de la
hormiga.
En el Laboratorio




Revisión Actividades Previas
Verificar funcionamiento del cerebro de
hormiga
Demostrar funcionamiento del reconocedor
de secuencia
Diseñar un reconocedor continuo de palabras
del tipo LLLDL; ej. abc1d.
Descargar