Forum: FPGA, VHDL & Co. opb timer mit Microblaze (Laufzeitmessung)


von Valentin S. (jonava)


Lesenswert?

Hallo Zusammen,

ich bin Neuling in der FPGA Landschaft. Ich habe ein VirtexIIPro auf 
einem XUPV2P von DIgilent.
Ich habe einen Microblaze und einen Opb Timer eingefügt.
Kann mir jemand sagen wie man mit diesen Timer ansteuern kann.
Ich habe einen C-Code, der Daten von der CF-Karte liest, verarbeitet und 
dann wieder zurück schreibt. Mit dem Timer würde ich gerne die Zeit 
messen, die dafür benötigt wird.
Welche Funktionen in C kann ich verwenden um den Timer zu starten, den 
Timerwert aus zu lesen und den Timer zu Resetten?


Vielen Dank im Voraus.

Viele Grüße
Jonanova

von Valentin S. (jonava)


Lesenswert?

Hallo Zusammen,

ich habe beim Googeln nocht etwas gefunden und poste es für die, die es 
brauchen können. Dazu einfach den OPB Timer in der EDK einfügen und 
Softwarecode einbinden. Der Wert für total gibt die Anzahl der 
Taktzyklen an. Wenn ihr den Wert in Sekunden haben wollt, dann müsst ihr 
ihn durch euren Systemtakt teilen.

#include "xtmrctr.h"

XTmrCtr  timer1;
Xint32 total, t1, t2;

XTmrCtr_Initialize(&timer1,XPAR_OPB_TIMER_1_DEVICE_ID);

XTmrCtr_SetResetValue(&timer1,0,0);

    XTmrCtr_Start(&timer1,0);
    t1 = XTmrCtr_GetValue(&timer1,0);

// code to measure

    t2 = XTmrCtr_GetValue(&timer1,0);
    total = t2 - t1;
    xil_printf("clock cycles = %d - %d = %d\r\n", t1, t2, total);


Viele Grüße
Jonanonva

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.