quarta-feira, 28 de maio de 2014

Piscar Led com CPLD EPM7064 e VHDL

Palavras-chave: Blink, Pisca, Led, CPLD, VHDL, EPM7064, Altera.

Para um projeto que está em andamento, acabei por adquirir um pequeno kit de CPLD.

Com o intuito de testar e até mesmo de lembrar como se utiliza a ferramenta Quartus II da Altera, resolvi implementar o famoso "Hello World" em hardware, ou seja, piscar um led.

MATERIAIS

Eletrônica:

- 1 Kit CPLD-02 SOQ com Altera EPM7064SLC44-10;
- 1 Led vermelho;
- 1 Resistor de 330Ω.

Diversos:

- 1 Protoboard;
- Fios (jumpers) para montagem no protoboard.

MONTAGEM

As Figuras 1 e 2 mostram o kit utilizado e um diagrama elétrico para montagem da placa, respectivamente.

Fig. 1 - Kit CPLD-02 SOQ.
Fig. 2 - Diagrama para montagem do CPLD.
Como se pode observar na Figura 2, conecte o pino positivo (anodo) do led no Vcc (5V) e o pino negativo (catodo) no resistor. Conecte a outra extremidade do resistor no pino 5 do CPLD, Figura 3.

Fig. 3 - Pin planner.

PROGRAMAÇÃO

O código VHDL utilizado não é de minha autoria. Assim, fica disponibilizado o arquivo original (Blink_VHDL) compactado em tar.gz na página de downloads. Nele há um txt com o direito de uso e um breve tutorial.

Copie o código abaixo integralmente e faça o upload.
--
-- Altera VHDL Blink implementation
--
-- Copyrighted by Wincent Balin
-- Idea by Jean P. Nicolle
--

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

entity led is -- Substituido blink por led

    port

    (

        clk : in std_logic;

        led : out std_logic

    );

end led;

architecture blink_arch of led is

signal cnt : std_logic_vector(23 downto 0);

begin

    led <= '1' when (cnt(20) = '1' and cnt(22) = '0') else '0';

    process(clk)

    begin

        if clk'event and clk = '1' then

            cnt <= unsigned(cnt) + 1;

        end if;

    end process;

end blink_arch;
Ao término do upload, o led começará a piscar.

Nenhum comentário: