Forum: FPGA, VHDL & Co. FPSLIC Macrozellen sparen


von H-D Schondelmaier (Gast)


Lesenswert?

Hallo,

ich versuche bei einem FPSLIC AT94K05 FPGA die wenigen Makrozellen so
effektiv wie möglich zu nutzen. Leider scheint die Zellenstruktur nicht
genrade VHDL freundlich aufgebaut zu sein. Wenn ich einen ladbaren 8 Bit
Down-Counter mit Enable-Steuerung in VHDL implementiere, werden dazu
30(!) von 256 Makrozellen verbraucht. Das kann doch nicht wahr sein?
Dabei habe ich die Hilfe des Makro-Generators zu rate gezogen. Dort
kann man shene, wie der VHDL Konstrukt in etwa aussehen muss.
Wer kann 30 Makrozellen unterbieten??? Wie?


Grüsse,
Hans-Dieter Schondelmaier

von Jochen Pernsteiner (Gast)


Lesenswert?

Könntest Du mal den betreffenden Code posten?

von H-D Schondelmaier (Gast)


Lesenswert?

so sieht der Code aus:

entity PH_CTRL is
  port (
    SYSCLOCK : in    std_logic;
        RESET    : in    std_logic;
  DATA_BUS : in  std_logic_vector(7 downto 0);
  CONT_1_TIME : buffer   unsigned(7 downto 0);
  LOAD  : in   std_logic;
  ENABLE   : in   std_logic
       );
end;

architecture BEHAV_PH_CTRL of PH_CTRL is
begin

CONT_TIME : process (SYSCLOCK, RESET ) is
   begin
     if (RESET = '0')  then
       CONT_1_TIME <= ( others => '0' );
     elsif falling_edge( SYSCLOCK ) then
       if LOAD = '1' and ENABLE = '1' then
         CONT_1_TIME <= unsigned( DATA_BUS(7 downto 0)) ;
       else
         CONT_1_TIME <= CONT_1_TIME - 1;
       end if;
     end if ;
end process CONT_TIME;

end;


Über den Datenbus kommt der Ladewert, Die CONT_1_TIME ist die
aktuelle Zeit, die runtergezaehlt werden muss.

von DerInder (Gast)


Lesenswert?

Hallo,
ich kann dir nicht direkt bei deinem Problem helfen. Aber auf einem
Xilinx XC95xx belegt dein Programm nur 8 Macrozellen?! Oder vergleiche
ich da Äpfel mit Birnen?

Gruß
-=jens=-

von HD Schondelmaier (Gast)


Lesenswert?

Hallo,
nein, nein, VHDL hat auch deshalb seine Daseinsberechtigung, damit man
Äpfel mit Birnen vergleichen kann. Es geht um dieselbe Funktion in
unterschiedlichen Bausteinen. Ich hab inzwischen aus Supportkreisen die
Info, dass sich das Ganze beim FPSLIC auf 16 Zellen reduzieren lassen
würde, allerdings muss man dann diesen IP Core-Macro Generator
verwenden. Dieser erzeugt aber keinen VHDL-Code sondern eine Library,
was für die Weiterverwendbarkeit der Sourcen in meinem Fall nicht
ausreicht.
Wenn man die Sache in VHDL schreibt, gehen im besten Fall gut 20
Macrozellen flöten. Drunter geht wohl nichts.

Hans-Dieter

von Stefan May (Gast)


Lesenswert?

elsif falling_edge( SYSCLOCK ) then
       if LOAD = '1' and ENABLE = '1' then
         CONT_1_TIME <= unsigned( DATA_BUS(7 downto 0)) ;
       else
         CONT_1_TIME <= CONT_1_TIME - 1;
       end if;
     end if ;


Was mir an dem Code auffällt: Wenn LOAD und ENABLE nicht 1 ist, dann
wird runtergezählt. Auch wenn ENABLE gar nicht 1 ist. Absicht?

ciao, Stefan.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.