Forum: FPGA, VHDL & Co. Ressourcenoptimierungsfrage


von Verilog hans (Gast)


Lesenswert?

Hallo Gemeide,

ich habe folgenden Code der abhängig von einer detektierten 
Grenze(channel_edge) ein Feld n-Schritte durchsuchen soll ob es einen 
Wechsel zu einem positiven Anstieg gibt.
1
for(int j=0;j<boundaries_detection_intervall;j=j+1) begin
2
            
3
               if(channel_edge_1[i]-j < 0 || channel_edge_1[i]==0) begin  --// cancel if out of bounds
4
                 break;
5
               end-- // end if
6
               else begin
7
                 
8
                  if(new_psd_flat[channel_edge_1[i]-j] < new_psd_flat[channel_edge_1[i]-j -1] ) begin  --// search left for boundarie
9
10
                   boundaries_reg[i]=channel_edge_1[i]-j;                  
11
                   break;  --// end the boundarie for loop
12
                  end --// end if
13
                    
14
              end  --// end else
15
            end --// end for


Leider ist mein Code sehr Ressourcenfressend aber ich habe keine Idee 
wie ich es optimieren kann. Vielleicht kann mir der ein oder andere 
einen Denksantoß geben.

Ich denke das vorallem das Konstrukt new_psd_flat[channel_edge_1[i]-j] 
zu Problemen führt bin mir aber nicht sicher.

Danke

von Drill-Tutor (Gast)


Lesenswert?

Blockbild und Datanflußdiagramm wäre füs verständnis nicht schlecht.
Gruß

von tzu (Gast)


Lesenswert?

Das Problem ist wohl das du dir da ein großes FF-Logik Geflecht 
bastelst.

Keine Ahnung wie schnell das alles fertig werden soll, aber ich würds 
mal damit versuchen new_psd_flat als RAM zu behandeln und pro Takt 
maximal 2 mal auszulesen.

Allgemein ist da aber zu wenig Information um was konkreten vorschlagen 
zu können, vor allem auch zu viel abgeschnitten.

Was ist i?
Was wird überhaupot gemacht, sehe nur Abbrüche.

von fpgaquaeler (Gast)


Lesenswert?

Du kommst bestimmt aus der Software Ecke.

Eine for schleife wird in parallele Logic
umgewandelt. Das ist natuerlich resourcenfressend.
Probier den Algorythmus auf mehrere Takte aufzuteilen.

fpgaquaeler

von SuperWilly (Gast)


Lesenswert?

Erinnert mich in gewisser Weise an:


Beitrag "Verilog Task"

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.