Forum: FPGA, VHDL & Co. Synchronisation der Signale


von AL (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe hier ein Schematic vor mir wo viele "AND" und "OR" Gatters 
sind.
Das Problem ist das der Trigger(TrigX) zwar am Eingang ankommt aber 
nicht auslöst. Kann das sein das hier irgendein Synchrnonisationsfehler 
ist? unterschiedliche Signallaufzeiten?

Gruß

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


Lesenswert?

AL schrieb:
> aber nicht auslöst.
Was heißt "nicht auslöst"?
Was soll der Trigger "auslösen"?
Wird der Trigger im I460 gespeichert?
Sind SwTrig{11} und Lock{12} auf dem richtigen Pegel?
Mit/auf welcher Plattform ist das Ganze realisiert?

von AL (Gast)


Angehängte Dateien:

Lesenswert?

Lothar Miller schrieb:
> AL schrieb:
>> aber nicht auslöst.
> Was heißt "nicht auslöst"?
> Was soll der Trigger "auslösen"?
mit dem Trigger sollen RAM Adressen generiert werden(Sync1.jpg 
rdadrCnt), mit dem Signal RdStep1 Werte vom RAM auslesen, und mit 
RdStep2 ausgeben.

> Wird der Trigger im I460 gespeichert?
der Eingang vom Flipflop ist dauern auf High, d.h mit der Flanke des 
Trigger geht Q auf "1"!

> Sind SwTrig{11} und Lock{12} auf dem richtigen Pegel?
die sind interne Signale

> Mit/auf welcher Plattform ist das Ganze realisiert?
Lattice XP2 /Diammond

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


Lesenswert?

>> Wird der Trigger im I460 gespeichert?
> der Eingang vom Flipflop ist dauern auf High, d.h mit der Flanke des
> Trigger geht Q auf "1"!
Ich fragte nicht "wie" der gespeichert wird (das ist mir klar), sondern 
"ob" er gespeichert wird. Wird der Ausgang von I460 nach einer 
Triggerflanke high?

>> Sind SwTrig{11} und Lock{12} auf dem richtigen Pegel?
> die sind interne Signale
Das ist nicht die Antwrt auf meine Frage.
Meine Frage war: Haben diese Signale den richtigen Pegel?
Mit einer statischen '1' auf einer der beiden Leitungen kann kein 
Trigger erkannt werden.


Was soll das Bild Sync1.jpg aussagen?


BTW:
Das Design ist ein recht Übles, denn den Clk_En des Flipflops wird 
direkt komplett asynchron angesteuert. Das ist Designtechnik aus dem 
letzten Jahrtausend. Richtig?

von AL (Gast)


Lesenswert?

Lothar Miller schrieb:
> Das ist Designtechnik aus dem letzten Jahrtausend. Richtig?
- das stimmt auch

- Der Ausgang vom I460 wird schon High nach dem Trigger

>> Sind SwTrig{11} und Lock{12} auf dem richtigen Pegel?
- das werde ich noch prüfen, aber da der Ausgang vom I460 immer high 
wird nach dem Trigger, sind beide Signale schon ok.


- Sync1 ist nur eine andere Seite vom Design

- Kann man eigentlich neben dem Schematik auch VHDL Code schreiben und 
auf diese Signal (Clk_EN, Step0,..) zugreifen?

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


Lesenswert?

AL schrieb:
> da der Ausgang vom I460 immer high
> wird nach dem Trigger, sind beide Signale schon ok.
Ja, korrekt.

Und wie setzt du den Trigger zurück?
Normalerweise müsste er ja asynchron durch den I671 zurückgesetzt 
werden.

von AL (Gast)


Lesenswert?

Der externe Trigger ist ein Puls von 1ms, also nach 1ms ist er wieder 
low, und der nächste Puls kommt nach etwa 50ms..

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


Lesenswert?

Okokok, mit "Trigger" meinte ich das Speicherflipflop I460. Das sollte 
eigentlich durch den 32MHz Takt recht schnell (nach 30-60 ns) wieder 
zurückgesetzt werden...

Aber wie gesagt: das Design ist unsauber, weil zumindest die 
Clock-Enable-Setupzeit der Zählerflipflops verletzt werden wird. 
Normalerweise sollte der Trigger einsynchronisiert und dann auf das 
synchrone Signal eine Flankenerkennung aufgesetzt werden.

von AL (Gast)


Lesenswert?

d.h. Trigger und Clk-EN mit dem 32MHz Clock einsynchronisieren => werde 
ich morgen testen
Vielen Dank.

Wie sieht es aus wenn ich doch dieses Schematic mit VHDL erweitern 
möchte, kleine Funktionen, geht das(mischen von schematic und VHDL)? wie 
kann ich auf die internen Signale zugreifen?

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


Lesenswert?

AL schrieb:
> Wie sieht es aus wenn ich doch dieses Schematic mit VHDL erweitern
> möchte, kleine Funktionen, geht das(mischen von schematic und VHDL)?
Ja, das geht. Dabei werden einfach die Ports der VHDL-Beschreibung auf 
ein Schaltplansymbol gemappt und dann im Schaltplan angeschlossen.

Das wird z.B. gern im Top-Level gemacht, um nicht die ganzen Map-Listen 
schreiben zu müssen. Wie das geht, weiß ich aber nicht, weil ich 
selber noch nie die Schematic-Eingabe verwendet habe...   ;-)

von Christian R. (supachris)


Lesenswert?

Du kanst dir ein VHDL Modul schreiben und dann "Generate Schematic 
Symbol" dann erscheint das als Schaltplan Symbol in deiner Library. Aber 
das ist alles großer Murks, wenn du an den Ports mal was änderst, passt 
das Symbol nicht mehr und du musst alles neu verstrippen. Lass den 
Quatsch sein und schreib einfach alles in VHDL, das geht viel schneller 
und ist deutlich wartungsfreundlicher.

von AL (Gast)


Lesenswert?

Hallo,

bezüglich das mit dem Einsynchronisieren der Ext. Signale mit 2 FF 
(siehe Bild "Einsynchronisieren durch 2 FlipFlops" im 
http://www.lothar-miller.de/s9y/categories/35-Einsynchronisieren )

Asynch_in ist der Externe Input und FF2_out ist das Signale was weiter 
verarbeitet wird, ds sieht aus nach nur einer Verzögerung, und die 
Problematisch der Gatterlaufzeiten werden weiter bestehen, oder habe ich 
das falsch verstanden?

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


Lesenswert?

AL schrieb:
> oder habe ich das falsch verstanden?
Ja.

> Asynch_in ist der Externe Input und FF2_out ist das Signale was weiter
> verarbeitet wird
Und clock ist der 32768kHz-Takt!
> ds sieht aus nach nur einer Verzögerung, und die Problematisch der
> Gatterlaufzeiten werden weiter bestehen,
Es geht darum, dass nach dem Einsynchronisieren im FPGA alles nur noch 
mit dem einen einzigen FPGA-Takt läuft (hier 32MHz). Und dass nach jedem 
Takt die Logik und das Routing zusammen knapp 30ns Zeit zum Berechnen 
neuer Werte und deren Weiterleitung an das nachfolgende Flipflop haben.

Und ob die Laufzeiten ausreichen, das kann die Toolchain ganz einfach 
ausrechnen. Man muss ihr nur mit einem Timing-Constraint auf den Takt 
sagen, dass das Design mit 32MHz laufen soll...

Ich weiß nicht wie groß das Schaltplan-Design ist, aber ich würde es
1. auf ein richtig synchrones Design umstellen  und
2. gleich alles in VHDL schreiben.
Wenn du z.B. 30 Seiten solcher Schaltungen wie oben hast, dann gibt das 
bestenfalls 3 Seiten VHDL!
Zumindest, wenn ich das schreibe...  ;-)
Siehe den Beitrag "kruder Fehler bei FPGA-Programmierung (ISE WEBpack-Schematic)"

von AL (Gast)


Lesenswert?

Lothar Miller schrieb:
> 2. gleich alles in VHDL schreiben.
Das wollte ich auch seit langer Zeit tun, leider bis jetzt noch nicht 
geschafft, und soo gut kenne ich mich nocht nicht mit VHDL, komme aus 
der "C" Ecke.

Aber jetzt zum Konzept:
Das prinzip ist eigentlich ganz einfach:
- UC schickt Daten zum PLD
- PLD Speichert die Daten im RAM
- Nach dem Ext Trigger: PLD Liest die RAM Adressen nach Einander und 
gibt die Daten an bestimmten Outputs aus.

Für mich werden es drei Prozesse sein:
Proc_1: Organisiert die Serielle Kommunikation mit dem uC und bereitet 
die Daten für den RAM.

Proc_2: Daten im RAM schreiben und lesen

Proc_3: Bearbeitet den Ext. Trigger, Liest Daten vom RAM, und setzt die 
Outputs.


- Proc_1 und Proc_3 greifen beide auf Proc_2. Das muss irgendwie 
gehandelt werden, reichet es hier ein RamBusy Signal?, oder wie wird das 
allgemein gemacht?
- Die Kommunikation zwische Prozesse läuft über Signale in VHDL, stimmt?

Vielen Dank

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.