System for solving boolean equations using optical lookup tables
ORIGIN OF THE INVENTION 
     The invention described herein was made in the performance of official duties by two employees of the Department of the Navy and may be manufactured, used, licensed by or for the Government for any governmental purpose without payment of any royalties thereon. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates generally to digital optical computers. In particular, it is a system for solving Boolean equations using bistable devices and a digital lookup table. 
     BACKGROUND OF THE INVENTION 
     Techniques for solving Boolean equations using electronic technologies have existed for many years. Early implementations used transistor-transistor logic to perform the various digital functions (AND, OR, NEGATE) required to solve Boolean equations. These implementations worked well for small, relatively simplistic equations; however, due to propagation delays within the electronic circuitry, these implementations were unable to scale for more complex equations. 
     Lookup tables were developed based on the fact that any Boolean equation can be written in the form of a truth table which has an entry for every combination of the variables. These combinations are called minterms and are given a value of `one` to define the Boolean equation as true for the corresponding state of the variables, or a value of `zero` to define the Boolean equation as false for the corresponding state of the variables. The function of the lookup table is to use the states of the variables to retrieve the value of the desired minterm in the truth table and therefore solve the Boolean equation. Electronic implementations of lookup tables have been developed and these systems are able to solve much more complex Boolean equations than previous efforts. 
     All systems for the solution of Boolean equations in the prior art have been either mechanically or electronically based. 
     SUMMARY OF THE INVENTION 
     Accordingly, it is an object of the present invention to provide an optical system for solving Boolean equations. 
     A still further object is to provide an optical system using matrix processing. 
     It is a further object of the present invention to implement a table lookup for scalability to larger, more complex equations. 
     In accordance with the present invention, a complete system for solving Boolean equations is provided. The system is a multi-stage optically parallel interconnected device using reconfigurable spatial light modulators with electrical inputs. The stages are the input table stage which loads the lookup table with the Boolean equation minterm data; the variable input stages which reset the appropriate rows or columns for each variable; and the output stage which reads the lookup table to provide a solution to the Boolean equation. This system uses a matrix of Symmetric-Self Electro-optic Effect Devices (S-SEEDs) to hold the values of the lookup table. Inputs to the equation are provided by resetting the elements of the S-SEED matrix to zero according to the values of the variables. Finally, the values of each S-SEED matrix element are read. If an element exists which is non-zero, then the solution to the Boolean equation is one; otherwise the solution to the equation is zero. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Other objects and advantages of the present invention will become more obvious hereinafter in the specification and drawings, wherein: 
     FIG. 1 is a depiction of the complete system including the input table stage, a variable input stage, and the output stage; 
     FIG. 2 is a detailed block diagram of the input table stage; 
     FIG. 3 is a detailed block diagram of the variable input stage; and 
     FIG. 4 is a detailed block diagram of the output stage. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     FIG. 1 shows the preferred embodiment of the present invention. The complete system is comprised of three major stages: an input table stage 11, a plurality of variable input stages 12 depending on the number of variables in the Boolean equation, and an output stage 13. 
     The input table stage comprising laser and spot generation optics 101 and spatial light modulator 102 generates table encoded optical data 14 which contains the information for the desired Boolean equation in matrix form. The table encoded optical data 14 is deflected by mirror 103, passes through beam splitter 109, and is imaged on lookup table 110 such that lookup table 110 is configured with the information for the desired Boolean equation in matrix form. 
     Once lookup table 110 is configured, variable input stage 12 comprising laser and spot generation optics 104, 108, and 114, preset variable input mask 105, input equals one mask 107, and variable input table 106 generates variable encoded optical data 18 which is deflected by beam splitter 109 and imaged onto lookup table 110 such that the elements of lookup table 110 are reset corresponding to the value of the input variable. Variable input stage 12 is repeated once for each variable in the Boolean equation. 
     After all variable input stages 12 have completed configuring lookup table 110, output stage 13 comprising laser and spot generation optics 115, answer mask 111, lens 112, and detector 113, reads the state of lookup table 110 and provides the solution to the Boolean equation. 
     Referring now to FIG. 2, a detailed schematic of the input table stage is shown. During this stage, the Karnaugh map of the Boolean equation is mapped onto the lookup table 110. Prior to initiation of the optical portion of this stage, the lookup table for the Boolean equation is electronically set into spatial light modulator 102. Laser 201 is fired and the generated light passes through lens system 202 to collimate the light and polarizer 203 to eliminate astigmatism. The corrected light passes through binary phase grating 204. Binary phase grating 204 produces the encoded optical data required for writing to spatial light modulator 102. The encoded optical data generated by binary phase grating 204 is either magnified or de-magnified using two achromatic lenses 05 and 207 and bi-convex lens 206. The encoded optical data then passes through polarizing beam splitter with quarter-wave plate 208, non-polarizing beam splitter 209 and infinite conjugate lens system 210. The encoded optical data is reflected off spatial light modulator 102 and passes through infinite conjugate lens system 210, non-polarizing beam splitter 209, and is turned at the polarizing beam splitter with quarter-wave plate 208. The light continues through half-wave plate 214 and reaches the polarizing beam splitter 215 where it is split with one part going to camera 218 for alignment purposes and the remainder going to mirror 216. The light is reflected off mirror 216 and goes through half-wave polarizing beam splitter 217, variable input stages 12, and output stage 13 where it images onto lookup table 110. At this point, the lookup table has been optically transferred from spatial light modulator S-SEED array 102 to lookup table 110. 
     The remainder of the components in input table stage 11 are for verifying and setting the alignment of the components within the stage and are not required for system operation. LED 213 provides the illumination power and infinite conjugate lens system 212 couples the LED light to spatial light modulator 102 allowing camera 218 to view spatial light modulator 102. 
     Referring now to FIG. 3, a detailed schematic of the input variable stage is shown. During this stage the two or more inputs are passed into the system and the rows and columns of the lookup table are reset based on the input as follows: 
     If the input variable is zero, the rows or columns which corresponding to that variable are reset to zero. 
     If the input variable is one, the rows or columns corresponding to the inverse of the variable are reset to zero. 
     In order for the variable inputs to take effect, first laser 301 is fired. The light from laser 301 is collimated by lens system 302 and astigmatism is eliminated by polarizer 303. The corrected light is passed through binary phase grating 304, two achromatic lenses 305 and 307, and bi-convex lens 306 to generate and magnify or de-magnify the encoded optical data. The encoded optical data is then passed through polarizing beam splitter with quarter-wave plate 308, non-polarizing beam splitter 309, infinite conjugate lens system 310, and reflects off preset variable input mask 105 going back through infinite conjugate lens system 310, non-polarizing beam splitter 309, and turning at polarizing beam splitter with quarter-wave plate 308. After the encoded optical data is turned at polarizing beam splitter with quarter-wave plate 308, it then goes through half-wave plate 314, polarizing beam splitter with quarter-wave plate 322, and half-wave plate 328. When the encoded optical data reaches polarizing beam splitter 329, part goes to camera 330 for alignment purposes. The remainder turns at mirror 331 and goes through half-wave plate 339, polarizing beam splitter 340, and half-wave plate 341. The encoded optical data then turns at polarizing beam splitter with quarter-wave plate 342 and goes through non-polarizing beam splitter 343, infinite conjugate lens system 344 and onto variable input table 106, setting its value to a known value from preset variable input mask 105. 
     If the input value is equal to one, then laser 315 is fired, lens system 316 collimates the light, and polarizer 317 eliminates astigmatism. The light passes through binary phase grating 318, two achromatic lenses 319 and 321, and bi-convex lens 320 to generate and magnify or de-magnify the encoded optical data. The encoded optical data then goes through polarizing beam splitter with quarter-wave plate 322, non-polarizing beam splitter 323, infinite conjugate lens system 324, and reflects off input equals one mask 107 going back through the infinite conjugate lens system 324, non-polarizing beam splitter 323, and turning at polarizing beam splitter with quarter-wave plate 322. After the encoded optical data turns at polarizing beam splitter with quarter-wave plate 322 it goes through half-wave plate 328 and enters polarizing beam splitter 329. Part of the encoded optical data is directed towards camera 330 for alignment purposes, the rest turns at mirror 331 and goes through half-wave plate 339, polarizing beam splitter 340, half-wave plate 341, and turns at polarizing beam splitter with quarter-wave plate 342. The encoded optical data then goes through non-polarizing beam splitter 343, infinite conjugate lens 344 and onto variable input table 106, and thus resets the values for the input rows or columns. 
     If the input is equal to zero instead of one, then laser 315 is not fired and variable input table 106 retains the original value copied from preset variable input mask 105. 
     Next, laser 332 is fired, lens system 333 collimates the light, and polarizer 334 eliminates astigmatism. The light passes through binary phase grating 335, two achromatic lenses 336 and 338, and bi-convex lens 337 to generate and magnify or de-magnify the encoded optical data. The encoded optical data then turns at polarizing beam splitter 340, goes through half-wave plate 341 and turns at polarizing beam splitter with quarter-wave plate 342. After the encoded optical data turns at polarizing beam splitter with quarter-wave plate 342, it goes through non-polarizing beam splitter 343 and infinite conjugate lens system 344 to reflect off variable input table 106. The reflected encoded optical data then goes back through infinite conjugate lens system 344, non-polarizing beam splitter 343, polarizing beam splitter with quarter-wave plate 342, half-wave plate 348, and splits at polarizing beam splitter 349. Part of the encoded optical data goes to camera 350 for alignment purposes; the other part of the encoded optical data goes through half-wave plate 351, all remaining variable stages 12, and output stage 13 to lookup table 110. Thus the light resets the appropriate rows or columns of lookup table 110. 
     The same procedure is followed for each input, and as a result lookup table 110 will have all its elements reset except the one minterm that corresponds to the answer. 
     The remainder of the components in variable input stage 12 are for verifying and setting the alignment of the components within the stage and are not required for system operation. LED 313 provides the illumination power and infinite conjugate lens system 312 couples the LED light to preset variable input mask 105 allowing camera 330 to view the preset variable input mask 105. LED 327 provides the illumination power and finite conjugate lens system 326 couples the LED light to input equals one mask 107 allowing camera 330 to view input equals one mask 107. LED 347 provides the illumination power and finite conjugate lens system 346 couples the LED light to variable input table 106 allowing camera 350 to view variable input table 106. 
     Referring now to FIG. 4, a detailed schematic of the output stage is shown. In this stage, in order to obtain the solution to the Boolean equation, laser 401 is fired, lens system 402 collimates the light, and polarizer 403 eliminates astigmatism. The light passes through binary phase grating 404, two achromatic lenses 405 and 407, and bi-convex lens 406 to generate and magnify or de-magnify the encoded optical data. The encoded optical data turns at polarizing beam splitter 408, goes through half-wave plate 409, turns at polarizing beam splitter with quarter-wave plate 410, goes through non-polarizing beam splitter 411, infinite conjugate lens system 412, and reflects off lookup table 100. The reflected encoded optical data goes through infinite conjugate lens system 412, non-polarizing beam splitter 411, polarizing beam splitter with quarter-wave plate 410, half-wave plate 415 and enters polarizing beam splitter 416. Part of the encoded optical data goes to camera 417 for alignment purposes and part goes through half-wave plate 418. The encoded optical data which passed through half-wave plate 418 goes through polarizing beam splitter with quarter-wave plate 419, non-polarizing beam splitter 420, infinite conjugate lens system 421, and reflects off answer mask 111 going back through the infinite conjugate lens system 421, non-polarizing beam splitter 420, and turning at polarizing beam splitter with quarter-wave plate 419. The encoded optical data continues through half-wave plate 425 and splits at polarizing beam splitter 426. Part of the light goes to camera 427 for alignment purposes; the other part of the light is focused by lens 112 into detector 113. 
     The remainder of the components in output stage 13 are for verifying and setting the alignment of the components within the stage and are not required for system operation. LED 424 provides the illumination power and finite conjugate lens system 423 couples the LED light to answer mask 111 allowing camera 427 to view answer mask 111. LED 414 provides the illumination power and infinite conjugate lens system 413 couples the LED light to lookup table 110 allowing camera 417 to view lookup table 110. 
     There are several novel features of the present invention. First the system solves complex Boolean equations by using an electro-optical table lookup. The methodologies for solving the equation allow all the corresponding minterms to be reset based on the value of the input variable in parallel. Additionally, due to the use of the electronically configurable spatial light modulator S-SEED, the system can be reprogrammed for any Boolean equation. Further, the present invention accomplishes the solution to the Boolean equation in an optical environment which can be used as part of complex optical computing systems or as a complement to electronic computing systems. However, functionally equivalent systems using flip-flops (either electro-optical, pure optical, or pure electronic) may be substituted for the S-SEEDs in the lookup table within the scope of the invention. Thus, it will be understood that many additional changes in the details, materials, steps, and arrangement of parts, which have been herein described and illustrated in order to explain the nature of the invention may be made by those skilled in the art within the principle and scope of the invention as expressed in the appended claims.