Forum: FPGA, VHDL & Co. VHDL Cachebus


von AooA (Gast)


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? ;-)

von lalala (Gast)


Lesenswert?

Stichwort: Multiplexer

von AooA (Gast)


Lesenswert?

lalala schrieb:
> Stichwort: Multiplexer

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

von user (Gast)


Lesenswert?

das kannst schon sowas beschreiben. das synthesetool wird daraus einen 
multiplexer machen

von lalala (Gast)


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.

von Tom N. (tom-nachdenk)


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.

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


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)

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.