Practica 4 Unidad 2 semaforo en vhdl PDF

Title Practica 4 Unidad 2 semaforo en vhdl
Author Francisco Cedillo
Course Diseño digital con VHDL
Institution Instituto Tecnológico de Tijuana
Pages 15
File Size 399.5 KB
File Type PDF
Total Downloads 3
Total Views 138

Summary

Semáforo en VHDL...


Description

Instituto Tecnol´ogico de Tijuana Departamento de Ingenier´ıa El´ectrica y Electr´onica Ingenier´ıa Electr´ onica

¨ UNIDAD 2”

Materia: Disde˜ no digital con VHDL

”Pr´actica 4: Sem´aforo” Elaborado por:

Nombre

N´ umero de control

Cedillo Medina Francisco Javier

17212609

Dra. Yazmin Maldonado Robles

Fecha de entrega 16/12/2020.

Tijuana,B.C., Mexico

´Indice 1 Introducci´ on:

1

2 Dise˜ no l´ ogico secuencial

1

2.1

Dise˜ no l´ogico secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

2.2

Flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

2.3

Registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

2.4

Contadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

2.5

Dise˜ no de sistemas secuenciales s´ıncronos . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

3 Objetivo:

4

4 Procedimiento y metodolog´ıa experimental

4

5 C´ odigo

7

5.1

Simulaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

5.2

Diagrama RTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

6 Conclusiones:

12

7 Bibliograf´ıa

12

i

´Indice de figuras 2.1

Estructura de un sistema secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

2.2

Tipos de flip-flops

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

2.3

Tablas de verdad de los flip-flops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

2.4

Registro paralelo de 8 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

2.5

Registro paralelo de 8 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

2.6

Arquitectura secuencial de Mealey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

2.7

Arquitectura secuencial de Moore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

5.1

Simulaci´on sem´aforo con maquinas de estado . . . . . . . . . . . . . . . . . . . . . . . . .

10

5.2

Simulaci´on sem´aforo con maquinas de estado . . . . . . . . . . . . . . . . . . . . . . . . .

10

5.3

Diagrama RTL sem´aforo con maquina de estados . . . . . . . . . . . . . . . . . . . . . . .

11

ii

1.

Introducci´ on: En esta practica se utiliza lenguaje de programacion VHDL para sintetizar maquinas de estado de

modo que pueda construirse un semafoto vehicular, el cual como se conoce, consta de tres colores diferentes para las luces que lo componen; Rojo, verde y ambar o amarillo, cada una de ellas con un tiempo de nido de visualizacion. El codigo se ha dise nado con instrucciones especi cas y las describiremos el la seccion de procedimiento y metodologa experimental, estaremos haciendo uso de contadores que se ejecutan a traves de un tren de pulsos.

2.

Dise˜ no l´ ogico secuencial

2.1.

Dise˜ no l´ ogico secuencial

Un sistema secuencial esta formado por un circuito combinacional y un elemento de memoria encargado de almacenar de forma temporal la historia del sistema. En esencia, la salida de un sistema secuencial no solo depende del valor presente de las entradas, sino tambi´en de la historia del sistema, seg´ un se observa en la siguiente figura.

Figura 2.1: Estructura de un sistema secuencial B´asicamente hay dos tipos de sistemas secuenciales: s´ıncronos y as´ıncronos; el comportamiento de los primeros se encuentra sincronizado mediante el pulso de reloj del sistema, mientras que el funcionamiento de los sistemas as´ıncronos depende del orden y momento en el cual se aplican sus se˜ nales de entrada, por lo que no requieren un pulso de reloj para sincronizar sus acciones.

2.2.

Flip-flops

El elemento de memoria utilizado indistintamente en el dise˜ no de los sistemas s´ıncronos o as´ıncronos se conoce como flip- flop o celda binaria. La caracter´ıstica principal de un flip- flop es mantener o almacenar un bit de manera indefinida hasta que a trav´es de un pulso o una se˜ n al cambie de estado. Los flip- flops mas conocidos son los tipos SR, JK, T y D. a continuaci´on se presenta cada uno de estos elementos y la tabla de verdad que describe su comportamiento.

1

Figura 2.2: Tipos de flip-flops

Figura 2.3: Tablas de verdad de los flip-flops Es importante recordar el signi cado de la notacion Q y Q(t+i); Q = estado presente o actual Qt+1 = estado futuro o siguiente

2.3.

Registros

En la figura 2.4 se presenta la estructura de un registro de 8 bits con entrada y salida de datos en paralelo. El dise˜ no es muy similar al flip-flop anterior, la diferencia radica en la utilizaci´on de vectores de bits en lugar de un solo bit.

Figura 2.4: Registro paralelo de 8 bits

2.4.

Contadores

Los contadores son entidades muy utilizadas en el dise no logico. La forma usual para describirlos en VHDL es mediante operaciones de incremento, decremento de datos o ambas.

2

Figura 2.5: Registro paralelo de 8 bits

2.5.

Dise˜ no de sistemas secuenciales s´ıncronos

La estructura de los sistemas secuenciales s´ıncronos basa su funcionamiento en los elementos de memoria conocidos como flip-flops. La palabra s´ıncrona se refiere a que cada uno de estos elementos de memoria que interact´ uan en un sistema se0 encuentran conectados a la misma se˜ nal de reloj, de forma tal que solo se producira un cambio de estado en el sistema cuando ocurra un flanco de disparo o un pulso en la se˜ nal de reloj. Existe una divisi´ on en el dise˜ no de los sistemas secuenciales que se requiere al momento en que se producira la salida del sistema. En la estructura de Mealy las se nales de salida dependen tanto del estado en que se encuentra el sistema, como de la entrada que se aplica en determinado momento. la estructura de Moore la se nal de salida solo depende del estado en que se encuentra.

Figura 2.6: Arquitectura secuencial de Mealey.

Figura 2.7: Arquitectura secuencial de Moore.

3

3.

Objetivo: Dise˜ nar e implementar en VHDL un sem´aforo vehicular utilizando m´ aquinas de estado finito (FSM).

4.

Procedimiento y metodolog´ıa experimental 1. Dibuje el diagrama de estados y la tabla de transiciones para el sem´aforo vehicular, el cual tiene el

siguiente funcionamiento. El sem´aforo cuenta con 3 luces (verde, a´mbar y rojo) La luz verde permanece encendida durante 60 seg, enseguida, parpadea 2 veces con duraci´ on de 1 seg La luz ´ambar permanece encendida durante 5 seg La luz roja estar´a encendida durante 30 seg El ciclo se repite 2.Dise˜ ne el c´odigo VHDL, simule el c´ odigo e implem´entelo en el FPGA Basys 3. De lo anterior: - De acuerdo al problema elija el tipo de FSM que se necesita - Ofrezca sus conclusiones 3.3. Revisar: Case IF Mealy Moore

4

primero se incluyen las librer´ıas que se utilizaran en este caso sera la librer´ıa IEEE, y se indica que se utilizara toda la librer´ıa.

Una vez hecho lo anterior inicia la entidad que lleva por nombre Practica4 y se indican los puertos de entrada y salia. Entrada: CLK de tipo std logic vector Salidas: Dv1,Dv2,DV3,Dv4 std logic vector.

seguido de esto se crea la Arquitectura llamada SEMAFORO y se crean los estados por los que pasara el semaforo, las se˜ nales y constantes que se usaran para el proceso del divisor de frecuencia y el conteo.

type estados is (verde,off1,on1,off2,on2,ambar,rojo,apagado); signal Aux1hz : stdl ogic :=′ 0′ ; signalEpresente, Ef uturo : estados := verde; signalT iempo : integerrange0to99; constantT 10seg : integer := 60; constantT 1seg : integer := 1; constantT 5seg : integer := 5; constantT 8seg : integer := 30;

Ahora comienza el primer proceso, el cual sera el divisor de frecuencia, para este caso, se utiliza una variable: cuenta integer con un rango de 1 a 500, esto ultimo para poder observar la simulaci´ on y corroborar que el c´ odigo correcto, sin embargo para que la implementaci´on funcione y los cambios puedan ser observados por el ojo humano mediante el cambio de los leds en la tarjeta basys 3, este valor tiene que ser modificado a una frecuencia de 50,000,000, ya que si tomamos en cuenta la frecuencia de entrada de la tarjeta basys 3 (100 Mhz) y hacemos los c´alculos para obtener la frecuencia deseada, obtendremos que para hacer un divisor de frecuencia de 1 hert, se necesita una frecuencia de salida de 50 Mhz (incluyendo ya el flanco de subida y bajada). como se observa en la ecuaciones siguientes: FEnt = F sal FDeseada

(4.1)

100M hz = 100M hz/2 = 50M hz 1hz

(4.2)

FE =

Fe =

5

Donde: FE = Factor de Escalamiento (cuentas) FEnt = Frecuencia de entrada (Hz) FDeseada = Frecuencia Deseada (Hz) FSal = Frecuencia Deseada (Hz)

En el siguiente proceso se efect´ ua el cambio de estado, es decir el proceso para que cuando llegue a la cuenta que le corresponde a cada estado, este haga su cambio al siguiente, se utilizo una variable cuenta: integer de 1 a 99, ya que es la suma de todos los segundo que se utilizaran para cada estado.

Por ultimo se inicio el proceso de la maquina de moore para, la cual comienza en verde y tiene la condici´on de que si el tiempo establecido llega a su limite pasara a su siguiente estado, en este caso a apagado para el primer proceso, despu´es sigue cumpli´endose la condici´on de los tiempos asignados hasta que llega al ultimo estado(led rojo) el cual cuando termina regresa al estado inicial en verde.

6

5.

C´ odigo

Library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;

Entity semaforo is Port ( Reset,CLK : in std_logic; Semaforo : out std_logic_vector (2 downto 0) ); End semaforo;

Architecture practica4 of semaforo is type estados is (verde,off1,on1,off2,on2,ambar,rojo,apagado); signal Aux1hz : std_logic :='0'; signal Epresente,Efuturo : estados:=verde; signal Tiempo : integer range 0 to 99; -- Tiempo total de la secuencia constant T60seg :integer := 60; constant T1seg

:integer := 1;

constant T5seg

:integer := 5;

constant T30seg

:integer := 30;

begin

Process(clk)

--

1 SEGUNDO 1HZ DE FRECUENCIA

variable cuenta:integer range 1 to 500; begin if(rising_edge (clk)) then if(cuenta=500)then Aux1hz...


Similar Free PDFs