Forum: FPGA, VHDL & Co. Verilog UDLY


von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Hallo,

ich muss gerade etwas Verilog-Code verstehen, kenne mich aber nur mit 
VHDL aus. Mit dem #UDLY in der folgenden Zeile kann ich nichts anfangen.

     read_valid          <= #UDLY 1'b0;

Was bedeutet es.

Danke

Tom

von SuperWilly (Gast)


Lesenswert?

Scheint ein "time delay" zu sein, das über eine Konstante eingestellt 
wird.

Gruß,
SuperWilly

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Thomas Reinemann schrieb:
> Mit dem #UDLY in der folgenden Zeile kann ich nichts anfangen.
>
>      read_valid          <= #UDLY 1'b0;
>
> Was bedeutet es.

Das ist ein sogenanntes intra-assignment delay. Der Ausdruck auf der 
rechten Seite wird ausgewertet (hier trivial: 1'b0) und mit 
entsprechender Verzögerung der Variablen read_valid zugewiesen. Wobei 
UDLY möglicherweise ein definierter Parameter ist, oder ebenfalls eine 
Variable.

Gruß
Marcus
http://www.doulos.com/knowhow/verilog_designers_guide/

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Marcus Harnisch schrieb:
> Thomas Reinemann schrieb:
>> Mit dem #UDLY in der folgenden Zeile kann ich nichts anfangen.
>>
>>      read_valid          <= #UDLY 1'b0;
>>
>> Was bedeutet es.
>
> Das ist ein sogenanntes intra-assignment delay. Der Ausdruck auf der
> rechten Seite wird ausgewertet (hier trivial: 1'b0) und mit
> entsprechender Verzögerung der Variablen read_valid zugewiesen. Wobei
> UDLY möglicherweise ein definierter Parameter ist, oder ebenfalls eine
> Variable.

Hä, die Zeile kommt aus einem Modul, dass synthetisiert wird, 
Wishbone-Decoder vom Mic32.

Ein paar Zeilen weiter vorn steht:
   parameter         UDLY    = 1;

Was bedeutet das dann insgesamt?

Danke tom

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Thomas Reinemann schrieb:
> Ein paar Zeilen weiter vorn steht:
>    parameter         UDLY    = 1;

Sag' ich doch.

> Was bedeutet das dann insgesamt?

Ein Parameter ist soetwas ähnliches wie ein Generic in VHDL. Insgesamt 
ergibt sich also der Ausdruck

read_valid          <= #1 1'b0;

Wobei die Verzögerung von der jeweils gültigen Zeiteinheit des Moduls 
abhängt. Vielleicht findest Du ja irgendwo weiter oben im Modul eine 
Direktive die in etwa so aussieht: "`timescale 1ns/100ps". Dann ist (in 
diesem Beispiel) die Zeiteinheit 1ns und die Verzögerung errechnet sich 
zu ebenfalls 1ns.

In synthetisierter HW wird die Verzögerung (genau wie in VHDL) einfach 
ignoriert.

Da wollte jemand in seinen Waveforms etwas deutlicher sehen, dass 
read_valid mit einer Verzögerung zugewiesen wird.

--
Marcus

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.