www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Signaleingang ungewollt als CLK erkannt


Autor: Sebastian J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin gerade dabei ein fertiges vhdl design zu synthetisieren und
möchte nun die verschiedenen ein- und ausgangssignale ihren pins
zuweisen. hat bis jetzt immer funktioniert, habe ich noch nie Probleme
dabei gehabt.

Nun ist das Tool aber der Meinung, dass ein Eingangssignal ein Takt
ist, was nicht stimmt. Das Signal ist als: << reset_in >> benannt und
vom Typ << bit >> (std_logic hatte ich auch schon versucht)

innerhalb meiner architecture wird das signal wie folgt verwendet:
--
Reset: process (reset_in) is

begin

  if reset_in='1' then
    run <='0';
  else
    run <= '1';
  end if;

end process Reset;
--

da mein tool der meinung ist, das signal reset_in sei takt, kann ich es
nicht dem gewünschten pin zuweisen.

hat vielleicht irgend jemand eine idee, womit das zusammen hängen
könnte? ich arbeite mit  <<libero 7>> der firma actel (falls das was
nutzt) ...

bin dankbar für jeden nützlichen gedanken/hinweis/etc.!

gruß sebastian

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfacher wäre es so, und zwar ganz ohne Prozess:

  run <= not reset_in;


Das erklärt aber nicht, wieso er das als Takteingang ansieht.
Kann es sein das Du "run" irgendwie als Takt für ein Flip-Flop oder
Latch benutzt?

Poste mal den ganzen Code.

Autor: Sebastian J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe folgendes in dem betreffenden programmabschnitt:


Reset: process (reset_in) is

begin

  if reset_in='1' then
    run <='0';
  else
    run <= '1';
  end if;

end process Reset;

-------------------------

process (run,clock) is

begin

if run = '1' then
    systemzeit  <=0;
    state_ADC   <= 1;

else

 ....ne menge anweisungen....

end if;

...einfacher wäre natürlich, reset_in direkt auszuwerten und auf run zu
verzichten, weiß auch nicht, warum ich so tat ...

Autor: Sven Johannes (svenj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin...

ich vermute mal du wolltest viel Spass bei der Fehlersuche haben, weil
sich dein ADC gerne mal asynchron zum Takt einschaltet....

--
 SJ

Autor: Sebastian J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sven: ich habe bisher keine Asynchronität festgestellt. kannst du dazu
evtl. noch ein paar Worte mehr verlieren. Danke!

Autor: Sven Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin...

Wenn run auf 1 wechselt, startet der Process, unabhängig von Takt.

--
 SJ

Autor: Sebastian J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...das ist richtig, mittlerweile sieht der Code allerdings folgender
Maßen aus:

Reset: process (reset_in) is

begin

  if reset_in='0' then
    run <='0';
  else
    run <= '1';
  end if;
    run_out <= run;

end process Reset;
--------------------------
process (run,clock) is

begin

    if run = '0' then
      systemzeit  <=0;
        state_ADC   <= 1;

    else

        if rising_edge(clock) and run='1' then
          case state_adc is
           when 1 => ...
           ....
           end case
    end if;
end process
----------------------------

Das funktioniert. Ist zwar etwas umständlich realisiert, werd ich
bestimmt auch noch ändern.
Habe dabei vielleicht auch noch etwas übersehen?

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso frägst Du run nochmal auf '1' ab?
Im else-Zweig kann es doch sowieso keinen anderen Wert mehr haben.

Autor: Sebastian J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...das ist wohl war, sollte wohl so ne doppelte absicherung sein

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.