Conversión de reloj de madera a FPGA

[John] quería un proyecto que le ayudara a aprender más sobre FPGA. Entonces comenzó con su reloj de madera, hecho con Arduino, y lo llevó a Lattice FPGA con Icestorm. Es bueno que lo guíe a través de los pasos que usó para simular el proyecto con el simulador Falsted y luego implementarlo en la FPGA. Dado que recién está comenzando, es una buena apuesta que se haya enfrentado a las mismas asperezas que usted (o lo hizo), y a veces eso realmente puede ayudarlo a superar la joroba. Puede ver un video a continuación y el código del proyecto está en GitHub.

Por ejemplo, después de burlarse de un proyecto de circuito en Falstad, se dio cuenta de que podía hacer un gran contador en lugar de varios módulos, y lo contrasta con un enfoque más modular. También encontró una función simple para Arduino pero difícil para FPGA. Lo encendió, pero requirió un poco de esfuerzo de optimización para hacer coincidir todo con el FPGA relativamente pequeño que usaba.

La motivación original para [John] estaba viendo como [Mattvenn] creó un periférico personalizado para la CPU RISC-V. En ese caso, tiene una CPU completa disponible, pero estamos de acuerdo en que fue prudente no comenzar con eso como un primer proyecto.

También nos gustó el enfoque de pensar en la lógica primero y luego pasar al Verilog. De acuerdo, si tiene mucha experiencia, es costumbre omitir ese paso y simplemente visualizar la lógica deseada en Verilog, pero eso viene con la experiencia.

Hemos escrito mucho sobre el proyecto Icestorm en el pasado, incluidos nuestros propios tutoriales iniciales. Pero a veces, elegir ejemplos y proyectos iniciales puede facilitar las cosas.

  • zaprodk dice:

    Falster / Falstad (ortografía)

  • Artenz dice:

    En lugar de "if (calc[3] y calcular[0]) start // 9 ", es más fácil escribir" if (d0 == 9) "

    Tampoco usaría 4 módulos, ni una calculadora larga, sino 4 calculadoras más pequeñas:

    reg [3:0] d0;
    reg [2:0] d1;

    y luego puedes hacer d1

    • Johnwhitt dice:

      El módulo cuenta contadores más pequeños: https://github.com/tuna-f1sh/wooden-bits-fpga/blob/master/counter.v#L8. Sin embargo, los mantuve los 4 bits, para facilitar la visualización de mi diseño de reloj de matriz cuadrada. Si no me equivoco, aún debe restablecer un módulo para un reloj BCD de 3/2 bits; de lo contrario, contará hasta 7/3.

      La razón de la lógica de bits en lugar de comparar fue que leí en alguna parte que ofrece cierta optimización porque no creará una puerta comparando todos los bits, solo los bits que se van a leer. La optimización puede ocurrir en la síntesis, ¡pero vale la pena aclararlo!

      • Artenz dice:

        Aludí al contador largo aquí: https://github.com/tuna-f1sh/wooden-bits-fpga/blob/master/binary_clock.v en lugar de escribir un cálculo[6:4]

        Es cierto, pero la diferencia en FPGA es mínima, y ​​las herramientas pueden incluso ser lo suficientemente inteligentes como para mejorarlo. Concéntrese mejor en la legibilidad y optimice solo cuando no cumpla con los límites de área / tiempo.

  • Johnwhitt dice:

    Gracias por compartir Al. Tus tutoriales iniciales fueron la principal referencia durante mi aprendizaje.

  • Nathan Kebert Xela Diniz dice:

    ¿Qué multímetro hay en esa toma?

Matías Jiménez
Matías Jiménez

Deja una respuesta

Tu dirección de correo electrónico no será publicada.