mikrocontroller.net

Forum: FPGA, VHDL & Co. Signal X_index has a multi source!


Autor: VHDL Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
count_up: process(Taste1) 
begin
if (Taste1 = '1' and Taste1'event) then
  if X_index < 99 then
    X_index <= X_index + 1;
  end if;
end if;
end process count_up;

count_down: process(Taste2) 
begin
if (Taste2 = '1' and Taste2'event) then
  if X_index > 0 then
    X_index <= X_index - 1;
  end if;
end if;
end process count_down;

Kriege die Fehlermeldung:Signal X_index has a multi source.
Was tun?

Autor: Sören (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles in einen Prozess packen !

Autor: VHDL Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
count_up_down: process(Taste1, Taste2) 
begin
if (Taste1 = '1' and Taste1'event) then
  if X_index < 99 then
    X_index <= X_index + 1;
  end if;
elsif (Taste2 = '1' and Taste2'event) then
  if X_index > 0 then
    X_index <= X_index - 1;
  end if;
end if;
end process count_up_down;
Fehlermeldung jetzt:Signal X_index cannot be synthesized, bad 
synchronous description. Wat nu?

Autor: abk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'event nur einmal für den Takt verwenden. Taste mit dem Takt abtasten.

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nee, Taste1 und Taste2 sauber einsynchronisieren (mal hier im Forum 
suchen), dann die synchronen Signale Taste1_sauber und Taste2_sauber in 
einem geclockten Prozess verwenden...

Autor: VHDL Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
count_up_down: process(Generator,Taste1_DFF,Taste2_DFF) 
begin
  if (Generator = '1' and Generator'event) then
    Taste1_DFF <= Taste1;
    Taste2_DFF <= Taste2;
  end if;

  if (Taste1_DFF = '1' and Taste1_DFF'event) then
    if X_index < 99 then
      X_index <= X_index + 1;
    end if;
  end if;

  if (Taste2_DFF = '1' and Taste2_DFF'event) then
    if X_index > 0 then
      X_index <= X_index - 1;
    end if;
  end if;
end process count_up_down;

Leider immer noch Fehlermeldung:ERROR:Xst:827 -  line 46: Signal X_index 
cannot be synthesized, bad synchronous description.

Autor: Patrick Sulimma (abaddon1979)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
count_up_down: 
process(Generator) 
begin
if rising_edge(Generator) then
    
  if Taste1 = '1' then
    if X_index < 99 then
      X_index <= X_index + 1;
    end if;
  end if;

  if Taste2 = '1' then
    if X_index > 0 then
      X_index <= X_index - 1;
    end if;
  end if;

end if;
end process count_up_down;


Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick Sulimma schrieb:
 count_up_down:
 process(Generator) begin
   if rising_edge(Generator) then
     if Taste1 = '1' then
     ...
     end if;
   ...
   end if;
 end process count_up_down;
Das ist jetzt aber immer noch keine Flankenerkennung bei den Tasten. 
Sondern solange die Taste gedrückt ist, zählt der Index mit der 
Taktfrequenz hoch oder runter. Und das kann recht schnell sein...

Wie man Tasten einsynchronisiert und auf Betätigungen reagiert sthet 
z.B. dort: 
http://www.lothar-miller.de/s9y/categories/18-Flan...

Autor: Patrick Sulimma (abaddon1979)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gebe ich dir natürlich recht, mir ging es auch nur um den genannten 
Fehler:

ERROR:Xst:827 -  line 46: Signal X_index
cannot be synthesized, bad synchronous description.

Autor: Peter Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie man Tasten einsynchronisiert und auf Betätigungen reagiert sthet
> z.B. dort:
> http://www.lothar-miller.de/s9y/categories/18-Flan...

Sieht hübsch aus, aber kostet wahrscheinlich zu viele Logikzellen auf 
meinem CPLD XC9275.







bastelboy <= VHDL Anfänger -- ;-)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> bastelboy <= VHDL Anfänger
Ah, jetzt ja...   ;-)

> kostet wahrscheinlich zu viele Logikzellen auf meinem CPLD
Stimmt, da sind pro Taster etliche FFs im Spiel und du hast nur 1 FF pro 
Makrozelle. Aber ohne Eintakten mußt du das Thema Metastabilität genau 
im Auge behalten (siehe auch meine HP).

> CPLD XC9275.
Ist das neu? Die 92er Serie kannte ich noch nicht... :-)

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.