Forum: FPGA, VHDL & Co. Synthese scheitert. Anfänger fehler ?


von Daniel (Gast)


Lesenswert?

Hallo,

wer kann mir bei meinem Anfängerfehler helfen ?
Ich möchte bei auftreten eines Signals "ale" eine Adresse aus einem 
"inout"-Vector und einem "in"-Vector zusammensetzen, speichern und an 
einem Ausgang zur Verfügung stellen. Synthese klappt leider nicht:

Xst:1710 - FF/Latch <addr_19> (without init value) has a constant value 
of 0 in block <bus_couple>. This FF/Latch will be trimmed during the 
optimization process.
Xst:1895 - Due to other FF/Latch trimming, FF/Latch <addr_18> (without 
init value) has a constant value of 0 in block <bus_couple>. This 
FF/Latch will be trimmed during the optimization process.
.
.
.
für den gesamten Vector...


entity bus_couple is
   port ( din       : out    std_logic_vector (15 downto 0);
          clk      : in    std_logic;
          cpu_rd_n  : in    std_logic;
          cpu_wd_n    : in    std_logic;
          ale      : in    std_logic;
          dout      : in    std_logic_vector (15 downto 0);
          addr      : buffer std_logic_vector (19 downto 0);
          addr_a     : in    std_logic_vector (3 downto 0);
          bus_out   : inout std_logic_vector (15 downto 0));
end bus_couple;

architecture BEHAVIORAL of bus_couple is
  signal shiftAle : std_logic_vector (2 downto 0);
  signal setAddr : std_logic;
begin
process (clk)
   begin
        if (rising_edge(clk)) then
     if (shiftAle = "011") then  -- Positive Flanke von ale erfassen
    addr <= addr_a & bus_out; -- nach 2 Zyklen Adresse von
                                    Bus und Adressleitungen 
zusammensetzen
           else
          addr(19 downto 0) <= addr(19 downto 0);
     end if;
        end if;
end process;

shiftAle <= shiftAle(1 downto 0) & ale;  -- ale Signal shiften und auf 
shiftAle abbilden


bus_out <= dout when (cpu_rd_n='0') else -- cpu_rd_n legt dout auf Bus
           (others => 'Z');

din <= bus_out when (cpu_wd_n='0') else  -- cpu_wd_n legt Bus auf din
       (others => 'Z');

end BEHAVIORAL;



Vielen Dank !

von Daniel (Gast)


Lesenswert?

Hallo,
habe das Problem selbst gefunden.
Lag am shiften (shiftAle) ausserhalb von process.
Grüße

von Georg (Gast)


Lesenswert?

Wieso verwendest du "buffer" für "addr" ?

von Daniel (Gast)


Lesenswert?

Aus Verzweiflung ;-). Ist inzwischen "out".

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.