Forum: FPGA, VHDL & Co. reject-inertial Verständnisfrage


von Guest (Gast)


Lesenswert?

Hallo,

ich kann mir das reject-inertial-Modell irgendwie sehr schwer 
vorstellen.
Reject xy ns heisst ja, dass alle Impulse die mindestens xy Nanosekunden 
lang anlagen nicht unterdrückt werden, auch wenn sie kürzer als die 
Verzögerungszeit des Gatters sind. Nun folgendes Beispiel:
Ich habe ein Gatter mit einer Verzögerungszeit von 12 ns, will aber 
Impulse mit einer Impulsdauer von 3 ns nicht mehr unterdrücken (also nur 
alle die kleiner 3 ns anliegen).

Das könnte ja bspw. ein Takt sein, dessen Phasen jeweils 3 ns lang 
anliegen (also Wert 1 liegt 3 ns lang an, Wert 0 liegt 3 ns lang an, 
usw.).

Angenommen zum Zeitpunkt 0 ns liegt am Eingang des Gatters der Wert 1 
an. Nach 3 ns liegt der Wert 0 an. Nach 6 ns der Wert 1. NAch 9 ns der 
Wert 0 und nach 12 ns der Wert 1.
Wenn also nach 12 ns das dritte mal der Wert 1 anliegt, ändert sich der 
Ausgangswert des Gatters aufgrund des 1-Wertes zum Zeitpunkt 0 ns. Das 
heisst wiederum, dass die Werte 0, 1, 0 zu die zu den Zeitpunkten 3 ns, 
6 ns, 9 ns am Eingang anlagen ja irgendwie im Gatter gespeichert werden 
müssen... Und das obwohl doch so ein Gatter keine internen Zustände hat.

Ich versuch mir grad den Zusammenhang zwischen VHDL und der Hardware 
(die ja in VHDL beschrieben werden soll) klar zu machen.

Hoffe irh versteht was mein Problem ist und könnt mir helfen. Vllt hab 
ich auch nur einen groben Denkfehler drin.

Mfg

Guest

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Du verknotest hier zwei Mechanismen:
1. eine Art "Massenträgheit":
   nur Impulse ab einer bestimmten Dauer werden überhaupt etwas bewirken
2. eine Verzögerungszeit:
   jedes Gatter hat eine (angenommen konstante) Durchlaufzeit

In der Praxis sieht das so aus:
1
1 Zeichen = 1ns 
2
_ = 1ns low
3
- = 1ns high
4
reject 3ns: Änderungen kleiner 3ns werden ignoriert
5
Durchlaufzeit 5ns: xxxxx
6
7
Input      ___----______----______--______-------__-----____--___
8
                                  |              |
9
                                  v              v
10
Reject     ___----______----______________--------------_________
11
              |
12
              '-----v
13
Output     xxxxxx___----______----______________--------------_________

von Guest (Gast)


Lesenswert?

Hallo,

danke für deine Antwort.
Also wenn ich das richtig verstehe, gibt reject x ns an, wie lange ein 
Signal mindestens am Eingang anliegen muss. Und after y ns gibt an, wie 
lange das Gatter braucht, bis eine Wertänderung am Ausgang zu beobachten 
ist.

Beim inertial-Modell gibt after dann sozusagen beides gleichzeitig an. 
Zum einen, dass ein Signal, das kürzer als die angegebene Zeit anliegt, 
unterdrückt wird. Zum anderen, wie groß die Durchlaufzeit des Gatters 
ist.
Dann sind also folgende Anweisungen äquivalent:
1
s <= inertial a after 10 ns;
und
[vhdls <= reject 10 ns inertial a after 10 ns;[/vhdl]

Was mir dennoch nicht klar ist, ist wie das ganze in Hardware 
funktionieren kann. Denn bspw. bei
1
input <= '0', '1' after 2 ns, '0' after 3 ns;
2
output <= reject 2 ns inertial input after 8 ns;
Die '0'-Phase am Anfang wird um 8 ns verzögert output zugewiesen, weil 
das Gatter eine (baulich bedingte) Verzögerungszeit/Durchlaufzeit von 8 
ns hat. Zum Zeitpunkt 2 ns liegt aber schon der Wert '1' am Eingang an. 
Das Gatter ist doch aber noch mit dem Wert '0' beschäftigt. Müsste sich 
das Gatter dann nicht in einer Art Puffer alle am Eingang anliegenden 
Signale merken?


MfG

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Guest schrieb:
> Müsste sich das Gatter dann nicht in einer Art Puffer alle am Eingang
> anliegenden Signale merken?
Wieviele Bits haben auf 100m Kupferkabel beim 10BaseT Ethernet Platz?
Dann haben wir eine Signallaufzeit 0,59×c (100m -> 0,565µs) und eine 
Bitdauer von 0,1us. Somit passen auf 100m Leitung 565 Bits...
Die Leitung kann sich die Bits "merken" und verzögert ausgeben.

Guest schrieb:
> Was mir dennoch nicht klar ist, ist wie das ganze in Hardware
> funktionieren kann
Das wirst du nicht in Hardware gegossen bekommen!

Diese ganzen Sprachkonstrukte funktionieren nur andersrum:
Wenn du an einem real existierenden Baustein (oder der angesprochenen 
Ethernetleitung) so ein Verhalten beobachtet hast, dann kannst du es mit 
VHDL beschreiben.
Denn das ist VHDL in erster Linie: eine Hardwarebeschreibungssprache.
Bestenfalls 1% vom Sprachumfang von VHDL taugt auch für die Synthese und 
kann für den umgekehrten Weg (VHDL nach Hardware) verwendet werden... 
:-(

von Guest (Gast)


Lesenswert?

Lothar Miller schrieb:
> Wieviele Bits haben auf 100m Kupferkabel beim 10BaseT Ethernet Platz?
> Dann haben wir eine Signallaufzeit 0,59×c (100m -> 0,565µs) und eine
> Bitdauer von 0,1us. Somit passen auf 100m Leitung 565 Bits...
> Die Leitung kann sich die Bits "merken" und verzögert ausgeben.

Achso, ok. Also kann sich so ein Baustein durchaus einige Bits merken. 
Allerdings ist die Anzahl der Bits, die sich die Leitung/der Baustein 
merken kann, nun auch durch die Leitungslänge und die Signallaufzeit 
bestimmt. Das heisst, das Ganze ist ein Maß für den maximalen Takt?

Lothar Miller schrieb:
> Diese ganzen Sprachkonstrukte funktionieren nur andersrum:
> Wenn du an einem real existierenden Baustein (oder der angesprochenen
> Ethernetleitung) so ein Verhalten beobachtet hast, dann kannst du es mit
> VHDL beschreiben.

Ja, das ist mir klar. In VHDL gibt es ja Sprachkonstrukte, die 
synthetisierbar sind und solche, die es nicht sind (bspw. File, 
assert,...). Ich dachte halt nur, dass reject zu den synthetisierbaren 
gehört. Bzw.: reject soll ja ein, in einem real existierendem Baustein, 
beobachtetes Verhalten beschreiben. Und ich hatte mich halt gefragt, wie 
dieses beobachtete Verhalten aussehen mag.

MfG

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Guest schrieb:
> Achso, ok. Also kann sich so ein Baustein durchaus einige Bits merken.
Jein, eine Leitung kann das, ein Gatter wahrscheinlich nicht...

> dass reject zu den synthetisierbaren gehört.
Nein. Sicher nicht.
Nicht mal sowas wirklich einfaches wie ein
   output <= input after 3ns;
kann synthetisiert werden.

> Bzw.: reject soll ja ein, in einem real existierendem Baustein,
> beobachtetes Verhalten beschreiben.
Richtig.
So herum stimmt es: das Verhalten wurde zuerst beobachtet, dann in 
einem (Simulations-)Modell beschrieben.

> dass reject zu den synthetisierbaren gehört.
Was synthetisiert werden kann, wird in entsprechenden 
Synthesis-Guidelines beschreiben.

von Guest (Gast)


Lesenswert?

Lothar Miller schrieb:
> Jein, eine Leitung kann das, ein Gatter wahrscheinlich nicht...

Ok, das heisst man müsste bei der Synthese darauf achten/sicherstellen, 
dass der Takt nicht schneller am Eingang anliegt, als das Gatter Zeit 
benötigt, bis sich am Ausgang eine Änderung einstellt?
Oder anders gesagt: Das Gatter muss genug Zeit haben (after y ns), um 
eine Wertänderung am Eingang zu verarbeiten.

Also ist
1
out <= reject 3 ns in after 10 ns;
 zwar simulierbar (es ergibt sich ein um 10 ns verschobenes Signal, das 
nur die Impulse enthält die nicht kleiner 3 ns sind), aber es ist nur 
realisierbar, wenn der Takt entsprechend langsam gewählt wird?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Guest schrieb:
> Ok, das heisst man müsste bei der Synthese darauf achten/sicherstellen,
> dass der Takt nicht schneller am Eingang anliegt, als das Gatter Zeit
> benötigt, bis sich am Ausgang eine Änderung einstellt?
Ja, aber das mußt (zumindest bei FPGAs) nicht du machen, sondern du 
sagst der Toolchain, wie das Timing aussieht (Timing Constraints), und 
die Toolchain sorgt dann dafür, das es mit den verfügbaren Mitteln geht. 
Oder sie gibt eine Fehlermeldung aus, wenn sie es nicht schafft, das von 
dir gewünschte Timing einzuhalten.

> aber es ist nur realisierbar,
Es ist nicht realisierbar. Diese Richtung von VHDL nach Hardware gibt es 
nicht! Es ist eine Beobachtung, die an der Hardware gemacht und mit VHDL 
beschreiben wurde.
> wenn der Takt entsprechend langsam gewählt wird?
Welchen Takt meinst du?
Ein Takt ist da doch gar nicht involviert...

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.