Logical Function Generator

Silvertson, Jr. October 24, 1

Patent Grant 3700868

U.S. patent number 3,700,868 [Application Number 05/098,798] was granted by the patent office on 1972-10-24 for logical function generator. Invention is credited to Wilford E. Silvertson, Jr..


United States Patent 3,700,868
Silvertson, Jr. October 24, 1972

LOGICAL FUNCTION GENERATOR

Abstract

Apparatus and technique for generating logical functions and circuits, and for defining the circuit connections required to generate these functions thereby providing an aid in designing and constructing hardware to generate logical circuits.


Inventors: Silvertson, Jr.; Wilford E. (Yorktown, VI)
Assignee:
Family ID: 22270942
Appl. No.: 05/098,798
Filed: December 16, 1970

Current U.S. Class: 708/234; 326/37
Current CPC Class: G06F 30/30 (20200101); H03K 19/1733 (20130101); G06Q 10/04 (20130101)
Current International Class: H03K 19/173 (20060101); G06F 17/50 (20060101); G06Q 10/00 (20060101); G06f 007/38 (); G06f 015/34 ()
Field of Search: ;235/152 ;307/215,207 ;340/172.5

References Cited [Referenced By]

U.S. Patent Documents
3566359 February 1971 Connelly
3381117 April 1968 Forslund et al.
3579119 May 1971 Yau et al.
3596075 July 1971 Van Weelden
3538443 November 1970 Tague
3584207 June 1971 Avsan et al.
3458240 July 1969 Hanson
3576984 May 1971 Gregg
3341823 September 1967 Connelly
3262101 July 1966 Halpern
Primary Examiner: Morrison; Malcolm A.
Assistant Examiner: Gottman; James F.

Claims



What is claimed as new and desired to be secured by Letters Patent of the United States is:

1. A logical function generator for sequentially generating binary signals in parallel representing the designation numbers for the functions f.sub.o, f.sub.1, . . . , f.sub.k comprising:

a continuously recycling input generator means for generating binary signals in parallel representing all of the values of the binary number a.sub.o a.sub.1 . . . a.sub.i during each cycle;

switching generator means under the control of said input generating means for generating binary signals in parallel representing all of the values of the binary number x.sub.o x.sub.1 . . . x.sub.j with the value of x.sub.o x.sub.1 . . . x.sub.j changing only at the end of each cycle of said input generator means; and

circuit generator means receiving the signals representing the values of a.sub.o, a.sub.1, x.sub.o, x.sub.1, . . . x.sub.j for producing k+1 sequences of binary signals in parallel with each sequence for each cycle of said input generator means representing the designation number of one of the functions f.sub.o, f.sub.1, . . . f.sub.k whereby the values x.sub.o, x.sub.1, . . . x.sub.j define connections for designing logical circuits for generating the logical functions f.sub.o, f.sub.1, . . . f.sub.k ;

said circuit generating means includes k+1 function generating circuit means with each circuit means receiving the signals representing the values of a.sub.o, a.sub.1, . . . , a.sub.i, f.sub.o, f.sub.1, . . . f.sub.p.sub.-1, f.sub.p.sub.+1, . . . f.sub.k and selected ones of the values of x.sub.o, x.sub.1 . . . , x.sub.j for generating the function f.sub.p where (p=0, 1, . . . k).

2. A logical function generator according to claim 1 wherein said switching generator means includes means for constraining the switching generator means such that values of the number x.sub.o, x.sub.1 . . . x.sub.j that do not define useful connections are not generated.

3. A logical function generator according to claim 1 wherein said input and switching generators each includes a series of flip-flops with the least significant flip-flop of the input generator being driven by a source of clock pulses and with the switching generator driven by the most significant flip-flop of the input generator.

4. A logical function generator according to claim 1 wherein each of said k+1 function generating circuit means includes three subgroups of logical circuit elements with the first of said subgroups consisting of a single element for producing f.sub.p, with the second of said subgroups of logical sircuit elements having their outputs connected to the inputs of said single element, with the third of said subgroups of logical circuit elements having their outputs connected to the inputs of said second subgroups of logical circuit elements and with the a.sub.o, a.sub.1 . . . a.sub.1, x.sub.o, x.sub.1, . . . x.sub.j, f.sub.o, f.sub.1, . . . f.sub.p.sub.- 1, f.sub.p.sub.+ 1 . . . f.sub.k values connected to the inputs of said third subgroups of logical circuit elements.

5. A logical function generator according to claim 4 wherein said third subgroup of logical circuit elements is divided into sub-subgroups with the outputs of each sub-subgroup applied to the inputs of one of the elements in said second subgroup and with the values, a.sub.o, a.sub.1 . . . a.sub.i, f.sub.o, f.sub.1, . . . f.sub.p.sub.- 1, f.sub.p.sub.+ 1, . . . f.sub.k and selected ones of the values of x.sub.o, x.sub.1, . . . x.sub.j applied to the inputs of the elements in each of said sub-subgroups.

6. A logical function generator according to claim 1 including means for storing a binary function g in parallel form and comparing means for comparing the binary function f.sub.p generated by said circuit generator means with g and for producing signal that stops said input and switching generators when any f.sub.p = g.
Description



ORIGIN OF THE INVENTION

The invention described herein was made by an employee of the United States Government and may be manufactured and used by or for the Government for governmental purposes without the payment of any royalties thereon or therefor.

BACKGROUND OF THE INVENTION

The invention relates generally to logical circuitry and more specifically concerns an aid in designing and constructing hardware to generate logical circuits.

Previous methods for designing logical circuits have relied on the mathematics of set theory and Boolean algebra; requiring the manipulation of equations until desired results are obtained. This is a time-consuming operation and incases where the simplest form is desired there is no known mathematical method for directly arriving at it. It is a trial and error process and relies on the skill of the individual and a knowledge of what will be accepted as simplest form. Defining what will be accepted as simplest form depends on many factors. The type of gate to be used as well as fan in, fan out, etc., must be considered in arriving at a reasonable definition of simplest form. In most cases experience and intuition provide the best approach to generating this simplification definition and in some cases a well defined one cannot be found. Simplification techniques have been developed and are used. These include the Quine, Harvard, and Nelson methods as well as a number of mapping techniques. These provide methods for special simplifications, but they are not schemes for arriving at the simplest form for all cases. One such case is the case for circuits employing the "NAND" and "NOR" logical connective. In these cases simplification procedures arrive at a form of simplfication in terms of "AND" and "OR" and involves considerable manipulation if all functions of i variables and K connective elements are involved. This solution must then be converted to "NAND" or "NOR" form without regard to any alterations to simplest form that may result from this transformation. In a case where K=7 and i=3 (considering only combinational circuits) there exist approximately 4 .times. 10.sup.12 circuit arrangements. Anyone can be simplest form. To determine the correct circuit a method must be used that exhausts or/in some way accounts all 4 .times. 10.sup.12 circuits that are possible and isolates the one (or ones) appropriate. In the case of "NAND" - "NOR" implementation there exists no known mathematical technique for arriving at simplest form. This forces one to solve for all 4 .times. 10.sup.12 circuits in order to search for a simplest form. This places the problem beyond the time scale of any individual using manual techniques, and present day computers (after extensive programing) cannot provide a practical means for solution. It is therefore the primary purpose of this invention to provide practical means for generating logical functions and circuits.

SUMMARY OF THE INVENTION

This invention embodies the use of standard logical elements in the construction of a special purpose computer for use in automatically designing logic circuits. The Sheffer-stroke primitive and its dual the Pierce are widely used as fundamental logical elements. For this reason the "NAND" logical element will be used to illustrate the technique with this invention. The use of "NAND" elements is not restrictive and it should be noted that any primitive can be used for constructing automatic logical function and circuit generating machines.

The basic scheme provides for switching to permute a number of input literals and recursive inputs into a number of logical connective elements. The outputs from these connective elements provide the set of all functions possible from these connective elements and input literals. In addition, monitoring the switching states provides the set of all logical circuit connections associated with the set of all generated functions with a one-to-many mapping existing between functions and circuits.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of this invention;

FIG. 2 is a schematic diagram of circuitry utilized in the circuit generator of this invention;

FIG. 3 is a block diagram showing how the circuitry in FIG. 2 is used to form the circuit generator;

FIG. 4 is a schematic drawing of a simple embodiment of this invention;

FIG. 5 is a schematic drawing showing how constraints are put on the switching generator in FIG. 4;

FIG. 6 is a block diagram and schematic drawing of an input generator having three outputs and a switching generator having 45 constrained outputs;

FIG. 7 is a schematic drawing showing how a circuit generator can be built to handle all of the outputs from input and switching generators in FIG. 6; and

FIG. 8 is a block diagram showing one way in which this invention can be used.

DETAILED DESCRIPTION OF THE INVENTION

Turning now to the embodiments of the invention selected for illustration in the drawings the number 11 designates a circuit generator. An input generator 12 generates all possible input combinations of the literals a.sub.o - a.sub.i which are applied to circuit generator 11 on (i + 1 ) lines. A switching generator 13 generates steering signals x.sub.o - x.sub.j on (j + 1 ) lines as inputs to circuit generator 11. These steering signals gate the input literals (a.sub.o - a.sub.i )along with some connective element outputs into (k + 1 ) logical connective elements (C.sub.k ) having outputs f.sub.o - f.sub.k. One set of steering signals is generated for each input cycle. This provides for the generation of a different circuit for each input cycle; this process of steering continues until all circuits have been produced.

The circuit generator 11 supplies the logic required to generate different circuit connections as a function of the x.sub.o - x.sub.j switching signals. Control 14 provides timing and logical control for the system as required. The input generator 12 must produce and continue to regenerate input cycles. One cycle can be shown as an input matrix as follows:

a.sub.o 0101 . . . 0101 a.sub.1 0011 . . . 0011 . . . . . . . . . a.sub.i (2.sup.i zeros) (2.sup.i ones)

where: rows represent designation numbers and columns represent minterms.

If designation numbers are visualized as representing literals and minterms as functions of position or time then the input matrix can be visualized as the output from a generator generating all minterms of (i + 1 ) literals as a function of time. Thus a one cycle output of the input generator is a time sequence of 2.sup.(i .sup.+ 1) ) minterms. This can be mechanized in many ways. One simple method would use (i + 1 ) bistable elements e.sub.o - e.sub.i (such as flip flops) connected as a binary counter and driven from a clock. The outputs would be a.sub.o, a.sub.1, ... a.sub.i from one side of each element (e.sub.i ) respectively, and logical complements could be provided from the remaining sides.

The circuit generator must provide a means for connecting (i + 1 ) input lines to (k + 1 ) logical connective elements for handling combinational circuits, and for handling recursive circuits must also allow outputs from each connective element to feed back as inputs to any others. Thus if there are (k + 1 ) logical connective elements (such as "NAND" gates) and (i +1) input literals there exist 2.sup.b possible circuits that can be generated.

Where: b = i.sup.2 (k + 1) + k.sup.2 (i + 1) + k (3i + 2) + 2i +1 (Equation A)

It should be noted that all of the possible circuits indicated in Equation A are not desired. This will be covered later under a discussion of constraints.

The circuit generator (without considering constraints) must be capable of generating these circuits by an orderly switching of the output lines (x.sub.o - x.sub.i ) from the switching generator. This can be accomplished by generating an x.sub.j switching matrix similar to the a.sub.i input matrix. From this concept it follows that a counting register (driven at 2.sup..sup.- (i .sup.+ 1) times the a.sub.i matrix rate) of (j + 1) bistable elements can be used where:

j i.sup.2 (k + 1) + k.sup.2 (i + 1) + k(3i + 2) + 2i (Equation B)

This will provide a switching generator output as a time sequence of 2.sup.(j .sup.+ 1) minterms. One minterm for each 2.sup.(i .sup.+ 1) input generator drive pulses. Each x.sub.j matrix minterm represents a particular logical circuit connection producing outputs f.sub.o - f.sub.k as functions of (i + 1 ) logical input literals. Thus each output (f.sub.o, f, . . . , f.sub.k ) is a time sequence of ones and zeros representing the presence or absence of the input matrix minterms according to the particular x.sub.j switching matrix state existing for any given input cycle. From this it follows that the output lines f.sub.o, f.sub.1, . . . , f.sub.k contain (as a time sequence) information defining designation numbers of f.sub.o, f.sub.1, . . . , f.sub.k in terms of a.sub.o, a.sub.1, . . . , a.sub.i. These outputs define the logical functions as designation numbers, while the state of the switching matrix defines the logical circuit producing those functions. From the designation number the function can be immediately written in logical form as a function of input literal, and from the switching matrix states the logic circuit can be immediately drawn and constructed. This readout can be manually obtained or obtained by various automatic means including automatic circuit drawing, wire table printout, and construction.

The circuit generator logic must provide a means for steering (i + 1 ) inputs to the (k + 1 ) logical connective elements under control of the x.sub.j matrix. This requires that each literal and a connective output be gated with an x.sub.j output and that they be capable of being connected to all connective element input lines. Where the logical sum of product equation form holds there will be (i + 1 ) "OR" gates required for each logical element and i.sup.2 + i (k + 2 ) + (k + 1 ) "AND" gates required for each element. If "NAND" gates are used to construct this gating each logical connective element will require a circuit as shown in FIG. 2.

In FIG. 2 there is one c.sub.k NAND gate 21 which has the outputs from (i + 1 ) NAND gates 22 applied to it. Each NAND gate 22 has the outputs from i.sup.2 + 1 (k + 2 ) + (k + 1 ) NAND gates 23 applied to it. A switching signal x.sub.p is applied to an input of each of the NAND gates 23 where p successively increases by one from m through n starting at the top and where

m = k.sup.2 (i + 1 ) + k (i + 1 ).sup.2 and

n = i.sup.2 (k + 1 ) + k.sup.2 (i + 1) + 2 (k + i ) + 3ik

The signals a.sub.o, a.sub.1, . . . a.sub.i, f.sub.o, f.sub.1, . . . f.sub.k.sub.-1 are applied to the other inputs of each group of NAND gates 23 that have their outputs applied to one of the NAND gates 22.

A circuit generator 11 contains (k + 1 ) circuits identical structurally to the one shown in FIG. 2. The only difference is the inputs applied to the NAND gates 23. For the circuit that produced f.sub.k.sub.-1 the subscript p of the switching signals x.sub.p start at 2 m - n - 1 and goes through m - 1 and for the circuit that produces f.sub.o, p starts at o and goes through m - n. The functions applied to the NAND gates 23 are f.sub.o, f.sub.1, . . . , f.sub.k with the one output function being produced by NAND gate 21 omitted. FIG. 3 shows a circuit generator 11 in block diagram form where each of the blocks contains circuitry identical to that disclosed in FIG. 2. The blocks B.sub.k, B.sub.k.sub.-1, . . . , B.sub.o produce the functions f.sub.k, f.sub.k.sub.-1, . . . , f.sub.o, respectively, and have the inputs shown applied to the different blocks.

To illustrate the operational use of a machine of this type consider the following elementary example. Let i = 1 and k = o. Then following the procedure that has been discussed the system of FIG. 4 is obtained. The input generator 12 consists of flip-flops 25 and 26. A clock 27 produces pulses which are applied to the trigger of flip-flop 25. Hence an input cycle generated by input generator 12 is:

a.sub.o 0101

a.sub.1 0011 The switching generator 13 consists of four flip-flops 28-31 connected as shown. The switching generator produces switching signals x.sub.o, x.sub.1, x.sub.2 and x.sub.3. The circuit generator 11 consists of four NAND gates 23, two NAND gates 22 and one NAND gate 21 with the a.sub.o, a.sub.1, x.sub.o, x.sub.1, x.sub.2, x.sub.3 signals applied to gates 23 as shown. The output from the switching generator 13 is the minterm sequence shown in the following Table I, one minterm for each input cycle with one designation number for f.sub.o for each input cycle. Table I also indicates the logical functions in terms of the input literals.

TABLE I

Input Switching Designation No. Cycle Minterm For f.sub.o f.sub.o (a.sub.o, a.sub.1) 1 M.sub.o 1111 I 2 M.sub.1 1111 I 3 M.sub.2 1111 I 4 M.sub.3 1111 I 5 M.sub.4 1111 I 6 M.sub.5 1010 a.sub.o 7 M.sub.6 1110 a.sub.o + a.sub.1 8 M.sub.7 1010 a.sub.o 9 M.sub.8 1111 I 10 M.sub.9 1110 a.sub.o + a.sub.1 11 M.sub.10 1110 a.sub.1 12 M.sub.11 1100 a.sub.1 13 M.sub.12 1111 I 14 M.sub.13 1010 a.sub.o 15 M.sub.14 1100 a.sub.1 16 M.sub.15 1000 a.sub.o a.sub.1

Inspection of Table I will show an f.sub.o (a.sub.o, a.sub.1) that would not be obtained in the physical case using a single "NAND" gate 21. This is the function generated from M.sub.15 . This function is generated by the x.sub.j matrix as a result of not having provided constraints in designing the switching matrix. The x.sub.j matrix has not been constrained to restrict switching only to states generating physically realizable wire connections for the particular logical connective element being used. In the case cited the x.sub.j matrix has simulated the connection of a.sub.o and a.sub.1 to a single input line of NAND gate 21 effectively creating a hard wire logical "OR" connection. In practice this is not allowed. Also, f.sub.o (a.sub.o, a.sub.1 ) resulting from M.sub.o, M.sub.1, M.sub.2, M.sub.3, M.sub.4, M.sub.8 and M.sub.12 are not useful circuits since they simulate a no-input condition for gate 21. To correct for these undesired circuit and function generations, constraints can be placed on the x.sub.j matrix. In the cases shown if x.sub.o is forced to be the logical complement of x.sub.1 and if x.sub.2 is forced to be the logical complement of x.sub.3 a proper constraint is obtained, and the results are shown in the following Table II.

TABLE

II Input Switching Designation No. Cycle Minterm for f.sub.o f.sub.o (a.sub.o, a.sub.1) 1 M.sub.5 1010 a.sub.o 2 M.sub.6 1110 a.sub.o + a.sub.1 3 M.sub.9 1110 a.sub.o + a.sub.1 4 M.sub.10 1100 a.sub.1

The switching generator for generating the functions in Table II is shown in FIG. 5.

The idea of placing constraints on x.sub.j provides a means for eliminating unnecessary circuit setups making useful function-circuit generation faster and more direct. Defining the nature of the constraint becomes a difficult task, and as i and k take on larger values the difficulty increases.

There should be a number of methods for obtaining useful constraints. One simple solution for i = 1, k = o has been shown where complement x.sub.j terms were used. A solution, useful for any i and k value, can be found by using a combination shift and count register for the generation of the x.sub.j matrix. FIG. 6 indicates one method for mechanizing this for a system with i = 2 and k = 2. This technique is not restricted by the magnitude of i and k but can be extended to include any combination of values.

As can be seen from Equation B, for i = 2 and k = 2, j = 44. Hence, the switching generator must generate 45 terms. This is accomplished in FIG. 6 by using fifteen separate circuits 35 connected in tandem as shown. Each circuit 35 consists of flip-flops 36, 37 and 38. a.sub.2 is connected to the trigger of each of these flip-flops in the first 35 circuit. An initial condition for the flip-flops in each 35 circuit (shift register) is selected such that it forces flip-flop 36 to a "logical one" initial state and all other flip-flops (37, 38) are set initially to the "logical zero" state. The switching signals x.sub.42, x.sub.43 and x.sub.44 are taken at the "1" output of the flip-flops. Each of these flip flops is the type that when triggered its `1` output follows the logic applied to its `0` input. The input generator in FIG. 6 is the circuit consisting of flip-flops 39, 30 and 41. The B.sub.o suitable for use with the input and function generators in FIG. 6 is shown in FIG. 7. The B.sub.1 and B.sub.2 required for use with FIG. 6 are identical to the circuitry in FIG. 7 except that different inputs are applied to the NAND gates 23.

It can be shown that constraints should exist such that the limits for j are as shown in Equation C.

the idea of constraints on the x.sub.j matrix has not been exhausted but briefly discussed to illustrate the nature of the technique. By using any of many known logical elements and the method discussed it has been shown that this invention provides a technique for automatically generating logical functions and their circuits.

One manner in which this invention is used can be understood by referring to FIG. 8. Suppose one wants to design a circuit that generates the function g with the least amount of hardware. Then he sets the values g in an input function register 45 and inputs this function to a comparator 46. He then starts the logic function circuit generator (11, 12, and 13). When one output function f is generated such that f.sub.o or f.sub.1 or . . . f.sub.k = g, comparator 46 generates a stop order that will stop further circuit generation. This can be done by having the stop order stop the clock. The output from the switching generator has structured and defines the connections necessary to design a circuit for generating g.

This procedure is repeated until the output of switching generator 13 generates all possible combinations of the switching signals for which circuit generator 11 generates an f that is equal to g. The designer can then select the circuit that requires the least hardware.

Another way in which this invention can be used is as a remote control device such as a control device on a spacecraft. Suppose that circuit generator 11 is on a spacecraft and suppose that it is desired that the generator produce g for controlling some function on the spacecraft. Then g is transmitted to the input register 45 on board the spacecraft. The logic function circuit generator is then started and as soon as f.sub.o or f.sub.1 or . . . f.sub.k = g comparator 46 produces a stop function g and will continue to do so until it gets further orders.

This invention has several advantages over the prior art. It provides a means for quickly and automatically designing logic and eliminates involved and time-consuming mathematical manipulations. It eliminates the need for the use of expensive and large general purpose computing facilities for logic design. It eliminates lengthy, expensive, and difficult computer programing. It provides a method for directly finding minimal circuits for "NAND" - "NOR" logic although no known direct mathematical method exists. And it provides a means for quickly mapping functions to circuits and provides a tool for use in conducting research on minimal "NAND" - "NOR" form.

Even though only "NAND" elements have been disclosed it should be understood that other logical elements such as "AND," "OR" and "NOR" elements could be used without departing from the spirit and scope of this invention as defined in the following claims.

* * * * *


uspto.report is an independent third-party trademark research tool that is not affiliated, endorsed, or sponsored by the United States Patent and Trademark Office (USPTO) or any other governmental organization. The information provided by uspto.report is based on publicly available data at the time of writing and is intended for informational purposes only.

While we strive to provide accurate and up-to-date information, we do not guarantee the accuracy, completeness, reliability, or suitability of the information displayed on this site. The use of this site is at your own risk. Any reliance you place on such information is therefore strictly at your own risk.

All official trademark data, including owner information, should be verified by visiting the official USPTO website at www.uspto.gov. This site is not intended to replace professional legal advice and should not be used as a substitute for consulting with a legal professional who is knowledgeable about trademark law.

© 2024 USPTO.report | Privacy Policy | Resources | RSS Feed of Trademarks | Trademark Filings Twitter Feed