DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA CARRERA DE INGENIERÍA EN ELECTRÓNICA Y TELECOMUNICACIONES Diseño VLSI NRC: 841
Views 14 Downloads 0 File size 758KB
DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA CARRERA DE INGENIERÍA EN ELECTRÓNICA Y TELECOMUNICACIONES
Diseño VLSI
NRC: 8417
MAQUINA SECUENCIAL SEGUNDO PARCIAL
DISPENSADOR DE TABACOS
PROFESOR: ING. PABLO FRANCISCO RAMOS VARGAS
NOMBRE: JONATHAN CHASI
MAYO-2020
1. Tema: Maquina Secuencial en VHDL. 2. Objetivos:
Solucionar el problema planteado mediante lenguaje VHDL.
Diseñar el circuito secuencial mediante el diagrama de estados y colocar en una tabla la codificación dele estado actual y el próximo.
3. Diseño:
Una máquina expendedora de tabaco está controlada por un circuito secuencial como el de la figura. Dicho circuito recibe como entradas el código de dos bits (tabla 1) de las monedas que va introduciendo el usuario. Como salidas, el circuito debe activar 2 señales, correspondientes a si se debe o no entregar el tabaco (T), y la cantidad de cambio a reintegrar (C1 y C0), codificadas según las tablas 2 y 3 respectivamente. El funcionamiento del circuito es el siguiente. El usuario debe introducir monedas hasta alcanzar la cantidad de 100, que será el precio del tabaco. Una vez que la suma de monedas alcance dicho importe, automáticamente la máquina servirá el tabaco, retornando además el cambio correspondiente. Por ejemplo, si el usuario ha introducido 1 moneda de 25 y 2 monedas de 50, la máquina debe servirle el paquete y una moneda de 25 (salidas T C1 C0 = 1 01).
T(1)
M(2)
Circuito Secuencial
C(2)
M1
M0
Estado
Estado
presente
siguiente
T
C1
C0
0
0
Q0
Q0
0
0
0
0
0
Q1
Q1
0
0
0
0
0
Q2
Q2
0
0
0
0
0
Q3
Q3
0
0
0
0
1
Q0
Q1
0
0
0
0
1
Q1
Q2
0
0
0
0
1
Q2
Q3
0
0
0
0
1
Q3
Q0
1
0
0
1
0
Q0
Q2
0
0
0
1
0
Q1
Q3
0
0
0
1
0
Q2
Q0
1
0
0
1
0
Q3
Q0
1
0
1
1
1
Q0
Q0
1
0
0
1
1
Q1
Q0
1
0
1
1
1
Q2
Q0
1
1
0
1
1
Q3
Q0
1
1
1
Diagrama de estados: 𝑀(2) 𝑇(1)𝐶(2)
ESTADO
Valor acumulado
Estado Q1
Monedas acumuladas 0
Estado Q2
Monedas acumuladas 25
Estado Q3
Monedas acumuladas 50
Estado Q4
Monedas acumuladas 75
Código: --Declariacon de la librerias library IEEE; use IEEE.STD_LOGIC_1164.ALL; --Entidad entity tabacos is--nombre de la entidad port (
clk : in std_logic; M: in std_logic_vector(1 downto 0); C: out std_logic_vector(1 downto 0); T: out std_logic ); end tabacos; --Inicio de la arquitectura architecture proceso of tabacos is signal aux_C: std_logic_vector(1 downto 0); signal aux_T: std_logic; type estados is (st0,st1,st2,st3); signal pr_state, nx_state: estados; begin -- proceso 1 para cada estado P0:process(M,nx_state,pr_state) begin case pr_state is when st0 => -- con 0 centavos if(M="00") then nx_state