FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
5892 Discussions

Need the test code for I2C_RSU

RVadl2
Novice
1,635 Views

 

Hi @Ana_R_Intel1 ,

I am trying out the I2C_RSU project in the below link using a Max 10 Development board. I understand this slave code will help in loading the 10M50 FPGA with a new image through I2C. Can we load the new image into FPGA using an Arduino i2c communication?

Can you provide test code or I2C commands used to test I2C_RSU.

 

https://community.intel.com/t5/FPGA-Wiki/Max-10-I2C-to-RSU/ta-p/735409

 

0 Kudos
12 Replies
JohnT_Intel
Employee
1,622 Views

Hi,


IT is possible to use the Adruino I2C to send the data and update image. We do not have the example example I2C command. I would recommend you to follow the guideline on how to send the data and received data through I2C as below.


I2C Avalon 32 bit write - 10100110 follow by 4 byte Avalon address and 4 byte data.

I2C Avalon 32 bit read - 10101110 follow by 4 byte Avalon address.


0 Kudos
RVadl2
Novice
1,617 Views

Hi,

Thanks for the quick reply. Basically from the test code I wanted to understand the below things

1. what will the slave address of FPGA with I2C_RSU code

2. When we write the image, into which CFM(0,1 or 2) will the image be written? Will it depend on the Avalon address that we write like in the slave if address starts with 0x10000, then image will be written to CFM1 etc.? Please correct me if I am wrong

3. And what speed the i2c should be configured?

 

Regards,

Ravi Kanth V

 

0 Kudos
JohnT_Intel
Employee
1,604 Views

Hi Ravi,


1. what will the slave address of FPGA with I2C_RSU code

It will be "1010011".

2. When we write the image, into which CFM(0,1 or 2) will the image be written? Will it depend on the Avalon address that we write like in the slave if address starts with 0x10000, then image will be written to CFM1 etc.? Please correct me if I am wrong

Yes, you are correct. You need to refer back to your CFM addressing to determine the start of the specific CFM addressing.

3. And what speed the i2c should be configured?

It will depends on your I2C IP setting used.


0 Kudos
RVadl2
Novice
1,590 Views

Hi,

I tried to scan the i2c slave address(of the Max10 device after loading I2C_RSU) using Arduino code and got the below result. I did not understand why I got so many addresses, which gave i2c acknowledge.

RVadl2_0-1625551282074.png

Then I am using the attached master_reader code to read data from the avalon address 0x0010_00F0, but I am reading back the address and not the data at that location. 

 

 

0 Kudos
JohnT_Intel
Employee
1,581 Views

Hi,


When you performed read, it will actually have address (1010xxx1) where the x is don't care bit.


0 Kudos
RVadl2
Novice
1,568 Views

Hi,

I am able to read the data from any particular avalon address on the  on-chip flash using the attached arduino code. But am not able to write anything. May be I have to unprotect the required sector in the control-registers (csr).  I believe these are the 8 csr registers shown below(from the I2C_RSU example). Which of these are status and control registers. Correct me if my understanding is wrong or if I missed anything

RVadl2_0-1625737722998.png

 

Regards,

Ravi

0 Kudos
RVadl2
Novice
1,549 Views

Hi,

In the I2C_RSU example, as I was mentioning earlier, I can see 8 control and status registers (0x20000 to 0x20007). Just to check I wrote into each of those registers and found that I could not write to registers(0x20000 to 0x20003) but could write to registers (0x20004 to 0x20007). This means one of registers from (0x20000 to 0x20003) is status register and one of the registers from (0x20004 to 0x20007) is control register. Can you help me identify the addresses of control and status registers.

0 Kudos
RVadl2
Novice
1,520 Views

Hi,

Can you let me know the i2c speed in I2C_RSU example code. Is it 100KHz or 400KHz?

Is there an option to change it?

 

Regards,

Ravi 

0 Kudos
JohnT_Intel
Employee
1,503 Views

Hi,


There is no setting for this as the FPGA should be able to handle the clk speed. If you are not confident then I would recommend you to implement the timing constraint to make sure it is meeting the highest frequency you are planning to used.


0 Kudos
RVadl2
Novice
1,492 Views

Hi,

Can you also let me know, which are the correct addresses for control register and status register for on-chip flash?

 

Regards,

Ravi

0 Kudos
RVadl2
Novice
1,477 Views

Hi,

I was able to perform RSU with I2C_RSU example through i2c interface of Arduino. 

Thanks for the support. Now, I am trying to replace the I2C interface with SPI.

Can you let me know the SPI Avalon 32 bit write and read format, as you mentioned with I2C  earlier.

 

Regards,

Ravi Kanth V

0 Kudos
JohnT_Intel
Employee
1,474 Views

Hi,


Are you referring to Chapter 5 of https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_embedded_ip.pdf? If yes, then you need to follow Table 18.


0 Kudos
Reply