The architecture of Algotronix’s configurable array logic (CAL) technology [Algo91] is particularly suited to the building of arrays of chips to form a single computing surface [Gray89]. The CHS2×4 and its associated software have been designed and built to explore this aspect of FPGA usage.
The CHS2×4 contains up to 9 CAL1024 chips and 2M bytes of static RAM. Two boards can be connected together to form a system with a 4 × 4 array of CAL chips for computation and up to 4M bytes of static RAM. The CHS2×4 board is supported by the configurable logic software (CLS) software suite, including a graphical editor and an on-line debugger, and a library of interface routines that can be called from the user’s C programs.
Architecturally the CHS2×4 system consists of three hardware subsystems (see Figure 6–1). These are:
The bus architecture, Figure 6–2 allows the memory subsystem and CAL configuration memory of the computation subsystem to be read and written from the host processor. Configuration memory and the memory subsystem share an address space local to the board. In addition, the computation array may execute memory operations, using the counter as an address register, synchronized to the host clock.
The four main busses on the CHS2×4 board interconnecting the major subsystems shown on these figures are:
The PC interface-and-control subsystem has the task of handling communications with the host PC/AT and controlling transfers on the internal busses of the CHS2×4. For maximum flexibility this subsystem is based around a CAL1024 chip whose configuration is loaded from an EPROM when the PC/AT is reset or powered up.
Mode | Operation |
0 | Reload control CAL |
1 | Write counter |
2 | 8-bit Write on LD[0..7], 8-bit Read on HD[0..7] |
3 | 16-bit Write |
4 | 16-bit Read |
5 | 8-bit Write |
6 | 8-bit Read |
7 | No operation |
The CHS2×4 is accessed through 16 locations in the PC/AT’s input/output (I/O) space using a protocol implemented by the control CAL. The bottom four bits of the address bus during a board access are used to determine the operation to be performed, which is completed during the same I/O cycle. This technique is faster than using an I/O cycle to transfer an instruction to the board, followed by a second cycle to transfer the associated data.
The computation subsystem of the CHS2×4 board consists of a 2 × 4 array of CAL1024 chips and appropriate address decoding for their control store, which provides random access to cells within the array for defining logic circuits and sensing function unit outputs. Access to the periphery of the array is available via the system busses and a number of connectors. At the north boundary the four CALs are fully pinned out to a 128-way header connector. This connector may be used to connect to a neighboring CHS2×4 board, allowing a large system containing a 4 × 4 array of CAL chips to be built. The west boundary of CAL0,1 is fully pinned to a 37-pin DIN connector, which appears on the back panel edge of the PC/AT board. This connector may be used to directly connect external devices to the board. This bus is also connected to the west boundary of the control CAL to provide communication between the computation array and the control subsystem—this could be used, for example, to indicate the termination of an algorithm running on the computation array. In addition, at the east boundary, the high data (HD) and low data (LD) busses connect to every fourth boundary cell. At the west boundary of CAL0,0 both the HD and LD busses are connected to boundary cells. These connections support transfers to and from the on-board memory.
The memory subsystem provides the computation array with high bandwidth access to a large local data memory, thus supporting systolic and pipelined computations where data are streamed through the CAL array. It contains four 32-pin sockets for static RAMs and associated address decoding. These sockets can be filled with 128K × 8 SRAM chips, 128K × 8 SRAM hybrids or 512K × 8 SRAM hybrids. If all four sockets are filled with 512K hybrids, a 2M-byte memory is provided.
The software support for the CAL architecture and the CHS2×4 custom computer consists of a computer-aided engineering (CAE) environment and an applications environment. This is shown diagrammatically in Figure 6–3.
The CLS CAE environment contains components for both automated and manual CAL configuration. It consists of the following programs
The CAL architecture offers the designer unique facilities for monitoring and changing the internal state of an FPGA in real time. The debbie program provides an interactive debugging environment for users of the CHS2×4 board. debbie provides windows to monitor the state of internal cells on the CAL array and the values in the memory and counter register on the CHS2×4 board. The values produced by individual cells are displayed as either a red (for logic 1) or blue (for logic 0) band above the corresponding gate. Cell functions and routing are determined by decoding the array control gate. Cell output logic values are determined by reading back the cell output bit of the control store and not by simulation of the user’s design.
The CHS2×4 board is controlled via an applications program running on the PC/AT, which takes charge of disk access and displaying results as well as computations not suited for implementation on CALs. Thus, the support software for the CHS2×4 board takes the form of a library of C routines lib2×4, which can be called from an applications program written by the user.
As well as allowing access to the local memory for transfer of data and results, these routines provide for access to the CAL’s control store. This permits dynamic reconfiguration of individual resources, such as routing multiplexers and function units, as well as monitoring cell outputs. It is also possible to programmatically clear any latch in the circuit implemented on CALs. The software tracks the mapping of gate component names in the user’s schematic to cell coordinates, allowing reference to gates by name in the user’s control program. This feature means the user programs that access the CAL control store need not be changed when the design placement changes. It is also possible to reconfigure the control CAL using the C library to provide new ways of accessing the board within a given application.
3.145.178.157