Étape 6: démonstration
S’il vous plaît regardez cette vidéo pour voir une démonstration de notre système d’alarme.
Obtenir le code complet est comme suit :
module finalproject (armedIn, faisceau, clk, disarmedIn, armedState, beamOut, disarmedState, orateur, SSD, SSD1, SSD2, triggeredState) ;
armedIn d’entrée ;
faisceau d’entrée ;
clk d’entrée ;
disarmedIn d’entrée ;
sortie reg armedState = 0 ;
sortie beamOut ;
sortie reg disarmedState = 1 ;
sortie haut-parleur ;
sortie [6:0] SSD, SSD1, SSD2 ;
sortie reg triggeredState = 0 ;
paramètre on = 1 ;
paramètre off = 0 ;
beamOut affecter = faisceau ; indiqué sur ledg0 si le faisceau est rompu
Je regarde toutes les entrées
toujours disarmedIn, faisceau)
commencer
if (armedIn)
commencer
armedState < = on ;
disarmedState < = off ;
fin
if (disarmedIn)
commencer
armedState < = off ;
disarmedState < = on ;
triggeredState < = off ;
fin
if ((Beam == 0) & & (armedState == 1) & & (disarmedState == 0))
triggeredState < = on ;
fin
armedStatusDisplay display1(armedState,SSD,SSD1,SSD2) ; affiche l’état actuel de l’alarme sur SSD
f alarm1 (speaker, clk, triggeredState) ; la sonnette d’alarme
endmodule
code dans le module d’alarme est tiré de http://www.fpga4fun.com/MusicBox1.html et modifié
module f (speaker, clk, triggeredState) ;
clk d’entrée ;
triggeredState d’entrée ;
sortie haut-parleur ;
paramètre clkdivider = 25000000/440/2 ;
reg [23:0] ton ;
toujours posedge clk)
if (triggeredState == 1)
ton < = tonalité + 1 ;
reg [14:0] compteur ;
toujours posedge clk)
if (triggeredState == 1)
commencer
if (compteur == 0)
compteur < = ([23] le ton? clkdivider-1: clkdivider/2-1) ;
d’autre
compteur < = compteur-1 ;
fin
Président reg ;
toujours posedge clk)
if (triggeredState == 1)
if (compteur == 0)
haut-parleur < = ~ haut-parleur ;
endmodule
module armedStatusDisplay (armedState, SSD, SSD1, SSD2) ;
armedState d’entrée ;
sortie reg [6:0] SSD, SSD1, SSD2 ;
toujours
commencer
SSD2 = 7' b0000001 ;
if (armedState == 1)
commencer
SSD = 7' b1111111 ;
SSD1 = 7' b0001001 ;
fin
d’autre
commencer
SSD = 7' b0111000 ;
SSD1 = 7' b0111000 ;
fin
fin
endmodule
Obtenir le code complet dans un fichier .zip est joint ci-dessous.