You can use the Altera®
MAX® 3000A, MAX® II, MAX® V, and MAX® 10 devices to implement crosspoint switches. The supported Altera devices offer more flexibility to customize switches,
meeting specific design goals with in-system programmability (ISP).
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.
Crosspoint Switches Using Supported Altera Devices
16 × 16 Crosspoint Switch
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:
16 × 16 Crosspoint Switch Architecture
Figure 1. 16 × 16 Crosspoint Switch Architecture Using Supported Altera Devices
Table 1. Input and Output Signals for 16 × 16 Crosspoint Switch
Input signal to enable configuration.
Input signal for resetting the switch matrix.
Input signal to load the configuration data.
Input signal to select the chip.
Input address to be reconfigured.
Output address to be reconfigured.
Input data to the switch matrix.
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.
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.
Figure 2. Switch Matrix Circuit Output Cell
You can use an address decoder to decode the output address so that only one output cell is enabled for configuration.
Table 2. Input and Output of a 4-Bit Decoder
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.
Table 3. Input Connection to a Specific Output
Input Address (Multiplexer Select Pin) [3..0]
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.
Crosspoint Switch Expansion
You can expand the switch size using the following methods:
Source code modification
Multiple device implementation
Source Code Modification
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.
Multiple Device Implementation
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.
Figure 3. Input Port Expansion
Figure 4. Output Port Expansion
Customized Crosspoint Switch
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.
Customized Crosspoint Switch Architecture
Figure 5. 4-Port Crosspoint Switch Architecture
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.
Design Example: 16 × 16 Crosspoint Switch
The 16 × 16 crosspoint switch design can be targeted for the following devices using the Quartus® II software:
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).
Design Example: Customized Crosspoint Switch
The customized crosspoint switch design can be targeted for the following devices using the Quartus® II software:
Cutomized Crosspoint Switch Configuration
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.
The circuit used for configuration is same as the 16 × 16 crosspoint switch.
Table 9. Customized Crosspoint Switch Design Utilization for 10M08SAE144C8GES Device
Table 10. Customized Crosspoint Switch Design Utilization for EPM240T100C3 Device
Table 11. Customized Crosspoint Switch Design Utilization for EPM3064ATC100 Device
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.