PULP Community
using axi from rtl and C code - Printable Version

+- PULP Community (https://pulp-platform.org/community)
+-- Forum: PULP's Community forum (https://pulp-platform.org/community/forumdisplay.php?fid=1)
+--- Forum: PULP General questions (https://pulp-platform.org/community/forumdisplay.php?fid=2)
+--- Thread: using axi from rtl and C code (/showthread.php?tid=175)



using axi from rtl and C code - sake - 03-05-2020

Hi, I'm trying to add hardware accelerator to the system that would connect with axi-lite slave to pulpissimo.
The system already has master there that I can access from CPU?
I have skimmed through pulpissimo datasheet and bit of the code but I'm lost here.
Got any pointers?


RE: using axi from rtl and C code - kgf - 03-05-2020

Hello, 

Davide gave a quite detailed tutorial on PULPissimo during WOSH (3.5 hours). You can find it on our youtube channel:
  https://www.youtube.com/pulp_platform
  https://www.youtube.com/watch?v=27tndT6cBH0 

I think that should cover/answer most of the questions.


RE: using axi from rtl and C code - sake - 03-06-2020

(03-05-2020, 07:41 PM)kgf Wrote: Hello, 

Davide gave a quite detailed tutorial on PULPissimo during WOSH (3.5 hours). You can find it on our youtube channel:
  https://www.youtube.com/pulp_platform
  https://www.youtube.com/watch?v=27tndT6cBH0 

I think that should cover/answer most of the questions.
Thanks.


RE: using axi from rtl and C code - sake - 04-23-2020

There is axi bus in pulp_soc that goes axi_slice_dc_slave_wrap - soc_interconnect.
We removed axi_slice_dc_slave_wrap and routed our axi lite slave to the  s_data_out_bus.
From C we managed write and read to the 4 registers and confirm that the our component did process the data.
If we were to use full axi is there some register or some way to control the burst and confirm that slave got the data in C?

Code:
#define REG_COUNT 4
uint32_t *AXI_START = 0x10000000;

int main(void)
{
 for(int i = 0; i < REG_COUNT; i++) {
   AXI_START[i] = 0xff00ff00;
 }

 for(int i = 0; i < REG_COUNT; i++) {
   printf("%08x\t", AXI_START[i]);
 }
 return 0;
}