Data port selection

Abstract: In order, for example, to expand the input and output of a microcomputer (7) having a serial input/output capability, a parallel data input port (2 or 3) or output port (4 or 5) is selected by clocking serial selection bits from a serial data line (1) into a first shift register (56) and then enabling a latch (58) for the register parallel output (57). This results in a change in level on a particular one of a set of a parallel output line (35,36,49,50) which corresponds to the particular group of selection bits written, and hence to a particular port. If the selected port is an output port the change in level results in the strobing of a latch (43 or 44) corresponding to that port, and hence to the transfer of the contents of a further shift register (39 or 40) corresponding to that port. These contents are previously written in from the serial data path (1), each further shift register (39,40) being connected in cascade with the first register. If the selected port is an input port the change in level results in the enabling of a gate (31 or 32) corresponding to that port, and hence to the transfer of the port information to a shift register (27 or 28) corresponding to that port, whence it is subsequently clocked out to the serial data path via a respective transistor (25 or 26).

Description: This invention relates to a method of selecting a parallel data port from a plurality of such ports for data transfer between the selected port and a serial data path, in which method a serial train of selection bits identifying the port to be selected is transmitted on the data path to a serial data input of a clock first shift register and stored in said first register, after which couplings from a parallel data output of said first register effect said selecting. The invention also relates to apparatus for implementing such a method. The input and/or output facilities of a data processing device such as a microcomputer are sometimes inadequate for a particular application. For example, more parallel input and/or output ports may be required than are actually provided. In this context, the port may be an input port, an output port, or a bidirectional port. Moreover the port itself could be constructively joined to further data processing elements, storage elements and the like, thereby effectively realizing a station in a serial-line network or a peripheral to the serial interconnection of the microcomputer. One or more of such peripherals could, in fact, themselves be a microcomputer. A method according to the preamble has been disclosed in European Patent Specification 51332, corresponding United States Patent 4 689 740. Although the known art, colloquially called I²C (inter I.C.) system has found appreciable acceptance, it has been found to be rather slow-performing. It is an object of the present invention to enable a plurality of parallel data input and/or output ports to be coupled to a single serial data path in such a way that data transfer between selected ports and the path can take place and the selection can be achieved by means of selection bits also transmitted on the path. Thus, for example, the input and/or output facilities of a microcomputer having a limited number of parallel data ports but which also has a serial data input/output facility can be extended by coupling further parallel data input or output ports to the serial data input/output. It is a further object of the invention to enable a higher velocity communication system to be provided. It is a still further object of the invention to enable a less expensive system to be provided, in that the first register may be centralised instead of distributed as it is according to the I²C organisation. According to one aspect the invention provides a method of selecting one from a plurality of parallel data ports for data transfer between the one port and a serial data path, the method comprising transmitting a serial train of selection bits over the data path to a serial input of a first shift register, storing the selection bits in the first shift register, selecting the parallel data port in response to a parallel output of the first shift register, characterised by selecting the one parallel data port by means of a coupling between the one port and a further shift register having a serial data terminal coupled to the serial data path, and enabling the parallel output of the first shift register to enable that coupling which corresponds to the one port identified by the serial train of selection bits. Each said coupling may be between the corresponding port of the plurality and stages of a respective said further shift register, the port to be selected may be an output port, the first shift register and the further shift register corresponding to said output port may be connected in cascade and have commoned clock pulse inputs, and a serial train of data bits may be appended to the serial train of selection bits and be stored in the further shift register corresponding to said output port prior to the enabling of said further coupling. This last feature in particular can speed up the outputting of data. According to another aspect the invention provides apparatus for selecting one from a plurality of parallel data ports and for transferring data between the one port and a serial data path, the apparatus comprising a first shift register having a serial data input coupled to the serial data path, at least one further shift register having a serial data terminal coupled to the serial data path and having a plurality of stages, means for clocking each of the first and further shift registers, the first shift register having a parallel data output coupled to control inputs of couplings between the stages of the further shift register and the at least one port, and means for enabling the parallel output of the first shift register thereby enabling a coupling to the selected port in response to the contents of the first shift register. An embodiment of the invention will be described, by way of example, with reference to the accompanying diagrammatic drawings in which: Figure 1 is a diagram of apparatus for selecting a parallel data port from a plurality of such ports and transferring data between the selected port and a serial data path, Figures 2a,b,c and d are timing diagrams illustrating the operation of the apparatus of Figure 1 in a first mode, and Figures 3a,b,c and d are timing diagrams illustrating the operation of the apparatus of Figure 1 in a second mode. Figure 1 is a diagram of apparatus for transferring data between a bidirectional serial data path in the form of a line 1 and a parallel data port selected from a pair of parallel data input ports 2 and 3 respectively and a pair of parallel data output ports 4 and 5 respectively. The line 1 is connected to a serial data terminal 6 of a data source/sink 7, for example to the serial data input/output terminal of a microcontroller of the kind available under the type number MAB 8051 described in the book Microprocessors, Microcontrollers and Peripherals, Data Handbook, Integrated Circuits, Philips Electronic Components and Materials Division, pages 43-75, the Netherlands, 1985. The input ports 2 and 3 are constituted by the parallel data inputs of parallel-in/serial-out shift register ICs 8 and 9 respectively, for example those available under the type number (same manufacturer) 74HC165, these ICs also having serial data inputs 10 and 11 respectively which are connected to the positive supply rail (+V; logic "1"), and clock pulse inputs 12 and 13 respectively which are fed from a clock pulse output 14 of the source/sink 7. Similarly the output ports 4 and 5 are constituted by the parallel outputs of serial-in/parallel-out shift register ICs 15 and 16 respectively, for example shift-and-store registers available under the type number 74HC4098, these ICs having clock pulse inputs 17 and 18 respectively which are fed from the output 14 and output-enable inputs 19 and 20 respectively which are connected to the positive supply rail. Each of the parallel-in/serial out shift register ICs 8 and 9 comprises an actual shift register portion, 27 and 28 respectively, to the parallel inputs 29 and 30 respectively of which ports 2 and 3 respectively are coupled via input gates 31 and 32 respectively. The input gates 31 and 32 are controlled by control signals fed to inverting parallel-load inputs 33 and 34 respectively from respective bit lines 35 and 36 of the parallel output 37 of a further serial-in/parallel-out shift register IC 38. Each of the serial-in/parallel-out shift register ICs 15 and 16 comprises an actual shift register portion, 39 and 40 respectively, the parallel outputs 41 and 42 respectively of which are coupled to the ports 4 and 5 respectively by cascade combinations of a latch, 43 and 44 respectively, and an output buffer, 45 and 46 respectively. The latches 43 and 44 are controlled by control signals fed to strobe inputs 47 and 48 respectively from further respective bit lines 49 and 50 of the parallel output 37 of register IC 38. These bit lines are connected to the negative supply rail (OV; logic "0") via pull-down resistors 51 and 52 respectively. The bit lines 35 and 36 are connected to the positive supply rail (+V; logic "1") via pull-up resistors 53 and 54 respectively. The values of the resistors 51-54 are chosen to be high relative to, for example 100 to 1000 times, the source resistance at the corresponding output 35,36,49 or 50 of register IC 38. These resistors may each have a value of, for example, 10Kohms, and the supply voltage may be, for example, 5 volts. Serial data inputs 21 and 22 of the register ICs 15 and 16 respectively are connected to a serial data output 55 of register IC 38 a serial data input 64 of which is connected to the line 1. Register IC 38 therefore couples the line 1 to these serial data inputs. Inverting serial data outputs 23 and 24 of the register ICs 8 and 9 respectively are coupled to the line 1 via npn transistors 25 and 26 respectively which are each connected in common emitter configuration. Like the register ICs 15 and 16, register IC 38 (which may also be of the kind available under the type number 74HC4098) comprises an actual shift register portion 56 the parallel output 57 of which is coupled to the parallel output 37 via the cascade combination of a latch 58 and an output buffer 59. Buffer 59 has 3-state outputs (high, low and connected to a high impedance) this being the reason for the provision of the resistors 51-54. When the potential at an output-enable input 60 thereof is logic "1" data in the latch 58 appears at the parallel output 37. This output-enable input is connected to a further output 61 of the data source/sink 7, as is a strobe signal input 62 of the latch 58. A clock input 63 of register IC 38 is connected to the clock pulse output 14 of the source/sink 7. Figure 2 is a timing diagram illustrating the writing of a byte of information to output port 5, it being assumed that each of the register ICs 8,9,15,16 and 38 is 8-bits wide and that the output bit lines 35,36,49 and 50 of register IC 38 correspond to the last stage, the last stage but one, the last stage but two and the last stage but three respectively thereof. It is also assumed that data source/sink 7 is in the form of an appropriately programmed microcomputer having a serial data input/output terminal 6, a clock pulse output terminal 14, and a further output terminal 61, this last being, for example, a single bit line of one of its ports. Figure 2a shows the data generated by computer 7 on line 1 in Figure 1, Figure 2b the signal it generates at its output 61, Figure 2c the signal which appears on output bit line 50 of register IC 38, and Figure 2d the clock signal generated by computer 7 at its output 14. At time t0 computer 7 starts to generate serially at its serial data input/output 6, i.e. on line 1, the 8-bit byte which is to be written to port 5, this byte being shifted into register 56 by means of successive clock pulses and being contained completely therein at time t1. At this time t1 computer 7 starts to generate serially on line 1 the bit sequence 1101XXXX, which is the bit sequence required at the parallel output 37 of shift register IC 38 if output port 5 is to be addressed, the input gates 31 and 32 of the ICs 8 and 9 requiring logic "0" on the parallel load inputs 33 and 34 if they are to be enabled, and the latches 43 and 44 of the ICs 15 and 16 requiring logic "1" on the strobe inputs 47 and 48 if they are to latch the contents of the registers 39 and 40. During the time t1-t2 this bit sequence is shifted into register 56 and the previous contents of register 56, i.e. the byte to be written to port 5, is shifted out via output 55 and into both registers 39 and 40 via inputs 21 and 22. At time t3, when the said byte is wholly within the registers 39 and 40 and the said bit sequence is wholly within the register 56, computer 7 generates logic "1" on its output 61 (Figure 2b) causing the contents of register 56 to be latched into latch 58 and to appear at parallel output 37, i.e. to cause the bits 1,1,0 and 1 to appear on lines 35,36,49 and 50 respectively. (The bits previously on these lines were 1,1,0 and 0 respectively due to the high resistance state of the output 37 because of its logic "0" output enable signal and the presence of the resistors 51-54). Thus the latch 44 is strobed by the logic "1" which appears on line 50 (Figure 2c), transferring the byte in register 40 to output port 5, whereas latch 43 is unaffected and the gates 31 and 32 remain in their blocked state. At time t4 computer 7 returns the level on its output 61 to logic "0", causing the output buffer 59 to return to its high-resistance state and therefore the level on the bit line 50 to return to "0". The byte remains in latch 44 and hence at the output port 5. Obviously if the byte had been required to be written to port 4 instead of port 5 the bit sequence 1110XXXX would have had to have been generated on the line 1, instead of the sequence 1101XXXX, resulting in the pulse generated on the bit line 50 (Figure 2c) being replaced by a pulse on the line 49. Figure 3 is a timing diagram illustrating the writing of a parallel byte presented to input port 3 onto the serial data line 1. Figure 3a shows the data occurring on line 1, Figure 3b the signal computer 7 generates on its output 61, Figure 3c the signal which appears on output bit line 36 of IC 38, and Figure 3d the clock signal generated by computer 7 on its output 14. At time t0 computer 7 starts to generate serially at its serial data input/output 6, i.e. on line 1, the bit sequence 1000XXXX, i.e. the bit sequence required at the parallel output 37 of shift register IC 38 if input port 3 is to be addressed. During the time t0-t1 this bit sequence is shifted into the register 56. At time t2, when the complete sequence is in register 56, computer 7 generates logic "1" on its output 61 (Figure 3b) causing the contents of register 56 to appear at parallel output 37, i.e. to cause the bits 1,0,0 and 0 to appear on lines 35,36,49 and 50. There is therefore no change in the levels on the lines 35,49 and 50, but the level on line 36 changes from "1" to "0" (Figure 3c), i.e. to the parallel load level of shift register IC 9 to the relevant input 34 of which it is connected. The byte at input port 3 is therefore loaded into shift register 28 whence it is subsequently shifted out in inverted form to serial output 24 during the time t3-t4, inverted once again by the common-emitter transistor 26, and applied to line 1 and hence to the serial data input/output 6 of computer 7. The computer returns the level on its output 61 to "0" at time t3 causing in turn the level on bit line 36 to return to "1", disabling once again the parallel loading of register 28. Because the serial data input 11 of register IC 9 is connected to logic "1" the level on line 1 after time t4 remains at "1" unless further data is applied to it, because transistor 26 is then cut off. (The values of the collector load resistors 70 and 71 of the transistors 25 and 26, which resistors may obviously be replaced by a single pull-up resistor of value equal to that of the parallel combination of these resistors, are chosen to be high relative to, for example 100 to 1000 times, the "on" resistance of each of the transistors 25 and 26 and the source resistance at the serial data output 6 of microcomputer 7). Line 1 therefore effectively performs a wired AND function on the logic levels generated at the collectors of the transistors 25 and 26 and at the output 6 (the same as wired OR if it is assumed that ground potential corresponds to logic "1" and +V corresponds to logic "0"). Obviously if the byte at input port 2 rather than that on port 3 had been required to be presented serially on line 1 the computer would have had to generate the sequence 0100XXXX rather than the sequence 1000XXXX during the time t0-t1, resulting in the pulse generated on the line 36 (Figure 3c) being replaced by a pulse on the line 35. Obviously the four unused bit lines (not shown) at parallel output 37 of register IC 38 could be used to control respective further input or output ports in a similar way, if desired, the relevant "don't care" bits in the bit sequences quoted above then having to be given the appropriate values to ensure that the corresponding ports are or are not addressed as required. If more than eight ports are required to be controlled the parallel output 37 can be extended by connecting another shift register IC in cascade with IC 38, extending the address bit sequences generated by computer 7 accordingly. Alternatively the parallel output 37 could be coupled to the strobe or parallel load inputs of the various shift register ICs via a decoder for the various possible bit combinations at output 37, enabling up to 256 ports to be controlled by means of this 8-bit parallel output. Conversely the number of output and/or input ports may be reduced; indeed the arrangement may contain only output ports or only input ports. Especially if it contains only output ports, instead of feeding the registers 39 and 40 from the serial output 55 of register 56 the serial input 64 of register 56 could be fed from the serial data output (not shown) of one of the registers 39 and 40 provided that the order in which the two bytes shown in Figure 2a are generated is then reversed. The clock signals of Figures 2d and 3d are shown as being continuous. If serial data source/sink 7 is a suitably programmed microcomputer, for example of the kind available under the type number MAB8051, this clock signal may in fact be generated as an integral part of the serial input/output mechanism of the device, in which case pauses may occur in this clock signal at certain times. For example, in Figure 2 a pause may occur in the clock signal of Figure 2d immediately after the rising edge at t1, (with a corresponding pause in the succession of data bits of Figure 2a) while the microcomputer prepares to output the second byte shown. Furthermore, the clock signal of Figure 2d may in fact remain in the high state after the rising edge at t2. Similarly, in Figure 3 a pause may occur in the clock signal of Figure 3d immediately after the rising edge at t1, while the microcomputer prepares to input the second byte shown, and the clock signal may remain in the high state after the rising edge at t4. As described, a respective shift register 31,32,39 or 40 is provided for each of the input and output ports 2,3,4 and 5. This is often an advantage, especially when the various ports are significantly separated from each other in space, because if each such shift register is positioned close to the relevant port only three signal lines (strobe, serial data and clock) are required between each of the port/register combinations and the combination of the units 7 and 38. However, if providing more such signal lines is of no or little consequence it will be evident that a single such register may be shared between more than one port. For example, in Figure 1 register 40 may be omitted, the parallel input to latch 44 then being connected to the parallel output of register 39. As another example register 28 may be omitted, the parallel output of gate 32 being connected instead to the parallel input of register 27. Indeed, a single register having both a parallel data input and a parallel data output may be substituted for all the registers 31,32,39 and 40, provided that it is such that the direction of shift of data through it is reversible.

Claims: A method of selecting one from a plurality of parallel data ports for data transfer between the one port and a serial data path, the method comprising transmitting a serial train of selection bits over the data path to a serial input of a first shift register, storing the selection bits in the first shift register, selecting the parallel data port in response to a parallel output of the first shift register, characterised by selecting the one parallel data port by means of a coupling between the one port and a further shift register having a serial data terminal coupled to the serial data path, and enabling the parallel output of the first shift register to enable that coupling which corresponds to the one port identified by the serial train of selection bits. A method as claimed in Claim 1, wherein each said coupling is between the corresponding port of the plurality and stages of the respective said further shift register. A method as claimed in Claim 2, wherein the port to be selected is an output port, wherein the first shift register and the further shift register corresponding to said output port are connected in cascade and have commoned clock pulse inputs, and wherein a serial train of data bits is appended to the serial train of selection bits and is stored in the further shift register corresponding to said output port prior to the enabling of the said coupling. A method as claimed in Claim 2, wherein the port to be selected is an input port and wherein data in that said further shift register which corresponds to said input port is clocked out onto the serial data path after the enabling of the said coupling. A method as claimed in any preceding claim, wherein a given port of the plurality is an output port and wherein a connection between the parallel output of the first register to an enable control input of the coupling corresponding to said output port is to a strobe input of a latch included in this said coupling. A method as claimed in any preceding claim, wherein a given port of the plurality is an input port and wherein a connection between the parallel output of the first register to an enable control input of the coupling corresponding to said input port is to an enable input of a gate included in this said coupling. Apparatus for selecting one from a plurality of parallel data ports and for transferring data between the one port and a serial data path, the apparatus comprising a first shift register having a serial data input coupled to the serial data path, at least one further shift register having a serial data terminal coupled to the serial data path and having a plurality of stages, means for clocking each of the first and further shift registers, the first shift register having a parallel data output coupled to control inputs of couplings between the stages of the further shift register and the at least one port, and means for enabling the parallel output of the first shift register thereby enabling a coupling to the selected port in response to the contents of the first shift register. Apparatus as claimed in Claim 7, wherein first and second ports of the plurality are input ports, wherein serial data outputs of the further shift register corresponding to said first and second ports are coupled to the serial data path via respective inputs of an AND-function circuit, and wherein these further shift registers are each provided with a serial data input which is connected to that logic level which, after it has been clocked through the corresponding further shift register, will result in the application of logic "1" to the corresponding input of the AND-function circuit. Apparatus as claimed in Claim 8, wherein the AND-function circuit is a wired AND-function circuit of which the serial data path forms part. Apparatus as claimed in Claim 8 or Claim 9, including a serial data source an output of which is coupled to the serial data path via a further input of the AND-function circuit. Apparatus as claimed in Claim 7, wherein a given port of the plurality is an input port, wherein a serial data output of the further shift register corresponding to said given port is coupled to the serial data path via a first input of an AND-function circuit, and wherein this further shift register is provided with a serial data input which is connected to that logic level which, after it has been clocked through this further shift register, will result in the application of logic "1" to the first input of the AND-function circuit, the apparatus including a serial data source an output of which is coupled to the serial data path via a second input of the AND-function circuit. Apparatus as claimed in Claim 11, wherein the AND-function circuit is a wired AND-function circuit of which the serial data path forms part. Apparatus as claimed in any of Claims 7 to 12, wherein said further couplings include a latch and a buffer in cascade, and wherein the means for enabling said further couplings comprises means for applying a strobe signal to a strobe signal input of the latch and an output enable signal to an output enable signal input of the buffer. Apparatus as claimed in any of Claims 7 to 13, wherein a given port of the plurality is an output port and wherein the further register corresponding thereto and said first shift register are connected in cascade. Apparatus as claimed in any of Claims 7 to 14, wherein a given port of the plurality is an input port and wherein the further coupling to an enable control input of the coupling between said input port and the stages of the further shift register corresponding thereto is to an enable input of a gate included in the latter coupling. Apparatus as claimed in any of Claims 7 to 14, wherein a given port of the plurality is an output port and wherein the further coupling to an enable control input of the coupling between said output port and the stages of the further shift register corresponding thereto is to a strobe input of a latch included in the latter coupling.

Inventors: BRIER GEOFFREY, RAYNE MARK WENTWORTH, BRIER, GEOFFREY, RAYNE, MARK WENTWORTH
Applicants: PHILIPS ELECTRONICS UK LTD, PHILIPS NV, N.V. PHILIPS' GLOEILAMPENFABRIEKEN, PHILIPS ELECTRONICS UK LIMITED
Application year: 1987
Main classification: G06F13
IPC codes: G06F13, G06F15