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 :)
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.
> 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.
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 ;)
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.