Page 1 of 1

increase work frequency

Posted: Wed May 02, 2018 12:41 am
by juanperengüez
hi, we are news in the programming the redpitaya and We are carrying out a project in which we need to increase the frequency of work of the redpitaya and we would like to know if it is possible to do it by programming in C or touch create a bit point, we have a card with the AD9216 which is an ADC that works at 100MSPS , the redpitaya must deliver the CLOCK at 100 MHz and read the digital bits (10 bits) at the same speed; with the programming that we have now the pitaya delivers the CLOCK and reads the bits at a speed of approximately 235Khz. We are working with the /opt/redpitaya/fpga/fpga_0.94.bit

I attach the code

while(i<400)
{
rp_DpinSetState (RP_DIO0_P ,1);
i=i*10;
rp_DpinGetState (RP_DIO7_P, &state);
buff=state;
rp_DpinGetState (RP_DIO6_P, &state);
buff[i+1]=state;
rp_DpinGetState (RP_DIO7_N, &state);
buff[i+2]=state;
rp_DpinGetState (RP_DIO6_N, &state);
buff[i+3]=state;
rp_DpinGetState (RP_DIO5_N, &state);
buff[i+4]=state;
rp_DpinGetState (RP_DIO4_N, &state);
buff[i+5]=state;
rp_DpinGetState (RP_DIO3_N, &state);
buff[i+6]=state;
rp_DpinGetState (RP_DIO2_N, &state);
buff[i+7]=state;
rp_DpinGetState (RP_DIO1_N, &state);
buff[i+8]=state;
rp_DpinGetState (RP_DIO0_N, &state);
buff[i+9]=state;
rp_DpinSetState (RP_DIO0_P ,0);
rp_DpinGetState (RP_DIO7_P, &state);
buff2=state;
rp_DpinGetState (RP_DIO6_P, &state);
buff2[i+1]=state;
rp_DpinGetState (RP_DIO7_N, &state);
buff2[i+2]=state;
rp_DpinGetState (RP_DIO6_N, &state);
buff2[i+3]=state;
rp_DpinGetState (RP_DIO5_N, &state);
buff2[i+4]=state;
rp_DpinGetState (RP_DIO4_N, &state);
buff2[i+5]=state;
rp_DpinGetState (RP_DIO3_N, &state);
buff2[i+6]=state;
rp_DpinGetState (RP_DIO2_N, &state);
buff2[i+7]=state;
rp_DpinGetState (RP_DIO1_N, &state);
buff2[i+8]=state;
rp_DpinGetState (RP_DIO0_N, &state);
buff2[i+9]=state;
i=i/10;
i++;
}

thanks for your help

Re: increase work frequency

Posted: Mon May 07, 2018 4:44 pm
by jmadsenee
Hi Juan,

I abandoned the API commands long ago because they are way too slow. I have written my own C program to run on the RP. I started with the code for the Scope app and the memory map document, then wrote my own app to run on the RP.

However, you can still only get data but so fast. It may come out of the ADC into the FPGA at 125MHz, but it takes time to move it from the FPGA into the processor cores, and then to send it over the ethernet connection to the PC. Studying the Scope and other apps is a good way to learn.

I also went through all of Anton Potočnik's excellent FPGA tutorials. They were an incredible help learning about the FPGA. Starting in the third one you learn about writing simple code to run on the PR and communicate with the FPGA memory map.

Anyway, the only way to speed up things is to write your own C program to run on the RP.

John