¿Proyectos novatos en un FPGA?

11

Me faltan dos semanas para completar mi primer curso de diseño de lógica digital de la universidad, y aparentemente no habrá un proyecto final, solo un examen final tedioso.

Entonces, como haría cualquier estudiante curioso, investigué qué son realmente los FPGA y qué me dieron de comer en la clase. Y he decidido completar un proyecto simple de FPGA. Estoy usando un FPGA Basys2 Spartan-3E, y estoy familiarizado con la lógica digital y el uso de ISE para empujar las puertas lógicas, pero no conozco VHDL / Verilog (estoy seguro de que podría aprenderlo fácilmente).

¿Alguien tiene alguna idea de proyecto para un principiante? He hecho muchas demostraciones de laboratorio, pero nada demasiado elegante.

Chetan Bhargava
fuente
Lista de deseos: pantalla de video de 1080p, ... qué digo, me detengo allí :-)
Russell McMahon
1
Consulte el sitio fpga4fun.com .
armf
3
Cuidado con los paneles de desarrollo de fpga4fun.com. Su documentación es una mierda, y se niegan a publicar los esquemas de la placa de desarrollo .
Connor Wolf

Respuestas:

5

Encontré que "PGA Chu" FPGA Prototyping By Verilog Ejemplos: Xilinx Spartan-3 Version "es un libro muy útil. Está destinado a una placa Spartan-3 diferente de la que mencionó, pero aún así debería ser útil.

También hay una edición VHDL si prefiere ir por esa ruta

Jim A
fuente
4

Tienes VGA en eso por lo que parece. El video siempre me interesa en mi experiencia :)

Aquí hay un plan que puede probar (no se requiere framebuffer):

  1. Obtenga una pantalla VGA en color puro
  2. mostrar un desvanecimiento horizontal de negro a color sólido
  3. Ahora se desvanecen verticalmente de negro a rojo y horizontalmente de negro a verde 3a. (crea un fondo más interesante especificado algorítmicamente que puedas renderizar en tiempo real)
  4. cree un motor de sprites simple que superponga una pequeña forma arbitraria en una ubicación arbitraria; puede usar 1 BRAM para los datos del sprite
  5. mostrar algunos sprites diferentes (1 BRAM cada uno)
  6. cree alguna lógica de actualización para hacer que los sprites reboten (y se separen): agregue detección de colisión a la lógica del sprite.
  7. crea un sprite "paddle" que puedes controlar con los interruptores, úsalo para evitar que los sprites salgan de la pantalla
  8. Añadir algún mecanismo de puntuación

Creo que todo debería caber en un 250E. (El reloj VGA es lento en términos de FPGA, por lo que puede multiplicarse por 4-8x con el DCM que permitirá que un motor de sprites se multiplexe en más de una instancia de sprite)

Martin Thompson
fuente
3

Este curso en línea gratuito escrito por Hamster es increíble y está escrito con Basys 2 y Nexys 2 en mente.

Yo personalmente usé Basys 2 y aprendí un montón al pasar por este curso. Repasa todos los aspectos del tablero de Basys y muchos conceptos para llevar a cabo la mayoría de los proyectos más allá del curso.

MLM
fuente
2

Como con todo lo demás, comience con un proyecto hello world , en este caso, parpadee un LED y haga que su período sea variable solo por diversión.

Para hacer eso, necesitará aprender a construir un contador en Verilog / VHDL. Es un buen comienzo para aprender las complejidades de HDL porque aprenderá a:

  1. Inferir operaciones de hardware: usar código RTL en lugar de código de nivel de puerta. Aprenderá a diseñar un contador de subida / bajada precargable y reiniciable con código RTL.
  2. Aprenda a hacer un diseño sincrónico, que es para lo que la mayoría de los FPGA son buenos de todos modos y es la base de casi todos los diseños de sistemas digitales.
  3. Aprenda cómo interactuar con el mundo exterior, utilizando E / S de FPGA. Esto le enseñará cómo configurar e implementar cosas en un FPGA.

Una vez hecho esto, ve a opencores y comienza a piratear proyectos más grandes. Encontrarás muchos otros proyectos divertidos de algunos de nuestros miembros aquí, incluido el tuyo de verdad. :)

sybreon
fuente
1

Martin sugiere que tienes capacidad VGA.

¿Qué pasa con un "marco de fotos" decente que permite un mejor control de las fotos que cualquier otro disponible típicamente?

  • La mayoría maneja los subdirectorios mal.

  • Casi ninguno permite el orden de visualización aleatoria, lo cual es una ventaja muy importante cuando tiene un gran número de fotos.

  • Posibilidad de inventar una presentación de diapositivas basada en fotos seleccionadas. (Ver Irfanview para ejemplos).

  • Puntos extra: agregue la capacidad de reproducción de MP3. Intercalar música con fotos.

  • Almacén de datos SD Flash.

  • ¿USB?

  • 802.11? (demasiado para esperar)

Russell McMahon
fuente
1

He estado trabajando con la placa NEXYS2 y el texto asociado de Digilent. Es caro pero ha sido una buena experiencia.

Will Ware
fuente
0

El libro de Hamblen et al está lleno de proyectos interesantes para los tableros Altera Cyclone DE1 y DE2; Se suministra el código VHDL. Implemente algunos de ellos en su placa Spartan-3E.

Leon Heller
fuente
0

Una de las primeras cosas que debe hacer es descargar (del proveedor o de un sitio entusiasta) y crear un proyecto esqueleto que conecte las entradas a las salidas; esto puede ser extremadamente frustrante para trabajar hasta que tenga algo de experiencia.

Luego, puede comenzar a poner lógica entre máquinas de estado para ejemplos artificiales como los que tuvo en clase, o más complicados, como los generadores de video que otros recomiendan. Bloques más complicados como simples procesadores de bricolaje, etc.

Chris Stratton
fuente
0

Cuando tomé mi curso de VHDL, hice un microprocesador con ALU con algunas instrucciones, comunicación de memoria y secuenciador de microinstrucciones. Lleva más tiempo del que crees que tomará, especialmente si quieres hacerlo robusto.

Gorgen
fuente
Lo mismo (debe ser un profesor favorito). Fue un desafío sorprendentemente bueno y realmente me hizo pensar en cómo funcionan realmente los procesadores.
Al Bennett