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
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.
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 ...
Moin... ich vermute mal du wolltest viel Spass bei der Fehlersuche haben, weil sich dein ADC gerne mal asynchron zum Takt einschaltet.... -- SJ
@Sven: ich habe bisher keine Asynchronität festgestellt. kannst du dazu evtl. noch ein paar Worte mehr verlieren. Danke!
Moin... Wenn run auf 1 wechselt, startet der Process, unabhängig von Takt. -- SJ
...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?
Wieso frägst Du run nochmal auf '1' ab? Im else-Zweig kann es doch sowieso keinen anderen Wert mehr haben.
...das ist wohl war, sollte wohl so ne doppelte absicherung sein
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.