cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Observer
Observer
7,063 Views
Registered: ‎03-03-2010

Use CPLD for routing bidirectional buses

Hi everyone:

 

I want to use a CPLD like signal router of bidirectional buses. Every bus must be able to be routed to all the other buses, just changing an internal variable.

 

I know that when using a bidirectional bus I need a signal for reading or writing on it. However, I need to configure the connections without using any signal that indicates the direction of the transmission. This means that if bus A is connected to bus B, if A writes anything on this bus, the CPLD knows that A is writing and B is reading, and vice versa.

 

Is there any solution for this problem?

0 Kudos
4 Replies
Highlighted
Professor
Professor
7,058 Views
Registered: ‎08-14-2007

So what you really want between bus A and B is a switch.  Any other sort of buffer

will require direction information.  There may be a few specialty chips that can

sense the drive direction and buffer (some I2C repeaters do this) but the circuitry

necessary for this is not available in CPLD's.  You could use a CPLD to control

external switched (something like the "QuickSwitch" line of FET bus switches)

or you could look for a real crossbar switch (sometimes called crosspoint switch).

 

-- Gabor

-- Gabor
0 Kudos
Highlighted
Observer
Observer
7,054 Views
Registered: ‎03-03-2010

Yes, what I'm trying to implement is a switch between several buses. 

 

So what I understand from your answer is that I can not cheat the CPLD anyway so it behaves the way I want, isn't it?

 

Ah, I forgot to say that my CPLD is the Xilinx CoolRunner XC2C256, if it is of any help.

 

You say that a CPLD has not the neccesary circuitry to implement this structure, could I do it on a FPGA?

 

Thank you in advance,

 

Alberto.

0 Kudos
Highlighted
Teacher
Teacher
7,023 Views
Registered: ‎09-09-2010

"could I do it on a FPGA?"

The pin-to-pin delays are likely to be large, and you would still need to control direction somehow.

Use a QuickSwitch or proper crosspoint device. Do you hit nails in with a saw?


------------------------------------------
"If it don't work in simulation, it won't work on the board."
0 Kudos
Highlighted
Professor
Professor
6,999 Views
Registered: ‎08-14-2007

This circuit from Maxim does something like what you want for a simple interface.  If you

look at the block diagram, there is a box labeled "EN CONTROL BLOCK" that controls

the various pieces of the data path drivers.  This box is not well explained in the text,

but it needs to sense that a device that is being driven by the Maxim chip is trying to

drive the bus.  This circuit would be very hard to reproduce in any sort of programmable

logic.

 

-- Gabor

-- Gabor
0 Kudos