FPGA larmsystem (3 / 7 steg)
Steg 3: Display Module
Modulen displayen använder SSD för att visa om larmet är "På" eller "Av". Detta används värdena för de beväpnade och avväpnade tillståndsvariabler. Beroende på input tänds modulen vissa segment av displayen. Se den andra bilden i detta avsnitt att veta vilka segment tänds. Se den första bilden av detta avsnitt för att se hur SSD ser ut när segmenten lyser.
När beväpnade staten är på (input är 1), två skärmar kommer att användas, en för varje bokstav i ordet "på". Den första visningen, alla segment men nummer 6 kommer att lysa. Andra visningen kommer att ha segment 0, 1, 2, 4 och 5 lit (kunde också använda segment 2, 4 och 6).
När avväpnade staten är på (input är 1), tre skärmar kommer att användas, en för varje bokstav i ordet "av". Den första visningen kommer att vara samma som den första visningen för när systemet är på. De andra och tredje visar måste båda segment 0, 4, 5, 6 kommer att lysa.
SSD är låg nivå känsliga, vilket innebär att de lyser upp när de är 0. Etiketterna i den andra bilden berätta den position där 0 ska placeras för att bilda den form du vill. Till exempel, att göra brevet 'n ", segment 0, 1, 2, 4 och 5 måste vara tända, vilket innebär alla de ståndpunkter kommer att vara noll. De andra ståndpunkterna, i detta fall positioner 3 och 6, kommer att vara 1. Därför att göra brevet 'n' 7 lite binära som kommer att matas till stiften är 0001001. Eftersom varje bräda är olika, kan du ha att reservera numren i din styrelse specifikt, men detta är hur de alla ska arbeta.
Stiften behövs för detta projekt kan hittas på sidorna 36-38 i användarhandboken Altera DE2-115. Märker att SSD stiften har 7 stift per skärm, som HEX0 [0] till HEX0 [6]. Varje position på 7 bitars binärt tal får var och en av dessa 7 stift. Dock om 7 bitars binärt tal kommer att gå från position 0 till 6 plats, måste för att få rätt ordning av pins, de räknas.
HEX0 [6] kommer att positionen 0, HEX0 [5] blir position 1, etc.
Koden är följande:
modul armedStatusDisplay (armedState, SSD, SSD1, SSD2);
input armedState;
produktionen reg [6:0] SSD, SSD1, SSD2;
alltid
börja
SSD2 = 7' b0000001;
if (armedState == 1)
börja
SSD = 7' b1111111;
SSD1 = 7' b0001001;
slutet
annat
börja
SSD = 7' b0111000;
SSD1 = 7' b0111000;
slutet
slutet
endmodule