www.mikrocontroller.net

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


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: Daniel (Gast)
Datum:

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

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso verwendest du "buffer" für "addr" ?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus Verzweiflung ;-). Ist inzwischen "out".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.