Projetos para Começar com HDL

A pergunta que todo mundo faz em qualquer grupo, disciplina ou empresa quando descobrem que eu trabalho com FPGA: o que fazer para começar a trabalhar com o tal FPGA? Eu respondo: esqueça FPGA. Comece aprendendo HDL e revise lógica digital. Simples assim.

Bom, então sem demoras, vou apresentar algumas ideias de projetos. A vantagem destes projetos é que são componentes que existem e, portanto, o datasheet dos mesmos pode ser usado como especificação ou documentação. São todos da família 74xx e a Wikipédia tem uma lista de todos eles. Também dá para encontrar pelo google ou sites de fabricantes. Como preferir.

Embora os exemplos a seguir tenham foco em VHDL, podem ser implementados em outras linguagens.

Projeto 1: 74138

O decodificador 3:8. Combinacional. Fácil. Pois, aqui vão alguns desafios:

  1. Implementar operadores lógicos.
  2. Implementar com process usando IF
  3. Implementar com process usando CASE
  4. Implementar usando WHEN…ELSE
  5. Implementar usando WITH…SELECT
  6. Montar o testbench e simular.

O que vai ser aprendido aqui?

  • Sintaxe. Muitas formas de sintaxe.
  • Simulação.

Projeto 2: 74181

Uma ALU!!! Sim, basta seguir as ideias do Projeto 1 e implementar esta ALU. Se bem feita, você tem um componente pronto para seu próprio processador! Tarefas:

  1. Simular. Você já aprendeu várias formas diferentes de implementar lógica combinacional. Faça a que mais lhe apetece.

Projeto 3: 7474

Um flip-flop D. Simples não? Sim, mas depois de implementar.

  1. Implementar o FFD usando wait until dentro de processo
  2. Implementar o Flip-flop sem processo
  3. Simular, exercitando TODOS os pinos.

O que vai ser aprendido aqui?

  • Usar clock e enable
  • Montar um Testbench
  • Escrever um pouco de HDL
  • Explorar algumas construções de HDL.

Projeto 4: 74595

Este já é mais elaborado. Pode ser até usado em conjunto com projetos de Arduino de poucos pinos, como o Franzino. Como sempre, desafios:

  1. Implementar o shift register com FOR…LOOP
  2. Implementar com o operador de concatenação
  3. Simular.

O que você vai aprender?

  • Implementar um shift register
  • Aprender para que servem loops em uma HDL
  • Trabalhar com vetores
  • Aprender um pouco mais sobre a linguagem.

Projeto 5: 74218

Uma RAM. Isso é algo que depois de aprendido, vira hábito.

  1. Usar INTEIRO para a porta de endereços.
  2. Usar UNSIGNED para a porta de endereços.
  3. Usar STD_LOGIC_VECTOR para a porta de endereços.
  4. Como transformar essa RAM ter valor inicial?
  5. Como fazer essa RAM em uma ROM?
  6. Simular. Sempre simular.

O que você vai aprender?

  • Usar typecasts.
  • A usar memórias e descrevê-las
  • A criar tabelas de look-up

Projeto 6: 74232

Uma fifo. Um bloco extremamente importante em praticamente todo tipo de sistema que se comunica com alta velocidade, usado em uma das técnicas para mudar domínio de relógio. Aqui os desafios serão:

  1. Implementar o controle de estado (full, empty e etc) por máquina de estados.
  2. Implementar a RAM como um componente externo (e não como um sinal do HDL)
  3. Implementar a FIFO com 8 bits (em vez de 4)
  4. Simular com entrada e saída na mesma taxa (e seria diferente?)
  5. Simular com taxa de entrada em rajadas de 5 enables (seguidos de 5 disables – meio óbvio, mas use enables) e saída em 1 enable e 1 disable.

O que você vai aprender?

  • A definir máquinas de estados.
  • A fifo é um dos métodos para troca de domínio de relógio entre dois relógios rápidos e casamento de taxas.
  • Comparar valores, usando unsigned.
  • Usar máquinas de Estados.

Mas… Tudo isso é muito complicado!

Se está complicado, procure mais informação antes de cada exercício. Aqui mesmo no Embarcados, existem vários links para artigos mais fundamentais. Leia alguns e tente avançar nos exercícios. Quando travar, estude mais alguns e tente avançar novamente. Assim, até o fim.

Respostas prontas? Pra quê? E a graça?

Com esta base, a próxima etapa é cair para a placa. Mas isso é tema para outro artigo.

Ricardo F. Tafas Jr é natural de Porto Alegre, Engenheiro Eletricista pela UFRGS com ênfase em Sistemas Digitais e mestre em Engenharia Elétrica pela PUC em Gestão de Sistemas de Telecomunicações. Possui +10 anos de experiência na gestão de P&D e de times de engenharia e +15 anos no desenvolvimento de sistemas embarcados. Seus maiores interesses são aplicação de RH Estratégico, Gestão em Tecnologia Embarcada e Sistemas Digitais de alto desempenho em FPGA. Atualmente, é escritor e colunista, parte do editorial do Embarcados (https://www.embarcados.com.br) e do Repositório (https://www.repositorio.blog), é membro do CIESP, do Conselho Municipal de Ciência e Tecnologia de Campinas, consultor técnico pela Repo e trabalha Gerente de Software na Espressif Brasil.

Sem licença Creative Commons

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Home » Hardware » Sistemas Digitais » Projetos para Começar com HDL
Comentários:
Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Francisco Fambrini
Francisco Fambrini
12/08/2019 09:51

Sugestão: escolha um destes exemplos e detalhe.

Talvez você goste:

Nenhum resultado encontrado.

Séries

Menu