Abstract:
A data selection matrix is disclosed which uses a plurality of programmed array logic (PAL) units having input thereto portions of binary words from a plurality of sources, the PALs being responsive to control words also input thereto to jointly select one of said sources of binary words and to select the arrangement of the portions of the binary words being input thereto from the selected source of binary words.

Description:
FIELD OF THE INVENTION 
     This invention relates to circuits for rearranging portions of data words for use in a computer system. 
     BACKGROUND OF THE INVENTION 
     In the prior computer art and other art fields there are multiplexer circuits used to selectively choose one of a plurality of data sources, and there are other circuits used to select bits within binary words. The selector circuits are relatively complex and expensive and are more so if they have the flexibility of being programmable. Circuits performing the two functions are seldom if ever combined into a single circuit except by adding more components. Thus, there is a need in the art for a selection circuit that is relatively simple, that may jointly perform multiplex and selection functions without increase in cost or size, and that is programmable. 
     SUMMARY OF THE INVENTION 
     The foregoing needs of the prior art are filled by the present invention. A selection circuit is provided that can jointly provide both selection and multiplexing functions. The selection circuit utilizes commercially available Programmable Array Logic (PAL) integrated circuit chips that are programmed to meet specific selection and multiplexing requirements, coupled with conventional registers. The PALS have multiple inputs to each of which are input binary data words from different sources. Also input to the programmed PALS are control signals which act to control the multiplexing selection operation, and to select the order of groups of bits within each binary word that is input thereto. 
    
    
     DESCRIPTION OF THE DRAWING 
     FIG. 1 is a detailed block diagram of the data selection matrix in accordance with the present invention; 
     FIGS. 2 through 5 are truth tables showing the programming of the PALS to perform the multiplexing and data selection in accordance with the teaching of the preferred embodiment of the invention; and 
     FIG. 6 is a table showing programming of the PAL that is used to control the operation of registers that are used to temporarily store the output of the PALS that perform the selection and multiplexing. 
    
    
     DETAILED DESCRIPTION 
     In FIG. 1 is shown the detailed block diagram of the data selection matrix in accordance with the preferred embodiment of the invention. Selectors 11 through 14 and register control 15 are commercially available 16L8B programmable array logic circuits available from companies such as AMD. Registers 16 through 19 are each made from commercially available 74AS169 counters available from companies such as Texas Instruments. These counters can selectably operate as a counter or a register. Multiplexer 20 is made up of four commercially available 74S157 multiplexers. Interpreter 22 is not part of the present invention but is shown as an output from the novel data selection matrix. 
     The connections to and between the integrated circuit chips identified in the last paragraph is shown in Table 1 below. The programming of the PALS (12-16) is shown in the truth tables in FIGS. 2 through 6. 
     
                       TABLE 1______________________________________W selector 11pins 16 and 19   to register A, pin 6pin 18           to register B, pin 6pin 17           to register C, pin 6pin 12           to register D, pin 6pins 1 through 4 procedure inputs P00,04,08,12pins 5 through 8 data inputs D00,04,08,12pins 9,11,13,14  control inputs C00,01,02,03pin 15           literal input L00X selector 12pins 16 and 19   to register A, pin 5pin 18           to register B, pin 5pin 17           to register C, pin 5pin 12           to register D, pin 5pins 1 through 4 procedure inputs P01,05,09,13pins 5 through 8 data inputs D01,05,09,13pins 9,11,13,14  control inputs C00,01,02,03pin 15           literal input L01Y selector 13pins 16 and 19   to register A, pin 4pin 18           to register B, pin 4pin 17           to register C, pin 4pin 12           to register D, pin 4pins 1 through 4 procedure inputs P02,06,10,14pins 5 through 8 data inputs D02,06,10,14pins 9,11,13,14  control inputs C00,01,02,03pin 15           literal input L02Z selector 12pins 16 and 19   to register A, pin 3pin 18           to register B, pin 3pin 17           to register C, pin 3pin 12           to register D, pin 3pins 1 through 4 procedure inputs P03,07,11,15pins 5 through 8 data inputs D03,07,11,15pins 9,11,13,14  control inputs C00,01,02,03pin 15           literal input L03Register Control 15pins 1 through 7 control inputs C00 to C06enable counter functionpin 19           to register D, pins 7 &amp; 10pin 18           to register C, pins 7 &amp; 10pin 17           to register B, pins 7 &amp; 10pin 16           to register A, pins 7 &amp; 10enable register functionpin 15           to register D, pin 9pin 14           to register C, pin 9pin 13           to register B, pin 9pin 12           to register A, pin 9______________________________________ 
    
     In Table 1 above pins 16 and 19 of selectors 11, 12, 13 and 14 are indicated as both being output to Register A. For each of the selectors output pins are connected together as a &#34;wire OR&#34; due to the number of minterms needed. 
     There are two unidentified sources of representative streams of binary information in the form of multibit binary words that are input to the data selection matrix. They are a procedure stream of sixteen bit words (P00-P15) and a data stream of thirty-two bit words (S00-S31). In operation, one of these two streams of binary words is selected for processing and portions of each word in the selected stream are permuted as taught in this specification. Of the sixteen bits P00-P15 that make up each binary word of the procedure stream, bits P00,04,08,12 are input to W selector 11 as shown in Table 1 above. Similarly, the other procedure stream (P-) bits and the data stream (D-) bits are input to selectors 12 through 14 as indicated in Table 1. 
     The thirty-two data bits S00-31 input to the data selection matrix are divided into two groups S00-15 and S16-31, and one of these groups at a time is output by a 2:1 multiplexer 20 as bits D00-15 onto a sixteen bit bus. The D00-15 bits are applied as a group of four bits to each of selectors 11 through 14. The group of four bits applied to each of selectors 11 through 14 are shown in Table 1. 
     Another group of bits called the literal bits L00-L03 are also input to the data selection matrix. The literals are a firmware microcode input. As shown in Table 1, the highest order literal bit L00 is input to pin 15 of W selector 11, the next highest order literal bit L01 is input to pin 15 of X selector 12, literal bit L02 is input to pin 15 of Y selector 13, and the lowest order literal bit L03 is input to pin 15 of Z selector 14. 
     The operation of selectors 11 through 14 is controlled by the four bits C00-03 of the seven bit control word C00-06. More specifically, the four control bits C00-03 are input to each of selectors 11 through 14 to control their operation in selecting the bits input to the selectors. All the control bits C00-06 are input to register control circuit 15 to control its operation in enabling ones of registers 16 through 19 to operate as registers or counters as described in detail further in this specification. The input of these control bits to the PALS that are selectors 11 through 14 and register control 15 is shown in Table 1 above. The selection of data stream (D00-15) or procedure stream (P00-15) bits in selectors 11 through 14 responsive to the control bits C00-03 is shown in detail in FIGS. 2 through 5. The control of registers 16 through 19 by register control 15 (PAL) in response to control bits C00-06 is shown in FIG. 6. 
     Responsive to control bits C00-03 input to each of selectors 11 through 13, one of the four groups of four data or procedure bits input to each of selectors 11-14 is steered to particular ones of registers 16 through 19 as programmed into the selector PALS. An example of this steering is described further in this specification. As mentioned previously, commercially available registers 16 through 19 are controlled by control signals C00-06 via register control 15 to act as either registers or as counters in a manner well known in the art. This dual capability extends the usefulness of the novel data selection matrix. 
     The C02 bit of the seven bit control word C00-06 is also input to and is used to operate multiplexer 20 to select either input data bits S00-15 or S16-31 for input to selectors 11 through 14 as data bits D00-15. When the C02 bit is a one, multiplexer 20 selects bits S16 to S31 to be data bits D00-15 that are input to the selectors. Conversely, when the C02 bit is a zero, bits S00 to S15 are selected to be data bits D00-15. 
     Register control circuit 15 also has control signal bits C00-06 input thereto and its output leads are connected to the control inputs of individual ones of registers 16 through 19. The connection of these control signal bits to the PAL that is register control 15 are listed in Table 1, and the outputs from register control 15 responsive to the control signal are shown in detail in the truth table in FIG. 6. Register control 15 responds to the control signal at its input to generate signals to registers 16 through 19 that jointly enable the registers to act as registers and to only enable the ones of the registers that are supposed to store bits output from the selectors. Alternatively these signals to the control inputs of registers 16 through 19 enable them to act as counters. 
     Each of registers 16 through 19 has four input leads making a total of sixteen input leads and corresponding to the sixteen selected procedure or data input leads to selectors 11 through 14. The zero/one values of the sixteen bits respectively on each of the sixteen input leads to registers 16 through 19 may be changed from their values input to selectors 11 through 14 by the selection accomplished in the selectors. The connections between the outputs of selectors 11 through 14 and the inputs of registers 16 through 19 are shown in Table 1. 
     In FIG. 2 is shown a truth table for programming W selector 11. As mentioned at the beginning of this detailed description selectors 11 through 14 are commercially available 16L8B programmable array logic (PAL) circuits. The pin numbers at the top and on the right side of FIG. 2 are the data input and output pin numbers for this particular PAL. The input pin numbers at the top of FIG. 2 also have the particular input data, procedure, control and literal lead designations adjacent them. The connections between the output pins on the right side of FIG. 2 and registers 16 through 19 are given in Table 1. The minterm numbers of PAL 11 are correlated with the input and output pin numbers in FIG. 2 so that one skilled in the art can understand how selectors 11 through 14 are responsive to control signals C00-03 to select bits in this preferred embodiment of the invention. 
     Similarly, FIGS. 3 through 5 giving the truth tables for selectors 12 through 14 are identical to FIG. 2 in form and give information so that one skilled in the art can understand the operation of the preferred embodiment of the invention, and can thereby also program selector PALs 11 through 14 to implement alternative embodiments of the invention. 
     As can be seen in Table 1, the sixteen bit data (D00-15) or procedure (P00-15) words are divided into four groups of four bits apiece. Each of the four groups of four bits has one bit connected to an input of one of selectors 11 through 14. The highest order bit of each group is connected to W selector 11, the next highest order bit of each group is connected to X selector 12, the next to lowest order bit of each group is connected to Y selector 13, and the lowest order bit of each group is connected to Z selector 14. In operation, when a group bits is selected it has one bit coming out of each of selectors 11 through 14. Thus, for the highest order group of four bits, one selected bit comes out of each selector but, with the interconnections between selectors 11-14 and registers 16-19, the highest order group of four bits is stored in a selected one of registers 16 through 19. Similarly, the next highest order group of four bits coming out of selectors 11-14 is stored in another one of registers 16 through 19, excluding the register that the highest order group of bits is stored in. The next to lowest order group of four bits comes out of the four selectors and is stored in one of the two remaining register 16 through 19. Finally, the lowest order group of four bits coming out of selectors 11 through 14 is stored in the remaining one of registers 16 through 19. 
     FIG. 6 is identical in form to FIGS. 2 through 5 and shows a truth table for programming register control 15 which is also the same type of commercially available PAL as selectors 11 through 14. As mentioned previously, register control 15 responds to the control signals C00-06 input thereto to output control signals to registers 16 through 19 that determine whether they are to operate as counters or registers, and to enable particular ones of the registers to accept and store groups of bits from selectors 11 through 14. 
     In the following paragraphs is described an example of the operation of the data selection matrix in selecting a binary word from one of the two sources, data and procedure. The truth table in FIG. 2 is for W selector 11, the truth table in FIG. 3 is for X selector 12, the truth table in FIG. 4 is for Y selector 13, and the truth table in FIG. 5 is for Z selector 14. 
     In the example, a sixteen bit binary number D00-15 is present on the data stream bus output from 2:1 multiplexer 20, and another sixteen bit binary number P00-15 is present on the procedure stream bus. The value of these numbers on the data and procedure busses does not matter. Only the control number is important and it is used to select either the procedure bus or the data bus, and also specifies any selection of bits. The seven bit control number C00-06 is input to the data selection matrix. All bits C00-06 are input to register control 15, while bit C02 is input to 2:1 multiplexer 20, and bits C00-03 are input to each of selectors 11 through 14 as reflected in the truth tables in FIGS. 2 through 5. For this example, the control number C00-06 is 1010100 where C00=C02=C04=1 and C01=C03=C05=C06=0. 
     Using the above exemplary values for C00-03 input to the PALs that selectors 11 through 14 are implemented with, in FIG. 2, which is the truth table for W selector 11, we see that with C00=1 and C01=0, the requirement for minterm 3 is partially satisfied. Under minterm 3 C02=C03=don&#39;t care, which means that C02 and C03 can be either zero or one. Thus, minterm 3 is fully satisfied and will provide an output. For minterm 3 there is only one output and that is for input pin number 5 which has data signal D00 connected thereto. The signal on data lead D00 is connected output pin 16 of W selector 11. 
     When looking at FIGS. 3, 4 and 5 it can be seen that the truth table is the same as for FIG. 2. The input and output pins are the same. The difference is in the signals connected to the input pins. Thus, minterm 3 is enabled for FIGS. 3, 4 and 5 also. Thus, for X selector 12 in FIG. 3, the signal on lead D01 is output at pin 16; for Y selector 13, the signal on lead D02 is output at pin 16; and for Z selector 14, the signal on lead D03 is output at pin 16. 
     Thus, with the present example only the data signal on data leads D00-03 are selected by the control number and output from selectors 11 through 14 to be applied to the input to A register 16. 
     At the same time that the control number is controlling the operation of selectors 11 through 14, register control 15 is also responding to bits C00-06 of the control number per the truth table shown in FIG. 6. With the control number 1010100, we find that only minterm 60 is enabled per FIG. 6. This causes a signal to be output only on output pin 12 from register control 15 which is input to enable input pin G1 of A register 16 per Table A. None of the other registers 17 through 19 is enabled. The result is that only the portion of the data number on data leads D00-03 is stored in A register 16. 
     While what has been described hereinabove is the preferred embodiment of the invention, it would be obvious to those skilled in the art that many changes may be made without departing from the spirit and scope of the invention.