With a high level of flexibility, performance, and programmability, you can use crosspoint switches in applications such as digital cross switching, telecommunications, and video broadcasting.
A 16 × 16 crosspoint switch is a non-blocking crosspoint switch. You can independently connect any output to any input and any input to any or all outputs.
This crosspoint switch is divided into three major blocks:
- Switch matrix
- Address decoder
|cnfg||Input signal to enable configuration.||High|
|res||Input signal for resetting the switch matrix.||High|
|load||Input signal to load the configuration data.||High|
|cs||Input signal to select the chip.||High|
|in_add||Input address to be reconfigured.||—|
|out_add||Output address to be reconfigured.||—|
|di||Input data to the switch matrix.||—|
|do||Output data from the switch matrix. This is a dedicated signal name, cannot be used as a user defined singal name.This is applicable to MAX® II and MAX® 3000A devices.||—|
|out_d||Output data from the switch matrix. This is applicable to MAX® V and MAX® 10 devices.||—|
The switch matrix has input, output, and multiplexer select pins. You can connect all 16 inputs to the multiplexer of each output, allowing you to independently connect any output to any input and any input to any or all outputs.
You can always add features to the output cell. For example, you can add another tri-state buffer or register at the output of the multiplexer.
You can use an address decoder to decode the output address so that only one output cell is enabled for configuration.
|Decoder Input [3..0]||Decoder Output [15..0]||Enabled Output Cells|
The Quartus® II software synthesizes the decoder. You can use the product-term logic in MAX® 3000A device or in the look-up table (LUT) in MAX® II, MAX® V, and MAX® 10 devices to combine the decoding with other functions.
Configuration is the main feature in a crosspoint switch. The configuration module consists of a double row register architecture, which allows reconfiguration of input to output connections during operation. Activation of the new configuration occurs with a single configuration pulse.
The switch matrix circuit is controlled by data in two sets of 16, 4-bit registers —LOAD REGISTERS and CONFIGURATION REGISTERS. You can use four bits of each register to store the input address that identifies the input which you can connect to a particular output. Table 3 shows the connection of an input to a particular output when you select a different input address.
|Input Address (Multiplexer Select Pin) [3..0]||Output|
You can select one of the 16, 4-bit registers in the first set of LOAD REGISTERS by placing a 4-bit word on the output address bus. You can place data that is written into the load register on the input address bus. The load register contains the 4-bit address of the input that connects to that output. The load register stores input data at the low-to-high transition of the load input pin with the chip-select (cs) signal set to high. The contents of the load registers are then transferred to the second set of CONFIGURATION REGISTERS at the low-to-high transition of the cnfg input signal with the cs signal set to high. This transition sets the state of the entire switch matrix to the chosen configuration.
Reset mode is also supported in this 16 × 16 crosspoint switch. When you assert the reset (res) signal (with cs set to high), the entire crosspoint switch is in its initial state where all outputs are connected to input0.
You can expand the switch size using the following methods:
- Source code modification
- Multiple device implementation
You can modify the HDL source code to increase the size of the crosspoint switch. For example, a few modifications on the HDL source code can expand the 16 × 16 crosspoint switch to a 32 × 32 crosspoint switch.
To implement multiple devices in hardware, you need an optional tri-state pin. This tri-state pin disables the output buffers so that you can maintain the number of outputs while the number of inputs is increased.
The switch matrix can be asymmetric when the number of inputs and outputs are different.
The customized crosspoint switch implements a 4-port bidirectional crosspoint switch. Each port is eight bits wide and can be in tri-state mode, becoming an input port. You can connect each bidirectional port to any other port as an output or input. For example, if the port acts as an output, you can connect it to any one of the other ports that acts as an input.
The process of switch configuration is exactly the same as a 16 × 16 crosspoint switch. You can add a register to LOAD REGISTERS and CONFIGURATION REGISTERS to store the tri-sate bit. This results in a total of three bits for a 4-port customized crosspoint switch: two bits for an input address and one bit for a tri-state. The two most significant bits (MSBs) in each register identify the input that connects to that output, and the least significant bit (LSB) controls whether the output is active or tri-state.
Reset mode for this customized design is different from the 16 × 16 crosspoint switch because all ports are bidirectional. When in reset mode, all the bidirectional ports are in an initialized state and all the ports are in tri-state mode.
This application note describes two reference designs:
- 16 × 16 crosspoint switch
- Customized crosspoint switch
The detailed description of the implementation is based on the MAX® 10, MAX® II, and MAX® 3000A devices. This application can also be implemented in MAX® V devices.
The 16 × 16 crosspoint switch design can be targeted for the following devices using the Quartus® II software:
- MAX® 10—10M08SAE144C8GES
- MAX® II—EPM570F256C3
- MAX® 3000A—EPM3256ATC144
|16 × 16 Crosspoint Switch Block||Reference Design File|
|Switch matrix||switch_matrix.v and io_cell.v|
|io_cell.v||Increase the multiplexer input pins and the select pins.|
|switch_matrix.v||Increase the number of inputs and outputs, and the select pins of the switch matrix.|
|decoder.v||Increase the number of inputs and outputs of the decoder.|
|switch.v||Increase the LOAD REGISTERS and CONFIGURATION REGISTERS size.|
|dsm.v||Increase the number of input and output pins to the switch matrix.|
You can verify the design for a 16 × 16 crosspoint switch using the Quartus® II software. The design verification occurs in both functional and timing simulations.
Initialization occurred for all outputs connected to in_add. After the initialization, output configuration occurs resulting in the same input and output value (0010011001101011). In the final configuration, signals out_add to out_add are connected to in_add; and signals out_add to out_add are connected to in_add (input: 0010011001101011, output: 1111111100000000).
The customized crosspoint switch design can be targeted for the following devices using the Quartus® II software:
- MAX® 10—10M08SAE144C8GES
- MAX® II—EPM240T100C3
- MAX® 3000A—EPM3064ATC100
To configure a 16 × 16 crosspoint switch to an 8-bit, 4-port crosspoint switch, make the following modifications:
- Substitute the 16 × 16 crosspoint switch matrix with a 4-port crosspoint switch matrix.
- Change the 4 to 16 decoder to a 2 to 4 decoder.
- Add a register to LOAD REGISTERS and CONFIGURATION REGISTERS to store the tri-state bit.
You can verify the design for a 4-port customized crosspoint switch using the Quartus® II software. The design verification occurs in both functional and timing simulations.
With all the I/O pins in tri-state mode, each port was initialized. After initialization, output configuration occurs for port_B and port_C, while input configuration occurs for port_A and port_D. Input port_A is connected to port_C and input port_D is connected to port_B. In the last configuration, output port_A and port_C are connected to input port_D, while port_B is tri-stated.
|September 2014||2014.09.22||Added MAX® V and MAX® 10 devices.|
|March 2004||1.0||Initial release.|