Hallo zusammen, ich hab mal eine Frage bzgl. dem Ressourcenverbrauch: Ich hab im Sparan 400 noch distributed Ram frei aber nur noch wenig LUT und FF. 1. Variante ( bisher soll optimiert werden ) a_8_Bit_wert1 usw. sind konstante 8 bit Wert und ändern sich nicht die 4 Bytes Data_1 usw. werden zyklisch 0 bis 7 immer wieder für eine Berechnung als Multiplikanten gebraucht. Pseudo Code: if Addr_Counter = 0 then Data_1 = a_8_Bit_wert1 Data_2 = a_8_Bit_wert2 Data_3 = a_8_Bit_wert3 Data_4 = a_8_Bit_wert4 elseif Addr_Counter = 1 then Data_1 = a_8_Bit_wert5 Data_2 = a_8_Bit_wert6 Data_3 = a_8_Bit_wert7 Data_4 = a_8_Bit_wert8 elseif Addr_Counter = 2 then Data_1 = a_8_Bit_wert9 Data_2 = a_8_Bit_wert10 Data_3 = a_8_Bit_wert11 Data_4 = a_8_Bit_wert12 usw... elseif Addr_Counter = 7 then Data_1 = a_8_Bit_wert29 Data_2 = a_8_Bit_wert30 Data_3 = a_8_Bit_wert31 Data_4 = a_8_Bit_wert32 end if 2. Variante: ============= Realisierung als Codierter Zähler, welcher 8 Zustände kennt und 32 Bit Breit ist. If Reset = 1 then Data_32_Bit = a_8_Bit_w1 & a_8_Bit_w2 & a_8_Bit_w3 & 8_Bit_w4 elseif clk = steigende flanke und counter_enable = 1 then if Data_32_Bit = a_8_Bit_w1 & a_8_Bit_w2 & a_8_Bit_w3 & 8_Bit_w4 then Data_32_Bit = a_8_Bit_w5 & a_8_Bit_w6 & a_8_Bit_w7 & 8_Bit_w8 elsif Data_32_Bit = a_8_Bit_w5 & a_8_Bit_w6 & a_8_Bit_w7 & 8_Bit_w8 then Data_32_Bit = a_8_Bit_w9 & a_8_Bit_w10 & a_8_Bit_w11 & 8_Bit_w12 usw. alle 8 Zustände und Folgeschritte definieren. 3. Variante: ============= Definition als Distributed Ram bzw. ROM und einen 3 Bit Zähler der von 0 bis 7 am Adresseingang durchläuft. Ich hab nun grundsätzliche Fragen: 1. Erkennt die Optimierungs Mimik des Compiler dass es sich bei der Variante 1 letzlich um ein ROM handelt und bestelt "intern" eine Platzsparende Lösung ? 2. Kann man den Platzbedarf bei Variante 1 als ca. 4 8 8 Bits d.h. 256 FFs ansetzen ? Und durch Einsatz von Distributed RAM / ROM genau diese Anzahl FF einsparen oder verstehe ich das falsch ? 3. Kann man bei Variante 2 den Platzbedarf als ca. 4 * 8= 32 FF ansetzen plus entsprechende AND, OR, XOR Logik ? Wie geht die AND, OR Logik in die Platzbedarfsrechnung ein ? 4. Kann man sagen, dass bei noch verfügbarem distributed ROM die 3. Variante auf jeden Fall die Ressourcensparendste ist . ca. 3 FF + AND OR Logik ? Ich hoffe Ihr könnt mir helfen. Gruß vom FPGA-Fragenden
@FPGA-Fragender >Ich hab im Sparan 400 noch distributed Ram frei aber nur noch wenig LUT >und FF. Das ist ein Widerspruch. Distributed RAM IST LUTs, wobei beim Spartan3 technologisch bedingt nur die Hälfte der LUTs als distributed RAM verwendet werden kann. >1. Erkennt die Optimierungs Mimik des Compiler dass es sich bei der >Variante 1 letzlich um ein ROM handelt und bestelt "intern" eine >Platzsparende Lösung ? Wahrscheinlich schon, das sollte dir der Compiler bei der Synthese sagen. >2. Kann man den Platzbedarf bei Variante 1 als ca. 4 8 8 Bits d.h. >256 FFs ansetzen ? ??? Das ist ein ganz normaler Dekoder. Die FlipFlops werden nur für den Zähler gebraucht (3 Stück). Nix mit 256 FlipFlops. > Und durch Einsatz von Distributed RAM / ROM genau >diese Anzahl FF einsparen oder verstehe ich das falsch ? Ich fürchte du verstehst was falsch. >3. Kann man bei Variante 2 den Platzbedarf als ca. 4 * 8= 32 FF ansetzen Ja. >plus entsprechende AND, OR, XOR Logik ? Wie geht die AND, OR Logik in >die Platzbedarfsrechnung ein ? Kommt darauf an wie weit der Compiler das optimieren kann (hängt auch ein wenig von den Werten a_8_Bit_wert1 etc. ab). Das wird dann in LUTs gemapped. >4. Kann man sagen, dass bei noch verfügbarem distributed ROM die 3. >Variante auf jeden Fall die Ressourcensparendste ist . ca. 3 FF + AND OR >Logik ? Deine 1. und 3. Variante sind praktisch identisch, und wenn der Compiler nicht stolpert kommt am Ende das gleiche raus. MFG Falk
In VHDL erkennt ISE z.B. eine constant, gefüllt mit deinen Werten, auf deren Index du mit der Adresse zugreifst, als ROM.
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.