U.S. patent number 5,727,226 [Application Number 08/504,204] was granted by the patent office on 1998-03-10 for method and apparatus for modulation of multi-dimensional data in holographic storage.
This patent grant is currently assigned to International Business Machines Corporation. Invention is credited to Miguel Mario Blaum, Paul Howard Siegel, Glenn Tavernia Sincerbox, Alexander Vardy.
United States Patent |
5,727,226 |
Blaum , et al. |
March 10, 1998 |
Method and apparatus for modulation of multi-dimensional data in
holographic storage
Abstract
A modulator apparatus for modulating arrays of input data
V.sub.in to be stored in a holographic recording medium is
disclosed wherein the final output data array V.sub.out has
frequent transitions from light to dark and from dark to light in
either dimension across the data page and has the total amount of
illuminated regions throughout the entire data page held constant.
These two constraints are achieved by a first set of control arrays
obtained from two fixed sets of m.times.n binary arrays {A.sub.0,
A.sub.1, . . . , A.sub.n } and {B.sub.0, B.sub.1, . . . , B.sub.m }
which in turn are obtained from fixed sets of binary control
vectors {a.sub.0, a.sub.1, . . . , a.sub.n }, {b.sub.0, b.sub.1, .
. . , b.sub.m }, respectively. The control vectors a.sub.0,
a.sub.1, . . . , a.sub.n are any n+1 fixed elements of the inverse
mapping, .phi..sup.-1 (C.sub.1), of the (t-2) error-correcting code
C.sub.1 of length m. The control vectors b.sub.0, b.sub.1, . . . ,
b.sub.m are any m+1 fixed elements of the inverse mapping,
.phi..sup.-1 (C.sub.2), of the (t-2) error correcting code C.sub.2
of length n. The first constraint is achieved by V'.sub.in
=V.sub.in .sym.(A.sym.B). In order to balance the modulated array,
a second set of control arrays {W.sub.0, W.sub.1, W.sub.2. . . ,
W.sub.mn-1 } is obtained from the set of control vectors {w.sub.0,
w.sub.1, w.sub.2. . . , w.sub.mn-1 }. The second constraint is
achieved by complementing the bits of the input binary array
V'.sub.in in a horizontal readout order terminating after the first
i bits. The final modulated output array V.sub.out =V'.sub.in
.sym.W simultaneously satisfies both constraints.
Inventors: |
Blaum; Miguel Mario (San Jose,
CA), Siegel; Paul Howard (San Jose, CA), Sincerbox; Glenn
Tavernia (San Jose, CA), Vardy; Alexander (San Jose,
CA) |
Assignee: |
International Business Machines
Corporation (Armonk, NY)
|
Family
ID: |
22299535 |
Appl.
No.: |
08/504,204 |
Filed: |
July 18, 1995 |
Related U.S. Patent Documents
|
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
Issue Date |
|
|
104267 |
Aug 9, 1993 |
5510912 |
|
|
|
Current U.S.
Class: |
359/35;
G9B/7.027 |
Current CPC
Class: |
G06E
1/045 (20130101); G11B 7/0065 (20130101); G11C
13/042 (20130101); H03M 13/136 (20130101); H03M
13/2906 (20130101); H03M 13/31 (20130101) |
Current International
Class: |
G11C
13/04 (20060101); G11B 7/0065 (20060101); G06E
1/04 (20060101); G06E 1/00 (20060101); G11B
7/00 (20060101); G06F 015/00 () |
Field of
Search: |
;395/800
;359/21,11,1,35 |
References Cited
[Referenced By]
U.S. Patent Documents
Foreign Patent Documents
|
|
|
|
|
|
|
990556 |
|
Jun 1976 |
|
CA |
|
2355-129 |
|
May 1973 |
|
DE |
|
52-036436 |
|
Mar 1977 |
|
JP |
|
54-40651 |
|
Mar 1979 |
|
JP |
|
Other References
S A. Lis and P. D. Henshaw, Final Report, Ultra-Dense Optical Mass
Storage, Prepared for U.S. Air Force Office of Scientific Research,
pp. 12-17, Feb. 11, 1991. .
D. Psaltis, M. A. Neifeld, A. Yamamura, and S. Kobayashi, "Optical
Memory Disks in Optical Information Processing", Applied Optics,
vol. 29, No. 14, pp. 2038-2057, May 10, 1990. .
Y. Shiloach, "A Fast Equivalence-checking Algorithm for Circular
Lists", Information Processing Letters, vol. 8, No. 5, pp. 236-238,
Jun. 11, 1979. .
S. Hunter, F. Kiamilev, S. Esener, D. A. Parthenopoulos, and P. M.
Rentzepis "Potentials of Two-photon Based 3-D Optical memories for
High Performance Computing", Applied Optics, vol. 29, No. 14, pp.
2058-2066, May 10, 1990. .
D. Knuth "Efficient Balanced Codes", IEEE Transactiond on
Information Theory, vol. IT-32, No. 1, pp. 51-53, Jan. 1986. .
K. Hacking, I. Childs, "Digital Recording Using Hologram Arrays:
Laser-beam Deflection and Modulation", BBC Research Department,
Mar. 1979. .
K. A. Schouhamer Immink, "Spectral Null Codes" IEEE Transactions on
Magnetics, vol. 26, No. 2, pp. 1130-1135, Mar. 1990. .
A. X. Widmer and P. A. Franaszek, "A DC-Balanced,
Partitioned-Block, 8B/10B Transmission Code", IBM J. Res. Develop.,
vol. 27, No. 5, Sep. 1983. .
K. Hacking, I. Childs, Digital Recording Using Hologram Arrays:
Laser-Beam Deflection and Modulation, British Broadcasting Corp.
Research Dept., Report BBC RD 1979/6, pp. 1-35, Mar. 1979..
|
Primary Examiner: Harrity; John E.
Attorney, Agent or Firm: Pintner; James C.
Parent Case Text
This is a divisional of application Ser. No. 08/104,267 filed on
Aug. 9, 1993 now U.S. Pat. No. 5,510,912.
Claims
What is claimed and desired to be secured by United States Letters
Patent is:
1. A modulator apparatus for modulating a multi-dimensional input
data array to produce an output modulated data array, the apparatus
comprising:
a) array generation means for generating fixed sets of binary
arrays, each binary array comprising sets of binary control
vectors;
b) array combination means for combining said fixed sets of binary
arrays to produce a set of control arrays, said means for combining
including means for performing a bit by bit modulo two
summation;
c) array selection means for selecting at least one of the control
arrays from said set of control arrays; and
d) array application means for applying said at least one selected
control array to said input data array to produce said output
modulated data array, said array application means including means
for performing a bit by bit modulo two summation.
2. A modulator apparatus as defined in claim 1 wherein said array
generation means further comprises means for selecting at least one
control vector from a set of control vectors, wherein at least one
of the control vectors is a row control vector, and at least one of
the control vectors is a column control vector.
3. A modulator apparatus as defined in claim 2 wherein said means
for selecting control vectors further comprises means for checking
whether all the row and column vectors in the control vector sets
have at least t transitions, where t is a predetermined integer
greater than 2.
4. A modulator apparatus as defined in claim 2, wherein said array
selection means includes:
means, operable responsive to selection of a row control vector by
the means for selecting at least one control vector, for performing
vector addition of said selected row control vector to all rows of
said input data array;
means for maintaining an index i by initializing the index i to the
first control vector and incrementing the index i to successive
column vectors of the set of control vectors; and
means, operable responsive to selection of a column control vector
by the means for selecting at least one control vector, for
iteratively performing vector addition of said selected column
control vector to all columns of said input data array for each
successive value of i up to a final value of i, for which at least
t transitions are produced in each row and column of said modulated
output data array, where t is a predetermined integer greater than
2.
5. A modulator apparatus as defined in claim 4, further comprising
means, operable for each value of the index i, for complementing
the bits of the output modulated data array in a horizontal readout
order terminating after the first i bits, for the final value of i,
so as to balance the modulated array.
6. A modulator apparatus for modulating a multi-dimensional input
data array page V.sub.in to produce an output modulated array
V.sub.out, the apparatus comprising:
a) array generation means for generating at least two fixed sets of
binary arrays .quadrature..sub.A and .quadrature..sub.B ;
b) array combination means for combining said binary array sets to
produce a set of control arrays .quadrature.=.quadrature..sub.A
.sym..quadrature..sub.B, where .sym. denotes a bit by bit modulo
two summation;
c) array selection means for selecting at least one control array U
from said set of control arrays; and
d) means for applying said selected control array to said input
data array to produce the output data array V.sub.out, such that
V.sub.out =V.sub.in .sym.U, wherein .sym. denotes a bit by bit
modulo two summation.
7. A modulator apparatus as defined in claim 6, wherein said array
generation means comprises means for generating:
a set of binary column control vectors {a.sub.0,a.sub.1, . . . ,
a.sub.n }, and
a set of binary row control vectors {b.sub.0, b.sub.1, . . . ,
b.sub.m }.
8. A modulator apparatus as defined in claim 7, wherein:
the apparatus further comprises means for maintaining an index i by
initializing the index i to the first column control vector, and by
incrementing the index i to successive column control vectors of
the set of column control arrays; and
said array generation means comprises:
said means for selecting a column control vector a.sub.i from the
set of binary column control vectors; and
means for selecting a row control vector b.sub.j from the set of
binary row control vectors.
9. A modulator apparatus as defined in claim 8, wherein:
said means for selecting a column control vector a.sub.i comprises
means for checking whether all the column vectors in the set have
at least t transitions, where t is a predetermined integer greater
than 2; and
said means for selecting a row control vector b.sub.j comprises
means for checking whether all the row vectors in the set have at
least t transitions.
10. A modulator apparatus as defined in claim 8, wherein said array
combination means further comprises:
means for performing vector addition of said selected control
vector a.sub.i to all columns of V.sub.in so as to produce at least
t transitions in each column therein, where t is a predetermined
integer greater than 2; and
means for performing vector addition of said selected control
vector b.sub.j to all rows of V.sub.in so as to produce at least t
transitions in each row therein.
11. A modulator apparatus as defined in claim 8, further
comprising:
means for complementing the bits of the modulated array in a
horizontal readout order terminating after the first i bits, for
the final value of i, so as to balance the modulated array.
12. A modulator apparatus for modulating a multi-dimensional input
data array page V.sub.in to produce a balanced output modulated
data array page V.sub.out such that the number of 1's and 0's in
V.sub.out are equal, the apparatus comprising:
a) first array generation means for generating two fixed sets of
binary arrays .quadrature..sub.A ={A.sub.0, A.sub.1, . . . ,
A.sub.n } and .quadrature..sub.B ={B.sub.0, B.sub.1, . . . ,
B.sub.m }, each array comprising fixed sets of binary control
vectors {a.sub.0,a.sub.1, . . . , a.sub.n }, {b.sub.0, b.sub.1, . .
. , b.sub.m }, respectively,
b) first array combination means for combining binary array sets
.quadrature..sub.A and .quadrature..sub.B so as to produce a full
set of control arrays .quadrature.=.quadrature..sub.A
.sym..quadrature..sub.B, where .sym. denotes a bit by bit modulo
two summation;
c) first array selection means for selecting a control array U from
said full set of control arrays;
d) means for applying said selected control array U to said input
data array V.sub.in to produce a first output data array V'.sub.in
such that V'.sub.in =V.sub.in .sym.U;
e) second array generation means for generating a second set of
binary control arrays {W.sub.0,W.sub.1, . . . , W.sub.mn-1 }
comprising a fixed set of control vectors {w.sub.0, w.sub.1,
w.sub.2, . . . , w.sub.mn-1 };
f) means for maintaining an index i by initializing the index to
the first binary array W.sub.o of the second set of binary arrays,
and by incrementing the index i to successive binary arrays W.sub.i
of the second set of binary arrays;
g) second array selection means, operative iteratively for each
value of the index i, for selecting the binary control array
W.sub.i from said second set of binary arrays;
h) means for iteratively applying each said selected binary control
array W.sub.i to said input data array V.sub.in to produce a
resultant array, until a final value of i is reached, for which at
least t transitions are produced in each row and column of the
resultant array, where t is a predetermined integer greater than 2;
and
i) means, operable when the final value of i is reached, for
complementing the bits of V.sub.in in a horizontal readout order,
terminating after the first i bits, such that V.sub.out =V'.sub.in
.sym.W.sub.i.
13. A modulator apparatus as defined in claim 12 wherein said first
array generation means further comprises means for selecting:
a control vector a.sub.i from the set {a.sub.0, a.sub.1, . . . ,
a.sub.n }, whose image under a mapping .phi. is not equal to one of
the codewords of a first error-correcting code C.sub.1 that are the
closest to one of the vectors x.sub.1, x.sub.2, . . . , x.sub.n,
and
a control vector b.sub.j from the set {b.sub.0, b.sub.1, . . . ,
b.sub.m }, whose image under a mapping .phi. is not equal to one of
the codewords of a second error-correcting code C.sub.2 that are
the closest to one of the vectors x.sub.1, x.sub.2, . . . ,
x.sub.n.
14. A modulator apparatus as defined in claim 12, wherein said
first array combination means further comprises:
means for performing vector addition of a.sub.i to all columns of
V.sub.in so as to produce at least t transitions in each column of
V.sub.in, where t is a predetermined integer greater than 2;
and
means for performing vector addition of b.sub.j to all rows of
V.sub.in so as to produce at least t transitions in each row of
V.sub.in.
15. A modulator apparatus as defined in claim 12, wherein said
first array selection means further comprises:
means for selecting control vector a.sub.i by checking, for each
value of i, whether all the vectors in the set a.sub.i +v.sub.1,
a.sub.i +v.sub.2, . . . , a.sub.i +v.sub.n have at least t
transitions terminating at the first index i, where t is a
predetermined integer greater than 2;
means for maintaining an index j by initializing the index to the
first binary array W.sub.o of the second set of binary arrays, and
by incrementing the index j to successive binary arrays W.sub.j of
the second set of binary arrays; and
means for selecting control vector b.sub.j by checking, for each
value of j, whether all the vectors in the set b.sub.i +v.sub.1,
b.sub.j +v.sub.2, . . . , b.sub.j +v.sub.m have at least t
transitions terminating at the first index j.
16. A modulator apparatus as defined in claim 12, further
comprising:
means for determining if said output array V.sub.out contains
exactly ##EQU8## zeros, where m is the number of binary arrays in
the set .quadrature..sub.A and n is the number of binary arrays in
the set .quadrature..sub.B, and
means, operative if not, for generating a signal that errors have
occurred in the modulated data array V.sub.out and for passing said
error signal to an error-correction apparatus.
17. A method for modulating a multi-dimensional input data array to
produce an output modulated data array, the method comprising the
steps of:
a) generating fixed sets of binary arrays, each binary array
comprising sets of binary control vectors;
b) combining said fixed sets of binary arrays to produce a set of
control arrays, said step of combining including the step of
performing a bit by bit modulo two summation;
c) selecting at least one of the control arrays from said set of
control arrays; and
d) performing a bit by bit modulo two summation of at least one
selected control array to said input data array to produce said
output modulated data array.
18. A method of modulation as defined in claim 17 further
comprising the step of selecting at least one control vector from a
set of control vectors wherein at least one of the control vectors
is a row control vector and at least one of the control vectors is
a column control vector.
19. A method of modulation as defined in claim 17 further
comprising the step of checking whether all the row and column
vectors in the control vector sets have at least t transitions,
where t is a predetermined integer greater than 2.
20. A method of modulation as defined in claim 17, further
comprising the steps of:
responsive to selection of a row control vector by the step of
selecting at least one control vector, performing vector addition
of said selected row control vector to all rows of said input data
array;
maintaining an index i by initializing the index i to the first
control vector and incrementing the index i to successive control
vectors of the set of control vectors; and
responsive to selection of a column control vector by the step of
selecting at least one control vector, iteratively performing
vector addition of said selected column control vector to all
columns of said input data array for each successive value of i up
to a final value of i, for which at least t transitions in each row
and column of said modulated output data array are produced, where
t is a predetermined integer greater than 2.
21. A method for modulation as defined in claim 20, further
comprising the step, executed for each value of i, of complementing
the bits of the modulated output data array in a horizontal readout
order terminating after the first i bits for the final value of i,
so as to balance the modulated array.
22. A method for modulating a multi-dimensional input data array
V.sub.in, to produce an output modulated data array page V.sub.out
such that, in each row and column of the output modulated data
array V.sub.out, there are at least t transitions, where t is a
predetermined integer greater than 2, the method comprising the
steps of:
a) generating fixed sets of binary arrays each comprising fixed
sets of binary control vectors;
b) combining said binary array sets so as to produce one full set
of control arrays, said step of combining comprising a bit by bit
modulo two summation operation;
c) selecting one control array from said full set of control
arrays; and
d) combining said selected control array to said input data array
V.sub.in to produce said output array V.sub.out, said step of
combining comprising a bit by bit modulo two summation
operation.
23. A method as defined in claim 22 further comprising the steps
of:
performing vector addition of the control array selected by the
step of selecting, to all rows and columns of said input data
array;
to produce at least t transitions in each row and column of said
output modulated data array V.sub.out.
24. A method as defined in claim 22 further comprising the steps
of:
arranging said full set of control arrays in a predefined indexed
order such that said selected control array is readily identifiable
by said indexed order;
maintaining an index i which has one of a set of values, the values
corresponding with respective control arrays of the full set of
control arrays;
encoding said predefined indexed order to said selected control
array in a binary format; and
appending said order to said output modulated data array
V.sub.out.
25. A method for modulation as defined in claim 24, further
comprising the steps of:
identifying a final value of the index i such that the respective
control array thereof produces at least t transitions in each row
and column of said output modulated data array V.sub.out ; and
complementing the bits of the modulated array in a horizontal
readout order terminating after the first i bits for the final
value of i, so as to balance the output modulated data array
V.sub.out.
26. A method for modulating a multi-dimensional input data array
page V.sub.in such that, in each row and column of an output
modulated data array page V.sub.out, there are at least t
transitions, where t is a predetermined integer greater than 2, the
method comprising the steps of:
a) generating at least two fixed sets of binary arrays
.quadrature..sub.A ={A.sub.0, A.sub.1, . . . , A.sub.n } and
.quadrature..sub.B ={B.sub.0, B.sub.1, . . . , B.sub.m }, each
array of each of the sets comprising fixed sets of binary control
vectors {a.sub.0,a.sub.1, . . . ,a.sub.n }, {b.sub.0,b.sub.1, . . .
,b.sub.m }, respectively;
b) combining the binary array sets .quadrature..sub.A and
.quadrature..sub.B so as to produce one full set of control arrays
.quadrature.=.quadrature..sub.A .sym..quadrature..sub.B, where
.sym. denotes a bit by bit modulo two summation;
c) selecting a control array U from said full set of control
arrays; and
d) applying said selected control array U to said input data array
V.sub.in, to produce an output data array V.sub.out such that
V.sub.out =V.sub.in .sym.U.
27. A method as defined in claim 26, further comprising the steps
of:
performing vector addition of a.sub.i to all columns of V.sub.in so
as to produce at least t transitions in each column of V.sub.in ;
and
performing vector addition of b.sub.j to all rows of V.sub.in so as
to produce at least t transitions in each row of V.sub.in.
28. A method as defined in claim 26, further comprising the steps
of:
selecting a control vector a.sub.i from the set {a.sub.0,a.sub.1, .
. . ,a.sub.n }, whose image under a mapping .phi. is not equal to
one of the codewords of a first error-correcting code C.sub.l that
is the closest to one of the vectors x.sub.1, x.sub.2, . . . ,
x.sub.n ; and
selecting a control vector b.sub.j from the set {b.sub.0,b.sub.1, .
. . ,b.sub.m }, whose image under a mapping .phi. is not equal to
one of the codewords of a second error-correcting code C.sub.2 that
is the closest to one of the vectors x.sub.1, x.sub.2, . . . ,
x.sub.n.
29. A method as defined in claim 26 further comprising the steps
of:
maintaining an index i and an index j for the full set of control
arrays, the indices i and j each having a set of possible values,
the possible values corresponding with respective ones of the
control arrays of the set of control arrays;
selecting control vector a.sub.i by checking, for each value of i,
whether all the vectors in the set a.sub.i +v.sub.1, a.sub.i
+v.sub.2, . . . , a.sub.i +v.sub.n have at least t transitions
terminating at the first index i; and
selecting control vector b.sub.j by checking, for each value of j,
whether all the vectors in the set b.sub.i +v.sub.1, b.sub.j
+v.sub.2, . . . , b.sub.j +v.sub.m have at least t transitions
terminating at the first index j.
30. A method as defined in claim 26, further comprising the step of
computing the images of the columns and rows of the input array
V.sub.in under a mapping .phi..
31. A method as defined in claim 26, further comprising the step of
arranging said fixed sets of control arrays in a predefined order,
indexed such that said selected control array U is readily
identifiable by an integer index value.
32. A method as defined in claim 26, further comprising the steps
of:
encoding an index corresponding to said selected control array U in
a binary format; and
appending said index to the output modulated array V'.sub.out.
33. A computer program product, for use in a holographic storage
and retrieval computer system, for producing an output modulated
data array from an input data array, the computer program product
comprising:
a recording medium; and
means, recorded on said medium, for instructing said computer
system to perform the instruction steps of:
a) generating fixed sets of binary arrays, each binary array
comprising sets of binary control vectors;
b) combining said fixed sets of binary arrays to produce a set of
control arrays, said step of combining including the step of
performing a bit by bit modulo two summation;
c) selecting at least one control array from said set of control
arrays; and
d) performing a bit by bit modulo two summation of the at least one
selected control array to said input data array to produce said
output modulated data array.
34. A computer program product as defined in claim 33 wherein said
means for instructing said computer system further comprises means
for instructing said computer system to perform the step of
selecting at least one control vector from a set of control
vectors, wherein at least one control vector is a row control
vector and at least one control vector is a column control
vector.
35. A computer program product as defined in claim 33 wherein said
means for instructing said computer system further comprises means
for instructing said computer system to perform the step of
checking whether all the row and column vectors in the control
vector sets have at least t transitions, where t is a predetermined
integer greater than 2.
36. A computer program product as defined in claim 35, wherein said
means for instructing said computer system further comprises means
for instructing said computer system to perform the steps of:
responsive to selection of a row control vector by the step of
selecting at least one control vector, performing vector addition
of said selected row control vector to all rows of said input data
array; and
responsive to selection of a column control vector by the step of
selecting at least one control vector, iteratively performing
vector addition of said selected column control vector to all
columns of said input data array;
so as to produce at least t transitions in each row and column of
said modulated output data array, where t is a predetermined
integer greater than 2.
37. A computer program product as defined in claim 36, wherein said
means for instructing said computer system further comprises means
for instructing said computer system to perform the steps of:
maintaining an index i for the set of control arrays, the index i
having a set of possible values, the possible values corresponding
with respective control arrays of the set of control arrays;
identifying a final value of the index i such that the respective
control array thereof produces at least t transitions in each row
and column of the output modulated data array; and
complementing the bits of the output modulated data array in a
horizontal readout order terminating after the first i bits for the
final value of i, so as to balance the output modulated data array.
Description
FIELD OF THE INVENTION
Broadly conceived, the present invention relates to storage and
retrieval of arrays of data stored in a holographic storage system,
and in particular, to modulation/demodulation of such arrays.
BACKGROUND HISTORY
Information storage devices are approaching their physical
capacities to store information serially, i.e., as a long
continuous stream of 1's and 0's. In order for storage devices to
increase the amount of stored information which can be readily
accessible, present technologies are beginning to shift away from
semiconductor memories, magnetic recording media, and tape storage
devices due to inherent limitations such as slow access times and
limited capacities and into multi-dimensional storage media which
enable very high capacities with fast parallel access.
One such multi-dimensional device is the holographic storage medium
wherein entire pages of data are intermingled with each other such
that numerous pages of data are recorded in a common volume of the
storage media. Such volumetric storage can vastly increase the
amounts and kinds of information which can be stored. These systems
have the primary advantage of retrieving a page of data in a single
read and storing an entire page in a single write operation thus
increasing data access speeds.
In holographic storage, in general, two-dimensional data pages are
optically recorded via a complex interference process wherein the
data pages are initially stored in digital form on a page composer
or spatial light modulator. The presence or absence of light at a
given bit location represents either a 1 or 0 respectively. The
data pages are subsequently retrieved by illumination of the
hologram by a matched two-dimensional array of photo-detectors.
More specifically, holography is a form of 3-dimensional recording
utilizing coherent light with photo-sensitive media to record and
reproduce the amplitude and phase of an optical wavefront. In part,
preparation of the hologram involves the channeling of a highly
coherent light source, such as a laser, to illuminate both a
subject and a photo-sensitive medium wherein an interference
pattern is generated between the beams of light scattered from the
subject (referred to as the object wavefront) and the light
impinging directly on the medium (referred to as the reference
wavefront). A lens is interposed between the input data field and
the recording medium such that a Fourier transform of the input
data is formed on the recording medium. This Fourier transform
represents the spatial frequency content of the input data. It is
this light distribution that interferes with the reference beam to
form the hologram. A recording medium having sufficient resolution
and dimension is positioned in the region of overlap to record a
sample of the interference pattern. The interference pattern, which
occurs in the region of overlap of the two wavefronts, typically
consists of a plurality of bright regions wherein the object and
reference wavefronts constructively interfere with one another and
thus enhance one another, and a plurality of dark regions wherein
the wavefronts destructively interfere and thus cancel each other
out. In addition to recording the interference between the object
and reference wavefronts, the hologram also records the
interference between the many wavefronts coming from the object
(data patterns) by itself, i.e., each 1 in the data field generates
a wavefront that interferes with the wavefronts from the other 1's
in addition to interfering with the reference wavefront. The object
wavefront can be reconstructed via diffraction from the recording,
now a hologram, by illumination with a replica of the original
reference wavefront at the same angle of incidence and wavelength
as was used during the recording process. The reconstructed object
wavefront contains all the amplitude and phase information of the
original object wavefront and can be processed as if the original
information was still in place.
Because the hologram may have a relatively large thickness of up to
several millimeters, each of these individual wavefronts interact
with the many secondary holograms to also diffract light into the
image. Although the diffraction process from secondary holograms is
much weaker than diffraction from the primary
reference-beam/object-beam hologram, (because the beam intensities
forming the secondary holograms are much weaker and the beams
illuminating these holograms are also weaker), broad areas of 1's
in the data field should be avoided because these beams of
diffracted light will appear to the sides of the desired beam and
may cause light to fall on a dark region (or 0) thereby changing
that data bit. The concentration of light into localized regions
would cause a situation similar to over-exposure in photography,
(i.e., the dynamic range of the recording medium may be exceeded)
and the recording and reconstruction would not be a true
reproduction of the original data.
An example of such a detrimental code pattern is illustrated in
FIG. 1A wherein a large block of light (1's) is recorded adjacent
to a similarly large block of dark (0's). Although this pattern
consists of 50% 1's and 50% 0's, relatively large regions of 1's
may expose adjacent regions of 0's. In order to prevent the
concentration of light into localized regions, it is important that
the recorded information be spread evenly over the available
spatial range.
Even distribution of the bits of 1's and 0's across the data page
requires more consideration than merely the avoidance of light
regions juxtaposed to dark regions. The property of periodicity
affects the Fourier transform of the input data that is formed on
the recording medium. This Fourier transform represents the spatial
frequency content of the input data and it is this light
distribution that interferes with the reference beam to form the
hologram. For instance, FIG. 1B represents another detrimental data
pattern even though that data page also has 50% 1's and 50% 0's.
This highly periodic pattern has distinct peaks of intensity in the
Fourier transform plane due to the periodicity of the data
patterns. Therefore, in order not to permit variations in the
intensity of the reconstructed image and so as not to permit wide
variations in the ratio between the signal beam and the reference
beam during recording, the 1's and 0's in any region of the data
page should be balanced and evenly distributed at the same
time.
SUMMARY AND OBJECTS OF THE INVENTION
The present invention relates to modulation of arrays of data
stored in a holographic recording medium.
It is a primary object of the present invention to provide a
modulator for modulating data pages stored in a holographic
recording medium which eliminates long periodic stretches of
contiguous light or dark regions in any of the dimensions of the
holographic medium such that interference between adjacent images
recorded in the same volume is efficiently minimized.
It is another primary object of the present invention to provide a
modulator for modulating data pages stored in a holographic
recording medium which divides the light and dark regions stored in
the holographic medium into the same number of 1's and 0's
independent of data content so as to increase the reliability
characteristics of the data by reducing the noise encountered while
differentiating between the light and dark states.
It is yet another object of the present invention to simultaneously
achieve the modulation constraints which follow from the above
primary objectives with minimum overhead.
Briefly and to achieve the objects of the present invention, a
modulator for modulating arrays of data stored in a holographic
recording medium is disclosed. Two constraints are imposed on the
data modulated by the modulator of the present invention. First, in
order to avoid long periodic stretches of contiguous light or dark
regions within the stored data page, it is preferable to have
frequent transitions from light to dark and from dark to light in
either dimension across the data page. Second, it is preferable to
have the total amount of illuminated regions throughout the entire
data page held constant within any sufficiently large rectangular
area of that page. The modulator of the present invention achieves
the satisfaction of these two constraints by the application of a
first set of control arrays .quadrature..sub.1 to achieve the first
constraint and a second set of control arrays .quadrature..sub.2 to
achieve the second constraint.
The first set of control arrays .quadrature..sub.1 is obtained from
two fixed sets of m.times.n binary arrays .quadrature..sub.A
={A.sub.0, A.sub.1, . . . , A.sub.n } and .quadrature..sub.B
={B.sub.0, B.sub.1, . . . , B.sub.m }. The fixed sets of binary
arrays .quadrature..sub.A and .quadrature..sub.B are obtained from
the fixed sets of binary control vectors {a.sub.0, a.sub.1, . . . ,
a.sub.n }, {b.sub.0, b.sub.1, . . . , b.sub.m }, respectively,
wherein the sets of control vectors are defined as:
The individual control vectors a.sub.0, a.sub.1, . . . , a.sub.n
are any n-1 fixed elements of the inverse mapping, .phi..sup.-1
(C.sub.1), of the (t-2) error-correcting code C.sub.1 of length m.
The control vectors b.sub.0, b.sub.1, . . . , b.sub.m are any m-1
fixed elements of the inverse mapping, .phi..sup.-1 (C.sub.2), of
the (t-2) error-correcting code C.sub.2 of length n. In other
words, the control vectors a.sub.i and b.sub.j must be found such
that adding vector a.sub.i to all the columns of the array V.sub.in
produces at least t transitions in each column and adding b.sub.j
to all the rows of V.sub.in produces at least t transitions in each
row. If {v.sub.1, v.sub.2, . . . , v.sub.n } is the set of columns
of the array V.sub.in then the control vector a.sub.i is determined
by checking for each i=0, 1, 2, . . . , whether all the vectors in
the set a.sub.i +v.sub.1, a.sub.i +v.sub.2, . . . , a.sub.i
+v.sub.n have at least t transitions and terminating at the first
index i for which the above condition holds. The control vector
b.sub.i is determined in a similar manner by operating on the rows
of the input array V.sub.in rather than on its columns. Further, a
mapping .phi.:F.sub.n .fwdarw.E.sub.n exists such that the set of
all binary n-tuples F.sub.n is mapped onto the set of all n-tuples
of even weight E.sub.n and is defined as: .phi.(x)=x.sym..sigma.
(x), where .sigma. is either .sigma..sub.L or .sigma..sub.R. The
inversely mapped vector .phi..sup.-1 (y) is equal to x if and only
if the mapped vector .phi.(x) is equal to y and x.sub.1 =0. In such
a manner, .quadrature..sub.1
={A.sym.B:A.epsilon..sym..quadrature..sub.A
B.epsilon..sym..quadrature..sub.B }.
In order to balance the modulated array, a second set of control
arrays .quadrature..sub.2 ={W.sub.0, W.sub.1, W.sub.2, . . . ,
W.sub.mn-1 } is obtained from the set of control vectors {w.sub.0,
w.sub.1, w.sub.2, . . . , w.sub.mn-1 }. The second constraint is
achieved by complementing the bits of the input binary array in a
horizontal readout order terminating after the first i bits. As
such, the final modulated output array, given by V.sub.out
=(V.sub.in .sym.U).sym.W, wherein the selected control array
U.epsilon..quadrature..sub.1 and wherein the selected control array
W.epsilon..quadrature..sub.2, simultaneously satisfies both
constraints.
It is an advantage of the present invention to have a modulator
which minimizes errors and increases the accuracy of the data pages
read by the array of photo-detecting elements thereby reducing
re-read operations and increasing data access speeds.
It is another advantage of the present invention to have a
modulator which eases the design parameters required to ensure the
accuracy of the data stored/retrieved from the holographic
medium.
Additional objects and advantages of the present invention will be
set forth in the description which follows, and in part will be
obvious from the description or may be learned by the practice of
this invention. The objects and advantages of this invention as
described herein may be realized and obtained by means particularly
pointed out and distinctly claimed in the appended claims taken in
conjunction with the drawings and detailed specification.
BRIEF DESCRIPTION OF THE DRAWINGS
In order to elucidate the manner in which the above-recited and
other advantages and objects of the present invention are obtained,
a more particular description of this invention, briefly described
above, will be rendered by reference to a specific embodiment
thereof which is illustrated in the appended drawings.
Understanding that these drawings depict only a typical embodiment
of the present invention and are not therefore to be considered in
any way limiting of its scope, this invention will be described and
explained with additional specificity and detail through the use of
the accompanying drawings, in which:
FIGS. 1A and 1B are illustrations of undesirable patterns of 1's
and 0's in the prior art which make reconstruction of the stored
data image less reliable;
FIG. 2 is a schematic block diagram illustrating the major
components of a volume holographic storage system;
FIG. 3 is a diagram illustrating the modulation of an input data
page to produce an output data page;
FIG. 4 is a diagram of a first modulator wherein an input array is
modulated with a single array taken from a set of control arrays
.quadrature..sub.1 such that in each row and column of the output
array there are at least t transitions;
FIG. 5 is a diagram of a second modulator wherein an input array is
modulated with a single array taken from a set of control arrays
.quadrature..sub.2 such that the number of 1's in the output array
is equal to the number of 0's in the array;
FIG. 6 is a diagram of a modulator encompassing both the first and
second modulators of FIGS. 3 and 4, such that the combination of
first and second constraints is satisfied;
FIG. 7 is a set of 17 control vectors obtained by applying the
inverse mapping .phi..sup.-1 to some of the 32 even-weight
codewords of, for example, the first-order Reed-Muller code of
length 16;
FIG. 8 illustrates an input 16.times.16 binary array V.sub.in to be
modulated by the modulator of the present invention;
FIG. 9 illustrates array V'.sub.in at the output of the first
modulator;
FIG. 10 illustrates array W which balances the array V'.sub.in
;
FIG. 11 illustrates the result of the addition of array W to array
V'.sub.in ;
FIG. 12 illustrates the final modulated array; and
FIG. 13 is a schematic block diagram illustrating one embodiment of
the implementation of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
The present invention is directed to modulators which modulate data
pages in a multi-dimensional context to ensure optimum operation of
a holographic data storage and retrieval system.
Prior to the discussion of the modulation method and apparatus of
the present invention an overview of a hologram storage system
wherein the present invention finds its uses should initially be
introduced. A general schematic of a volume hologram system is
illustrated in FIG. 2 which is a diagram of a holograph storage
system having a multiplexer 40. The holographic recording medium 10
is a thick film recording material which is movable along an axis
in the directions shown by the arrows 12 so that individual
discrete sections of the medium 10, such as section 14, may be
located in front of a fixed mask 16 through which the light may
enter. The data to be stored enters the modulation unit 21 of the
present invention from a data source 15 over line 17. The data
source being any data generation or transmission device the data
from which is to be stored on the holographic medium 10. The
modulation unit 21 modulates the data in accordance with the
techniques of the present invention and transmits the modulated
data arrays over bus 19a to affect the light source 20 and over bus
19b to affect the beam-forming optics 22. It should be understood
that a specific implementation may vary wherein the modulator of
the present invention is connected/interfaced with a holographic
system in other manners so long as the data to be stored on the
holographic medium is modulated by the techniques disclosed
herein.
A light source 20 generates a single monochromatic, coherent light
beam that is directed through a set of beam-forming optics 22 which
expand and collimate the output from the light source. The
single-beam output from the beam-forming optics is then split by a
conventional beam splitter 24 into a reference beam 26 and an
object or signal beam 28.
A page composer or spatial light modulator 30 and a Fourier
transform lens 32 are located in the signal beam between the light
source and the medium. The spatial light modulator 30 a
two-dimensional array of shutters which either permit or block part
of the signal beam. The lens 32 is located a focal distance from
both the spatial light modulator 30 and the holographic medium 10
to form the Fourier transform of the light distribution impressed
by spatial light modulator 30 in the signal beam onto designated
recording section 14 of the recording medium 10. The lens 32 thus
takes the point sources of light which come from spatial light
modulator 30 diverging beams of light and directs them to the
medium 10 as parallel beams. Each parallel beam corresponds to
light transmitted through one of the cells of the two-dimensional
array of the spatial light modulator 30. These individual beams
become signal beam 29 and arrive at different angles at the medium
10 from lens 32 to overlap at the recording section 14 the medium
10.
The reference beam 26, which is split by the beam splitter 24, is
directed by a mirror 27 through the multiplexer 40 and onto the
recording section 14 of the medium 10. Both the output reference
beam 42 from the multiplexer 40 and the individual beams 29 from
the Fourier lens arrive simultaneously and interfere with one
another in the medium. A shutter 31 is located in the path of the
signal beam 28 between the beam splitter 24 and the spatial light
modulator 30 for the blocking of the signal beam 38 during
reconstruction of the recorded hologram. An inverse Fourier
transform lens 33 is located on the side opposite the recording
medium from the lens and is spaced a focal distance from the medium
10 and from a data detector array 35. The data retrieved from the
medium 10 is reconstructed by the movement of the shutter 31 into
the signal beam 28 so that only the reference beam is directed to
the recording section 14 the medium 10 as to generate the transform
image of the recorded hologram that is directed to the detector
array 35. The detector array 35 has the same two-dimensional array
pattern as the spatial light modulator 30 so that its output
corresponds to the data output of the spatial light modulator
30.
A controller 50 receives data from a data bus 51 connected to the
host central processing unit 52 (CPU) and transmits that data as a
page of digital data to the spatial light modulator 30 via bus 49.
The controller 50 also receives data output from the data detector
array 35 via data bus 36 and directs it back to the CPU via a bus
51. The data controller 50 is also electrically connected to the
shutter 31, multiplexer 40 and the movable recording medium 10.
To record a first page of data into the recording section 14, of
the medium 10, the data controller 50 moves the shutter 31 out of
the path of the signal beam 28, translates the storage medium 10 so
that the designated recording section 10 is in alignment with the
opening of mask 16, and signals the multiplexer. If the multiplexer
40 is an angular multiplexing device, it is moved to its first
angular position. The data making up the first page is then
recorded in the recording section 14 of the medium 10 by the
interference of the reference beam with the signal beam that has
passed through the spatial light modulator 30 whose array has
received the page of data from the controller 50. To record the
next page in the same section 14 of the recording medium 10, the
controller 50 signals the multiplexer to move its next angular
position and the second page is recorded in the same fashion.
Depending upon the number of angular positions obtainable by the
multiplexer, a plurality of pages are thus recorded in the medium
10. When the maximum a number of pages is recorded, the controller
50 then moves the medium 10 until the next adjacent section, or any
next section of the medium 10 is aligned with the opening in mask
16. In this manner, multiple pages can be multiplexed onto
individual sections of the medium 10 and multiple sections can be
addressed by the controller 50.
When it is desired to read out data recorded in the medium 10, the
controller 50 moves the shutter 31 into the signal beam 28 to block
the signal beam 28 so that only the reference beam is on, and its
signals the multiplexer 40 to the correct angular position. This
reference beam then becomes a reconstructing beam with the same
wavelength and angle as the reference beam which is directed to the
appropriate section of the recording medium and reconstructs the
recorded image through inverse transform lens 33 onto the detector
array 35.
It should be understood that the holographic storage system of FIG.
2 is typical of one such holographic system wherein the present
invention finds its intended uses. Therefore, the present invention
is not to be considered as being applicable or limited only to the
holographic storage system described above but to any holographic
system wherein the previously discussed problems to which the
present invention is directed are inherent therein.
In order to discuss the particulars of the data modulator of the
present invention for use in a holographic storage system as
described and to overcome the problems in the prior art which are
illustrated by FIGS. 1A and 1B, the basic concept of data
modulation should be initially discussed. Reference is now being
made to FIG. 3 which is an illustration of a modulator. The data
modulator 54 is either a hardware or software construct into which
an input data page 60 consisting of one or more arrays of data is
directed wherein the data bits on the input data page are
manipulated (modulated) to produce the output data page 64. The
bits of the output data page are arranged so as to meet the
specific modulation constraints to be achieved by the
modulator.
A data page to be stored in the holographic medium is considered
for the discussion herein to be composed of one or more
two-dimensional arrays of binary coded data (bits of 1's and 0's)
which represent the illuminated and dark regions respectively of
the data page. These binary arrays are of size m.times.n, where m
and n are integers. For the present invention and to solve the
above-recited heretofore unsolved problems in this art, the
patterns of illuminated regions (1's) and the dark regions (0's) of
the data page to be stored on the holographic medium have to
satisfy certain predefined constraints. These modulation
constraints are stated herein in terms of the properties that each
of the binary output arrays eventually satisfies upon completion of
the modulation thereof.
First, in order to avoid long periodic stretches of contiguous
light or dark regions within the stored data page, it is preferable
to have frequent transitions from light to dark, herein denoted as
(00), and from dark to light, denoted (01), in either dimension
across the data page. Thus, the first constraint is with the number
of transitions thereby identifying property P.sub.1 (t) that the
first modulator of FIG. 4 must achieve. Specifically, that
modulator must achieve the constraint that in each row and column
of the modulated data array there are at least t transitions of the
type (10) or (01), where t is a predetermined integer greater than
2. Second, it is also preferable to have the total amount of
illuminated bits throughout the entire data page held constant
within any sufficiently large rectangular area of that page. Thus,
a second constraint is achieved by the second modulator of FIG. 5
to ensure distributed constant illumination. Specifically, that
modulator must achieve the property P.sub.2 which is the constraint
that the number of 1's in each modulated data array is equal to the
number of 0's in that array.
Reference is now made to FIGS. 3 and 4. Each modulator has an
m.times.n binary array as input. The input array 66 is modulated by
the first modulator 68 to produce output array 70 such that
property P.sub.1 (t) (i.e., in each row and column of the array
there are at least t (transitions) is satisfied. The second
modulator 74 of FIG. 5 receives the output array 70 of the first
modulator 68 of FIG. 4 as its m.times.n input data array 72. The
second modulator further constrains its input array 72 to produce
output array 76 such that property P.sub.2 (i.e., the number of 1's
in the array is equal to the number of 0's in the array) is
satisfied.
The modulator envisioned herein to achieve the two constraints
imposed to overcome the problem in the art is shown in FIG. 6 which
is an illustration of a modulator encompassing both the first and
second modulators of FIGS. 4 and 5. The combined modulator 80
modulates input data array 78 to produce output data array 82.
The combined modulator of the present invention achieves the
satisfaction of the two properties previously discussed by the
application of a first set of control arrays, denoted
.quadrature..sub.1, to achieve P.sub.1 (t) and .quadrature..sub.2
for the second set of control arrays to achieve P.sub.2. In other
words, the sets of control arrays for both the first and second
modulators are specifically constructed such that for any m.times.n
input data array V.sub.in, wherein the selected control array
U.epsilon..quadrature..sub.1 and the selected control array
W.epsilon..quadrature..sub.2, the output data array V.sub.out
=(V.sub.in .sym.U).sym.W simultaneously satisfies P.sub.1 (t) and
P.sub.2.
However, prior to constructing the sets of control arrays to
achieve the objectives of the present invention, some notation must
be introduced and understood. It is important because the
underlying principles are important to an understanding as to why
the modulation properties put forth above are achieved.
Let F.sub.n denote the set of all binary n-tuples. For two vectors
x, y.epsilon.F.sub.n, the Hamming distance between x and y, denoted
d(x, y), is the number of positions in which vectors x and y
differ. The Hamming weight of x.epsilon.F.sub.n is given by
.vertline.x.vertline.=d(x, 0), where 0 denotes the all-zero n-tuple
(00 . . . 0). The set of all the n-tuples of even weight is denoted
E.sub.n. For any vector x=(x.sub.1, x.sub.2, . . . ,
x.sub.n).epsilon.F.sub.n, .sigma..sub.R (x)=(x.sub.n, x.sub.1, . .
. , x.sub.n-1) is the right cyclic shift of vector x. The left
cyclic shift of vector x is .sigma..sub.L (x)=(x.sub.2, x.sub.3, .
. . , x.sub.m, x.sub.1). A mapping .phi.:F.sub.n .fwdarw.E.sub.n
exists such that the set of all binary n-tuples F.sub.n mapped onto
the set of all n-tuples of even weight E.sub.n and is defined as:
.phi.(x)=x.sym..sigma.(x), where .sigma. is either .sigma..sub.L or
.sigma..sub.R. At this point, one skilled in the art should
understand that the mapping .phi. is linear and that the number of
transitions in the vector x is equal to the Hamming weight of the
mapped vector .phi.(x). The inverse mapping can be formally
defined. Assume that vector y=(y.sub.1, y.sub.2, . . . , y.sub.n)
is in E.sub.n and vector x=(x.sub.1, x.sub.2, . . . , x.sub.n) is
in F.sub.n. Then, the inversely mapped vector .phi..sup.-1 (y) is
equal to x if and only if the mapped vector .phi.(x) is equal to y
and x.sub.1 =0. Since for two distinct binary vectors x and x',
.phi.(x)=.phi.(x') implies that x and x' are binary complements of
each other, it follows that each element of the set of all n-tuples
of even weight E.sub.n will have exactly one inverse.
Once the above terminology and mapping is understood, some
fundamentals with respect to error-correcting codes must also be
introduced and understood.
A t-error-correcting code C of length n is a subset of the set of
all binary n-tuples F.sub.n with the property that any two n-tuples
c.sub.1,c.sub.2 .epsilon.C differ in at least 2t+1 positions. Let
C.sub.1 be a (t-2)-error-correcting code of length m and assume
that C.sub.1 contains at least n+1 codewords of even weight.
Similarly, let C.sub.2 be a (t-2)-error-correcting code of length n
containing at least m+1 codewords of even weight. When n and m are
powers of 2, such error-correcting codes exist for all ##EQU1##
which are the first-order Reed-Muller codes of lengths m and n
respectively. Error-correcting codes and the techniques involved in
their implementation should be readily understood by one skilled in
this art. However, if further study of error-correcting codes and
the properties inherent thereto is desired, attention is directed
to the text by MacWilliams and Sloane, "The Theory of
Error-Correcting Codes", New York; North-Holland, (1977).
Finally, it is important to initially specify how transitions are
counted for any given row or column vector. If a light region is
immediately followed by a dark region within a single vector of the
input data array in any dimension, this would count as a single
transition denoted as (10). Likewise, if a 0 is immediately
followed by a 1, this would count as a single (01) transition. For
the purposes of the present invention there is no distinction
between (10) transitions and (01) transitions. Further, the
transitions are to be counted in a cyclic manner. In other words,
the vectors are to be considered as wrapping around themselves to
form a circle. Thus, if a vector begins with a 1 and ends with a 0,
or vice versa, there is a cyclic transition that should be counted
in addition to the transitions that occur within the vector between
those two points. For instance, assume that 111000111 and 111000110
are two row or column vectors in the input data array. Counting the
number of transitions in a cyclic manner one should conclude that
the first vector contains 2 transitions while the second vector
contains 4 transitions.
The first portion of the preferred embodiment to be discussed
herein involves the construction of a first set of control
arrays.
With reference being made to FIG. 4, the first full set of control
arrays .quadrature..sub.1 is constructed in order to achieve the
property P.sub.1 (t) constraining the number of transitions in each
row and column. The full set of control arrays .quadrature..sub.1
is obtained from two fixed sets of m.times.n binary arrays
A.epsilon..quadrature..sub.A ={A.sub.0, A.sub.1, . . . , A.sub.n }
and B.epsilon..quadrature..sub.B ={B.sub.0, B.sub.1, . . . ,
B.sub.m }. Specifically, the full set of control arrays
.quadrature..sub.1 is obtained by performing the operation A.sym.B
for each array element A of .quadrature..sub.A and each array
element B of the set .quadrature..sub.B, namely .quadrature..sub.1
={A.sym.B:A.epsilon..quadrature..sub.A,
B.epsilon..quadrature..sub.B }.
In order to obtain the full set of control arrays
.quadrature..sub.1, the fixed sets of individual binary arrays
.quadrature..sub.A ={A.sub.0, A.sub.1, . . . , A.sub.n } and
.quadrature..sub.B ={B.sub.0, B.sub.1, . . . , B.sub.m } must be
obtained. The elements of the fixed set of binary control arrays
.quadrature..sub.A and the fixed set of binary control arrays
.quadrature..sub.B are specified in the notation A.sub.i
=[a.sub.jk.sup.i ] and B.sub.i =[b.sub.jk.sup.i ], as follows:
a.sub.jk.sup.i =1 if the j-th coordinate of the vector a.sub.i =1,
0 otherwise
b.sub.jk.sup.i =1 if the k-th coordinate of the vector b.sub.i =1,
0 otherwise
where i=0, 1, 2, . . . , n for the set .quadrature..sub.A and where
i=0, 1, 2, . . . , m for the set .quadrature..sub.B, and where the
sets of control vectors {a.sub.0, a.sub.1, . . . , a.sub.n } and
{b.sub.0, b.sub.1, . . . , b.sub.m } are specified in the
following.
In order to obtain the fixed sets of binary arrays
.quadrature..sub.A and .quadrature..sub.B, the sets of control
vectors {a.sub.0, a.sub.1, . . . , a.sub.n }, {b.sub.0, b.sub.1, .
. . , b.sub.m } must be obtained. To achieve this, the sets of
control vectors {a.sub.0, a.sub.1, . . . , a.sub.n } and {b.sub.0,
b.sub.1, . . . , b.sub.m } are defined as follows:
where the meaning of .OR right. above is that the individual
control vectors of the set {a.sub.0, a.sub.1, . . . , a.sub.n } are
any n+1 fixed elements of the inverse mapping .phi..sup.-1
(C.sub.1) of the (t-2)-error-correcting code C.sub.1 of length m,
and the control vectors of the set {b.sub.0, b.sub.1, . . . ,
b.sub.m } are any m+1 fixed elements of the inverse mapping
.phi..sup.-1 (C.sub.2) of the (t-2)-error-correcting code C.sub.2
of length n.
In other words, the control vectors a.sub.i and b.sub.i must be
found such that adding vector a.sub.i to all the columns of the
array V.sub.in produces at least t transitions in each column and
adding b.sub.j to all the rows of V.sub.in produces at least t
transitions in each row. If {v.sub.1, v.sub.2, . . . , v.sub.n } is
the set of columns of the array V.sub.in then the control vector
a.sub.i is determined by checking for each i=0, 1, 2, . . . ,
whether all the vectors in the set a.sub.i +v.sub.1, +a.sub.i
+v.sub.2, . . . , a.sub.i +v.sub.n have at least t transitions and
terminating at the first index i for which the above condition
holds. The control vector b.sub.j is determined in a similar manner
by operating on the rows of the input array V.sub.in rather than on
its columns. It is noted that the control array set
.quadrature..sub.A is constructed such that if the set of vectors
{v.sub.1, v.sub.2, . . . , v.sub.n } are the columns of input array
V.sub.in, the corresponding columns of V.sub.in .sym.A.sub.i are
given by the set {v.sub.1 +a.sub.i, v.sub.2 +a.sub.i, . . . ,
v.sub.n +a.sub.i }, (where + indicates the operation of vector
addition) and similarly for the control arrays set
.quadrature..sub.B.
At this point, it should be understood that adding any one array A
from the control array set .quadrature..sub.A to an arbitrary input
array V.sub.in is equivalent to complementing some of the rows of
the input array V.sub.in. This does not affect the number of
transitions in the rows of array V.sub.in since any vector and its
complement contain the same number of transitions. Similarly,
adding any one array B from the control array set
.quadrature..sub.B to the input array V.sub.in is equivalent to
complementing some of its columns and hence does not affect the
number of transitions in the columns of array V.sub.in.
Notice that the complexity of this procedure for determining the
control vectors a.sub.i and b.sub.j, and hence also the selected
control array U.epsilon..quadrature..sub.1 =A.sym.B which is
eventually applied to the input array V.sub.in, is at most n+m
trial steps. Since such complexity is sub-linear (essentially
logarithmic) in comparison with the size of the input array
V.sub.in which contains m.times.n information bits, the above
procedure is acceptable for most practical values of the parameters
m and n and is preferred herein. However, if the parameters n and m
are exceptionally large, to the extent of several hundred or more,
then a different more efficient procedure for determining the
control vectors a.sub.i and b.sub.j is preferably employed. The
procedure involves computing the images of the columns and rows of
the input array V.sub.in under the mapping .phi.. For instance, let
x.sub.1 =.phi.(v.sub.1), x.sub.2 =.phi.(vv.sub.2), . . . , x.sub.n
=.phi.(v.sub.n) be the images of the columns of the array V.sub.in.
If the underlying error-correcting code C.sub.1 is the first-order
Reed-Muller code, as is the case in the preferred embodiment, then
for each vector x.sub.i the codeword c.sub.i .epsilon.C.sub.i,
which is the closest to vector x.sub.i, may be readily found using
the techniques described in MacWilliams and Sloane. As such, any
control vector from the set {a.sub.0, a.sub.1, . . . , a.sub.n },
whose image under the mapping .phi. is not equal to one of the
codewords of error-correcting code C.sub.1 that is the closest to
one of the vectors x.sub.1, x.sub.2, . . . , x.sub.n may be taken
as the control vector a.sub.i. The control vector b.sub.j may be
obtained in a similar manner.
By way of illustration of the techniques to achieve the first
constraint, assume that the input arrays are of size n=m=3 and the
required number of transitions is t=2. Since t-2=0, any set of
distinct even-weight vectors may be taken as error-correcting codes
C.sub.1 and C.sub.2. It should be noted that if t is even and if
the number of transitions is less than t then the number of
transitions has to be less than t-2 because t-1 is not allowable
since the Hamming weight must be even.
Let C.sub.1 =C.sub.2 ={000,011,110,101}. In this case: .phi..sup.-1
(c.sub.1)=000, .phi..sup.-1 (c.sub.2)=001, .phi..sup.-1
(c.sub.3)=010, .phi..sup.-1 (c.sub.4)=011. Thus: .phi..sup.-1
(C.sub.1)=.phi..sup.-1 (C.sub.2)={000,001,010,011}. The mapping of
.phi. here is based upon a left cyclic shift. Since n+1=m+1=4 and
the inversely mapped (t-2)-error-correcting codes .phi..sup.-1
(C.sub.1) and .phi..sup.-1 (C.sub.2) both contain 4 vectors, the
sets of control vectors {a.sub.0,a.sub.1,a.sub.2,a.sub.3 } and
{b.sub.0,b.sub.1,b.sub.2,b.sub.3 } are, in this case, equal to
.phi..sup.-1 (C.sub.1) and .phi..sup.-1 (C.sub.2). Thus:
{a.sub.0,a.sub.1,a.sub.2,a.sub.3 }={b.sub.0,b.sub.1,b.sub.2,b.sub.3
}={000,001,010,011}.
Hence, the control arrays .quadrature..sub.A ={A.sub.0, A.sub.1,
A.sub.2, A.sub.3 }, and .quadrature..sub.B ={B.sub.0, B.sub.1,
B.sub.2, B.sub.3 } are constructed as follows: ##EQU2##
The full set of control arrays .quadrature..sub.1 is obtained by
the modulo 2 addition of each array of .quadrature..sub.A to each
array of .quadrature..sub.B in a bit by bit fashion so that
.quadrature..sub.1 ={A.sym.B:
A.epsilon..quadrature..sub.A,B.epsilon..quadrature..sub.B }. Thus,
after performing this operation, the final set of control arrays
.quadrature..sub.1 consists of the following fixed set of 16 binary
arrays:
______________________________________ 000 000 000 000 001 001 001
001 000 000 111 111 001 001 110 110 000 111 000 111 001 110 001 110
010 010 010 010 011 011 011 011 010 010 101 101 011 011 100 100 010
101 010 101 011 100 011 100
______________________________________
Since the number of distinct arrays in the control array set
.quadrature..sub.A is one more than the number of columns in the
input array V.sub.in there necessarily exists at least one array
A.epsilon..quadrature..sub.A such that all the columns of V.sub.in
.sym.A contain at least t transitions. Similarly, since the number
of distinct arrays in the control array set .quadrature..sub.B is
one more than the number of rows in the input array V.sub.in, there
exists at least one array B.epsilon..quadrature..sub.B such that
all the rows of V.sub.in .sym.B contain at least t transitions.
Therefore, the modulated output array V'.sub.in =V.sub.in
.sym.(A.sym.B) at the output of the first modulator of FIG. 4, has
at least t transitions in each row and each column and therefore
satisfies P.sub.1 (t), (i.e., that in each row and column of the
modulated data array there are at least t transitions of the type
(10) or (01).
As discussed, the first of two underlying assumptions under which
the present invention achieves the first constraint is that for
each given vector column v.sub.j of input array V.sub.in there is
at most one array A in control array set .quadrature..sub.A such
that the number of transitions in the corresponding columns of
V.sub.in .sym.A is less than the desired number of transitions t.
The second assumption is that for any given row u.sub.j of the
input array V.sub.in, there is at most one array B in the control
array set .quadrature..sub.B such that the number of transitions in
the corresponding row of V.sub.in .sym.B is less than t. To show
that the above assumptions are indeed true, if the sets of control
vectors {a.sub.0,a.sub.1, . . . ,a.sub.n } and {b.sub.0,b.sub.1, .
. . ,b.sub.m } are constructed using the inverse mapping
.phi..sup.-1 from (t-2)-error-correcting codes C.sub.1 and C.sub.2,
as preferred, then for any x.epsilon.F.sub.m, the fact that
x+a.sub.i has less than t transitions implies that x+a.sub.j has at
least t transitions for all j.noteq.i. Similarly, for any
x.epsilon.F.sub.n, the fact that x+b.sub.i has less than t
transitions implies that x+b.sub.j has at least t transitions for
all j.noteq.i. Otherwise, the following impossibility would
result:
The last inequality follows from the fact that the Hamming weight
of .phi.(x) is equal to the number of transitions in x. Since
.phi.(a.sub.i),.phi.(a.sub.j).epsilon.C.sub.1, it follows that the
mapped vector .phi.(x) is at a distance of at most t-2 from two
distinct codewords of C.sub.1. Because Hamming spheres of radius
t-2 about the codewords of C.sub.1 are disjoint, this is
impossible.
In order to be able to retrieve the original input array V.sub.in
from the output array V.sub.out that is eventually stored in the
holographic medium, it is necessary to indicate which control array
of the (m+1)(n+1) control arrays in the set .quadrature..sub.1 was
applied to the input array V.sub.in such that .quadrature..sub.1
={A.sym.B:
A.epsilon..quadrature..sub.A,B.epsilon..quadrature..sub.B }. For
this purpose, it is preferable to have all the control arrays in
the set .quadrature..sub.1 arranged in a predefined order which are
indexed by the integers from 1 to (n+1)(m+1). The index corresponds
to the specific selected control array U.epsilon..quadrature..sub.1
=A.sym.B which was applied to effectuate the modulation of the
input array V.sub.in. This information is preferably encoded in a
binary format and appended as an additional column or row to the
modulated array V'.sub.in =V.sub.in .sym.U.
As discussed, the control array set .quadrature..sub.1 consists of
(m+1)(n+1) control arrays. In order to encode the index of the
selected control array U in a binary format and thus indicate which
control array was applied to the input array V.sub.in, a total of
about log.sub.2 (m+1)(n+1) bits will be needed. These bits are
redundant and constitute the overhead introduced by the modulator
for recovery purposes. It should be understood that since the total
number of control arrays in .quadrature..sub.1 is kept as small as
possible by the techniques disclosed herein, the number of
redundant bits which will be needed to keep track of the desired
information will be at a minimum. Thus, the modulator of the
present invention has the advantage of introducing minimum overhead
for the specified modulation constraint.
Notably, the entire first portion of the modulator of the present
invention does not require a conversion table. The only information
that has to be stored in the modulator of FIG. 4 is the two sets of
vectors {a.sub.0,a.sub.1, . . . ,a.sub.n } and {b.sub.0,b.sub.1, .
. . ,b.sub.m } which define the set of control arrays
.quadrature..sub.1. The selected control array
U.epsilon..quadrature..sub.1, which is to be applied to the input
array V.sub.in so that V'.sub.in =V.sub.in .sym.U satisfies P.sub.1
(t), is efficiently reconstructed from these two sets of vectors
and the modulation may be effected by simply complementing the
columns and the rows of the input array V.sub.in according to
control vectors a.sub.i and b.sub.j, respectively.
In order not to permit wide variations in the ratio between the
signal beam and the reference beam during recording, the 1's and
0's in any region of the data page should be balanced as well as
evenly distributed. To achieve this balancing, a second set of
control arrays is constructed.
At this point, it should be understood that the input data array
for the second modulator is the output array V'.sub.in from the
first modulator.
With reference now being made to FIG. 5, construction of the second
set of control arrays .quadrature..sub.2 is described herein such
that for any m.times.n input data array V'.sub.in there exists at
least one selected control array W.epsilon..quadrature..sub.2, with
V.sub.out =V'.sub.in .sym.W having an equal number of 1's and 0's,
or in other words satisfying property P.sub.2.
Consider the set of control vectors {w.sub.0,w.sub.1,w.sub.2, . . .
,w.sub.mn-1 } given by the set: {w.sub.0 =0000 . . . 0, w.sub.1
=1000 . . . 0, w.sub.2 =1100 . . . 0, w.sub.3 =1110 . . . 0, . . .
, w.sub.mn-1 =1111 . . . 10}. It is shown in Knuth, "Efficient
Balanced Codes", IEEE Transactions on Information Theory, Vol.32,
pp.51-53, (1986), that for any input vector v there exists a
control vector w.sub.i such that v+w.sub.i contains an equal number
of 1's and 0's. A one-to-one correspondence is established between
the m.times.n binary arrays and binary vectors of length mn by
writing the input data array as V'.sub.in =[v.sub.ij ] and the
binary vector v as v=(v.sub.11,v.sub.12, . . .
,v.sub.1n,v.sub.21,v.sub.22, . . . ,v.sub.2n, . . .
,v.sub.m1,v.sub.m2, . . . ,v.sub.mn), which is the equivalent to
using a horizontal row-by-row readout. In effect, the second
modulator complements the bits of the input array V'.sub.in in the
horizontal readout order terminating after the first i bits. Using
the horizontal readout correspondence, the set of control arrays
.quadrature..sub.2 ={W.sub.0,W.sub.1,W.sub.2, . . . ,W.sub.mn-1 }
is obtained from the set of control vectors
{w.sub.0,w.sub.1,w.sub.2, . . . ,w.sub.mn-1 }. As a result, for any
input m.times.n binary array V.sub.in, there exists one control
array W.epsilon..quadrature..sub.2, such that V'.sub.in .sym.W
contains an equal number of 1's and 0's, and thereby satisfies
P.sub.2. For instance, if n=m=3, the control array set
.quadrature..sub.2 consists of the following mn=9 arrays.
______________________________________ 000 100 110 111 111 111 111
111 111 000 000 000 000 100 110 111 111 111 000 000 000 000 000 000
000 100 110 ______________________________________
Similarly, as with the first index for the control array applied to
the input array V.sub.in, the index corresponding to the array
belonging to the control array set .quadrature..sub.2 can be stored
as well. This index i is preferably encoded in a binary form
containing an equal number of 1's and 0's and appended to the
modulated array. Since the control array set .quadrature..sub.2
contains exactly mn arrays, encoding the index i in a binary form
requires approximately log.sub.2 (mn) redundant bits. The total
overhead introduced by the second modulator of FIG. 5 is slightly
more than log.sub.2 (mn) redundant bits because the redundant bits
also have to be balanced.
It is preferable to have an m.times.n array which simultaneously
satisfies properties P.sub.1 (t) and P.sub.2. A modulator for this
purpose is depicted in FIG. 6. With reference being made thereto,
first a set of control arrays .quadrature..sub.1 is designed using
the first modulator portion of the preferred embodiment for the
satisfaction of the property P.sub.1 (t+2). A selected control
array U.epsilon..quadrature..sub.1 is applied to the input data
array V.sub.in to ensure that V'.sub.in satisfies P.sub.1 (t+2).
Subsequently, several bits of V'.sub.in are complemented in the
horizontal readout order, as taught above, which is equivalent to
adding to V'.sub.in a selected control array W drawn from the set
of control arrays .quadrature..sub.2, so that the resulting array
V.sub.out =V'.sub.in .sym.W satisfies P.sub.2. Effectively, the
array V.sub.out satisfies simultaneously both properties P.sub.1
(t) and P.sub.2. This is shown to be the case.
To see this, assume that a row vector x=(x.sub.1,x.sub.2, . . .
,x.sub.n).epsilon.F.sub.n has (t+2) transitions. If the vector x'
is given by (x.sub.1,x.sub.2, . . . , x.sub.i, x.sub.i+1,x.sub.i+2,
. . . ,x.sub.n), where x denotes the binary complement of the
binary digit x, then the number of transitions in the vector x' is
at least t because the only transitions which could be present in x
but not in x' are from x.sub.i to x.sub.i+1 or from x.sub.n to
x.sub.1. Therefore complementing the first i bits of the vector x
eliminates at most two transitions. Notice that each row and each
column of the array V.sub.out =V'.sub.in .sym.W complies with this
condition, as put forth above, with respect to the corresponding
row/column of the input array V'.sub.in. As a consequence, each
row/column of the final array V.sub.out =V'.sub.in .sym.W must
contain at least (t+2)-2=t transitions. Thus, the final modulated
output array V.sub.out =(V.sub.in .sym.U).sym.W of the modulator of
FIG. 6 satisfies both properties P.sub.1 (t) and P.sub.2
simultaneously.
In order to further illustrate the operation of the combined
modulator shown in FIG. 6, assume that the input data V.sub.in is
arranged in the form of a 16.times.16 array. Thus, m=n=16. In order
to obtain the sets of arrays .quadrature..sub.A and
.quadrature..sub.B for the first constraint, the sets of control
vectors {a.sub.0,a.sub.1, . . . ,a.sub.n } and {b.sub.0,b.sub.1, .
. . ,b.sub.m } are first obtained. FIG. 7 illustrates the set of 17
control vectors obtained by applying the inverse mapping
.phi..sup.-1, as discussed above, to some of the 32 even-weight
codewords of the first-order Reed-Muller code of length 16. As
discussed for any input 16.times.16 array V.sub.in, a vector
a.sub.i is chosen from the fixed set of 17 control vectors in FIG.
7 such that adding vector a.sub.i to all the columns in the input
array V.sub.in yields at least 4 transitions in each column.
Similarly, a vector b.sub.j is also chosen from the set of 17
control vectors of FIG. 7 such that adding vector b.sub.j to all
rows in the input array V.sub.in provides an array with at least 4
transitions per row. Thus, the first index i is found such that
adding the vector a.sub.i to each column of input binary array
V.sub.in produces at least 4 transitions in each column, and the
first index j is found such that adding the vector b.sub.j to each
row yields at least 4 transitions in each row.
A correspondence between the integers from 0 to 16, employed to
index the vectors of the above set and balanced vectors of length 6
is established and ordered lexicographically according to the
following table.
TABLE 1 ______________________________________ 0 000111 6 010110 12
100110 1 001011 7 011001 13 101001 2 001101 8 011010 14 101010 3
001110 9 011100 15 101100 4 010011 10 100011 16 110001 5 010101 11
100101 ______________________________________
Once the corresponding indices have been found, the vector a.sub.i
is added to each column and the vector b.sub.j is added to each row
in the input data array V.sub.in. An extra row is appended to the
resulting array with the entries of this row being specified as
follows. The first 6 bits of the appended row consist of the
balanced vector corresponding to the index i in Table 1. The
following 6 bits appended consist of the balanced vector
corresponding to the index j in Table 1. The last 4 bits appended
to the resulting array consist of the arbitrary set {1010} so as to
contain an equal number of 1's and 0's. This produces an output
17.times.16 data array satisfying the property P.sub.2 (4) with the
last row containing an equal number of 1's and 0's.
To balance the first 16 rows of this resulting array in order to
satisfy property P.sub.2, let k be the number of bits that have to
be complemented in order to balance these 16 rows. Notice that
0.ltoreq.k.ltoreq.255 and hence 8 bits are needed to write k in
binary form. These 8-bits are given as: <a.sub.7 a.sub.6 a.sub.5
a.sub.4 a.sub.3 a.sub.2 a.sub.1 a.sub.0 >. Then, <a.sub.7
a.sub.6 a.sub.5 a.sub.4 > is taken to be the binary form of an
integer k.sub.1 and a.sub.3 a.sub.2 a.sub.1 a.sub.0 is taken to be
the binary form of an integer k.sub.2, where k.sub.1,k.sub.2
.ltoreq.15. These integers, k.sub.1 and k.sub.2, are then
associated with the balanced vectors according to Table 1 to
produce a vector of length 12. This vector is then concatenated
with the binary value 10101 in order to obtain a vector of length
17 which is then appended as the 17-th column of the output array.
This completes the modulation.
By way of a further example, assume that the input 16.times.16
binary array V.sub.in, as shown in FIG. 8, is to be modulated. By
counting the number of transitions, it is determined that there are
only two (cyclic) transitions in each row and column of this array.
Adding the vector a.sub.1 to each row and to each column increases
the number of transitions to at least 4 in each row and column
which results in the array V'.sub.in shown in FIG. 9, which has to
be balanced.
An application of the techniques discussed in Knuth, previously
cited, results in an array having k=122 1's, as shown in FIG. 10,
for balancing V'.sub.in of FIG. 9. Adding the array V'.sub.in of
FIG. 9 to the balancing array W.epsilon..quadrature..sub.2 of FIG.
10 produces the output data array shown in FIG. 11.
This information has to be encoded in the array of FIG. 11.
According to Table 1, the index of a.sub.1 corresponds to the
balanced vector 001011. Hence, the following vector is added to the
last row of the array of FIG. 11:
This produces a 17.times.16 data array. The balancing array of FIG.
10 had k=122 1's. The binary form of k=122 is 01111010. These 8
bits are broken into two 4-bit vectors <0111> and
<1010>. The first vector is the binary representation of the
integer 7. The second vector is the binary representation of the
integer 10. Once these integers have been obtained, reference is
then made to Table 1 wherein the integer 7 corresponds to the
balanced vector 011001 and the integer 10 corresponds to the
balanced vector 100011. The combination of these two vectors
produces the following with trailing equal numbers of 1's and
0's.
This vector is appended as a 17-th column to the array of FIG. 11.
The additional row and column information added to the array of
FIG. 11 produces the final modulated 17.times.17 output array of
FIG. 12.
Upon reading the stored modulated data arrays, the arrays have to
be demodulated. The demodulation process is the modulation process
performed in the reversed order. It is important to note that prior
to the actual demodulation, the modulated array which is read-out
from the holographic storage medium should preferably be checked to
determine whether or not the array contains exactly ##EQU3## zeros.
If it does not then the demodulator declares that errors have
occurred in the array and passes this information to the
error-correcting code if such a code is present in the overall
recording system.
In order to effectuate the implementation of the modulation
techniques of the present invention, attention is directed to FIG.
13 wherein an implementation of the preferred embodiment of the
present invention is illustrated by a schematic block diagram.
The array to be modulated is stored in buffer 92. The index
counters 97a and 97b are reset by means (not shown). The array to
be modulated is directed into the column buffer 108a and the row
buffer 108b. Clock trigger 106, connected to index i counter 97a
and index j counter 97b, resets and starts the two index counters
at a first initial value. The two counters are used to determine
the value of index i of the control vector a and the value of index
j of the control vector b. These values are stored in i-register
105a and j-register 105b respectively. The content of the
i-register 105a is used to select a control vector a.sub.i from
column i of the a-control vector memory 98a. The content of the
j-register 105b is used to select a control vector b.sub.j from row
j of the b-control vector memory 98b. The selected column vector
a.sub.i from memory unit 98a is directed into the a-vector buffer
103a. In parallel, the selected row vector b.sub.j from memory 98b
is directed into the b-vector buffer 103b. The selected column
control vector a.sub.i stored in 103a is added to each column in
the modulation column buffer 94a and the selected row control
vector b.sub.j stored in 103b is added to each row in the
modulation row buffer 94b. The input array stored in column buffer
108a and the input array stored in row buffer 108b are then
modulated in their respective column and row modulation buffers 94a
and 94b, respectively. Transition counters 112a and 112b count the
number of transitions. Counter 112a counts the number of
transitions in each column of the modulated array of 94a and
counter 112b counts the number of transitions in each row of the
modulated array of 94b. The outputs of each of the respective
transition counters are bit-wise ANDed in units 110a and 110b. If
the number of transitions in either counter is less than the
desired number of transitions t then the specified condition for
the modulated array has not been met. In that case, the
corresponding counter would be incremented to produce the next
index value which is used to index the next control array and the
cycle would repeat until the desired number of transitions has been
achieved by the modulation of the correct column control vector
a.sub.i and the correct row control vector b.sub.j individually.
The signal that the number of transitions has been met triggers the
output of the modulated array from the array modulator via control
lines 115a and 115b so as to signal the corresponding modulation
unit to dump that modulated array into buffer 90a or 90b wherein
the column modulated array V.sub.in .sym.A.sub.i is stored. Control
lines 115a and 115b also trigger registers 102a and 102b to save
the value of their respective counters 97a and 97b, respectively.
At this point, the correct index has been selected such that the
control vector a.sub.i effectuates the desired number of
transitions t and the correct index has been selected such that the
control vector b.sub.j effectuates the desired number of
transitions t.
Block 96 performs the operation of (V.sub.in
.sym.A.sub.i).sym.V.sub.in .sym.(V.sub.in .sym.B.sub.j). This can
be effectuated either through hardware or software means. Since the
.sym. operation is modulo-2, the result of the .sym. operation
performed in buffer 96 is effectively the operation V.sub.in
.sym.(A.sub.i .sym.B.sub.j) which produces the output array
V'.sub.in satisfying property P.sub.1 (t) of the present
invention.
In order to be able to obtain the original input data array upon
retrieval after modulation and storage, the indexes i and j which
correspond to the selected control arrays A.sub.i and B.sub.j are
encoded into balanced vectors of even lengths l.sub.1 and l.sub.2,
where binomial coefficient ##EQU4## where the binomial coefficient
##EQU5## These encoded vectors are then appended to the output
array V'.sub.in as shown in 104. The corresponding index i, shown
at 102a, and index j, shown at 102b are appended to V'.sub.in at
104 along with a binary vector of length n-(l.sub.1 +l.sub.2) of
the form <1010 . . . > produced binary vector generating unit
98.
The second modulation wherein the balancing of the arrays is done
to satisfy property P.sub.2 can be readily effectuated by the
techniques disclosed in the Knuth reference or the system as taught
by U.S. Pat. No. 4,309,694 to Henry which is hereby incorporated by
reference being made thereto. It should be understood that the
appended extra column contains a balanced vector of length l.sub.3
representing the index k of the balancing array W.sub.k followed by
a "filler" vector of the form <1010 . . . > of length
(m+1)-l.sub.3.
It should be understood that the modulation techniques of the
present invention are extendable to input data arrays of more than
two dimensions. The basic ideas involved in the multi-dimensional
modulator to be devised in the following are similar to the
two-dimensional modulation technique. However, the description of
the multi-dimensional modulator involves more elaborate notation
needed to describe multi-dimensional entities. This notation should
be readily followed by one skilled in the art.
Suppose that the data is presented in the form of a n.sub.1
.times.n.sub.2 .times. . . . .times.n.sub.k k-dimensional binary
array V.sub.in =[v.sub.i1,v.sub.i2, . . . ,v.sub.ik ]. A column of
the input array V.sub.in is then obtained by fixing some k-1
subscripts and letting the remaining, say .alpha.-th subscript,
vary from 1 to n.sub..alpha.. More precisely, for
1.ltoreq..alpha..ltoreq.k, the one-dimensional sequence of binary
values (x.sub.1,x.sub.2, . . . ,x.sub.n.sbsb..alpha.) is refereed
to as an .alpha.-column of the input array V.sub.in if x.sub.i
=v.sub.j1j2 . . . j.alpha. . . . jk, where j.sub..alpha. =i. All
the other subscripts are fixed for all x.sub.1,x.sub.2, . . .
x.sub.n.sbsb..alpha.. Conversely, a hyperplane of input array
V.sub.in is obtained by fixing one subscript and letting the other
k-1 subscripts range over all the possible values. Thus, an
.alpha.-hyperplane of V.sub.in is a (k-1)-dimensional array given
by [v.sub.j1j2 . . . j.alpha. . . . jk ], where j.sub..alpha. is
fixed at a certain value while, for all i.noteq..alpha., the
subscripts j.sub.i vary from 1 to n.sub.i. As such, in the
multi-dimensional case property P.sub.1 (t) implies that for all
.alpha.=1,2, . . . ,k, in each .alpha.-column of the
multi-dimensional output V'.sub.in there are at least t transitions
of the type (10) or (01).
To show that this indeed the case, for a fixed .alpha.,
complementing all the bits in an .alpha.-hyperplane of V.sub.in
affects only the number of transitions in the .alpha.-columns of
input array V.sub.in while leaving the number of transitions in the
.alpha.'-columns of input array V.sub.in unchanged for all
.alpha.'.noteq..alpha.. Therefore, all the bits in the
one-hyperplanes are complemented in order to ensure that each
one-column of input array V.sub.in has at least t transitions
without affecting the number of transitions in the .alpha.-columns
of input array V.sub.in for all .alpha..noteq.1. Then, the bits in
of the two-hyperplanes are complemented to take care of the
two-columns without affecting the .alpha.-columns for all
.alpha..noteq.2, and so on until the property P.sub.1 (t) is
satisfied in all the .alpha.-columns in all .alpha.-hyperplanes of
input array V.sub.in for .alpha.=1,2, . . . ,k. Indeed, this is
achievable in a single step rather than sequentially by means of
adding to input array V.sub.in the selected control array U which
has 1's at all those positions where the entries of input array
V.sub.in are to be complemented. More precisely, a set of control
arrays .quadrature..sub.1 indeed can be constructed such that for
any n.sub.1 .times.n.sub.2 .times. . . . .times.n.sub.k input array
V.sub.in there exists at least one control array
U.epsilon..quadrature..sub.1, with V.sub.in .sym.U satisfying the
multi-dimensional property P.sub.1 (t).
To achieve this, let C.sub.1,C.sub.2, . . . ,C.sub.k be
(t-2)-error-correcting codes of lengths n.sub.1,n.sub.2, . . .
,n.sub.k respectively. Furthermore, suppose that for .alpha.=1,2, .
. . ,k the error-correcting code C.sub..alpha. contains at least
##EQU6## codewords of even weight. Note that ##EQU7## is just the
number of .alpha.-columns in the input array V.sub.in. As a result,
(as in the two-dimensional case) the requirement that
.vertline.C.sub..alpha. .vertline..gtoreq.m.sub..alpha. +1 for each
.alpha. determines the highest attainable number of transitions t.
In other words, t is such that the error-correcting codes
C.sub.1,C.sub.2, . . . ,C.sub.k exist for all .alpha.=1,2, . . .
,k. For example, if k=3 and n.sub.1 =n.sub.2 =n.sub.3 =15, the
highest attainable value of the number of transition is t=4.
Consider the sets .phi..sup.-1 (C.sub.1),.phi..sup.-1 (C.sub.2), .
. . ,.phi..sup.-1 (C.sub.k), which can be obtained from the
error-correcting codes C.sub.1,C.sub.2, . . . ,C.sub.k (as in the
two-dimensional case). Let the vectors
a.sub.0.sup..alpha.,a.sub.1.sup..alpha., . . .
,a.sub.m.sbsb..alpha..sup..alpha. be some m.sub..alpha. +1 fixed
elements of the inversely mapped set .phi..sup.-1 (C.sub..alpha.).
Then, the set of m.sub..alpha. +1 k-dimensional n.sub.1
.times.n.sub.2 .times. . . . .times.n.sub.k control arrays
.quadrature..sub.A.sup..alpha.
={A.sub.0.sup..alpha.,A.sub.1.sup..alpha., . . .
,A.sub.m.sbsb..alpha..sup..alpha. } is constructed from the control
vectors a.sub.0.sup..alpha.,a.sub.1.sup..alpha., . . .
,a.sub.m.sbsb..alpha..sup..alpha.. For i=0,1, . . . ,m.sub..alpha.
each control array A.sub.1.sup..alpha. is composed of n.sub..alpha.
predetermined .alpha.-hyperplanes with all the entries in each such
.alpha.-hyperplane being either all 0's or all 1's. More
specifically, all the entries in the j-th .alpha.-hyperplane of
array A.sub.1.sup..alpha. are taken to be equal to the j-th entry
of the control vector a.sub.1.sup..alpha.. Once the control array
sets .quadrature..sub.A.sup.1,.quadrature..sub.A.sup.2, . . .
,.quadrature..sub.A.sup.k have been constructed, the required set
of (m.sub.1 +1)(m.sub.2 +1) . . . (m.sub.k +1) k-dimensional
control arrays .quadrature..sub.1 is obtained as the modulo 2 sum
of these sets, as before, namely:
Just as in the two-dimensional case, for any n.sub.1 .times.n.sub.2
.times. . . . .times.n.sub.k input array V.sub.in, there exists at
least one control array U.epsilon..quadrature..sub.1 such that
V.sub.in .sym.U satisfies the multi-dimensional property P.sub.1
(t).
Property P.sub.2 is a global property relating to the total number
of 1's and 0's in the array and does not depend on the
dimensionality of the array. Therefore, the prior definition of
P.sub.2 applies for the multi-dimensional case as well and is not
shown herein.
Finally, it is preferable to have both properties P.sub.1 (t) and
P.sub.2 satisfied simultaneously in the output multi-dimensional
array. This may be accomplished in the same way as in the
two-dimensional case, namely, the input array V.sub.in is modulated
such that the property P.sub.1 (t+2) is satisfied. Then, the
entries of the resulting array are sequentially complemented in a
specified readout order until the total number of 1's and 0's
becomes equal. If the readout is performed recurrently hyperplane
by hyperplane then that final output array simultaneously satisfies
properties P.sub.1 (t) and P.sub.2.
The number of redundant bits required by the multi-dimensional
modulation encoder described above is the logarithm of the
cardinality of the set .quadrature..sub.1 which is given by:
log.sub.2 (m.sub.1 +1), . . . ,(m.sub.k +1).apprxeq.(k-1)log.sub.2
N, where N=n.sub.1 .times.n.sub.2 .times. . . . .times.n.sub.k is
the total number of information bits in the input array V.sub.in.
Thus, the overhead introduced by the multi-dimensional modulator is
still logarithmic in the length of its input thereby minimizing the
overhead.
It should be understood that the specific implementations of the
modulation techniques disclosed and claimed herein represent only
one embodiment of the present invention. It is envisioned that the
present modulator will find uses in the areas of holographic
storage systems and applications along with other uses contemplated
wherein the application of the modulation techniques of the present
invention solve similar problems to those in the prior art.
Although complex, the modulation techniques herein are such that
one skilled in this art should readily be able to implement and/or
adapt the disclosed techniques to their specific system/environment
either through hardware or software means.
In summary, a modulator is disclosed and claimed herein which
provides for modulation of data pages stored in a holographic
medium. The present invention modulates the data pages such that
long periodic stretches of contiguous light or dark regions in any
of the dimensions of the holographic medium are eliminated. In
addition, the number of 1's or 0's stored in the holographic medium
are divided into the same number of 1's and 0's independent of data
content. To achieve this, the present invention provides for a set
of control arrays .quadrature..sub.1 from two fixed sets of
m.times.n binary arrays .quadrature..sub.A ={A.sub.0,A.sub.1, . . .
A.sub.n } and .quadrature..sub.B ={B.sub.0,B.sub.1, . . . ,B.sub.m
}. The individual control vectors a.sub.0,a.sub.1, . . . ,a.sub.n
are any n+1 fixed elements of the inverse mapping .phi..sup.-1
(C.sub.1) of the (t-2) error-correcting code C.sub.1 of length m.
The control vectors b.sub.0,b.sub.1, . . . ,b.sub.m are any m+1
fixed elements of the inverse mapping .phi..sup.-1 (C.sub.2) of the
(t-2) error-correcting code C.sub.2 of length n. The first
modulation portion is then achieved by performing the operation
V'.sub.in =A.sym.B for each array element A of .quadrature..sub.A
and each array element B of the set .quadrature..sub.B. To perform
the balancing of the modulated array, a second set of control
arrays .quadrature..sub.2 ={W.sub.0,W.sub.1,W.sub.2, . . .
,W.sub.mn-1 } is constructed from the set of control vectors
{w.sub.0,w.sub.1,w.sub.2, . . . ,w.sub.mn-1 }. The bits of the
input binary array V'.sub.in are complemented in a horizontal
readout order terminating after the first i bits. This produces a
final modulated output array, given by V.sub.out =(V.sub.in
.sym.U).sym.W, which achieves the objectives of the present
invention.
This invention may be embodied in other specific forms without
departing from its spirit or essential characteristics. The
above-described embodiments of the present invention are to be
considered in all respects only as illustrative and not restrictive
in scope. The scope of the invention is, therefore, indicated by
the appended claims rather than by the above-detailed description.
Therefore, all changes which come within the meaning and range of
equivalency of the claims are to be considered embraced within
their scope.
* * * * *