Hallo Leute,
habe eine kleine Frage zu der Geschwindigkeit des PowerPCs 440.
Ich habe demnächst ein Projekt, indem ich Daten alle 50 ns (20 MHz)
auslesen muss. Zu Testzwecken habe ich über XPS ein einfaches Projekt
mit dem PPC erstellt und als PPC-Takfrequenz 400 MHz ausgewählt. Nach
dem Export in die SDK Software habe ich in C folgendes kleines
Programmbeispiel geschrieben:
1 | #include <stdio.h>
|
2 | #include "xparameters.h"
|
3 | #include "xil_cache.h"
|
4 | #include "xstatus.h"
|
5 | #include "xgpio.h"
|
6 | #include "gpio_header.h"
|
7 |
|
8 | #define GPIO_DEVICE_ID XPAR_XPS_GPIO_INTERRUPT_DEVICE_ID
|
9 | #define GPIO_CHANNEL 1
|
10 |
|
11 | u8 x,y;
|
12 | /********************************************************************/
|
13 |
|
14 | int main()
|
15 | {
|
16 | Xil_ICacheEnable();
|
17 | Xil_DCacheEnable();
|
18 |
|
19 | x=0;
|
20 | while (1) {
|
21 | x++;
|
22 | y=(x&1);
|
23 | XGpio_DiscreteWrite(&GpioOutput, GPIO_CHANNEL, y);
|
24 | }
|
25 |
|
26 | Xil_DCacheDisable();
|
27 | Xil_ICacheDisable();
|
28 |
|
29 | return 0;
|
30 | }
|
Das Programm toggelt einfach nur einen GPIO Output, welches ich dann auf
dem Oszilloskop mir betrachte. Dort messe ich dann, wie lange er für das
Invertieren des Output Signals braucht. Die Zeit die er zum toggeln
braucht beträgt ca. 230 ns (ca. 4,3 MHz).
Warum ist die Taktfrequenz so langsam, der SPLB Bus ist mit 100 MHz
getaktet und der PPC mit 400 MHz. Gibt es irgendwelche Einstellungen in
XPS mit dem ich die while-Schleife schneller hinbekomme.
Als Ausblick nebenbei, später wenn ich das Projekt aufsetze, wird
natürlich mit einem Interrupt ein 20MHz Input-Signal abgetastet, um die
ankommenden Daten dann im Ram abzuspeichern.
Würde mich auf jede Antwort sehr freuen
mfg Cihan