Forum: FPGA, VHDL & Co. Frage: If-Abfrage mit Argument vom Typ "Time"


von Christian (Gast)


Lesenswert?

Hallo Leute, ich habe ein Problem..

ich versuche aktuell innerhalb nicht-synthetisierbarem Code eine 
If-Abfrage zu implementieren, in welcher etwas wie:

"if now >= ramp_delay then"

vorkommen soll. "ramp_delay" ist natürlich vom typ "time", soll aber 
durch Deklarierung innerhab der Port Entity flexibel sein..

das klappt leider nicht, der Prozess läuft nur bis zu dieser Abfrage.
Im Falle dessen, dass der Delaywert "constant" ist klappts, das bringt 
mich aber leider nicht weiter da Constants aus der generic (natürlich) 
nicht modifizierbar sind..

Hilfe :(

von Harry (Gast)


Lesenswert?

Zeig mal den gesamten Code.

von Christian (Gast)


Lesenswert?

@Harry
nö

@rest
hab jetzt einfach n timer hochzählen lassen und das "ok Signal" als 
Argument in der If genommen.. passt!

Schönen Resttag noch

von Harry (Gast)


Lesenswert?

Naja, was soll man dazu sagen? Erst stellst du eine Frage, kurze Zeit 
später beantwortest du sie dir selbst. Und Deine "Erklärung" ist so 
dürftig, dass kein Arsch weiss, was eigentlich das Problem war und 
geschweige wie Du es gelöst hast.

Toll!

von Klaus (Gast)


Lesenswert?

Christian schrieb:
> @Harry
> nö

Tja, wer keine Hilfe will, der kann sich so benehmen, wie du. Alle 
anderen müssen mehr Informationen liefern, damit man ihnen helfen kann.

Schönen Resttag noch.

von Christian (Gast)


Lesenswert?

ist ja gut, entschuldigt..
1
entity problem is
2
port(delay_i : real := 65);
3
end problem
4
5
architecture bla of problem is
6
7
signal delay_t : time;
8
9
delay_t <= delay_i * 1 sec after 1us;
10
11
process(sensitivity list)
12
begin
13
 if now >= delay_t then
14
   blablablabla
15
 end if;
16
end process

das fette ist das problem.. der kommt nicht darüber weil delay_t nen 
signal ist und keine Konstante..

ich lasse alternativ in einem process einen timer durch ne wait 
anweisung hochlaufen und wenn der grenzwert delay_i erreicht wurde gibts 
n OK.. das nehm ich dann statt dem *now >= delay_t*

war gerade bisschen gereizt, sorry nochmal

von Christian (Gast)


Lesenswert?

vergesst es.. ich bin blöd :)

delay_t <= delay_i * 1 sec ...... 1 us wäre die richtige zeiteinheit 
gewesen, jetzt gehts auch mit dem ersten gedankenganz facepalm

von Klaus (Gast)


Lesenswert?

Christian schrieb:
> delay_t <= delay_i * 1 sec ...... 1 us wäre die richtige zeiteinheit
> gewesen, jetzt gehts auch mit dem ersten gedankenganz facepalm

ok, danke für die Auflösung. Hab mir auch schon gedacht, dass das ja 
eigentlich funktionieren müsste. Aber das sec hab ich auch übersehen ;-)

von Christian (Gast)


Lesenswert?

:)

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.