Paso 6: El diseño
A continuación necesitamos comenzar el diseño real del compositor. El primer bloque de proceso funcionará como un divisor de frecuencia. Una declaración de proceso del ejemplo es como se muestra en la figura 3.
Ahora haremos uso de la señal de 50 megaciclos de reloj para esto. La idea es incrementar el contador hasta que alcanza un valor umbral y entonces cambiar a temp_out cada vez que llega a este valor. Esto nos dará una frecuencia más baja y más lenta que representa la frecuencia de la nota. Por ejemplo, la nota A es 440Hz. Podemos obtener esta frecuencia de reloj dividiendo 50MHz 440Hz. Entonces tomamos este valor y cuando el contador alcanza este valor, alternar temp_out, más simplemente incrementar el contador.
Una vez que hemos dividido la frecuencia en cada una de las notas dadas, nos debemos comprobar si se presiona el interruptor correspondiente de la nota. Esto se hace comprobando el valor de la nota. Si la nota es "000", se pulsa el interruptor para NOTA A. Si la nota es "010", luego se presiona Nota C y así sucesivamente.
Por último, debemos asegurarnos de notas sólo pueden jugar en el flanco ascendente de reloj. Esto se hace por encerrar en un if instrucción que detecta un flanco ascendente. Debería verse como cuadro 4.