cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
281 Views
Registered: ‎01-29-2020

MicroBlaze reads wrong Memory Entrys in combination with a MPMC

Hello,

I use a Microblaze (8.50.c) with an MPMC (6.06.a) in ISE 14.7 to communicate with a DDR2 RAM.

After a few resets/restarts, the MicorBlaze reads wrong datas. E.g:

Right Case:

Address:
88800000: 00000080 88800004 88800008 8880000C
88800010: 88800010 88800014 88800018 8880001C
88800020: 88800020 88800024 88800028 8880002C
88800030: 88800030 88800034 88800038 8880003C
88800040: 88800040 88800044 88800048 8880004C
88800050: 88800050 88800054 88800058 8880005C
88800060: 88800060 88800064 88800068 8880006C

 

Wrong Case:

Address:
88800000: 888000FC 55555555 88800004 88800008
88800010: 8880000C 88800010 88800014 88800018
88800020: 8880001C 88800020 88800024 88800028
88800030: 8880002C 88800030 88800034 88800038
88800040: 8880003C 88800040 88800044 88800048
88800050: 8880004C 88800050 88800054 88800058
88800060: 8880005C 88800060 88800064 88800068
88800070: 8880006C 88800070 88800074 88800078

 

It looks like that each Memory Entry is shifted by one Memory space. But if I read 8880007C (last entry in Table above) again, I get the right value 8880007C.

I am sure that the Memory Controller always get the datas from the Memory Access bevor. Last example:

Read Address xxxxx, get Data YYYYY

Read Address 8880007C (last entry in Table above), get Data xxxxxx (Datas that normally in Entry xxxxx)

Read Address 88800070, get Data 888007C

Read Address 88800070, get Data 8880070

Read Address 8880070, get Data 8880070

Read Address 8880060, get Data 8880070

Read Address 8880064, get Data 8880060

I think the problem is now clear.

This problem occurs only after a reset. If the memory works right it works all the time right (e.g. 24h). If the Memory is corrupted, the behavior is always present until the next reboot or reset of the system.

Thanks for your answers

Fabian

 

0 Kudos
Reply
0 Replies