Abstract:
A slave controller which provides the control signals for effecting the  r and write operation of a memory electrically connected to the VERSA MODULE EUROPE bus (VMEbus). The slave controller comprises a programmable array logic device which receives control and address modifier signals from the data transfer bus within the VMEbus and an address enable signal from a decoding circuit. The decoding circuit, in turn, provides the address enable signal to the programmable array logic device in response to an address strobe signal supplied to the decoding circuit by the data transfer bus. The programmable array logic device being responsive to the control, address modifier and address enable signals enables the memory which for a read or write operation. The programmable array logic device next provides a write pulse to the memory when data is to be written into the memory at an address provided by the VMEbus. When data is to be read from the memory, programmable array logic device maintains the memory&#39;s write enable input at an inactive state and generates an output enable pulse allowing data to be read from the memory at an address provided by the VMEbus. Directional control of data between the memory and the VMEbus for the read and write operations is provided by a pair of transceivers.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates generally to digital computer bus architecture and, in particular, to a slave controller for controlling transfer of digital data to and from a slave such as a memory via the VMEbus (VERSA MODULE EUROPE bus). 
     2. Background of the Invention 
     The proliferation of microprocessors has produced the economic incentive and consequent trend to construct modular multimicroprocessor computer systems, where implementations use one high performance processor. Such modular systems are facilitated by a bus structure, referred to as a backplane bus, to which microprocessors, system controllers, data storage modules, input/output controllers and associated peripheral devices can be connected and through which each device on the bus can communicate with other devices on the bus. 
     The main purpose of any bus structure is to allow devices connected to the bus structure to transfer data from one device to one or more of the other devices in accordance with a predetermined protocol of communication. A &#34;standard&#34; bus is one for functional, electrical and mechanical requirements for interface circuits and a set of signal lines that constitute the bus which are determined for all devices connected to the bus. Generally, the signal line groupings on standard backplane buses are partitioned into logical groupings that comprise a data transfer bus having address and data lines; an arbitration bus having control and acquisition lines; and a utility bus which includes power leads and on some buses, clock signals, initialization and power lines. 
     The VMEbus is one such standard bus which is well known and very popular in automated manufacturing and processing environments. The VMEbus has a 16/32 backplane bus, the aforementioned signal line groupings and a priority interrupt bus which provides the signal lines needed to generate and service interrupts. The VMEbus is set forth the &#34;VMEbus Specification Manual&#34;, Revision C.1, dated Oct. 1985, published by Motorola. 
     In the past connecting a device such as a memory board to the VMEbus generally required the user to purchase a board or multiple boards which provide the necessary backplane interface logic and functional logic to allow the device to interface with the VMEbus. These boards are often expensive, complex in design and generally are limited to single function, such as, allowing a data storage device having a predetermined storage capacity to interface with the VMEbus. With these and other disadvantages known to backplane interface and functional logic boards for use with the VMEbus the present invention was conceived and one of its objectives is to provide a simple and inexpensive slave controller which will allow a device such as a memory to interface with the VMEbus. 
     It is another object of the present invention to provide a single chip controller to replace the backplane interface logic and the functional logic currently used to interface a device such as a memory with the VMEbus. 
     Various other advantages and objectives of the present invention will become apparent to those skilled in the art as a more detailed description of the present invention is set forth below. 
     SUMMARY OF THE INVENTION 
     The aforesaid and other objectives of the present invention are accomplished by a slave controller which provides the control signals for effecting the read and write operation of a memory electrically connected to the VMEbus. The slave controller comprises a programmable array logic device which receives control and address modifier signals from the data transfer bus within the VMEbus and an address enable signal from a decoding circuit. The decoding circuit, in turn, provides the address enable signal to the programmable array logic device in response to an address strobe signal supplied to the decoding circuit by the data transfer bus. 
     The programmable array logic device being responsive to the control, address modifier and address enable signals enables the memory for a read or write operation. The programmable array logic device next provides a write pulse to the memory when data is to be written into the memory at an address provided by the VMEbus. When data is to be read from the memory, the programmable array logic device maintains the memory&#39;s write enable input at an inactive state and generates an output enable pulse allowing data to be read from the memory at an address provided by the VMEbus. Directional control of data between the memory and the VMEbus for the read and write operations is provided by a pair of transceivers. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a simplified block diagram illustrating the VMEbus structure 
     FIG. 2 is a detailed electrical schematic of the slave controller constituting the present invention; 
     FIG. 3 illustrates a write cycle timing diagram for certain VMEbus signals occurring during a sixteen bit data transfer to the memory of FIG. 2; 
     FIG. 4 illustrates a read cycle timing diagram for certain VMEbus signals occurring during a sixteen bit data transfer from the memory of FIG. 2; and 
     FIG. 5 is a flow chart of the software for the programmable array logic device of FIG. 2. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1, there is shown the VMEbus structure, designated by the reference numeral 10, which allows devices connected to the bus structure 10, such as system controller board 11, a central processing unit 12, a memory board 14 and an input/output board 16 to transfer data from one device to one or more of the other devices in accordance with the protocol of communication for the VMEbus. Each device requires at least one functional module and a backplane interface logic circuit 20 to interface with the backplane signal lines 22 of the backplane 24. Each backplane interface logic circuit 20 is a logic circuit that allows a device such as memory board 14 to be electrically connected to backplane signal lines 22 by taking into account the characteristics of the backplane 24, such as signal line impedance, propagation time and termination values. Each functional module is an electronic circuit which may be, for example, a master 26 within central processing unit 12 or a slave 28 within memory board 14 or input/output board 16. 
     The master controller 26 within central processing unit 12 initiates data transfer bus cycles in order to transfer data between central processing unit 12 and a device having a slave controller 28 such as memory board 14. Each slave controller 28 is a functional module that detects data transfer bus cycles initiated by master 26 and when these data transfer bus cycles specify its participation, the designated controller 28 transfers data between itself and master 26. The VMEbus standard defines a data transfer bus cycle as the sequence of level transitions on the signal lines of the data transfer bus 30 that result in the transfer of an address or an address and data between master 26 and a designated slave 28. The data transfer bus cycle is divided into two portions, an address broadcast and then zero or more data transfers. 
     Referring to FIGS. 1 and 2, there is shown a slave controller, designated generally by the reference numeral 32, which detects data transfer byte signals provided by master 26 and thereby effects the transfer of data between central processing unit 12 and a data storage device 34, FIG. 1, comprising a pair of a pair of random access memories (RAMS) 36 and 38. Each RAM 36 and 38, in turn, has storage capabilities of 8192 eight bit words thereby providing for data storage device 34 a total storage capability of 16,384 eight bit words or 8192 sixteen bit words when configured as shown in FIG. 2. Slave controller 32, in turn, is designed to be compatible with the VMEbus specification and performs the functions of the backplane interface logic circuit 20 and slave 28 of memory board 14. 
     A system clock driver 40 within system controller board 11 provides a sixteen megahertz clock signal, FIG. 3(A), to utility bus 42 which then supplies the clock signal to the CLK input of a programmable array logic device 44. The M1 and M2 inputs of programmable array logic device 44 are connected to ground which indicates to programmable array logic device 44 that address lines A01-A15 on data transfer bus 30 are being utilized to address memory board 14. Similarly, a logic zero supplied to the M1 input and a logic one is supplied to the M2 input of device 44 indicates that address lines A01-A23 on data transfer bus 30 are being used for addressing, while a logic one supplied to the MI input and a logic zero supplied to the M2 input of device 44 indicates that address lines A01-A31 on data transfer bus 30 are being used for addressing a memory device or the like connected to VMEbus 10. When both the Ml and M2 inputs of programmable array logic device 44 are tied to a logic one programmable array logic device 44 will reset. 
     When the interrupt acknowledge line (/IACK) on the priority interrupt bus 46 is at the logic one state indicating that an interrupt is not being processed by VMEbus 10, a logic one is supplied to the D3 input of eight bit latch 48. Simultaneously, the A13 through A15 inputs of latch 48 are provided with logic zeros. When the address strobe line (/AS) of data transfer bus 30, FIG. 3(D), transitions from the logic one to the logic zero state indicating the presence of a valid address on the data transfer bus 30, the output of inverter 50 will transition from a logic zero to a logic one state thereby clocking the logic signals at the D0-D7 inputs of latch 48 to the Q0-Q7 inputs of an eight bit magnitude comparator 54. Comparator 54, in turn, compares its Q0-Q7 inputs with its P0-P7 inputs and provides a logic zero at its output whenever its inputs are equal, that is whenever an interrupt is not being processed by the VMEbus. 
     The logic zero signal at the output of comparator 54 is supplied to the input of an inverter 56 which inverts the signal and then provides a logic one, FIG. 3(E), to the address enable input (ADEN) of programmable array logic device 44. The logic zero signal at the output of comparator 54 is supplied to the enable inputs (/G) of a pair of transceivers 58 and 60 thereby enable transceivers 58 and 60 so as to allow the transfer of eight or sixteen bit data words between VMEbus 10 and RAMS 36 and 38. 
     During a write cycle, FIG. 3, a data transfer bus cycle is used to transfer data from central processing unit 12 via master 26 to memory 34 with programmable array logic device 44 providing the control signals to effect the storage of data within RAMS 36 and 38. The VMEbus specification provides that a data transfer bus cycle may be used to transfer one, two, three or four bytes of data during a read or write cycle. The VMEbus also provides for four categories of byte locations with the two least significant bits of an address defining the byte category as set forth in the following table. 
     
                       TABLE I______________________________________Category       Byte Address______________________________________BYTE(0)        XXXXXX.....XXXXXXX00BYTE(1)        XXXXXX.....XXXXXXX01BYTE(2)        XXXXXX.....XXXXXXX10BYTE(3)        XXXXXX.....XXXXXXX11______________________________________ 
    
     The VMEbus specification further provides that some or all of the bytes in a four byte group can be accessed simultaneously by a single data transfer bus cycle. Master 26 uses the address lines A02-A31 On the data transfer bus 30 to select which four byte group Will be accessed. Four additional lines on the data transfer bus 30, /DS1, /DS0, A01 and /LWORD are then used to select which byte locations within the four byte group are accessed during a data transfer. Using the /DS1, /DS0, A01 and /LWORD lines master 26 can access 1, 2, 3 or 4 byte locations simultaneously. During a write cycle the falling edge of the first data strobe, /DS0 or /DS1 indicates that valid data is available on data transfer bus 30. In a like manner, during a read cycle the rising edge of the first data strobe, /DS0 or /DS1 indicates that valid data is available on data transfer bus 30. During address only cycles, data strobes zero and one are both maintained at the logic one state. For the write cycle illustrated by FIG. 3, when the /write line on data transfer bus 30 goes to the logic zero state, FIG. 3(F), the output of an inverter 62 transition to the logic one state thereby providing a logic one to the DIR inputs of transceivers 58 and 60. This results in eight bit data bytes supplied to the A1-A7 inputs/outputs of transceiver 58 by data transfer bus 30 being passed therethrough to its B1-B7 inputs/outputs and then to the D1-D7 inputs/outputs of RAM 38. Likewise, eight bit data bytes supplied to the A1-A7 inputs/outputs of transceiver 60 by data transfer bus 30 are passed through transceiver 60 to its B1-B7 inputs/outputs and then to the D1-D7 inputs/outputs of RAM 36. The /write line is also connected to the /write input of programmable array logic device 44 such that when the /write signal, 3(F), transitions to the logic zero state and the /CS1 and the /OE inputs of RAMS 36 and 38 are respectively at the logic zero state and the logic one state, a subsequent clock pulse 64 of the clock signal of FIG. 3(A) will result in the /WE (write enable) output of programmable array logic device 44 transitioning from the logic one to the logic zero state as illustrated by FIG. 3(0). This, in turn, results in the data bits at the D0-D7 inputs of RAMS 36 and 38 being stored in RAMS 36 and 38 at the address supplied to the A0-A12 inputs of each RAM 36 and 38 by data transfer bus 30. When the leading edge of clock pulse 65 transitions from the logic one state to the logic zero state, the /DTK output of programmable array logic device 44 transitions from a logic one to a logic zero indicating that data has been accepted by memory 34. 
     Referring to FIG. 4, the read cycle for a sixteen bit data transfer from RAMS 36 and 38 is similar to the write cycle of FIG. 3 except that the /write line remains at the logic one state during the data transfer. This results in a logic zero being supplied to the DIR inputs of transceivers 58 and 60 allowing data to be transferred through transceivers 58 and 60 to data transfer bus 30. The first clock pulse 66 supplied to the CLK input of programmable array logic device 44 after the /DS0 and /DS1 lines transition to the logic zero states results in the /0E output of device 44 transitioning to the logic zero state. This, in turn, enables RAMS 36 and 38 allowing data stored at the address provided to RAMS 36 and 38 to be read from RAMS 36 and 38 and then transferred through transceivers 58 and 60 to data transfer bus 30. When the leading edge of clock pulse 67 transitions from the logic one state to the logic zero state, the DTK output, FIG. 4, transitions from a logic one to a logic zero. The logic zero is then supplied through AND gate 68 to /DTACK line of data transfer bus 30, so as to indicate that valid data is available on the data transfer bus 30. The logic zero to logic one transition of the /DTACK line indicates that programmable array logic device 44 has released data transfer bus 30. 
     It should be noted that when the /DS0 and the /DS1 lines of data transfer bus 30 are both at the logic zero state, the VMEbus specification defines the data transfer mode as a double byte transfer, that is sixteen bits of data are transferred via data bus 30 to or from RAMS 36 and 38 for each address provided to RAMS 36 and 38. As set forth in the VMEbus specification, a single even byte (bytes 0 or 2 of Table I) transfer occurs when the /DS0 line is at the logic one state and the /DS1 line is at the logic zero state, while a single odd byte (bytes 1 or 3 of Table I) transfer occurs when the /DS0 line is at the logic zero state and the /DS1 line is at the logic one state. 
     There are six address modifier lines, AM0-AM5, on the data transfer bus which allow master 26 to pass additional binary information to the programmable array logic device 44 during data transfers. In accordance with the VMEbus specification, short addressing AM codes (hexadecimal 29 and 2D) indicate that address lines A02-A15 are being used to select a byte(0-3) group; standard addressing AM codes (hexadecimal 39-3B and 3D-3F) indicate that address lines A02-A24 are being used to select a byte(0-3) group and extended addressing AM codes (hexadecimal 09-0B and 0D-0F) indicate that address lines A02-A31 are being used to select a byte(0-3) group. Since address lines A02-A15 are being used to provide address information to RAMS 36 and 38, short addressing codes, hexadecimal 29 and 2D, will be provided to the AM0-AM5 inputs of programmable array logic device 44. In particular, short supervisory access is defined by the hexadecimal code 2D and short non-privileged access is defined by the hexadecimal code 29. 
     At this time it should be noted that programmable array logic device 44 is a model GAL22V10 Lattice Semiconductor Corporation Programmable AND-array which is described in U.S. Pat. Nos. 4,761,768 and 4,766,569. It should also be noted that RAMS 36 and 38 are Hitachi IC memories HM6264LP 8192 word×8-bit High Speed CMOS RAMS, transceivers 58 and are National Semiconductor DM74LS645 Octal Bus Transceivers, comparator 54 is a Goldstar Technology GD74LS688 8 bit magnitude comparator and latch 48 is a National Semiconductor DM74LS374 octal D type transparent latch. 
     Referring to FIG. 5, there is shown a flow chart comprising program steps 80-126 for the software used by programmable array logic device 44 to effect the transfer of data between data transfer bus 30 and memory 34 and to read data into and retrieve data from memory 34. The program listing for this software is set forth in Appendix A. 
     Referring to FIGS. 1-5, power is provided to programmable array logic device 44 and device 44 is reset. During program step 82 the /DTK, /WE and /OE lines of device 44 are set at the logic one state, while ADINC (address increment) output of device 44 is set low. During program step 84, programmable array logic device 44 reads its M1 and M2 inputs and if the M1 and M2 lines are not high (program step 86) device 44 proceeds to program step 90 where device 44 is set to detect the type of address module A16 (address lines A01-A15), A24 (address lines A01-A23) or A32 (address lines A01-A31) being used by the VMEbus for addressing memory 34. 
     Programmable array logic device 44 next samples the ADEN input (program step 92) to determine when it is at the logic one state and then proceeds to program step 94 to determine if the DS0 and DS1 lines transition to the logic zero state before proceeding to program step 96 to determine whether there is a read or write cycle being processed. When a write cycle is being processed, the /WE output is set to the logic zero state (program step 98). Programmable array logic device 44 then proceeds to program step 100. 
     During program step 100, programmable array logic device 44 determines whether or not a RAM with a fast access time is being used as memory 34. A RAM with a slow access time of several hundred nanoseconds, that is the RAM requires a write pulse, FIG. 3(0), of several hundred nanoseconds may be used with slave controller 32 for data storage by setting the /WAIT output to the logic zero state (program step 100). It should be noted that RAMS 36 and 38 require write pulses having pulse widths of approximately 60 nanoseconds, thus the /wait output of programmable array logic device is not utilized and logic ones are supplied to the CS2 inputs of RAMS 36 and 38. 
     Since RAMS 36 and 38 are fast RAMS, programmable array logic device 44 proceeds to program step 102. Program step 102 determines whether a block transfer is to be processed. Since addressing for memory 34 is being provided to RAMS 36 and 38 by central processing unit 12, programmable array logic device 44 proceeds to program step 104 and sets its /WE output to the logic one state, FIG. 3(0), and its /DTK output to the logic zero state, FIG. 3(M). Programmable array logic device 44 next samples its DS0 and DS1 inputs to determine when the DS0 and DS1 inputs are at the logic one state and then proceeds to program step 108. During program step 108, programmable array logic device 44 sets its /DTK output to the logic one state, thus completing the write cycle illustrated in FIG. 3. 
     Program steps 116 through 126 illustrate the operation of programmable array logic device 44 during a read cycle of FIG. 4. 
     At this time it should be noted that the write cycle (program steps 98 through 114) and the read cycle (program steps 116 through 126) each provide for a block transfer mode. During the block transfer mode in a write cycle, the ADINC output of device 44 goes to the logic one state (program step 110) enabling a counter or the like, not shown, to provide addressing to a memory device. In a like manner, during the block transfer mode in a read cycle, the ADINC output of device 44 goes to the logic one state (program step 126) enabling a counter or the like, not shown, to provide addressing to a memory device. 
     From the foregoing description, it may readily be seen that the subject invention comprises a new unique and exceedingly useful slave controller for a memory or the like electrically connected to the VMEbus which constitutes a considerable improvement over the known prior art. Obviously, many modifications and variations of the present invention are possible in light of the above teachings. It is therefore to be understood that within the scope of the appended claims, the invention may be practiced otherwise than as specifically described. ##SPC1##