Stap 6: demonstratie
Gelieve de bijgevoegde video voor een demonstratie van onze alarmsysteem.
De volledige code is als volgt:
module finalproject (armedIn, balk, clk, disarmedIn, armedState, beamOut, disarmedState, spreker, SSD, SSD1, SSD2, triggeredState);
invoer armedIn;
input lichtbundel;
input clk;
invoer disarmedIn;
uitvoer reg armedState = 0;
uitvoer beamOut;
reg uitvoer disarmedState = 1;
uitgang luidspreker;
uitgang [6:0] SSD, SSD1, SSD2;
uitvoer reg triggeredState = 0;
met de parameter ingeschakeld = 1;
met de parameter uitgeschakeld = 0;
toewijzen van beamOut = straal; op de ledg0 vermeld, indien de lichtbundel gebroken is
kijken naar alle van de ingangen
altijd disarmedIn, lichtbundel)
beginnen
if (armedIn)
beginnen
armedState < = op;
disarmedState < = off;
einde
if (disarmedIn)
beginnen
armedState < = off;
disarmedState < = op;
triggeredState < = off;
einde
if ((Beam == 0) & & (armedState == 1) & & (disarmedState == 0))
triggeredState < = op;
einde
armedStatusDisplay display1(armedState,SSD,SSD1,SSD2); geeft de huidige status van het alarm op SSD
alarmSound alarm1 (spreker, clk, triggeredState); de noodklok te luiden
endmodule
code in alarm module is overgenomen uit http://www.fpga4fun.com/MusicBox1.html en bewerkt
module alarmSound (spreker, clk, triggeredState);
input clk;
invoer triggeredState;
uitgang luidspreker;
met de parameter clkdivider = 25000000/440/2;
reg [23:0] Toon;
altijd posedge clk)
if (triggeredState == 1)
Toon < = Toon + 1;
reg [14:0] teller;
altijd posedge clk)
if (triggeredState == 1)
beginnen
if (teller == 0)
counter < = (Toon [23]? clkdivider-1: clkdivider/2-1);
anders
counter < = teller-1;
einde
reg spreker;
altijd posedge clk)
if (triggeredState == 1)
if (teller == 0)
spreker < = ~ spreker;
endmodule
module armedStatusDisplay (armedState, SSD, SSD1, SSD2);
invoer armedState;
uitvoer reg [6:0] SSD, SSD1, SSD2;
altijd
beginnen
SSD2 = 7' b0000001;
if (armedState == 1)
beginnen
SSD = 7' b1111111;
SSD1 = 7' b0001001;
einde
anders
beginnen
SSD = 7' b0111000;
SSD1 = 7' b0111000;
einde
einde
endmodule
De volledige code in een .zip-bestand is die hieronder zijn toegevoegd.