Paso 2: Código de Verilog
Abra el software Quartus II. crear un nuevo proyecto y un nuevo archivo de verilog. copia el siguiente código:
(módulo) metronew
reloj de entrada / / reloj interno 50MHz
entrada [17:0] en / / SW0-17
entrada tapup, / / clave3
entrada tapdown, / / clave2
entrada de reset, / / KEY0
salida spk, / / GPIO (altavoz)
salida [7:0] led, / / LEDG0-7
salida reg [0:6] hex0, hex10, hex100); //HEX0-2
/ * entero * /
counter1 entero;
Integer counttap = 1;
bpm entero;
velocidad de entero;
/ * reg * /
Estado reg [7:0];
/ * asignar * /
asignar led = estado;
asignar spk = estado [0] |state [7];
/ * siempre * /
siempre tapup, tapdown) comienzan
hex0 = 7' b0000001;
Tempo se muestra en la pantalla de siete segmentos de los interruptores,
sistemas bpm a dado tempo
Si (en [0] == 1) comienzan
hex100 = 7' b0000001; 0
hex10 = 7' b0100000; 6
velocidad = 60;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [1] == 1) comienzan
hex100 = 7' b0000001; 0
hex10 = 7' b0001111; 7
velocidad = 70;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [2] == 1) comienzan
hex100 = 7' b0000001; 0
hex10 = 7' b0000000; 8
velocidad = 80;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [3] == 1) comienzan
hex100 = 7' b0000001; 0
hex10 = 7' b0001100; 9
velocidad = 90;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [4] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b0000001; 0
velocidad = 100;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [5] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b1001111; 1
velocidad = 110;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [6] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b0010010; 2
velocidad = 120;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [7] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b0000110; 3
velocidad = 130;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [8] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b1001100; 4
velocidad = 140;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [9] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b0100100; 5
velocidad = 150;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [10] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b0100000; 6
velocidad = 160;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [11] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b0001111; 7
velocidad = 170;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [12] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b0000000; 8
velocidad = 180;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [13] == 1) comienzan
hex100 = 7' b1001111; 1
hex10 = 7' b0001100; 9
velocidad = 190;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [14] == 1) comienzan
hex100 = 7' b0010010; 2
hex10 = 7' b0000001; 0
velocidad = 200;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [15] == 1) comienzan
hex100 = 7' b0010010; 2
hex10 = 7' b1001111; 1
velocidad = 210;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [16] == 1) comienzan
hex100 = 7' b0010010; 2
hex10 = 7' b0010010; 2
velocidad = 220;
BPM = velocidad 49999999 * 120;
final
otra cosa si (en [17] == 1) comienzan
hex100 = 7' b0010010; 2
hex10 = 7' b0000110; 3
velocidad = 230;
BPM = velocidad 49999999 * 120;
final
comenzar otra
hex100 = 7' b0100100; s
hex10 = 7' b0110000; e
hex0 = 7' b1110001; l
velocidad = 60;
BPM = (49999999) / ((counttap/49999999) * 32) * 160;
final
final
siempre @ (reloj del posedge) comienzan
counter1 < = counter1 + 1;
aumenta o disminuye el ritmo utilizando claves
if(RESET == 0) comenzar
counttap = 1;
final
if(tapup == 0) comenzar
counttap = counttap + 1;
final
if(tapdown== 0) comenzar
counttap = counttap - 1;
final
se enciende LEDs en secuencia
Si (counter1 < = bpm/14 * 1) comienzan
estado = 0;
Estado [0] = 1;
final
else if (counter1 < = bpm/14 * 2) comienzan
estado = 0;
Estado [1] = 1;
final
else if (counter1 < = bpm/14 * 3) comienzan
estado = 0;
Estado [2] = 1;
final
else if (counter1 < = bpm/14 * 4) comienzan
estado = 0;
Estado [3] = 1;
final
else if (counter1 < = bpm/14 * 5) comienzan
estado = 0;
Estado [4] = 1;
final
else if (counter1 < = bpm/14 * 6) comienzan
estado = 0;
Estado [5] = 1;
final
else if (counter1 < = bpm/14 * 7) comienzan
estado = 0;
Estado [6] = 1;
final
else if (counter1 < = bpm/14 * 8) comienzan
estado = 0;
Estado [7] = 1;
final
else if (counter1 < = bpm/14 * 9) comienzan
estado = 0;
Estado [6] = 1;
final
else if (counter1 < = bpm/14 * 10) comienzan
estado = 0;
Estado [5] = 1;
final
else if (counter1 < = bpm/14 * 11) iniciar
estado = 0;
Estado [4] = 1;
final
else if (counter1 < = bpm/14 * 12) comienzan
estado = 0;
Estado [3] = 1;
final
else if (counter1 < = bpm/14 * 13) comienzan
estado = 0;
Estado [2] = 1;
final
else if (counter1 < = bpm) comienzan
estado = 0;
Estado [1] = 1;
final
restablece counter1 cuando sale 50 millones
else if (counter1 == bpm) empezar / / 50M (2seconds)
Estado [0] = 0;
counter1 < = 0;
final
comenzar otra
Estado [0] = 0;
counter1 < = 0;
final
final
endmodule