Tutorial 2: Pasar de diagrama ASM a un circuito Introducción En este segundo tutorial veremos cómo transformar nuestros diagramas ASM en circuitos que puedan ser implementados utilizando la placa DEO. Para ello debemos traducir el diagrama ASM en un circuito. El objetivo de este tutorial es comprender completamente la correspondencia unívoca entre el diagrama ASM y el circuito implementado final. Se obtendrá un primer circuito completo y se verificará su correcto funcionamiento en la placa DEO. Parte 1 En el tutorial 1 se presentó un ejemplo del diseño de un circuito con su respectivo diagrama ASM. En este caso se presenta el circuito implementado para dicho ejemplo. En el anexo se encuentra el diagrama ASM, el bloque de control implementado en VHDL, el bloque de datos en un esquemático de Quartus y el circuito completo que une ambos bloques en un esquemático de Quartus. Todos correspondientes al ejemplo presentado en el tutorial 1. Se adjuntan todos los archivos del proyecto con el circuito implementado. Se debe comprender completamente la correspondencia unívoca entre el diagrama ASM y el circuito. Simular el circuito de igual manera que fue realizado en el tutorial 0. Una vez verificado el correcto funcionamiento del circuito a través de las simulaciones, se deben asignar los pines y compilar el proyecto. Utilizaremos el reloj de 50MHz que nos provee la placa. La asignación de pines para probar el circuito en la placa DE0 se muestra en la siguiente tabla: Señal I/O Pin clk reset In1 Switch0 Led1 clk_out PIN_G21 PIN_H2 PIN_H5 PIN_J6 PIN_J2 PIN_D13 Recurso en la DE0 CLOCK_50 BUTTON [0] SW[1] SW[0] LEDG[1] HEX0_DP Luego de la asignación, programamos el circuito en la placa y verificamos que efectivamente funciona de acuerdo a lo esperado. Parte 2 En segunda instancia, se debe modificar el circuito entregado para que la correspondencia sea con el diagrama ASM modificado en el tutorial 1, estos cambios fueron: • El circuito prenda el LED si el pulso es igual o mayor que 4T. • El LED se encienda solo si el Switch0 está en 1. Luego de realizar las modificaciones en el circuito, se debe simular el nuevo circuito y verificar el correcto funcionamiento en la placa DEO. Preguntas ¿Cuál es la función del bloque Divisor? ¿Por qué es necesario? ¿De qué período es la señal clk_out? ¿Es razonable utilizarla para probar el circuito en la placa DE0? ¿Qué ocurriría si utilizaramos clk en lugar de clk_out para el testeo? Entrega Los grupos deben entregar en su clase de seguimiento, durante la cual realizarán la defensa del tutorial, las simulaciones realizadas de cada uno de los circuitos y una breve respuesta a las preguntas planteadas. Deben utilizar la caratula que se encuentra en el EVA. Anexo Diagrama ASM Bloque de Control en VHDL -- Bloque de Control library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity Bloque_control is port ( clk reset In1 PASO_1 PASO_2 PASO_3 PASO_4 ); end entity; : : : : out out out out : in std_logic; : in std_logic; : in std_logic; std_logic; std_logic; std_logic; std_logic architecture Control of Bloque_control is -- Build an enumerated type for the state machine type state_type is (p1, p2, p3, p4); -- Registers signal state : state_type; -- Combinatorial signal nextstate : state_type; begin process (state,In1) begin -- default values case state is when p1=> PASO_1 <= '1'; PASO_2 <= '0'; PASO_3 <= '0'; PASO_4 <= '0'; nextState <= p2; when p2=> PASO_1 <= '0'; PASO_2 <= '1'; PASO_3 <= '0'; PASO_4 <= '0'; if In1 = '0' then nextState else nextState end if; when p3=> PASO_1 <= '0'; PASO_2 <= '0'; PASO_3 <= '1'; PASO_4 <= '0'; if In1 = '1' then nextState else nextState end if; when p4=> PASO_1 <= '0'; PASO_2 <= '0'; PASO_3 <= '0'; PASO_4 <= '1'; nextState <= p2; when others => PASO_1 <= '0'; PASO_2 <= '0'; PASO_3 <= '0'; PASO_4 <= '1'; nextState <= p1; end case; end process; -- Registro de estado: process (clk, reset) begin if reset = '0' then state <= p1; elsif clk'event and clk = '1' then state <= nextstate; end if; end process; end Control; <= p3; <= p2; <= p4; <= p3; Bloque de Datos en esquemático de Quartus Circuito completo en esquemático de Quartus