Hallo, ich kaempfe mich immer weiter durch VHDL. Die ersten Ergebnisse sind auch schon vorhanden. Leider merke ich immer mehr das meine Digital- / Logikkenntnisse aus meiner Berufschulzeit nicht ausreichen, deshalb lese ich wie ein Irrer. Ich lese mit meinem FPGA 16 Bit ein und gebe diese an das SRAM meines Digilent Spartan3 SRAM's weiter. Leider bin ich am Xilinx RS232 gescheitert, deshalb wollte ich erstmal die Daten an ein AVR weitergeben. SPI Slave ist auch noch ein bischen zu schwierig, deshalb wollte ich die Daten über einen 8Bit Bus an den AVR geben. Mein AVR ist mit 16Mhz getaktet und sollte somit innerhalb von 62,5ns die 8bit Daten lesen koennen vom FPGA. Ist es sinnvoll noch ein PIN zuopfern fuer ein Busy Bit damit der SRAM Adresscounter auch wirklich erst nachdem einlesen des AVR's erhoeht wird oder reicht es wenn ich den FPGA 70ns warten lasse und dann den Adresscounter erhoehe? Ich habe den VHDL SRAM Code aus dem Internet. Der Programmierer des Codes benutzt extra zum SRAM hin LVCMOS33 Componenten. Leider habe bis jetzt keine Infos gefunden was LVCMOS33 ist muss ich diese auch zum AVR BUS implementieren (mein AVR arbeitet mit 5V)? Das Spartan3 Board arbeitet normal mit 50Mhz also sind theoretisch 20ns moeglich das SRAM schafft laut Beschreibung 10ns. Ich hatte in einem anderen Thread gelesen das man den DCM (CLK2X) nutzen kann um die Frequenz zuverdoppeln somit wuerde ich die 10ns schaffen. Hatte ich das richtig verstanden? Ich hoffe jemand kann mir bei meinen Problemen helfen Gruß, Dirk
>>anderen Thread gelesen das man den DCM (CLK2X) nutzen kann um die >>Frequenz zuverdoppeln somit wuerde ich die 10ns schaffen. Hatte ich >> das richtig verstanden? das mit der DCM wohl ja, Aber mit den 20ns soltest du erstmal nicht runter auf 10ns gehen solange es mit 20ns noch nicht funktioniert. Bei einem meiner Projekte hatte ich nämlich auch ein exaktes 20ns Timing für einen SRAM. Leider sampelte mein Design beim Lesen des SRAM Datenbuses nicht nach den 20ns sondern schon nach 10ns. Ich war also damit schon an der Grenze. Gruß Hagen
>Leider bin ich am Xilinx RS232 gescheitert Hast Du die fertige VHDL-Implementierung von Xilinx benutzt, die beim Picoblaze mit dabei ist? Oder hast Du versucht das selber zu programmieren?
Hallo, >Hast Du die fertige VHDL-Implementierung von Xilinx benutzt, die beim >Picoblaze mit dabei ist? Oder hast Du versucht das selber zu >programmieren? ich habe das Appnote versucht mit 16 Byte Fifo Speicher, bin aber an der State Maschine gescheitert dafuer.... wenn mehr Erfahrung da ist versuche ich nochmal. >das mit der DCM wohl ja, Aber mit den 20ns soltest du erstmal nicht >runter auf 10ns gehen solange es mit 20ns noch nicht funktioniert. Also Daten ins SRAM schaufeln klappt schon mit 20ns. Verstehe leider nur nicht wozu die LVCMOS33 sind. Ich nutze ein bischen veraendert diesen VHDL Code http://www.derepas.com/fabrice/hard/ramtester.vhd.txt Schonmal ein Danke fuer die nette Hilfe @Hagen Gruß, Dirk
>>so Daten ins SRAM schaufeln klappt schon mit 20ns. Jo, das ist ja auch nicht das Problem, denn der FPGA wird das WR Signal samt Address/Datenbus synchron zum gleichen Zeitpunkt für exakt deine 20ns ansteuern. Das einzigste was dabei also schief gehen könnte wäre das der SRAM Baustein ne Macke hat und nicht innerhalb seiner Spezifikationen arbeitet. Schreiben also kein Problem. Das Lesen durch den FPGA/CPLD ist das Problem. Denn dieser sampelt Inputdaten frühzeitiger als der Rest deiner State Machine seine neuen Staties ändert, eben weil dort noch einiges an zb. kombinatorischer Logik dranhängen wird. Die Inputlatches sind also schneller. Sollte es nun so wie bei mir sein, ein 10ns CPLD der mit 20ns den SRAM anspricht dann wird also bis zu 10ns VOR der eigentlichen synchronen Weiterverarbeitung im getakteten FSM Process, dieser Inputlatch gefüllt. Gruß Hagen
Hi, vielen dank. Ich lasse es erstmal auf 20ns. An deine Problembeschreibung hatte ich mit meinem kleinen Horizont garnicht gedacht. Gruß, Dirk
Hi, ich weiss nun was die LVCMOS33 Komponenten sind, aber muss man die mit angeben? Jedes andere FPGA Projekt was ich mir anschaue benutzt diese IO Componenten nicht. Gruß, Dirk
ein I/O-Pin am FPGA kann für x verschiedene I/O-Standards (also Logikpegel-Definitionen) konfiguriert werden. Entscheidend ist, was per default eingestellt wird, vermutlich LVTTL. Also muss über ein Constraint für jeden Pin der I/O-Standard angegeben werden, falls dieser vom default abweicht.
Hallo, danke schoen FPGA-User. Ich werde dann mal ins Spartan3 Datasheet schau was als default genommen wird. Gruß, Dirk
Hallo, so nun habe ich mich mal durch einige Datasheets gelesen. Als Standard ist LVTTL aktiviert. Einen DC Level unterschied zwischen LVCMOS33 und LVTTL konnte ich nicht feststellen. Die Schaltcharakteristik hat aber gravierende Unterschiede. Das scheint auch der einzige Grund zusein, weshalb im VHDL Tutorial LVCMOS33 benutzt wird zur Ansteuerung der des SRAM's. Gruß, Dirk
Hallo, ich habe immer zwei Warnings beim Place & Route ignoriert. Ich wuerde doch schon lieber wissen wollen was die bedeuten. Ich habe per Google schon danach gesucht, aber eine Erklaerung konnte ich nicht finden. BANK 6 SS0 Threshold exceeded BANK 7 SS0 Threshold exceeded kann mir jemand weiterhelfen bei diesen warnings ? Gruß, Dirk
Hallo, ich habe eine kleine Frage: Bei asynchronen Sram muss ich bestimmte Timings einhalten. Kann mir jemand sagen wie ich sowas am besten loese bzw. wie ich eine Zeitabfrage am besten realsiere? Simples Beispiel: (kein richtiger Vhdl Code) if now < timetoholddata then return Wuerde mich ueber ein kurzen Tipp freuen. Gruß, Dirk
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.