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 portas 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 o exemplo 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 algunas 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 concateçã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. Como transformar essa RAM ter valor inicial?
  2. Como fazer essa RAM em uma ROM?
  3. Simular. Sempre simular.

O que você vai aprender?

  • 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 como 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. Implementar a FIFO com um relógio para escrita e outro para leitura (fifo assíncrona)
  5. Simular (e seria diferente?)

 

O que você vai aprender?

  • A fifo é um dos métodos para troca de domínio de relógio entre dois relógios rápidos.
  • Usar lógica GREY para mudar de endereço (existe um conversor binário-grey na lista da Wikipedia).
  • Usar máquinas de Estados.
  •  

Mas... Tudo isso é muito complicado!

 

Se está complicado, procure mais informação antes de cada exercício. Aqui no embarcados, existem vários links para artigos mais fundamentais. Leia alguns, 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.

NEWSLETTER

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Ricardo Tafas
Ricardo F. Tafas Jr é Engenheiro Eletricista pela UFRGS com ênfase em Sistemas Digitais e mestre em Engenharia Elétrica pela PUC com ênfase em Gestão de Sistemas de Telecomunicações. É também escritor e autor do livro Autodesenvolvimento para Desenvolvedores. Possui +10 anos de experiência na gestão de P&D e de times de engenharia e +13 anos no desenvolvimento de sistemas embarcados. Seus maiores interesses são aplicação de RH Estratégico, Gestão de Inovação e Tecnologia Embarcada como diferenciais competitivos e também em Sistemas Digitais de alto desempenho em FPGA. Atualmente, é editor e escreve para o "Repositório” (https://www.repositorio.blog), é membro do editorial do Embarcados (https://www.embarcados.com.br) e é Especialista em Gestão de P&D e Inovação pela Repo Dinâmica - Aceleradora de Produtos.

1
Deixe um comentário

avatar
 
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Francisco Fambrini Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Francisco Fambrini
Visitante
Francisco Fambrini

Sugestão: escolha um destes exemplos e detalhe.