mikrocontroller.net

Forum: FPGA, VHDL & Co. Diverse Fragen bezueglich SRAM Anbindung


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>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

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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?

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

vielen dank. Ich lasse es erstmal auf 20ns. An deine
Problembeschreibung hatte ich mit meinem kleinen Horizont garnicht
gedacht.

Gruß,
Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke schoen FPGA-User. Ich werde dann mal ins Spartan3 Datasheet schau
was als default genommen wird.


Gruß,
Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.