Forum: FPGA, VHDL & Co. verilog und zugriff auf sram (delays erzeugen)


von gast1 (Gast)


Lesenswert?

hallo,

vorweg ich bin ein anfänger in verilog :)

ich moechte einen xc95144 cpld verwenden an dem ein
12 ns sram und ein pic32 haengt.

der pic soll ein signal senden worauf das cpld reagiert
und anschliessend auf das sram zugreift und irgendwas
damit macht und zum pic32 zuruecksendet. warum
und was da passiert ist eigentlich egal mir gehts
erstmal nur ums prinzip.

nun hat ja das sram eine zugriffszeit von 12 ns somit
muss ich nach dem zugriff auf das sram 12ns warten bis
ich das ergebnis zurueck an den pic32 geben kann.
und genau hier liegt mein problem. eben das delay


wie realisiere ich sowas ?.

-erste idee delay zeichen. geht ja nur
 in der simulation.

-zweite idee war ein clock einzufuehren wo ich dann
 beim naechsten clock das ergebnis abhole.
 moechte ich aber nicht unbedingt.

-dritte idee war ein delay via logik zu erzeugen.
 ich erinnere mich das ich mal den thread 8mb sdram grafikkarte
 von benedikt gelesen habe wo er mit logik ein delay vom
 clock erzeugt hat.


somit waere die dritte idee die die ich verwenden moechte.
nur wie bin ich mir nicht ganz sicher wie.

so wie ich den das blocking assignment verstanden habe werden
werden die zuweisungen nicht parallel wie bei nonblocking ausgefuehrt.

sprich sowas wie:

always @ (posedge pic32signal)
  begin
  // hier zugriff aufs sram
  dummy = 1;
  dummy = 0;
  dummy = 1;
  // hier daren abholen
  end

die 3 dummy zuweisungen muessten ein delay erzeugen.
ist das richtig ?
naechste frage macht man das so oder gibt es einen besseren
weg ?

klar kann man das auch simulieren. soweit bin ich jedoch
noch nicht mir gehts erstmal nur darum es zu verstehen. und
zu fragen wie mans richtig macht.


lg :)

von Iulius C. (iulius)


Lesenswert?

Nein das geht nicht !

Kuck dir mal ein wie ein PLD Baustein funktioniert, dann wirst du 
fesstellen das dies nicht möglich ist.


Klar könntest du über delays gehen, aber
a) sind die temperatur und spannungsabhängig
b) müssen experimentell nicht nur für einen Baustein, sondern auch für 
die Position im Baustein ermittelt werden


Die nonblocking statemants haben damit erstmal rein garnichts zu tun, 
denn den Namen kannst du nicht wörtlich nehmen, da wird nicht wirklich 
etwas im Chip blockiert, es ermöglicht nur etwas komfortabler zu 
schreiben.

dein :

dummy = 1;
dummy = 0;
dummy = 1;

würde in der hardware ganz normal als nonblocking ausgebaut werden :

dummy <= 1;

denn die zwischenschritte werden garnicht verwendet.



Was du wirklich willst und brauchst ist ein clock und zwar einen der 
irgentwo in der Richtung von 12ns liegt.

Da der PIC mit 80mhz läuft wenn der wiki Artikel stimmt wäre das eine 
gute Basis.

takt 1 : read enable
takt 2 : valid zurück zum pic

die Daten an sich brauchst du nur durchrouten.


Außer du hast kein vollparalleles Interface, aber dann ist die 
Zugriffzeit ohnehin dein kleinstes Problem was die Geschwindigkeit 
angeht.

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


Lesenswert?

> die 3 dummy zuweisungen muessten ein delay erzeugen.
> ist das richtig ?
Ich beschreibe Hardware in VHDL, und da wäre nur die letzte Zuweisung 
signifikant. Ich denke, dass das in Verilog gleich ist.

Du mußt dir immmer vorstellen, dass deine Beschreibung nur in Flipflops 
und Logik umwandelbar sein muß. Was anderes hast du in programmierbaren 
Bausteinen (FPGA/CPLD) nicht.

von gast1 (Gast)


Lesenswert?

hallo,

iulius, lothar danke fuer die antworten...

anscheinend ist die sequentielle denke noch etwas zu stark
in mir von den microcontrollern...
ich befasse und spiel da erst seit ein paar tagen mit rum...
mit dem xc9536 und da hab ich es zwar schon geschafft ne vga
ausgabe zu machen mit tollen a's auf den bildschirm...
aber da muss ich noch wohl bisschen tiefer einsteigen...
ich hab zwar schon ein paar tutorials gelesen aber irgendwie
ist der groschen in manchen bereichen noch nicht richtig gefallen...

vorallem mit der simulation da hab ich bisher noch nichts gemacht...
webise erschlaegt einen ja anfangs ein wenig da war ich froh das
ueberhaupt was auf den chip bekommen hab ;)


ok gut... dann ist ne clock sicher die bessere loesung... alles
andere waere denke ich funsch... zumal ich eh am ende eine clock
haben werde da ich ne vga karte machen will mit ner 30 mhz pixel
clock... ich war halt neugierig ob auch ohne clock ne gute loesung
gibt...

aber extrem spannende sache ... kann man ja tolle sachen mit machen

lg ;)

von Falk B. (falk)


Lesenswert?

@gast1 (Gast)

>-erste idee delay zeichen. geht ja nur
> in der simulation.

Eben

>-zweite idee war ein clock einzufuehren wo ich dann
> beim naechsten clock das ergebnis abhole.
> moechte ich aber nicht unbedingt.

Musst du aber. Das ist die einzige, saubere Lösung.

>-dritte idee war ein delay via logik zu erzeugen.
> ich erinnere mich das ich mal den thread 8mb sdram grafikkarte
> von benedikt gelesen habe wo er mit logik ein delay vom
> clock erzeugt hat.

Ohje. Bastelmurks aus der TTL-Gräberzeit. Vergiss das mal fix. Bringt 
nur Unglück.

MfG
Falk

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.