Hallo! Eine Frage zur Konfiguration von CLBs als RAM: So wie ich das verstanden habe, besteht ein CLB aus Slices, diese wiederum aus je zwei LUTs mit FF. Die LUTs (in meinem Fall mit je vier Eingängen) lassen sich für eine boolesche Funktion verwenden oder als RAM konfigurieren. Bisher habe ich diese Konfiguration als RAM nicht genutzt, würde aber gern wissen wie es geht bzw. ob das automatisch geschieht? Wenn ich eine Anweisung in VHDL schreibe, welche mir einen (z.B. 8-Bit-)Wert in ein Register speichert, werden da die FFs benutzt und dementsprechend viele Slices? Wie bekomme ich diesen Wert stattdessen in solch einen RAM (welcher nur ein Slice braucht) und wieder raus? Außerdem, wie lange benötigt der RAM zum speichern bzw. lesen? Wenn das taktmäßig genauso schnell funktioniert wie beim Zugriff auf die FF, wozu dann FF? Hab bisher nicht so auf die Technologie geschaut, wird Zeit, dass ich was drüber lerne :-) . Vielen Dank für Antworten.
Die FFs takten nach Aussen gesehen am schnellsten. Du bekommst je Takt ein Datum rein und auch wieder raus. Das geschieht einfach durch Schreiben der VAriablen und gleichzeigtes Lesen derselben. (Ein Takt Verzug). Blockramzellen sind - da in Hardware und optiert aufgebaut - theoretisch schneller, in der Praxis bekommst Du aber aufgrund des Routings und des Adress-MUX oft timing-Probleme, daß höchste Frequenzen nicht mehr leistbar sind und ein Register dahinter muss. Damit hast Du pauschal einen (oder auch zwei) clks Verzug, bis nach dem Anlegen der Adresse das Datum kommt.
Danke für die Antwort. Ich mein ja aber nicht die vorhandenen Blockram, die hab ich schonmal benutzt, sondern die LUT, welche sich zu RAM konfigurieren lassen. Oder ist das dasselbe und ich hab es falsch verstanden? Laut Datenblättern gibt es diese verschiedenen Modi der CLBs.
Dein Stichwort ist distributed RAM. Ich würde mich nicht verlassen das aus dem VHDL Code (array) ein solcher RAM erkannt und benu8tzt wird. Am besten die wirfst mal den Coregen an. Dort wählst Du Speicherelemente aus, gibst die Größe etc an und wählst als Realisierung Distributed RAM an. Dann kommen hinten die Files raus die du einbinden kannst. Ich hab mal nen screenshot drangehängen
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.