Matrix components FPGA , MicroC


Hello , I’ve had my creator like 3 months ago , I worked with core at the beginning but I’ve noticed that HAL would give more freedom so now I’m using HAL , little by little i’m discovering this powerfull board , I’d like someone to explain me what’s happening exactly , there is a microcontroller and FPGA , I guess those are the minds of the board , could someone explain me how the interactions are managed between the microcontroller and FPGA (if we suppose they are the minds of the board) and other passive components sensors etc in the first place and then between those 2 and raspberry pi , I need more infos about the zwave and zigbee also , I’m A first year embeded systems engineering student , and I’m starving to know more about this domain that seduce me since I was a child (robotics and A I), I think I’m so lucky that my passion meets my field of studies , so if you feel that u can help me with other informations do not hesitate , thank you :slight_smile:


Hi Amine,

Nice! We are continuously improving our documentation and I think this is something that can be improved.

Regarding your question, the process goes like this:

  • The MCU job is to continuously read all sensor data using I2C and send it to the FPGA, code here. This includes all sensors except the microphones.
  • FPGA in the other hand manages the microphone array data reads, PDM to PCM conversion and filtering. ALso the FPGA is the one in charge of control de RGB LEDs.
  • In the Raspberry Pi data is read an write from the FPGA using SPI. All data is sent this way, sensors, LEDs, microphone, and even a additional UART we have.
  • This SPI communication with the FPGA can happen either from the matrix kernel modules or directly from our HAL C++ library.
  • Regarding Zwave and zigbee they both use uart connection. Both UART connection go to the FPGA where this is in one case routed to the Raspbery Pi UART and the second is wired to a UART implemented in the FPGA. This last UART is seen in the Raspberry Pi as a regular UART device thanks to the kernel modules that handles this.

This is roughly how data is passed in and out of the board, not sure if I made it clear so please ask any additional question if you need.



Hello Yoelrc88
Thank you so much for your answer , just finished the exams that’s what made my answer this late.
I’ll read about all those names you gave and come back to you if I have more questions , thank you so much.