www.mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL Cachebus


Autor: AooA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mehrere Speicherblöcke (Xilinx FPGA: Block-RAM), die ich als 
Cache verwende. Die Blöcke sollen alle auf der selben Adress- und 
Datenleitung arbeiten. Die Blöcke werden dann per Enable eingeschaltet, 
wenn man sie braucht. Wie implementiert man sowas am besten im FPGA? 
std_logic und die nicht benötigten Busteilnehmer gehen auf 'Z'? Oder 
gibt es da bessere Techniken? Was passiert bei einem Kurzschluss, wenn 
versehentlich zwei Blöcke gleichzeitig auf die Datenleitung schreiben? 
Erkennt die Synthese sowas, oder brauch ich dann ein neues FPGA? ;-)

Autor: lalala (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stichwort: Multiplexer

Autor: AooA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lalala schrieb:
> Stichwort: Multiplexer

..soll man verwenden? ...könnte man alternativ verwenden? ...ist hier 
zwingend angebracht? Etwas mehr Info wäre doch hilfreich ;-)

Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das kannst schon sowas beschreiben. das synthesetool wird daraus einen 
multiplexer machen

Autor: lalala (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sollte ein Denkanstoss sein. Schau dir mal die Architektur eines FPGAs 
an - suche nach Tristate und du wirst feststellen, dass diese nur für 
IOBs zur Verfügung stehen.

Folglich braucht man einen Multiplexer.

Klar kann man auch Tristate in VHDL beschreiben. Aber warum etwas 
beschreiben, dass genau so nicht realisierbar ist.

Autor: Tom Nachdenk (tom-nachdenk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso nicht einen größeren RAM-Bereich per VDHL oder Coregen erzeugen 
und die Synthesesoftware 'machen' lassen? Zumal diese zumindest bei 
Altera (Xilinx evtl. auch) die einzelnen RAM-Blöcke nicht 
'hintereinander' anordnet sondern 'nebeneinander'. Dadurch benötigt man 
dann auch weniger (keine) Multiplexer wenn jeder Block nur ein paar Bits 
der Wortbreite abdeckt.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AooA schrieb:
> Wie implementiert man sowas am besten im FPGA? std_logic und die nicht
> benötigten Busteilnehmer gehen auf 'Z'?
Früher gab es noch wirklich Tristatebusse quer über das FPGA. Aber weil 
die so langsam waren, wurden sie wegpensioniert...

> Was passiert bei einem Kurzschluss, wenn
> versehentlich zwei Blöcke gleichzeitig auf die Datenleitung schreiben?
Das FPGAS wurde heiß...

> Oder gibt es da bessere Techniken?
Es gibt nur eine: den erwähnten Multiplexer.
Auch wenn du heute einen Tristatebus ins FPGA baust,
dann wird er entweder
1) als Multiplexer ausgeführt
oder
2) gar nicht synthetisiert (Fehlermeldung: Multiple Source/Drivers)

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.