Hallo,
ich muss für Diagnosezwecke einen Jitter in ein Signal einbauen.
Ich habe ein Digitales Signal im 30/60kHz Bereich, wo ich positiven und
negativen Jitter einbauen muss.
Positiver Jitte heisst, dass der Flankenwechsel in die positive Richtung
(bei mir 33µs) verschoben werden muss.
Negativer Jitte heisst, dass der Flankenwechsel in die negative Richtung
(bei mir 33µs) verschoben werden muss.
Da negativ ja nicht geht, ist meine Idee, die pos. um 66µs in die pos.
Richtung zu verschieben und die neg. so zu belassen.
Die pos. und neg. Jitter sollen beliebieg in das Signal eingebaut werden
können. Z.B. über ein Register, wo eine 1 pos. bedeutet und eine 0 neg.
Jitter bedeutet.
Hat jemand eine Idee wie ich das angehen kann?
Danke!!
herman2000 schrieb:> Ich habe ein Digitales Signal im 30/60kHz Bereich, wo ich positiven und> negativen Jitter einbauen muss.
Die Periodendauer kann also im Mittel nicht verändert werden.
Auf 3 neg. Jitter müssen also garantiert auch 3 pos. Jitter kommen!
herman2000 schrieb:> Da negativ ja nicht geht, ist meine Idee, die pos. um 66µs in die pos.> Richtung zu verschieben und die neg. so zu belassen.
Richtig. Du mußt also jede Signalflanke um 0, 33 oder 66 us verzögern.
Das ist nicht allzu kompliziert...
Oder andersrum: das Signal wird immer um 33us verzögert, das wäre dann
"kein Jitter". Und jetzt kannst du noch wählen:
Signal nicht verzögert = neg. Jitter
Signal um weitere 33us verzögert = pos. Jitter
herman2000 schrieb:> Z.B. über ein Register, wo eine 1 pos. bedeutet und> eine 0 neg. Jitter bedeutet.
Wie das? Du hast doch selber definiert, dass es einen neg. Jitter nicht
geben kann!
> Z.B. über ein Register, wo eine 1 pos. bedeutet und> eine 0 neg. Jitter bedeutet.
Unnötig, denn es ist ja schon klar, dass auf der Mittelwert der Jitter 0
sein muß. Denn sonst würdest du die Freuquenz des Signals ändern.
Vielen Dank für die Antwort!
herman2000 schrieb:
>> Ich habe ein Digitales Signal im 30/60kHz Bereich, wo ich positiven und>> negativen Jitter einbauen muss.>Die Periodendauer kann also im Mittel nicht verändert werden.>Auf 3 neg. Jitter müssen also garantiert auch 3 pos. Jitter kommen!
Das war nur ein Beispiel, es gibt auch das Szenarium, das in 26 Octets
lediglich 2 beliebige Flanken mit einem Jitter versehen werden. Es soll
die Stabilität des Empfängers geprüft werden. Es handelt sich um ein
Manchester codiertes Signal.
herman2000 schrieb:
>> Da negativ ja nicht geht, ist meine Idee, die pos. um 66µs in die pos.>> Richtung zu verschieben und die neg. so zu belassen.>Richtig. Du mußt also jede Signalflanke um 0, 33 oder 66 us verzögern.>Das ist nicht allzu kompliziert...>Oder andersrum: das Signal wird immer um 33us verzögert, das wäre dann>"kein Jitter". Und jetzt kannst du noch wählen:>Signal nicht verzögert = neg. Jitter>Signal um weitere 33us verzögert = pos. Jitter
herman2000 schrieb:
>> Z.B. über ein Register, wo eine 1 pos. bedeutet und>> eine 0 neg. Jitter bedeutet.>Wie das? Du hast doch selber definiert, dass es einen neg. Jitter nicht>geben kann!
Das Register deshalb, weil eben an beliebigen Stellen ein Jitter
hinzugefügt werden soll. WIe z.B. lediglich 5 Flanken eines ganzen
Frames.
>> Z.B. über ein Register, wo eine 1 pos. bedeutet und>> eine 0 neg. Jitter bedeutet.>Unnötig, denn es ist ja schon klar, dass auf der Mittelwert der Jitter 0>sein muß. Denn sonst würdest du die Freuquenz des Signals ändern.
Da es die Qualität der Empfängers testen soll, muss es individuell
einstellbar sein, welche Flanken einen Jitter haben sollen und welche
nicht. Evtl. ein Register für jede Flanke, wie z.B. eine 00 soll kein
Jitter sein, eine 01 einen neg. Jitter und eine 10 der pos. Jitter.
Da es sich um ein Manchester codiertes Signal handelt, muss die
Jitterverteilung im Mittel nicht gleich sein.
herman2000 schrieb:> Da es sich um ein Manchester codiertes Signal handelt, muss die> Jitterverteilung im Mittel nicht gleich sein.
Da es laut deiner Beschreibung ein Signal ist, das von einer externen
Hardware kommt, müssen die Jitter zwangsläufig gleich verteilt sein,
denn sonst müsstest du irgendwann in die Zukunft sehen können (=Jitter
immmer verfrüht/negativ), oder einen großen Zwischenspeicher haben
(=Jitter immer verspätet/positiv)...
herman2000 schrieb:> 26 Octets
= 26 Bytes?
herman2000 schrieb:> Mein erster Ansatz wäre:entity test is> OUT_1 <= '1' after 1000 ms;
LOL, das ist jedermanns erster Ansatz für eine Verzögerung in VHDL...
:-D
Aber das geht nicht. In CPLDs/FPGAs gibt es nur Logik und Flipflops.
Aber keine einstellbaren Verzögerungsglieder (ich schreibe ausdrücklich
IN FPGAs, nichi aussen, in den IO-Zellen, wo solche Spezialitäten schon
aml eingebaut sien können). Und desahlb muß jede Verzögerung über
Speicherglieder und irgendwelche Fifos/Schieberegister realisiert
werden. Dazu braucht es einen Takt (z.B. 50MHz), der die maximale
Auflösung bestimmt und von sich aus einen Jitter (hier 1/50MHz = +-10ns)
mitbringt...
Zeichne mal eine Schaltung mit Logikgattern und Flipflops auf, die das
machen würde, was du willst. Das ist die Denkweise die du für die
Hardwarebeschreibung unbedingt brauchst.
Mr Hale schrieb:> einen richtigen Jitter wird man damit nicht hinbekommen - da zu> "digital", denke ich.
Wenn man da die 33us z.B. mit 33ns (=33MHz) auflöst, kann man schon mal
eine Granularität von 1 Promille erreichen, das dürfte idR. reichen...
Das ist ein Schieberegister mit einem 80er Mux dahinter. So hast du
jetzt mal eine Verzögerung geschafft. Wenn du jetzt allerdings den
Tap/Abgriff umschaltest, kann es sein, dass du Spikes bekommst, wenn du
schlagartig von einer kurzen auf eine höhere Verzögerung umschaltest.
Z.B. wenn du im Schieberegister das hast:
delay_line 79 78 77 76 75 74 73 ........ 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 ... 0 0 0 1 1 1 1 1 1
Und du dann den Tap von 0 auf 75 umschaltest, dann wirst du nach einem 5
Takte dauernden '1' wieder 70 Takte '0' bekommen, und dann erst wieder
das '1' von "vorher"...
Oh, das ist natürlich eine verfälschung des Signals und wird nicht mehr
funktionieren..
Wüsstest du eine Lösung, wo ich das vermeiden kann?
Vielen Dank!
herman2000 schrieb:> Wüsstest du eine Lösung, wo ich das vermeiden kann?
Du musst einen (bzw. natürlich jeden) Flankenwechsel erkennen und
unterschiedlich lang verzögern...
60kHz sind 16,6us, da kann in der maximalen Jitterzeit (+-3,2us) also
jewils nur 1 Flanke auftreten. Deshalb sollte 1 Zähler ausreichen, der
dann bei Ablauf einfach den Ausgang umschaltet.
In der ausgefuchsteren Version würde ich, um falsche Pegel zu
verhindern, den derzeit anliegenden Pegel an den Ausgang durchschalten.
Oder mit 2 Zählern arbeiten, von denen einer die steigende und der
andere die fallende Flanke bearbeitet.
Wenn ich mir das so überlege, scheint mir die 2 Zähler-Methode am
durchschaubarsten... ;-)
Ich hätte da mal was mit einem Zähler... ;-)
Der Zufallswert kommt aus einem LFSR wie dort:
http://www.lothar-miller.de/s9y/categories/38-LFSR
Ich habe aus Gründen der Einfachheit mal nur einen 6-Bit Wert (1..63)
genommen und muß deshalb für den Endwert 79-63+Zufallswert rechnen.
Natürlich hätte ich auch einfach die Zähler nur bis 63 laufen lassen
können...