Problems with a 4-MicroBlaze Multiprocessor Architecture

Feb 23, 2005 4 Replies

Dear all



I'm a new member of this board so a big hello to everybody


I'm experiencing some problems with a multiprocessor architectur



based on the MicroBlaze



I'm using ISE 6.3 and EDK 6.3


I made 2 working multiprocessor systems with 2 CPUs


The first use only one OPB bus and both the processors are linked t



such bus



The second implementation use ONE OPB bus for each processor, for



total of 2 processors and 2 OPB bus In this version obviously each processor lives "stand-alone" with n interaction with the other (I used 2 ethernet IPs to let talk each-other...



My problems started when I tried to implement a system with



processors linked to the same OPB bus



The synthesis and P&R flow worked correctly and no errors wer



given



I then wrote 4 similar applications, one for each processor


What I found was that only the first 2 processors worked and the othe


2 seemed to be "dead"

What I thought first is that due to collisions, the last 2 processor



were never able to access to the bus So I tried to "disable" the first 2 processors ( not uploading th firmware into the blockram) to see if the other 2 were able t "scream" but nothing happened



It seams that for some strange reason, if I use more than 2 processo



on an OPB bus, I can let them working correctly....( I don't want t use the FSL for now...



Any idea


Thanks a lot


Sergi


Hi,

If you connect four MicroBlazes to the same opb bus, I suspect that the last two MicroBlaze will get very little access to the bus.

Not uploading firmware for the first one, will not stop them from executing.

So what communication do you need between the MicroBlazes? Have you looked at using the FSL as the inter communication channel?

Göran Bilski

sergio.tota wrote:

Dear Goran

you told me that not uploading the firmware does not mean tha

MicroBlaze doesn't "work"

Do you mean that even if with no code to execute they make access t

the OPB bus If so, why

And, there is a way to keep a MicroBlaze processor "live" withou

making it access to the OPB bus

I think that I'll use FSL, but in the next months

Cheers

Sergi

Hi Sergio,

You need to define what you mean with "live"?

MicroBlaze will start executing at 0x0 after reset. When accessing memory where there is no code, the bus usually returns with 0x0. This is add r0,r0,r0 on the MicroBlaze and it will then continue with the next address. So it will run through all memory addresses. You need to have code that loops the MicroBlaze or you can use the FSL for creating a sleep mode on MicroBlaze. If you have a FSL input to MicroBlaze where the FSL_Exists signal is low and you execute a blocking FSL read instruction, MicroBlaze will halt until that signal is '1'. This allows you to create a simple sleep mode.

Göran

sergio.tota wrote:

Dear Goran

it is more clear now

Thank you

Sergi

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required