Hi All,
I've a simple peripheral with an OPB interface. In a nutshell I've been getting some very slow write speeds over the OPB and wanted to see if this was normal, or if there was anything I can do to speed things up.
I've tried a number of configurations. Trying PPC and microblaze based systems. Using the OPB_IPIF and connecting directly to the bus. The results are:
Virtex2Pro + PPC cpu Freq: 100Mhz, bus Freq: 100Mhz memory write freq about 1.25MHz
1 write / 800ns or every 80 clock cylcesVirtex2Pro + microblaze cpu Freq: 100Mhz, bus Freq: 100Mhz memory write freq about 12.5MHz
1 write / 80ns or every 8 clock cylcesObviously the microblaze approach is faster. Is this simply because the PPC system has to use a plb2opb bridge? Including the IPIF doesn't seem to slow things down. The peripheral does and immediate acknowledge of the data write, so there should be no delays there.
Are them some tricks to speed up access to OPB based peripherals?
For reference, the test code is: #include "xparameters.h" #include "xutil.h" #include "xio.h"
int main(void) { print("Starting OPB Test\n");
Xuint32 dataOut = 0;
while (1) { // XIo_Out32(XPAR_OPB_TEST_0_BASEADDR, dataOut); // IPIF XIo_Out32(XPAR_OPB_IPIF_TEST_0_BASEADDR, dataOut); // Direct dataOut ^= 0x1; } }
Many Thanks Andy