UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer lucius1985
Observer
6,842 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
Instructor
Instructor
6,837 Views
Registered: ‎08-14-2007

Re: Use CPLD for routing bidirectional buses

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
Observer lucius1985
Observer
6,833 Views
Registered: ‎03-03-2010

Re: Use CPLD for routing bidirectional buses

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
Teacher rcingham
Teacher
6,802 Views
Registered: ‎09-09-2010

Re: Use CPLD for routing bidirectional buses

"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
Instructor
Instructor
6,778 Views
Registered: ‎08-14-2007

Re: Use CPLD for routing bidirectional buses

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