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;
}



RE: using axi from rtl and C code - jem - 02-14-2021

Hi,

Were you able to attach your hardware accelerator via axi-lite to PULPissimo?
If then could you please describe the procedure to do so?

Thanks,
Jones


RE: using axi from rtl and C code - meggiman - 02-23-2021

Hi jem,

With some reccent changes to the soc_interconnect architecture the situation changed quite a bit and attaching an AXI/AXI-lite peripheral to PULPIssimo became a lot easier. The new interconnect already contains a fully AXI4 compliant AXI crossbar. The soc_interconnect_wrap.sv in ips/pulp_soc/rtl/pulp_soc converts one of the crossbar outputs to APB by going the roundabout via AXI-lite (because we do not have a direct protocol converter from AXI4 to APB). You can use this module as a reference on how to convert from AXI4 to AXI4-lite. In order to add a new port to the AXI crossbar for your peripheral, please have a look at the following discussion on Github: https://github.com/pulp-platform/pulpissimo/issues/222