Paso 8 FPGA secuenciador y sintetizador (2 / 6 paso)

Paso 2: Componentes del circuito

Diseño de los componentes:

Para poder implementar un sintetizador en el tablero de SDMONexys 2 FPGA, varios componentes deben ser diseñados. A partir de las salidas, los módulos deberán manejar encender LED y salida de funciones de onda cuadradas al altavoz. También se necesitarán módulos debounce entradas de botón y generar un pulso de reloj solo una pulsación. Por último, módulos como contadores, flip-flop, multiplexores se necesitarán para manejar la lógica restantes de almacenar notas y reproducir secuencias correctamente.

La lista siguiente contiene una breve descripción de lo que hace cada componente de este proyecto, cómo cada componente está siendo utilizado y cómo implementar estos componentes en VHDL:

Botón de alternar: En el caso del botón de play/pause, queremos alternar entre dos Estados exactamente una vez cuando se presiona el botón. Para ello, utilizamos una máquina de estados finitos (FSM). Así, después de la transición entre Estados una vez que el circuito de alternar botón no permitirá que otra transición de estado a ocurrir hasta que el botón ha sido liberado y luego vuelva a presionar. Arriba se muestra un diagrama que representa este FSM.

La máquina de estado finito contiene dos Estados para cada salida posible. Comenzando en la parte superior del diagrama del FSM, el circuito es en el estado de pausa. Tan pronto como se pulsa el botón, el circuito irá al estado de juego. Permanecerá en este primer estado del juego hasta que se suelta el botón. Ahora, el circuito es todavía en el estado de juego, pero está listo para el botón al ser presionado otra vez a la transición al estado de pausa. Del mismo modo, el circuito una vez más se espera el botón para ser lanzado antes de que sea listo para cambiar el estado del juego.

Divisor del reloj: El circuito divisor de reloj simplemente convierte la frecuencia de 50 MHz de 2 SDMONexys a una frecuencia mucho menor. Esto se utiliza para establecer el valor de BPM (beats por minuto) del sintetizador. En este proyecto estamos utilizando un módulo VHDL escrito por Bryan Mealy de California Polytechnic State University, San Luis Obispo.

Contra: Un contador de salidas simplemente un número binario. Cuando su entrada es alta, aumentará este número 1 en el flanco ascendente de reloj. Los contadores utilizados en este circuito utiliza T flip-flops para almacenar un número de 3 bits. Cada flip-flop representa un bit almacenado. El flip-flop que representa el bit menos significativo alternará cada vez que el contador va a incrementar. Otros flip-flop cambiará cuando todos bits por debajo de ellos son iguales a uno. Este comportamiento también lo hará así cuando el contador alcanza el más alto 111(binary) número, posible, volverá a cero cuando se incrementa a continuación.

En este proyecto, se utiliza un contador de ritmo actual para que el orador sabe que tono para jugar, así que puede activar el LED correcto. Un contador también se utiliza para mantener el tono actual que puede ser introducido por el usuario.

Debouncer: Los botones en el tablero de SDMONexys 2 FPGA no son perfectos. Idealmente, cuando presiona los contactos toquen exactamente una vez y permanecer juntos hasta que se suelta el botón. En realidad, los contactos tienen una tendencia a "rebotar" en múltiples ocasiones, que cuando se presiona el botón los contactos vendrán dentro y fuera de contacto varias veces antes de pegar. En cuanto a nuestro sintetizador, esto podría conducir a un botón de play/pause que pasa entre los dos Estados varias veces cuando se presiona el botón y no se garantiza que la tierra en la correcta. Para contrarrestar esto, un circuito debounce esperar cierto tiempo para la entrada "establecerse".

En este proyecto hemos utilizado un módulo VHDL escrito por Scott Larson de Digi-key, publicado originalmente en el wiki EE de Digi-key.

Generador de pulso: Los contadores utilizados en este proyecto avanzará junto con una cierta frecuencia de reloj como se habilitan. Para algunas funciones, tales como incrementar la frecuencia cuando se presiona el botón para cambiar el tono actual, podríamos querer incrementar un contador solamente una vez con cada pulsación. Esto requiere tomar una entrada y convertirla en un pulso con una duración de ciclo de exactamente un reloj. El circuito del generador de pulso hará esto. Cuando su entrada va a alto, su salida va alta para ciclo de exactamente un reloj. Esto se logra mediante un seguimiento de la entrada de corriente para un determinado borde de levantamiento del reloj, así como la entrada anterior para el último flanco ascendente de reloj. En el caso donde la entrada de la corriente es alta y la entrada anterior es baja, la salida es alta. De lo contrario, la salida es baja. En VHDL, esto se logra mediante un modelo de comportamiento. Un bloque de proceso comprueba los valores de los incr del valor de entrada y la entrada anterior incr_prev en el flanco ascendente del reloj. Si incr es uno y incr_prev es cero, la salida q se encuentra a uno. De lo contrario, q se ponga a cero. Finalmente, incr_prev obtiene el valor de incr.

sseg_dec: Este circuito toma un binario con 8 bits de entrada y muestra como un número decimal en el display de siete segmentos Nexys2. En este proyecto, estamos utilizando un módulo VHDL escrito por Bryan Mealy de California Polytechnic State University, San Luis Obispo.

Cuadrado generador de ondas: Este componente genera una onda cuadrada basada en una entrada de 3 bits. Lo hace dividiendo la señal de entrada de reloj por un número específico para lograr la frecuencia deseada. La salida se enciende y apaga según esta frecuencia. Hay siete frecuencias predeterminadas, basadas en la escala pentatónica, que representa las notas desde A4 hasta C6. Las frecuencias de estos tonos van de 440 Hz a Hz 1046,5. Si la entrada es 000(binary), no se juega onda cuadrada.

Artículos Relacionados

Primeros pasos con fpga de xilinx

Primeros pasos con fpga de xilinx

Campo programable Gate Arrays (FPGAs) son dispositivos semiconductores que se basan en una matriz de bloques de lógica configurables (CLBs) conectado vía programable interconecta. En este tutorial voy a explicar cómo programar FPGAs de Xilinx usando
Super sencillo de 10 pasos de arduino secuenciador

Super sencillo de 10 pasos de arduino secuenciador

Este secuenciador es tan simple que sólo necesita un paso para mostrarle cómo! Ahora es un secuenciador del 10 paso, pero podría fácilmente ser más justo al cambiar la variable "paso" en el código.https://Instagram.com/p/2_uf05wwEc/Todo lo que n
Secuenciador de paso multitonal y ruido de arte Sonic Blaster. E.Z. mi propio código de principiante.

Secuenciador de paso multitonal y ruido de arte Sonic Blaster. E.Z. mi propio código de principiante.

Mi primer arduino thing.simply entendido y bastante jerga liberan .drawing que muestra la teoría de los cables, conceptos básicos código explicaron lo mejor que puedamodo 1 es 33variable multitonos ruido máquina, total mayhem.el modo 2 es código 24st
Sintetizador MIDI programable con Intel Edison y Csound

Sintetizador MIDI programable con Intel Edison y Csound

Es un controlador MIDI como el teclado de una computadora, pero en lugar de enviar caracteres a la computadora, enviar notas (y un montón de información adicional acerca de cómo se juega la nota). Usted puede aprender más sobre controladores MIDI aqu
SoundFont MIDI Sintetizador con Intel Edison y Fluidsynth

SoundFont MIDI Sintetizador con Intel Edison y Fluidsynth

En este Instructable, te voy a mostrar cómo construir su propio sintetizador MIDI SoundFont utilizando Intel Edison y Fluidsynth.Siguiendo los pasos descritos aquí, tendrás un sintetizador que puede reproducir casi cualquier SoundFont disponibles en
Convertir un juguete rescatado de un controlador MIDI

Convertir un juguete rescatado de un controlador MIDI

en este Instructable, le guiará a través del proceso de convertir un rescatados sonoros juguete de los niños en un instrumento realmente útil mediante MIDI! Tome un momento para simplemente echar un vistazo sobre los títulos de los pasos en este Inst
Arpegiador Con Arduino (polymath3)

Arpegiador Con Arduino (polymath3)

En este instructable construiremos una caja producen arpegios con un sonido de sintetizador, creado por una onda triangular. A esta colección de efectos y aparatos de música la llamo PolyMath. Pueden revisar este mezclador y esta otra generadora de r
Construir una red neuronal sintética

Construir una red neuronal sintética

A principios de este año (2015) terminé de construir y probar una sola neurona digital asincrónica. Ahora he terminado de construir una red de 36 de ellos. La mayor parte de este trabajo ha sido en la construcción de soporte hardware para la red neur
Parpadeo de los LEDs de un Zedboard usando Bluespec y Connectal

Parpadeo de los LEDs de un Zedboard usando Bluespec y Connectal

En este tutorial, a compilar y ejecutar un proyecto de Connectal en su Zedboard. Aunque muchos de los pasos se cubren una vez más, recomendamos que usted intente construir y simular un proyecto como se muestra en cómo crear y ejecutar un ejemplo de B
Cómo elegir el software para usar con un tablero de Digilent

Cómo elegir el software para usar con un tablero de Digilent

Digilent es una empresa que fabrica hardware para ingeniería estudiantes y aficionados. Así que pides un Consejo, viene en el correo, y pregunto, qué software necesito para utilizar mi tabla de Digilent. Bien he creado un organigrama práctico para gu
EL caramelo de ojo de cable

EL caramelo de ojo de cable

este proyecto utiliza alambre electroluminiscente (a.k.a. "EL alambre") para crear un brillante, intermitente, pedazo de spinning de vistosidad que podría ser utilizado como decoración, una luz para una fiesta, o simplemente para tomar fotos coo
Freestyle Gigapixel Panorama

Freestyle Gigapixel Panorama

No trípode necesitada. Tomar grupos de fotos desde cualquier ángulo y sin Photosynth software crea un panorama 3D. ¡ Disparar tan rápido como sea posible desde todos los ángulos freestyle. Con Photosynth, incluso un simple apuntar y disparar puede cr
Cómo hackear Happy Meal Minion un McDonalds en un silbato deslizante eléctrico

Cómo hackear Happy Meal Minion un McDonalds en un silbato deslizante eléctrico

Cómo Hack Phil McMinion:¿Que no le gusta Minions de la película Gru Me? .. .pues cuando McDonalds recientemente tenía secuaces como el premio en sus Happy Meals, tuve que hacer varios viajes para recoger algunos. Una de la más fresca en busca de esto
Rueda libre invertido péndulo Control

Rueda libre invertido péndulo Control

Este proyecto se basó en el Proyecto Cubli de ETH Zurich. El Cubli es un cubo que tiene tres ruedas de reacción para controlar el equilibrio de los x, y, z planos y del cubo. Esto permite que el cubo de equilibrio a sí mismo en un borde o una esquina