Paso 6: demostración
Por favor vea el video adjunto para ver una demostración de nuestro sistema de alarma.
El código completo es el siguiente:
módulo hetereogéneos (armedIn, viga, clk, disarmedIn, armedState, beamOut, disarmedState, altavoz, SSD, SSD1, SSD2, triggeredState);
armedIn entrada ;
Haz de entrada ;
entrada clk;
disarmedIn entrada ;
armedState reg de salida = 0;
beamOut de salida ;
salida reg disarmedState = 1;
salida de altavoz;
salida [6:0] SSD, SSD1, SSD2;
triggeredState reg de salida = 0;
parámetro a = 1;
parámetro off = 0;
asignar beamOut = viga; indicado en ledg0 si la viga está quebrada
ver todas las entradas
siempre disarmedIn, rayo)
comenzar
if (armedIn)
comenzar
armedState < =;
disarmedState < = off;
final
if (disarmedIn)
comenzar
armedState < = off;
disarmedState < =;
triggeredState < = off;
final
if ((Beam == 0) & & (armedState == 1) & & (disarmedState == 0))
triggeredState < =;
final
display1(armedState,SSD,SSD1,SSD2) de armedStatusDisplay; muestra el estado actual de la alarma en SSD
alarmSound alarm1 (altavoz, clk, triggeredState); sonar la alarma
endmodule
código en el módulo de alarma se toma de http://www.fpga4fun.com/MusicBox1.html y modificada
módulo alarmSound (altavoz, clk, triggeredState);
entrada clk;
triggeredState entrada ;
salida de altavoz;
parámetro clkdivider = 25000000-440/2;
reg [23:0] tono;
siempre clk del posedge )
if (triggeredState == 1)
tono de < = tono + 1;
reg [14:0] contador;
siempre clk del posedge )
if (triggeredState == 1)
comenzar
if (contador == 0)
contador < = ([23] el tono? 1 clkdivider: clkdivider/2-1);
otra cosa
contador < = contador-1;
final
altavoz de reg ;
siempre clk del posedge )
if (triggeredState == 1)
if (contador == 0)
altavoz < = ~ altavoz;
endmodule
módulo armedStatusDisplay (armedState, SSD, SSD1, SSD2);
armedState entrada ;
salida reg [6:0] SSD, SSD1, SSD2;
siempre
comenzar
SSD2 = 7' b0000001;
if (armedState == 1)
comenzar
SSD = 7' b1111111;
SSD1 = 7' b0001001;
final
otra cosa
comenzar
SSD = 7' b0111000;
SSD1 = 7' b0111000;
final
final
endmodule
El código completo en un archivo .zip se coloca por debajo.