Practica No. 8 Introducción a las Máquinas de Estados. 1. En la figura 1 se muestra el comportamiento de un robot que evade obstáculos.

Documentos relacionados
Practica No. 5 Diseño de un Multiplicador

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

Practica No. 1 Circuitos Secuenciales

Arquitectura de Computadoras Practica No. 1 Circuitos Secuenciales

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

1. Módulo de desarrollo Spartan 3 STARTER KIT con un FPGA xc3s200 ft Software de diseño XILINX ISE versión 10.1

DISEÑO DE PROCESADORES DEDICADOS. Práctica 6 LCD de Propósito General

Sistemas Electrónicos Digitales Curso de adaptación al Grado

Tutorial 2: Pasar de diagrama ASM a un circuito

Práctica I Modelado y simulación de una máquina expendedora de refrescos

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA ELECTRÓNICA TRABAJO TUTORADO DE VHDL. Primer Cuatrimestre Curso 2005/2006.

UNIVERSIDAD CARLOS III DE MADRID. Ejercicios de VHDL. Circuitos Integrados y Microelectrónica. Luis Entrena. Celia López.

Sistemas Electrónicos Digitales. PRACTICA nº 3

Recursos y Metodologías. Función. Programas

VHDL: Código Secuencial. Arquitectura del Computador 2017

Julio. [ Programación en VHDL ] Guía rápida. [ h t t p : / / w w w. o p e n b o x e r m b. c o m / a s i g n a t u r a s / d s d.

DISEÑO DE PROCESADORES DEDICADOS. Práctica. No. 8 Circuitos de Barrido y Escaneo: Teclado Matricial de Propósito General y Matriz de LEDs

Electrónica Digital Departamento de Electrónica VHDL. Bioingeniería Facultad de Ingeniería - UNER

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores. Bloque 3: Sistemas secuenciales Tema 9: Módulos secuenciales básicos

Tutorial de VHDL: Contadores y Simulación

5. Decodificadores. Salida _1= A A A A = m = M ... Electrónica Digital. Tema

PRÁCTICA: LENGUAJE VHDL

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) SEGUNDA CLASE DE VHDL

GUÍA PRÁCTICA DEL SOFTWARE ACTIVE-HDL.

6. Codificadores. Electrónica Digital. Tema

Practica No. 6 Diseño de un Procesador CISC de 8 Bits

Laboratorio de Arquitectura de Computadoras

CIRCUITOS MULTIPLEXORES Y DEMULTIPLEXORES

Práctica 7. Diseño en VHDL de un modulador PPM

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) QUINTA CLASE DE VHDL

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2013

Arquitectura de Computadores. Práctica 1: Diseño Hardware de Procesadores. Práctica 1/1

CONTADORES. Definición. Diseño y analisis de un contador binario hacia arriba de 3 bits con flip-flops JK. Otros contadores típicos.

+ Máquinas de Estado Finitas

CAPITULO 5 GENERADOR DIGITAL DE TREN DE PULSOS PROGRAMABLE

ELECTRÓNICA DIGITAL 24-I Determinar el valor decimal de los números expresados en Complemento a 2. (0.25 puntos).

2. Escoja la ubicación y el nombre del proyecto. Seleccione la casilla Create project subdirectory.

PARTE I. TÉCNICAS DE DISEÑO ELECTRÓNICO MEDIANTE LENGUAJES DE DESCRIPCIÓN HARDWARE

Hardware Libre: Clasificación y desarrollo de hardware reconfigurable en entornos GNU/Linux

DISEÑO DE CIRCUITOS SECUENCIALES

Manual de referencia de la tarjeta BASYS 2

Comparador de 1 bit Tabla de verdad y circuito lógico A B A > B A = B A < B

Tema 7. Análisis de Circuitos Secuenciales

Practica 9 Estilos de codificar a estados FCE

VHDL. Lenguaje de descripción hardware Estructura Básica de diseño

Introducción al VHDL. VHDL orientado a la síntesis de circuitos en Dispositivo Lógicos Programables

TEMA IV: SÍNTESIS HARDWARE

DISEÑO DE SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS

Universidad Autónoma de Querétaro Facultad de Ingeniería

4.5. Procedimiento de síntesis

Práctica IV Procesador DLX con unidades de entrada/salida

SINTAXIS BÁSICA DEL VHDL SIMPLIFICADO

Sistemas Electrónicos Digitales. PRACTICA nº 8

VI. Especificación del Comportamiento

Tema 3 - Modelado con HDL a nivel RTL

VHDL Y FPGA LENGUAJE VHDL

Práctica 8. Diseño en VHDL de un modulador BPSK

SISTEMAS DIGITALES VHDL

VHDL y el método de diseño basado en descripción y síntesis. RESUMEN.

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) CUARTA CLASE DE VHDL

Sumador completo de un bit - Versión VHDL Sintético

Circuitos Electrónicos Digitales E.T.S.I. Telecomunicación Universidad Politécnica de Madrid. Descripciones funcionales y estructurales

5.1. Introducción a los sistemas digitales

INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Junio de 2013

Diseño Lógico I Facultad de Ciencias Exactas y Tecnología UNT. LENGUAJES DE DESCRIPCIÓN DE HARDWARE

Practicas tuteladas VHDL (curso 04-05)

2. Sumadores. Diagrama. Donde a y b son los bits a sumar, S el. resultado de la suma y C el acarreo generado. b EB. Circuito. Tabla de verdad.

DESCRIPCIÓN DE CIRCUITOS DIGITALES

Hardware Libre: la Tarjeta Skypic, una Entrenadora para Microcontroladores PIC

VHDL. Carlos Andrés Luna Vázquez. Lección 10 Problemas

Tutorial I Diseño de una máquina de refrescos utilizando el WebPack de XILINX TM

Lenguaje VHDL. Código para representar sistemas digitales en VHDL JJVS-09

Práctica I.- Introducción a los Sistemas Secuenciales

Sistemas Digitales - Examen temas 1, 2 y 3 - (6 de Abril 2016)

4. SUMADORES EN BINARIO PURO (I)

Sistemas Electrónicos Digitales. PRACTICA nº 7

Generador de Secuencia Binaria Pseudo Aleatoria

Tipos de datos en VHDL

FPGA: Herramientas de diseño

CODIFICADORES CON PRIORIDAD. Grupo 2

ÍNDICE. Sistemas Electrónicos Digitales Práctica 2

DECODIFICADORES. Para cualquier código dado en las entradas solo se activa una de las N posibles salidas. 2 N

Tema 4 - Bloques combinacionales

Tema 2. Funciones Lógicas. Algebra de Conmutación. Representación de circuitos digitales. Minimización de funciones lógicas.

Decodificadores/Demultiplexores. Grupo 9 Javier de Gregorio Menezo Laro de la Fuente Lastra Raúl Fernández Díaz

INTRODUCCIÓN AL SOFTWARE ISE (Integrated Software Environment) DE XILINX

Convertidores Analógico - Digital y su Interfaz con Dispositivos de Lógica Programable

Lenguaje de descripción de Hardware VHSIC

CONTADORES CONTADORES ASINCRONOS ASCENDENTE

Práctica III Introducción a la descripción VHDL del procesador DLX

Introducción a la simulación con ModelSim.

Tutorial de ModelSim PE Student Edition

Índice. VHDL Lección 2.9 Máquinas de Estados Finitos (FSM) 1

ICTP Latin-American Advanced Course on FPGADesign for Scientific Instrumentation. 19 November - 7 December, 2012

Inferencia de Memorias para FPGAs Xilinx

Diseño electrónico digital integrado: Back to basics. Sep-2011 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid

INVERSORES DE GIRO PARA MOTORES A PASOS EN DISPOSITIVOS DE LÓGICA PROGRAMABLE

Simulación avanzada con TestBench en HDL. Ing. Andrés Miguel Airabella. Ing. Facundo Aguilera.

5Ejemplos de Aplicaciones del VHDL.

Transcripción:

Practica No. 8 Introducción a las Máquinas de Estados Objetivo: Familiarizar al alumno en el conocimiento de los algoritmos de las máquinas de estados. Desarrollo: Para cada uno de los siguientes apartados, realizar los diseños electrónicos que se piden. Duración: Dos semanas 1. En la figura 1 se muestra el comportamiento de un robot que evade obstáculos. Figura 1. Robot Móvil que evade obstáculos

En la figura 2 se muestra el algoritmo o carta ASM de este robot, en éste cuando los sensores de tacto Si y Sd sensan un obstáculo sus valores son igual a uno, en caso contrario son cero. Figura 2. Algoritmo de un robot móvil que evade obstáculos Encuentre las ecuaciones booleanas de los flip-flops y de las variables de salidas de esta máquina de estados.

A continuación se presenta este algoritmo usando el lenguaje de programación VHDL: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity carta_asm_2 is Port ( RELOJ : in STD_LOGIC; RESET : in STD_LOGIC; S : in std_logic_vector (1 downto 0); --DONDE EL BIT MAS SIGNIFICATIVO ES SI Y EL MENOS EL SD atras : out STD_LOGIC; adelante : out STD_LOGIC; giro_der : out STD_LOGIC; giro_izq : out STD_LOGIC; out_epresente :out std_logic_vector (3 downto 0)); end carta_asm_2; architecture Behavioral of carta_asm_2 is signal esiguiente : std_logic_vector (3 downto 0) := B"0000"; constant s0 : constant s1 : constant s2 : constant s3 : constant s4 : constant s5 : constant s6 : constant s7 : constant s8 : constant s9 : constant s10 : constant s11 : std_logic_vector(3 downto 0) := X"0"; std_logic_vector(3 downto 0) := X"1"; std_logic_vector(3 downto 0) := X"2"; std_logic_vector(3 downto 0) := X"3"; std_logic_vector(3 downto 0) := X"4"; std_logic_vector(3 downto 0) := X"5"; std_logic_vector(3 downto 0) := X"6"; std_logic_vector(3 downto 0) := X"7"; std_logic_vector(3 downto 0) := X"8"; std_logic_vector(3 downto 0) := X"9"; std_logic_vector(3 downto 0) := X"A"; std_logic_vector(3 downto 0) := X"B"; process (RELOJ,reset,esiguiente, S) if reset='0' then esiguiente <=s0; elsif rising_edge (RELOJ) then case esiguiente is

when s0 => if S =X"0" then adelante <= '1'; esiguiente<= s0; elsif S =X"1" then esiguiente<= s1; elsif S =X"2" then esiguiente<= s3; elsif S =X"3" then esiguiente<= s5; when s1 => when s2 => when s3 => when s4 => when s5 => atras <= '1'; esiguiente<= s2; giro_izq <= '1'; esiguiente<= s0; atras <= '1'; esiguiente<= s4; giro_der <= '1'; esiguiente<= s0; atras <= '1';

esiguiente<= s6; when s6 => giro_izq <= '1'; esiguiente<= s7; when s7 => giro_izq <= '1'; esiguiente<= s8; when s8 => when s9 => when s10 => when s11 => adelante <= '1'; esiguiente<= s9; adelante <= '1'; esiguiente<= s10; giro_der <= '1'; esiguiente<= s11; giro_der <= '1'; esiguiente<= s0; when others => null; end case; out_epresente <= esiguiente; end process; end Behavioral;

Haga un proyecto nuevo en el sistema de desarrollo Quartus en el cual se compile el código anterior. En Quartus haga un símbolo de esta máquina de estados. Programe la tarjeta para que muestre, usando cuatro leds, el estado presente, así mismo muestre también las salidas: adelante, atras, giro_izq y giro_der. Las entradas SI, SD y reset introduzcalas usando los botones de la tarjeta. Conecte al reloj maestro al divisor del reloj para poder visualizar mejor la operación de la máquina de estados, como se muestra en la figura 3. Figura 3. Diagrama de bloques de la máquina de estados Divisor del reloj El siguiente código en VHDL muestra a un divisor del reloj para bajar su frecuencia de operación: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity divider is Port ( reloj : in std_logic; div_clk : out std_logic); end divider; architecture Behavioral of divider is process (reloj) variable cuenta: std_logic_vector (27 downto 0):=X"0000000";

if rising_edge (reloj) then if cuenta=x"4000000" then cuenta:=x"0000000"; else cuenta:= cuenta+1; div_clk <= cuenta (25); end process; end Behavioral; El siguiente código en VHDL es el de una máquina de estados, que a partir de una señal de reloj externa de alta frecuencia y la de un botón de entrada sirve para sensar cuando este es oprimido y liberado, enviando una señal que permite ver el desempeño de otra máquina de estados conectado a el paso a paso. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity sensa_boton is Port ( boton : in STD_LOGIC; end sensa_boton; architecture Behavioral of sensa_boton is signal esiguiente: STD_LOGIC; process (esiguiente,boton) clk : in STD_LOGIC; reloj : out STD_LOGIC; epresente: buffer STD_LOGIC);

if rising_edge (clk) then case esiguiente is when '0' => reloj <= '0'; if boton ='0' then else esiguiente <= '0'; esiguiente <= '1'; end case; end process; end Behavioral; when '1' => if boton ='1' then esiguiente <= '1'; reloj <= '0'; else esiguiente <= '0'; reloj <= '1'; when others => null; epresente <= esiguiente; Compile este código e incluyalo en el diseño como se muestra en la figura 4. Figura 4. Incorporación del módulo que sensa cuando un botón es oprimido

3.- Conecte la etapa de potencia con las salidas de la máquina de estados como se muestra en la figura 5 y pruebe el algoritmo que evade los obstáculos. En la figura 5 se muestra que las salidas de la máquina de estado, atrás, adelante, giro_der y giro_iz, se conectan a un módulo el cual genera las lineas que controlan la etapa de potencia, diseñe este módulo. Figura 5. Máquina de estados para evadir obstáculos para ser conectado a la etapa de potencia. Después cambie los pines de entrada de S[0..1], PIN_U15 y PINV15, por los pines PIN_A8 y PIN_A9 y conectelos a dos interruptores de contacto, con los cuales se detectaran los obstáculos que un robot móvil deberá evitar. Conecte la etapa de potencia con la tarjeta de Altera y los motores en la base que contendrá el mini-robot móvil. Pruebe que el robot funciona apropiadamente evitando obstáculos, al principio use como entradas de sensado los botones de la tarjeta de Altera, después sustituya estos por sensores infrarrojos, como se indica a continuación, usando el comparador LM339: