Forum: FPGA, VHDL & Co. Frage zur Benutzung von Block Ram in Actel Igloo Nano FPGA


von Steve (Gast)


Lesenswert?

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

von Duke Scarring (Gast)


Lesenswert?

>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

von Steve (Gast)


Lesenswert?

Ja das funktioniert so. Habe ich schon so verwendet.

mfg

Steve

von Steve (Gast)


Lesenswert?

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.

von Hagen R. (hagen)


Lesenswert?

Hast du den Zugriff auf dein BRAM getaktet ?

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

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

von xTMx (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.