FPGA solpanel Optimizer (9 / 12 steg)
Steg 9: Sju Segment dekoder
Sju-segmentet decoder modulen visar för användaren vad spänningar solpanelen läser. Det tar i värde från ADC som indata och och utgångar två signaler som power segmentet sever visas på tavlan. Den första signalen är ett 4-bitars nummer som är en aktiv låg aktiverar som används för att avgöra vilken av de fyra zonerna på displayen måste vara påslagen för att visa värdet. Den andra signalen är en 8-bitars tal som också är en aktiv låg aktivera. Det används för att aktivera segmenten på den enskilda zonen.
Det sätt styrelsen är utformad är det så att endast en zon kan aktiveras på en gång. Detta gör det så att du behöver snabbt ändra vilken zon aktiveras. Om du gör det vid rätt hastighet, kommer det att verka som visar alla på är samtidigt när verkligen de bara slår på och av så fort att det imperceivable.
Här är Entitetsbeskrivningen för sju segment-dekoder.
enhet sseg_dec är
Port (ALU_VAL: i std_logic_vector (9 b 0);
SIGN: i std_logic;
GÄLLER: i std_logic;
CLK: i std_logic;
DISP_EN: ut std_logic_vector (3 b 0);
SEGMENT: ut std_logic_vector (7 CEN. 0));
slutet sseg_dec;
Som servo föraren definieras sju segment dekodern också strukturellt med två andra komponenter. Den första komponenten är arbetshästen av modulen. Det är binärfilen till decimal omvandlare. Detta tar 10-bitars ALU_VAL och utgångar 4 signaler som motsvarar de binära värdena av decimaltal som utgör ALU_VAL. Till exempel om ALU_VAL = 110001011 = 395, sedan binärfilen till decimal omvandlare skulle utgång 0000, 0011, 1001 och 0101. Dessa motsvarar 0, 3, 9 och 5 respektive. Eftersom ALU_VAL är en 10-bitars nummer, är det maximala värdet kan den representera 1023. Den andra komponenten är en klocka avdelare som används till att multiplex displayen i en takt som gör det verka som det finns mer än ett segment på.
Denna modul skapades ursprungligen av Prof Bryan Mealy. Det ursprungligen visas upp till en 8-bitars nummer (0-255), men vi ändrade det så att den kunde visa upp till en 10-bitars nummer (0-1023).