You are on page 1of 10

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

Relatrio de Laboratrio
de Sistemas Digitais
UP/DOWN E MQUINA DE SODAS

Eli Edson Cabral de Lima Jnior


Francisco Canind da Silva Jnior

02/12/2014
Natal - RN

Sumrio
INTRODUO ............................................................................................................................ 2
1 ESPECIFICAO ..................................................................................................................... 2
1.1 UP/DOWN .......................................................................................................................... 2
1.2 MQUINA DE REFRIGERANTES .................................................................................. 3
2 MQUINA DE ESTADOS ....................................................................................................... 3
2.1 UP/DOWN .......................................................................................................................... 3
2.2 MQUINA DE REFRIGERANTES .................................................................................. 4
3 DATAPATH .............................................................................................................................. 4
3.1 UP/DOWN .......................................................................................................................... 4
3.2 MQUINA DE REFRIGERANTES .................................................................................. 5
4 IMPLEMENTAO EM VHDL .............................................................................................. 6
4.1 UP/DOWN .......................................................................................................................... 6
4.2 MQUINA DE REFRIGERANTES .................................................................................. 6
CONCLUSO .............................................................................................................................. 8
ANEXOS....................................................................................................................................... 9

INTRODUO

Vivemos em um mundo dinmico, onde a tecnologia possibilitou avanos


extraordinrios, e um dos meios que possibilitou isso foram os sistemas digitais, os
sistemas inteligentes.
Com eles houve um avano enorme tecnologicamente e socialmente. Visto isso
essencial para futuros engenheiros eletricistas terem o conhecimento de como se
implementa e constri um sistema digital. Por isso a construo e o entendimento dos
sistemas digitais em laboratrio so essenciais.
Pensando assim, o relatrio que se segue busca descrever e exemplificar o
projeto em VHDL com datapath e maquina de estado de um circuito up/down e de uma
mquina de refrigerantes com 2 produtos e dois preos diferentes.

1 ESPECIFICAO

1.1 UP/DOWN
Construir um somador/subtrator com 3 entradas A (4 bits), d (bit), operao (bit)
e uma sada R_Total (6 bits ou mais) com o seguinte comportamento:
- Inicializar R_Total e R_temp em 0;
- Caso operao = 1 e d=1 deve-se somar,ou seja, R_temp = R_temp + A;
- Caso operao = 0 e d=1 deve-se subtrair, ou seja, R_temp = R_temp A;
- Caso d=0 deve-se fazer a carga no registrador de sada (R_Total = R_temp).

1.2 MQUINA DE REFRIGERANTES

Mquina de vender refrigerantes, com dois preos e dois produtos.


- Considerar produto A com preo 10 (2), e produto B com preo 11 (3). Pode haver
moeda com valor 01 (1) ou 10 (2);
- No haver troco aps a compra. Porm, deve-se prever que, se o usurio colocou a
mais (ex. duas moedas de 2, quando o produto era 3), pode sinalizar em uma varivel de
sada (z) indicando que h valor a mais. H necessidade de uma varivel, neste ponto, d
(bit), que, se pressionada (d = 1), ex. nos prximos n ciclos de clock, ir liberar o
dinheiro e no fechar a venda, indo para o incio do processo.

2 MQUINA DE ESTADOS
2.1 UP/DOWN

Figura 1. Mquina de estados do up/down

2.2 MQUINA DE REFRIGERANTES

Figura 2. Mquina de estados da mquina de refrigerantes.

3 DATAPATH

3.1 UP/DOWN

Figura 3. DataPath do up/down.

3.2 MQUINA DE REFRIGERANTES

Figura 4. DataPath da mquina de refrigerantes.

4 IMPLEMENTAO EM VHDL

4.1 UP/DOWN
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity updown is
Port (
RS : out STD_LOGIC_VECTOR (7 downto 0); --registrador de saida
OP : in STD_LOGIC; -- se soma ou subtrai
D : in STD_LOGIC;
-- modo contagem ou carga
A : in STD_LOGIC_VECTOR (3 downto 0)); -- entrada
end updown;
architecture Behavioral of updown is
signal rt : STD_LOGIC_VECTOR (7 downto 0) := X"00";
begin
process (D, OP)
begin
if (D'event and D = '1') then
if OP = '0' then
rt <= rt - A;
elsif OP = '1' then
rt <= rt + A;
end if;
elsif (D'event and D = '0') then
RS <= rt;
end if;
end process;
--if (D = '0') then
-- end if;
end Behavioral;

4.2 MQUINA DE REFRIGERANTES


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity SodaMachine is
Port (
6

CLK : in STD_LOGIC; -- clock do sistema


D
: in STD_LOGIC; -- se 1 cancela a compra e o dinheiro liberado
TIPO_A : in STD_LOGIC; -- soda do tipo A
TIPO_B : in STD_LOGIC; -- soda do tipo B
MOEDA_1 : in STD_LOGIC; -- entrada para moeda de valor 1
MOEDA_2 : in STD_LOGIC; -- entrada para moeda de valor 2
Z
: out STD_LOGIC; -- indica se h valor a mais que o necessario, quando for 1 no
caso
BLZ

: out STD_LOGIC -- indica que a compra foi concluida com succeso


);
end SodaMachine;
architecture Behavioral of SodaMachine is
signal ctrl : STD_LOGIC := '0'; -- sinal de controle diz se houve ou n dinheiro de sobra
signal rvt : STD_LOGIC_VECTOR (3 downto 0) := "0000"; -- sinal que armazena
temporariamente o valor final
signal valor_a : STD_LOGIC_VECTOR (3 downto 0) := "0010"; -- valor da soda a
signal valor_b : STD_LOGIC_VECTOR (3 downto 0) := "0011"; -- valor da soda b
constant valor_m1 : STD_LOGIC_VECTOR (1 downto 0) := "01"; -- valor da moeda colocada
na entrada da moeda 1
constant valor_m2 : STD_LOGIC_VECTOR (1 downto 0) := "10"; -- valor da moeda colocada
na entrada da moeda 2
signal fim : STD_LOGIC := '0'; -- compra concluida com sucesso se 1, cancelamento
se 0
signal cancelou : STD_LOGIC := '0'; -- cancelou a compra
begin
process(CLK, TIPO_A, TIPO_B, MOEDA_1, MOEDA_2, D)
begin
if (CLK'event and CLK = '1') then
if (TIPO_A = '1' and TIPO_B = '0') then
if fim = '1' or cancelou = '1' then
rvt <= "0000";
fim <= '0';
ctrl <= '0';
end if;
if (rvt < valor_a) then
if (MOEDA_1 = '1') then
rvt <= rvt + valor_m1;
end if;
if (MOEDA_2 = '1') then
rvt <= rvt + valor_m2;
end if;
elsif rvt = valor_a then
fim <= '1';
elsif rvt > valor_a then
ctrl <= '1';
if D = '1' then
cancelou <= '1';
elsif D = '0' then
fim <= '1';
end if;
end if;
7

elsif (TIPO_B = '1' and TIPO_A = '0') then


if fim = '1' or cancelou = '1' then
rvt <= "0000";
fim <= '0';
ctrl <= '0';
end if;
if (rvt < valor_b) then
if (MOEDA_1 = '1') then
rvt <= rvt + valor_m1;
end if;
if (MOEDA_2 = '1') then
rvt <= rvt + valor_m2;
end if;
elsif rvt = valor_b then
fim <= '1';
elsif rvt > valor_b then
ctrl <= '1';
if D = '1' then
cancelou <= '1';
elsif D = '0' then
fim <= '1';
end if;
end if;
end if;
end if;
end process;
BLZ <= fim;
Z <= ctrl;
end Behavioral;

CONCLUSO
Saber programar em VHDL muito importante, pois podemos definir sistemas
de maneira mais abstrata o que facilita o entendimento. Alm disso, de suma
importncia sabermos realizar o projeto RTL de um sistema, e ao implementarmos esses
dois sistemas aqui descritos pudemos nos familiarizar com o VHDL e os projetos afins.

ANEXOS
Exemplos de Simulao Up/Down:

Exemplos de Simulao Mquina de Refrigerantes:

You might also like