Projetos para Começar com HDL

biblioteca chip2

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 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, 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 bursts 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áquionas 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.
  • 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 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.

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

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

[wpseo_breadcrumb]
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
Privacy Settings saved!
Configurações de Privacidade

Entenda quais dados e informações usamos para ter melhor entrega de conteúdo personalizado para você.

These cookies are necessary for the website to function and cannot be switched off in our systems.

Para usar este site, usamos os seguintes cookies tecnicamente exigidos

  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec

Decline all Services
Accept all Services