Forum: FPGA, VHDL & Co. Mehrere Entitys - Verschenkte Takte


von Torsten M. (torsten2000)


Lesenswert?

Hallo,

ich habe noch eine Frage. Würde mich freuen, wenn ihr mir da weiter 
helfen könntet.

Ich habe mir überlegt, wenn ich mein VHDL-Programm sehr Modular aufbaue 
ist das super wegen simulierbarkeit und lesbarkeit...

Jedoch habe ich mir auch überlegt, dass ich sehr viele Takte 
verschenke...

Man soll ja immer synchron arbeiten - also packe ich alles in ein 
getakteten Prozess. Jedoch benötige ich dann mindestens zwei Takte 
zusätzlich oder?

Ein damit meine Unter-Entity das Befehls-Flag mitbekommt und
ein Takt bis das Acknowledge wieder in der Über-Entiy erkannt wird.

Ist das richtig oder mache ich da was falsch?
Oder sollte ich doch mehr mit Variablen oder Kombinatorik arbeiten?

Danke für eure Antworten.

Grüße
Torsten

von Ralf (Gast)


Lesenswert?

Das ist jetzt der dritte Thread den du oeffnest. Probiers
halt mal mit einem Testdesign aus. Da keiner deine
Messbox kennt, weder die Schaltung noch dein FPGA Design,
kann dir auch keiner wirklich helfen.
Also wenn du bei solchen Fragen nicht mehr weiterweisst und
du gleichzeitig eine DDR2 Controller erweitern willst und
gleichzeitig deine Messbox komplett "umstricken" willst,
kommen mir wirklich die Zweifel ob du dich nicht ein wenig
ueberforderst...


Ralf

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


Lesenswert?

Torsten Müller schrieb:
> Man soll ja immer synchron arbeiten -
Hier liegt er schon, der Knackpunkt: du mußt ja nicht in jedem Modul "so 
tun", als ob es an die feindliche asynchrone Umwelt angeschlossen wäre 
und jedes Signal einsynchronisieren...
> also packe ich alles in ein getakteten Prozess. Jedoch benötige ich dann
> mindestens zwei Takte zusätzlich oder?
> Ein damit meine Unter-Entity das Befehls-Flag mitbekommt und
> ein Takt bis das Acknowledge wieder in der Über-Entiy erkannt wird.
> Ist das richtig oder mache ich da was falsch?
Ja und ja.
Man muss ja wie gesagt nicht jedes Signal einsynchronisieren und nicht 
jede Kommunikation ist zwingend bidirektional. Es kann durchaus sein, 
dass es Module gibt, die eigentlich immer was entgegennehmen können 
(z.B. Zähler, PWM...) wozu dann warten?

> Oder sollte ich doch mehr mit Variablen oder Kombinatorik arbeiten?
Ja tu das. Das schadet nie, diesen Prozess nennt man Lernen... ;-)

von Torsten M. (torsten2000)


Lesenswert?

@Ralf

Ich möchte hier niemanden nerven. Ich dachte, dass diese Frage sehr 
allgemein ist und nicht all zu viel mit meiner Messbox zu tun hat.

Ich kann hier in der Arbeit leider niemanden Fragen wegen 
Erfahrungswerten, da sich hier niemand mit VHDL auskennt.

Und in dem Buch, was ich hier habe, sind solche 
Feinheiten/Erfahrungswerte nicht drin oder ich habe Sie überlesen...

Ich kann mir zwar mein Teil denken, jedoch ist es auch mal gut eine 
Bestätigung zu bekommen, das die Gedanken nicht völlig falsch sind.

@Lothar
Danke für die Antwort.

von O_o (Gast)


Lesenswert?

Lothar Miller schrieb:
> Torsten Müller schrieb:
>> Man soll ja immer synchron arbeiten -
> Hier liegt er schon, der Knackpunkt: du mußt ja nicht in jedem Modul "so
> tun", als ob es an die feindliche asynchrone Umwelt angeschlossen wäre
> und jedes Signal einsynchronisieren...

Letztendlich musst du die Submodule aus deinem Toplevel-Modul einfach 
kombinatorisch ansteuern anstatt mit einem Ausgangsregister und schon 
ist dein Delay weg. Natürlich dürfen dass nur intern generierte 
Steuersignale sein.

von Bodo (Gast)


Lesenswert?

Torsten Müller schrieb:
> Jedoch habe ich mir auch überlegt, dass ich sehr viele Takte
> verschenke...
?????????????

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.