Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Valued Contributor III
982 Views

Avalon bus addressing wrong

Any idea why in my C code I poll address 0x8000 but actually see 0x0c00 (divide by 2) on Avalon address signals utilizing SignalTap? I would expect to see 0x2000 (divide by 4).

0 Kudos
7 Replies
Highlighted
Valued Contributor III
2 Views

0x0c00 isn't even a value you can get by dividing 0x8000 by an integer. Are you sure you are looking at the correct time in signaltap? The component's address bus is usually always connected to its master and you can see the address change when the CPU is actually accessing another component. Be sure you check the address only when the CPU does an actual read or write access.

0 Kudos
Highlighted
Valued Contributor III
2 Views

I am triggering on NIOS RD signal & see address 0xC00.  

 

Another observation is that when I run my code via Eclipse I would expect tool to stop at MAIN() then I click on RUN again. Eclipse does not do this and as mentioned I see NIOS RD's at 0xC00. 

 

I've used these tools on other projects before but this issue has me stumped.
0 Kudos
Highlighted
Valued Contributor III
2 Views

What is the CPU reading at that address? Is it a memory chip or a component? Do you look at the signals on the CPU's master Avalon interface or on the slave's? 

How did you implement your test software? 

Does your CPU have any data cache?
0 Kudos
Highlighted
Valued Contributor III
2 Views

-CPU is reading all zero's 

-I am trying to read my custom designed IP. 

-I am monitoring ADDRESS signal on my slave side 

-CPU has no cache 

 

I've did this sort of thing 1 year ago & was successfull. Appears to me to be a Quartus\QSYS bug. I am using version 12.0 sp2
0 Kudos
Highlighted
Valued Contributor III
2 Views

It's odd, I've never seen a problem like that before... 

Could you also monitor the CPU's data master to see what it is doing and what address it is using? You can still trigger on your slave's read signal to be sure you get the right transaction.
0 Kudos
Highlighted
Valued Contributor III
2 Views

Let me back up.... 

 

Have you ever seen where one runs in debug mode & when C code is downloaded the debugger does not stop at MAIN ()? 

 

Normally debugger stops at MAIN() , then user click RUN. 

 

I believe this is the root of my problem.
0 Kudos
Highlighted
Valued Contributor III
2 Views

I hardly ever use the debugger... Can you set a breakpoint and see if it stops there? 

It could also be a good idea to add a printf() at start up, just to be sure the debugger is running the correct code!
0 Kudos