Technique for converting either way between a plurality of N synchronized serial bit streams and a parallel TDM format
TECHNICAL FIELD 
     The present invention relates to techniques for converting a plurality of N concurrent serial bit streams into a single parallel Time Division Multiplexed (TDM) bit stream, and vice versa, using bit transpositions in an N×M matrix of storage elements, where each serial and parallel bit stream comprises M-bit words. 
     DESCRIPTION OF THE PRIOR ART 
     In today&#39;s communication equipment, it is becoming more unusual for the major processing units to receive data from just one source. As the processing units are integrated into Very Large Scale Integration (VLSI), higher throughput becomes available in less space. The task of receiving the data from multiple sources and preparing, or pre-processing, it for the major processor in an efficient way can often be challenging. The task is twice as hard if the processed information needs to be sent to multiple destinations. 
     The design of the pre- and post-processing circuits must be very efficient if the benefits of the VLSI processor are to be taken advantage of. An efficient solution must not only be fast, it must also consume as little of the other equipment resources, e.g., power and space, as possible. Serial-to-parallel and parallel-to-serial conversions are common processes which must be done before and after the major processing. 
     A straight-forward approach for performing the serial-to-parallel transformations for one input line is via a well-known arrangement of an M-bit Shift Register including one input for receiving the serial bit stream and M outputs that can be concurrently gated to an M-bit input and M-bit output D-type Latch. In operation, where for example M=8, after 8 serial bits have been clocked into the Shift Register, the 8 bits are latched and held as a byte while the next 8-bits are being clocked into the Register. For multiple serial lines, each serial line would use a separate shift register and an associated latch. The eight parallel outputs of each latch would be connected to separate leads forming an 8-bit bus. By enabling the appropriate output or latch, the processor or user circuit sequentially reads the latches and processes the bytes. A parallel-to-serial converter is very similar in that the enabled latch captures the bytes from the bus and allows the shift register to parallel load the byte. The shift register then shifts the bits out in the required serial format. 
     Medium Scale Integration (MSI) integrated circuits (IC) provide an 8-bit shift register and an 8-bit latch in two separate 16-pin packages. New Large Scale Integration (LSI) ICs combine these functions in one IC. Assume that a circuit pack must process 8 serial input streams. Using the above LSI technology, sixteen 20-pin ICs would be required just to do the serial-parallel transformations, not including clock, latch and output enable generation means. Since space and speed are critical factors in most circuit designs, it becomes necessary to find more efficient means for performing this conversion. 
     Another arrangement is described in U.S. Pat. No. 4,377,843 issued to R. T. Garringer et al. on Mar. 22, 1983. There, a microprocessor-based Data Distribution Interface (DDI) is described by which a single Universal Asynchronous Receiver Transmitter (UART) is controlled and multiplexed for interfacing between a plurality of serial data terminals and an external parallel operating system. The serial-to-parallel process in the UART converts an incoming serial bit stream from one of the plurality of serial remote terminals into a parallel Time Divison Multiplexed format for transmission to the operating system. The central operating system executes its task on the parallel received signal and passes the return information to the DDI for the parallel-to-serial conversion by the UART prior to sending the serial bit stream to the intended data terminal. While the serial bit stream is being sent to a first remote data terminal a second serial bit stream can be converted into a parallel format for transmission to the central operating system for efficiency purposes. Such DDI, however, cannot receive plural concurrent serial bit streams from the remote data terminals, and includes many elements in the DDI to provide the single momentary serial-to-parallel and/or parallel-to-serial conversion. 
     The problem in the prior art is to provide a efficient and simple means for converting between multiple concurrent serial bit streams and a single parallel time division multiplexed (TDM) bit stream. 
     SUMMARY OF THE INVENTION 
     The foregoing problem in the prior art has been solved in accordance with the present invention which relates to method and apparatus for converting a plurality of N concurrent serial bit streams into a single parallel TDM format, and vice versa, where each bit stream comprises words of M-bits each and the serial bit streams are preferably synchronized. More particuarly, conversion apparatus according to the present invention comprises a matrix of storage elements which are coupled on one side of the matrix to N first input/output terminals, each first terminal being coupled to a separate serial communication link; and on the opposing side of the matrix to M second input/output terminals which are coupled to an M-bit parallel bus. In operation, in a continuous sequence the synchronized M-bit words from the plurality of N serial links, or the plurality of N M-bit words from the TDM parallel bus, are stored in the matrix of storage elements before the bits in certain storage elements are transposed about a predetermined diagonal of the matrix to convert either the serially stored bits into the parallel format, or vice versa. 
    
    
     Other and further aspects of the present invention will become apparent during the course of the following description and by reference to the accompanying drawings. 
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Referring to the drawings where like numerals represent like parts in the several figures: 
     FIG. 1 is a block diagram illustrating the conversion of three concurrent serial bit streams comprising 3-bit words that are converted into a parallel TDM format in accordance with the present invention; 
     FIG. 2 is a block diagram of an arrangement for performing the serial-to-parallel conversion as shown in FIG. 1, or vice versa; 
     FIG. 3 illustrates the sequence performed in providing the serial-to-parallel conversion in the arrangement of FIG. 2; 
     FIG. 4 illustrates a block diagram of an alternate arrangement similar to FIG. 2 for performing the serial-to-parallel conversion shown in FIG. 1, or vice versa; 
     FIG. 5 illustrates the sequence performed in providing the serial-to-parallel conversion in the arrangement of FIG. 4; 
     FIG. 6 illustrates a block diagram of an arrangement for providing a serial-to-parallel conversion where the number of concurrent serial bit streams are less than the number of bits per word; 
     FIG. 7 illustrates the sequence performed in providing the serial-to-parallel conversion in the arrangement of FIG. 6; 
     FIG. 8 illustrates a block diagram of an arrangement corresponding to the inverse of FIG. 6 for providing a parallel-to-serial conversion where the number of concurrent serial output bit streams are less than the number of bits per word; 
     FIG. 9 is a block diagram of an alternate arrangement to that of FIG. 6 for providing a serial-to-parallel conversion where the number of concurrent serial input bit streams are less than the number of bits per word; 
     FIG. 10 illustrates the sequence performed in providing the serial-to-parallel conversion in the arrangement of FIG. 9: 
     FIG. 11 is a block diagram of an inverse arrangement similar to FIG. 9 for performing a parallel-to-serial conversion where the number of concurrent serial output bit streams is less than the number of bits per word; and 
     FIG. 12 illustrates the sequence performed in providing the parallel-to-serial conversion in the arrangement of FIG. 11. 
    
    
     DETAILED DESCRIPTION 
     FIG. 1 illustrates the general case where three concurrent serial input bit streams (a-c), comprising 3-bits per word (0-2) each, are converted into a parallel Time Division Multiplexed (TDM) bit stream in a serial-to-parallel converter 10 in accordance with the present invention. It is to be understood that converter 10 of FIG. 1 can also be used to convert a TDM parallel input bit stream into three concurrent serial output bit streams by providing the parallel bit stream to the inputs instead of the three concurrent serial bit streams. For purposes of description hereinafter, it is assumed that each of the three serial bits streams designated a-c, or the resultant parallel TDM bit stream, comprises words of three elements or bits denoted by subscripts 0-2 as shown in FIG. 1. It is to be understood that the description hereinafter for the three serial bit streams is merely for purposes of exposition and not for purposes of limitation, since such description can be applied to the general arrangement where there are N serial bit streams with M bits/word, and also for a parallel-to-serial conversion. 
     FIG. 2 is a block diagram of an exemplary converter 10 for effecting either a serial-to-parallel or parallel-to-serial conversion between 3 exemplary concurrent serial bit streams (N=3) and a TDM parallel bit stream, where each bit stream comprises 3-bit words (M=3). Converter 10 comprises an array of 9 storage elements 11 and associated interconnections, where each storage element is disposed in a separate fixed position in a 3×3 matrix which includes a predetermined diagonal 12. The horizontal interconnects are used to shift information, or bits, into, through, and out of the matrix based on predetermined clock pulses. In accordance with the present invention, once the three 3-bit words associated with the three serial bit streams, or the TDM parallel bit stream, are gated into the matrix, an interchange of the information stored in the off-diagonal elements via the non-horizontal interconnections is effected to complete the conversion. Those storage elements 11 on diagonal 12 which do not have non-horizontal interconnections retain their stored bit and define the diagonal 12. 
     As shown in FIG. 2, each storage element 11 comprises an &#34;A&#34; input which is selected during horizontal clocking, a &#34;B&#34; input which is selected during non-horizontal clocking, an &#34;S&#34; input for receiving a control signal that selects either the A or B input, a &#34;C&#34; input that receives the clock pulses, and a &#34;Q&#34; output. Such storage element 11 can be formed from a combination of a 2:1 multiplexer, which has the A, B and S inputs and a Y output, connected to the D input of a D-type Flip Flop which also includes a clock (C) input and the Q output. It is to be understood that the described storage element is provided for exemplary purposes only, and that any suitable storage element can be substituted that functions as described and still be within the scope of the present invention. In the matrix of converter 10, all of the Select (S) inputs are preferably connected together to concurrently receive a select control signal provided by a source (not shown), and similarly all of the clock (C) inputs would preferably be connected together to concurrently receive approximately timed clock pulses from a source (not shown). 
     FIG. 3 illustrates the operation sequence of the matrix of FIG. 2 for the conversion of 3 concurrent synchronized serial input bit streams into a TDM parallel output bit stream. In step (a), or time period=0, the 3-bit words of the three serial bit streams are shown prepared to enter the matrix of converter 10. In steps (b)-(d), or time periods=1-3, respectively, the three bits of the words of each of the three serial bit streams are sequentially clocked horizontally into a separate row of the matrix using the A, or horizontal shift, inputs of the matrix storage elements. Just after the end of step (d), and after the 3-bit words have been entered into the matrix as shown in step (d) of FIG. 3, the alternate B inputs to the 9 storage elements are selected to exchange the information in the off-diagonal storage elements. The result of such off-diagonal exchange is pictured in the matrix of step (e), where during the time period=4 of step (e), the first parallel word associated with serial bit stream &#34;a&#34; is outputted from the matrix onto a parallel bus. During steps (f) and (g) the remaining two converted parallel words for input serial bit streams &#34;b&#34; and &#34;c&#34; are outputted from the matrix to complete the conversion of the three concurrent serial bit streams into a TDM parallel format. It is to be understood that during steps (e) to (g) in FIG. 3, the next word of each of the three serial bit streams is clocked into the matrix similar to steps (b) to (d). 
     The arrangement of FIG. 2 can also be used to perform a parallel-to-serial conversion by shifting the TDM 3-bit words of the parallel bit stream into the matrix inputs at the left of FIG. 2 similar to the sequence of steps (b)-(d) for the serial words of FIG. 3. Once the 3 parallel words a-c are stored in the matrix, the exchange of off-diagonal elements is performed using the B inputs of the storage elements as described for step (d) of FIG. 3 to place the parallel words a-c into the serial format in the rows of the matrix. The serially formed words are then outputted from the matrix during time periods 4-6. In the arrangement of FIGS. 2 and 3, the flow of information from the serial inputs towards the parallel output, or vice versa, is stopped momentarily in step (d) to allow the transpositions, or conversion, to take place. 
     A simple modification can be made which would allow the flow of information to continue throughout the entire process without a pause to perform the conversion. This improvement leads to an array in converter 10 which is synchronous and continuous and is shown in FIG. 4, while the flow of information for a serial-to-parallel conversion through the matrix is shown in FIG. 5. The difference between the matrices of FIGS. 2 and 4 is in the interconnections of the B or alternate inputs with the points on the horizontal paths of each matrix. As shown in FIG. 5, during time periods 1 and 2 the first two bits of the three serial words a-c are shifted into the associated row of storage elements 11. During time period 3, the alternate B inputs of the storage elements 11 are selected which causes the third bit of each of serial words a-c to be shifted into the matrix via the non-horizontal interconnections while concurrently converting the serial words into the parallel format. At this point in time, the parallel format &#34;a&#34; word is available at the outputs. During the next three time periods 4-6, the remaining &#34;b&#34; and &#34;c&#34; converted parallel words are available from converter 10 in the TDM parallel format (during periods 4 and 5) concurrent with the next serial words of bit streams a-c being clocked into the matrix and converted to the parallel format. A parallel-to-serial conversion can also be performed with the arrangement of FIG. 4, by inputting the TDM parallel words a-b during time periods 1 and 2 and using the alternate B inputs of storage elements 11 during time period 3 to enter parallel word &#34;c&#34; into the matrix via the non-horizontal interconnections and thereby concurrently complete the conversion to the serial format. During time periods 4-6 the serial converted words would be outputted while the next three parallel words a-c are inputted and converted into the serial format. 
     The description hereinbefore has been directed to the condition of N=M, where the number of input lines (N) to be converted either way between the serial and parallel formats is equal to the number of bits per word (M). The array 10 architecture can be extended to the general case of an N×M matrix, where N also defines the number of rows and M also defines the number of columns. For an exemplary serial-to-parallel conversion of two serial bit streams with 4-bit words each, the storage elements 11 of input matrix 10 are formed in a 2×4 matrix and includes the minimal number of twelve storage elements shown in the arrangement of FIG. 3. If the 2×4 matrix is interconnected in the manner of the matrix of FIG. 2, then the sequence of operation is shown in FIG. 7. More particularly, during the first 4 clock periods the serial words are shifted into the two 4-element rows, and at the end of the fourth clock period the conversion is made into the two word parallel format by selecting the alternate B inputs to the storage elements. During the next two clock periods the two parallel words are shifted out of the matrix on a parallel bus while the first two bits of the next serial words are shifted into the matrix. 
     From FIG. 7 it can be seen that such conversion introduces two parallel words with no information therein which creates a two-word pause in the array throughput every N words. Such pause corresponds to the concept of &#34;bit-stuffing&#34;. If the matrix were interconnected with non-horizontal interconnections similar to the arrangement of FIG. 4, there still would be a two-word pause in the array throughput because the input clock equals the output clock rate and there are double the number of outputs as inputs producing a one-half utilization of the output capacity. FIG. 8 illustrates an array 10 that corresponds to the reverse of the array of FIG. 6 for performing the conversion of a 2-word, 4-bit/word, parallel TDM format into a two concurrent word serial format. The arrangement of FIG. 8 also would have to provide a 2-word pause between each pair of parallel input words to avoid overwriting the last two bits of the converted serial words as they are shifted out of the array. 
     If such pauses in array throughput are unacceptable, then an architecture is required, for example, where the array output format appropriately differs from the array input format. An exemplary array 20 for providing such different input and output formats is shown in the arrangement of FIG. 9, where the exemplary two concurrent serial bit streams of 4-bits per word are converted into a parallel TDM format. In FIG. 9, the single array 10 architecture of FIG. 6 is changed into a master array 20 with two inputs (N) and four outputs (M) that comprises two 2×2 matrices 21 1  and 21 2  of four storage elements 11 each, and a pre-latch block 22 at the input to one of matrices 21. Preferably, each matrix 21 is interconnected with the non-horizontal &#34;B&#34; interconnections arranged similar to that shown in FIG. 4. 
     To avoid the &#34;bit-stuffing&#34; or pauses in the array throughput the input format of the two concurrent serial bit streams is multiplexed at twice the array 20 clock frequency. More particularly, during the first clock period of array 20, both bits a 0  and b 0  and then a 1  and b 1  are presented to the inputs of array 20. The pre-latch block 22 functions to sample the information of the two serial input lines when bits a 0  and b 0  are presented to the inputs of array 20, and holds these bit values for presentation to the inputs of bottom array 21 2 , as shown for serial bit stream clock period t=1 of FIG. 10. When bits a 1  and b 1  of the serial bit steams are presented at the two inputs of the top matrix 21a, both matrices 21 1  and 21 2  are clocked and select the horizontal &#34;A&#34; inputs of storage element 11 so that both matrices 21 receive and temporarily store their first input samples as shown at t=2 of FIG. 10. This sequence is repeated for bits a 2  and b 2  and then bits a 3  and b 3  as shown in t=3 and t=4 of FIG. 10 except that the four concurrent bits are clocked into matrices 21 1  and 21 2  during T=4 using the non-horizontal &#34;B&#34; interconnections of storage elements 11 to concurrently shift the four bits into the matrices while converting the serial format into a parallel format. At the end of t=4, the parallel converted word &#34;a&#34; is available as an output from matrices 21 1  and 21 2 . During t=5 of the serial bit stream clock shown in FIG. 10, bits a 0  and b 0  of the next two consecutive words of the serial bit stream are sampled and held by pre-latch 22. Then, during t=6 of FIG. 10 (corresponding to the third array 20 clock period), the first two bits of the next consecutive words of the serial bit streams are clocked into matrices 21 while the final parallel converted word &#34;b&#34; is available as an output of matrices 21. It is to be understood that the output elements of the parallel words can easily be re-ordered by simple routing of the output lines, and that the concept can easily be extended to the general case of arrays where there are less input lines than output lines. The arrangement of FIG. 9 can also be used to convert a series of four 2-bit prallel words, which are introduced to pre-latch 22 and matrices 21 into four concurrent serial output bit streams of 2-bits/word each using the sequence of FIG. 10. 
     For the case where there are more input lines than output lines, (N&gt;M) as shown for example for the parallel-to-serial converter of FIG. 8, twice as much data enters the array 30 on the four parallel input lines as can leave the array on the two serial lines. As described hereinbefore, bit-stuffing would be required in the parallel word input bit stream of the array of FIG. 8, to avoid overwriting serial data leaving the array. An arrangement for avoiding bit-stuffing for the case where there are four input lines and two output lines, is shown in FIG. 11 which effectively doubles the output information rate. The array 30 of FIG. 11 comprises a first and second 2×2 matrix designated 31 1  and 31 2 , respectively, of 4 storage elements 11 each, with each of the corresponding outputs of the two matrices connected together. 
     In operation, to avoid contention on the two output lines, the top matrix 31 1  of storage elements 11 is arranged to enable its outputs during a first portion of the array 30 clock period. The bottom matrix 31 2  of storage elements 11, in turn, enables its two outputs during a second portion of the array 30 clock period where the first and second portions can be sequenced in any order. Therefore, for the exemplary arrangement where the first portion of the array clock period precedes the second portion of the array, during the first array 30 clock period, the four bits of the &#34;a&#34; parallel word are clocked into the left-hand storage elements 11 of matrices 31 1  and 31 2  using the &#34;A&#34; horizontal inputs, as shown in t=2 of FIG. 12. During the second array 30 clock period, the four bits of the &#34;b&#34; parallel word are clocked into array 30 using the &#34;B&#34; non-horizontal inputs to storage elements 11 to concurrently perform the parallel to-serial conversion, as shown in T=4 of FIG. 12. At this point the a 0 , a 2 , b 0 , and b 2  bits are available to the two serial output lines of matrices 21, with any well-known gating means (not shown) being arranged to make, for example, bits a 0  and b 0  from matrix 31 1  directly available to the serial output lines at the end of t=4 of FIG. 12, while inhibiting the bits a 2  and b 2  until time period t=5 corresponding to the first portion of the next array clock cycle. During the second half of the same next array clock period, as shown in t=6 of FIG. 12, the bits a 1 , b 1 , a 3  and b 3  are shifted using the A horizontal inputs to storage elements 11 concurrent with the next parallel word being shifted into the left-hand storage elements 11 of matrices 31 1  and 31 2 . The sequence then continues in the manner described hereinabove. It is to be understood that the above concept can be extended to the general concept of N×M arrays where N is other than four inputs and are greater in number than the M outputs and M is other than two outputs. The arrangement of FIG. 11 can also be used to convert four concurrent serial bit streams of 2-bits/word each, which are introduced to the inputs of FIG. 11, into a TDM parallel output bit stream using the sequence of FIG. 12.