Implementation of I2C multimaster/slave module

The Inter-integrated Circuit (I2C) Protocol is a protocol intended to allow multiple "slave" digital integrated circuits ("chips") to communicate with one or more "master" chips.
The goal of the project is to design and implement I2C master and slave on FPGA board for further uses.

This project was done out of the necessity of simple, efficient and reliable communication between many devices, while using very few hardware components.
The project includes 2 main parts : hardware and software.
The hardware part includes implementation of generic I2C modules of master and slave.
It includes implementation of a component which processes the data of transmissions given by the user and storing it on memory devices.
The software part is writing a program in c that concludes all the needed transmissions for the communications.
The final goal is communicating with a RGB sensor using as I2C slave.