COLABORATIVO DOS DIGITALES
Enviado por mriveraga • 25 de Noviembre de 2013 • 2.746 Palabras (11 Páginas) • 246 Visitas
Fase 1: Diseño
• Planteamiento del problema
Para comenzar con el diseño de este carro de choque, debemos definir qué es lo queremos hacer o que es lo que lograr antes de comenzar armar o crear este circuito.
“Necesitamos un carro que al tocar un obstáculo cambie su dirección de marcha”
Para tener una idea de lo que necesitamos hacer a continuación describiremos unos pasos generales del objetivo del diseño.
1. Lo primero que necesitamos es que el carro inicie su marcha hacia adelante, que los dos motores DC, giren en el mismo sentido
2. cuando impacte este debe recordar el impacto e iniciar un retroceso de unos segundos.
3. una vez transcurrido el tiempo de retroceso este debe seguir su marcha hacia adelante
4. este paso lo debe hacer tantas veces que encuentre un obstáculo.
Diagrama de bloques
• Definir las variables lógicas de entrada y de salida del sistema.
Se indican las entradas D1 y D0 como bits, la dirección como un vector de 2 bits, y la salida S como un bit.
• Realizar una tabla de verdad que muestre la relación entre las variables de entrada y de salida del sistema.
Las variables de entrada son 2 que son la correspondiente a los 2 microswiches las posibles funciones de la variable son en total 4. Este número de posibilidades podemos calcularlo como 2².
ENTRADA SALIDA
S1 S2 M1 M2
0 0 0 0 Adelante
0 1 1 1 Retroceso
1 0 1 1 Retroceso
1 1 1 1 Retroceso
• Describir cómo funciona el sistema en palabras, por ejemplo, la señal de los Microswiches va a un temporizador, la señal del temporizador va a la entrada de un cerrojo que maneja un motor etc.
El circuito se enciende inmediatamente los flip Flop hacen una comparación y manda una señal la cual llega a dos relevos y activan los dos motores, esto genera el movimiento del carro hacia adelante cuando el carro choca o golpea se activa uno de los 2 microswitch ubicados en la parte delantera el microswitches manda una señal hacia los flip Flop los cuales la interpretan y mandan una señal hacia el reloj el cual está programado para tener un señal activa durante 1.3 segundos esta señal llega a los relevos y activa los motores en diferente polaridad durante 1.3 segundos después el reloj entra en estado bajo dándole paso a la señal de los flip Flop estos mandan una señal a los relevos y estos nuevamente activan los motores quedando el carro andando hacia delante.
• Simulación del sistema diseñado en cualquier programa simulador que se decida.
Diseño En Proteus
• Fase 2: Verificación
Para la verificación del funcionamiento del sistema se debe realizar el diseño del mismo en VHDL. Para el diseño se debe realizar en primera medida un diagrama de flujo del sistema.
Diagrama de flujo realizado en DFD
• A continuación se debe realizar el programa en un simulador de VHDL
Código VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.NUMERIC_STD.ALL;
entity compl is
Port ( s_fcc, s_fcd, s_fci, reset, ss, c, i, d : in STD_LOGIC;
clk: inout STD_LOGIC;
e1, e2, e3, e4 : out STD_LOGIC);
end compl;
architecture Behavioral of compl is
constant N : integer := 28; -- tamaño de bits para bajar de frecuencia
signal a: std_logic;
signal q_reg, q_reg1, q_reg2, q_next, q_next1, q_next2 : unsigned (N-1 downto 0);
signal sel : std_logic_vector (1 downto 0);
begin
process (s_fcc, s_fcd, s_fci,c,d,i,clk,ss,reset)
begin
if (reset = '0') then
---- GIRA ADELANTE
e1<= '0';
e2<= '1';
e3<= '0';
e4<= '1';
if (ss= '1') then
if (s_fcc = '1' ) then
a<= '1';
if(clk'event and clk = '1' ) then
q_reg <= q_next;
end if;
q_next <= q_reg + 1;
sel <= std_logic_vector(q_reg(N-1 downto N-2));
case sel is
when "00"=>
---- retrocede
e1<= '1';
e2<= '0';
e3<= '1';
e4<= '0';
when "01" =>
--- gira derecha
e1<= '0';
e2<= '1';
e3<= '1';
e4<= '0';
when others =>
...