Hallo nachdem mein Projekt jetzt theoretisch funktioniert, hab ich das Problem das der FPGA chip den ich nutzen möchte (IGLOO nano AGLN 250) an seine Kapazitätsgröße stösst. Leider benötigt mein Programm mehr core cells als der chip zur Verfügung stellt. Allerdings ist mir aufgefallen, dass im Synplify da steht, dass ich 0 von 8 Block Rams benutze. Ich hatte die Idee, dass ich vielleicht die Werte eine meiner großen Matrizen im Programm ja in diesen Blockram speichern könnte und somit Tiles/Core Cells sparen kann. Ich hab da auch was gefunden in der Synplify Hilfe wie man einem Array sagt, dass man die Werte im Block Ram speichern möchte, aber irgendwie funktioniert es nicht. Hier der Auszug aus meinem Code: type matrix is array (15 downto 0, 7 downto 0) of std_logic_vector(7 downto 0); signal matrix_Sicherungsmesswerte : matrix; -- Matrix in Ram schreiben attribute syn_ramstyle : string; attribute syn_ramstyle of matrix_Sicherungsmesswerte : signal is "block_ram"; . ..... Leider funktioniert es so nicht und es wird immernoch im Synplify angezeigt dass kein Block Ram verwendet wird :( Core Cells : 6677 of 6144 (109%) IO Cells : 36 of 68 (53%) RAM/ROM Usage Summary Block Rams : 0 of 8 (0%) Hat jemand eine Idee was ich falsch mache. Geht das mit der Ram Benutzung überhaupt so einfach wie ich mir das Vorstelle? viele Grüße Steve
>type matrix is array (15 downto 0, 7 downto 0) of std_logic_vector(7 downto 0);
Bist Du sicher, das Synplify mit dreidimensionalen Arrays umgehen kann?
Xilinx XST hat schon bei zweidimensionalen Arrays Probleme.
Duke
Ja das funktioniert so. Habe ich schon so verwendet. mfg Steve
Ich versuch schon den ganzen Tag herauszufinden wie ich denn den Blockram vom Actel FPGA nutzen kann so dass ich meine Matrix da reinschreiben und wieder auslesen kann. Irgendwie blick ich da gar nicht durch, gibt es da niemanden, der da etwas Erfahrung hat und mir ein wenig Hilfestellung geben kann? Ich würde mich sehr über eine Antwort freuen.
Hast du den Zugriff auf dein BRAM getaktet ?
Steve schrieb: > Ich versuch schon den ganzen Tag herauszufinden wie ich denn den > Blockram vom Actel FPGA nutzen kann so dass ich meine Matrix da > reinschreiben und wieder auslesen kann. Irgendwie blick ich da gar nicht > durch, gibt es da niemanden, der da etwas Erfahrung hat und mir ein > wenig Hilfestellung geben kann? > > Ich würde mich sehr über eine Antwort freuen. Lies dir mal folgendes Dokument durch. http://www.actel.com/documents/LPD_SRAMFIFO_HBs.pdf Auf Seite 23 findest du ein Beispiel zur Instanzierung des BlockRams, allerdings in Verilog. Grundsätzlich macht man so etwas mit dem SmartGen Core Generator von Actel. Der gehört mit zu Libero. Tom
Willst du den BlockRAM mit der Synthese vorinitialisieren, so dass dir der INhalt dann im Design zur Verfügung steht? Oder willst du den RAM erst zur Laufzeit mit einer Logik innerhalb des Designs mit der Matrize beschreiben? Ersteres ist in Actel FPGAs soweit ich weiß NICHT möglich. Zumindestens bei denen der Art ProAsic3(E). Es existiert dort nur eine Möglichkeit, den Inhalt zur Initialisierung per Flashpro nach dem Flashen des eigentlichen Designs reinzuspielen. Das ist meiner Meinung nach auch ein riesen Nachteil der Chips, weil man für viele Anwendungsfälle doch vorinitialisierte Matrizen braucht, die man aber in diesen FPGAs als Register implementieren muss. Oder BRAMS, die von draußen während der Laufzeit geladen wären. Beides sehr umständlich. Den Inhalt des RAMs während der Laufzeit mit einer ganz normalen RAM Ansteuerung zu beschreiben dürfte problemlos möglich sein. Wie sich das mit dem 3-dimensionalen Array verhält kann ich aber auch ni sagen.
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.