U.S. patent number 6,924,753 [Application Number 10/368,737] was granted by the patent office on 2005-08-02 for robust system for transmitting and receiving map data.
This patent grant is currently assigned to Zenith Electronics Corporation. Invention is credited to Wayne E. Bretl, Mark Fimoff.
United States Patent |
6,924,753 |
Bretl , et al. |
August 2, 2005 |
Robust system for transmitting and receiving map data
Abstract
Frames comprise odd fields and even fields. The frame sync
segments of the odd fields contains a current map specifying the
location of data in frames, a next map specifying the location of
data in a future frame, and a frame count designating the future
frame. The frame sync segments of the even field may contain the
same information. Alternatively, the frame sync segments of the odd
fields contain the current map and part of the frame count, and the
frame sync segments of the corresponding even fields contain the
next map and the rest of the frame count. A receiver uses the map
and frame count information to find data in the fields of received
frames.
Inventors: |
Bretl; Wayne E. (Grayslake,
IL), Fimoff; Mark (Hoffman Estates, IL) |
Assignee: |
Zenith Electronics Corporation
(Lincolnshire, IL)
|
Family
ID: |
32850185 |
Appl.
No.: |
10/368,737 |
Filed: |
February 18, 2003 |
Related U.S. Patent Documents
|
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
Issue Date |
|
|
345609 |
Jan 16, 2003 |
|
|
|
|
282394 |
Oct 29, 2002 |
|
|
|
|
011333 |
Dec 3, 2001 |
6563436 |
|
|
|
Current U.S.
Class: |
341/50; 341/51;
348/E5.003; 375/E7.002 |
Current CPC
Class: |
H04L
1/0072 (20130101); H04L 27/02 (20130101); H04L
41/046 (20130101); H04L 45/22 (20130101); H04L
65/1089 (20130101); H04N 1/1934 (20130101); H04W
28/00 (20130101); H03M 13/6362 (20130101); H04B
10/25754 (20130101); H04L 25/03038 (20130101); H04L
47/14 (20130101); H04L 47/70 (20130101); H04N
5/44 (20130101); H04N 7/147 (20130101); H04N
7/148 (20130101); H04N 21/4621 (20130101); H04W
4/14 (20130101); H04L 41/0843 (20130101); G06F
21/74 (20130101); H04L 41/0213 (20130101); H04L
45/04 (20130101); H04L 65/4092 (20130101); H04L
69/161 (20130101); H04M 3/007 (20130101); H04M
3/56 (20130101); H04W 68/00 (20130101); H04M
7/0057 (20130101); H04L 1/0045 (20130101); H04L
12/4641 (20130101); H04L 47/10 (20130101); H04N
1/00344 (20130101); H04N 1/00957 (20130101); H04N
5/23277 (20130101); H04N 5/455 (20130101); H04L
25/4904 (20130101); H04L 29/12471 (20130101); H04L
1/0071 (20130101); H04L 1/0068 (20130101); H04L
12/40117 (20130101); H04N 21/43632 (20130101); H04L
41/0856 (20130101); H04L 65/80 (20130101); H04N
7/0112 (20130101); H04N 5/4446 (20130101); H04L
1/0066 (20130101); H04L 12/2898 (20130101); H04N
5/2257 (20130101); H04N 19/517 (20141101); H04N
19/625 (20141101); H04J 13/0077 (20130101); H04W
84/08 (20130101); H04N 9/3129 (20130101); H04N
19/19 (20141101); G06F 21/6209 (20130101); G06F
21/88 (20130101); H03L 7/091 (20130101); H04L
47/283 (20130101); H04N 19/61 (20141101); H04W
36/02 (20130101); H04L 47/2433 (20130101); G01S
1/026 (20130101); H04L 12/12 (20130101); H04L
47/193 (20130101); H04N 21/4532 (20130101); H04N
21/6187 (20130101); H04L 65/1006 (20130101); G03G
15/5062 (20130101); G11B 27/034 (20130101); H04L
1/1841 (20130101); H04L 67/1002 (20130101); H04N
21/44012 (20130101); H04L 69/16 (20130101); H04L
41/06 (20130101); H04L 67/306 (20130101); H04L
69/18 (20130101); H04N 5/23254 (20130101); H04N
5/4448 (20130101); H04N 19/91 (20141101); H04Q
3/0025 (20130101); H04N 21/812 (20130101); H04W
74/0816 (20130101); H04L 51/38 (20130101); H04L
1/006 (20130101); H04L 27/156 (20130101); H04L
49/9094 (20130101); H04N 5/642 (20130101); H04N
21/426 (20130101); H04N 21/4623 (20130101); H04W
76/34 (20180201); H04L 47/34 (20130101); H04L
41/5022 (20130101); H04L 47/2416 (20130101); H04M
1/715 (20210101); H04N 5/23258 (20130101); H04N
19/109 (20141101); H04N 21/4307 (20130101); H04N
21/4382 (20130101); H04W 28/24 (20130101); H04L
5/1438 (20130101); H04J 13/16 (20130101); H04L
1/1685 (20130101); H04L 47/765 (20130101); H04N
19/139 (20141101); H04L 61/2553 (20130101); H04M
3/10 (20130101); H04N 7/163 (20130101); H04R
1/028 (20130101); H04L 41/5009 (20130101); H03M
13/2771 (20130101); H04B 7/2687 (20130101); H04L
27/3416 (20130101); H04L 69/40 (20130101); H04N
21/41415 (20130101); H04N 21/4341 (20130101); H04N
21/458 (20130101); H03M 13/2764 (20130101); G02B
13/005 (20130101); G06F 9/465 (20130101); H04L
12/417 (20130101); H04L 65/605 (20130101); H04N
5/46 (20130101); H04N 21/440218 (20130101); H04N
21/6582 (20130101); H03M 13/00 (20130101); G06F
1/1639 (20130101); G06F 9/5033 (20130101); G11B
20/10425 (20130101); H03M 13/2993 (20130101); H04L
25/03343 (20130101); H04L 49/90 (20130101); H04N
1/32106 (20130101); H04N 1/40 (20130101); H04N
5/2327 (20130101); H04N 21/2383 (20130101); H04N
21/42607 (20130101); H04N 21/4318 (20130101); H04N
21/433 (20130101); H04N 21/47211 (20130101); H04B
7/2628 (20130101); G03G 15/5075 (20130101); H03M
13/23 (20130101); H04B 7/18582 (20130101); H04L
9/304 (20130101); H04L 47/824 (20130101); H04N
21/6175 (20130101); H04L 65/607 (20130101); H04N
21/2543 (20130101); H04N 21/4314 (20130101); H04W
56/00 (20130101); H04L 47/72 (20130101); H04L
47/12 (20130101); H04M 3/16 (20130101); H04M
3/4283 (20130101); H04N 1/1935 (20130101); H04W
52/30 (20130101); H04W 76/12 (20180201); H04N
9/7925 (20130101); H04L 65/4061 (20130101); H04M
1/72415 (20210101); H04N 5/23267 (20130101); H04L
45/24 (20130101); G01S 5/021 (20130101); H04J
3/0655 (20130101); H04L 1/187 (20130101); H04N
19/115 (20141101); H04N 19/70 (20141101); H04S
7/301 (20130101); H04W 92/02 (20130101); H04L
25/03866 (20130101); G06F 3/0481 (20130101); H03M
7/4006 (20130101); H04L 1/0002 (20130101); H04L
43/50 (20130101); H04L 65/1069 (20130101); H04N
21/42653 (20130101); H04W 52/0225 (20130101); H04L
41/0806 (20130101); G06F 1/1626 (20130101); H04L
25/497 (20130101); H04N 1/031 (20130101); H04N
19/194 (20141101); H04L 1/0041 (20130101); H04L
47/745 (20130101); H04N 9/642 (20130101); H04L
41/5087 (20130101); G01S 5/06 (20130101); H04L
1/0057 (20130101); H04L 29/06027 (20130101); H04M
7/1295 (20130101); H04N 1/0318 (20130101); H04N
5/64 (20130101); H04N 9/641 (20130101); H04L
69/166 (20130101); H03M 13/2903 (20130101); H04L
41/5035 (20130101); H04W 74/008 (20130101); G09G
5/363 (20130101); H01L 27/14625 (20130101); H04L
47/11 (20130101); H04N 5/76 (20130101); H04N
21/4312 (20130101); H04Q 3/60 (20130101); H04L
51/28 (20130101); G06F 21/305 (20130101); H04L
12/462 (20130101); H04L 29/06 (20130101); H04L
67/32 (20130101); H04L 69/163 (20130101); H04N
19/152 (20141101); H04N 19/174 (20141101); H04W
8/265 (20130101); H04L 9/085 (20130101); H04N
7/17327 (20130101); H04N 21/84 (20130101); H04W
52/0216 (20130101); H04W 64/00 (20130101); H04L
47/822 (20130101); H04L 1/0015 (20130101); H04L
25/4902 (20130101); H04N 5/272 (20130101); H04N
19/51 (20141101); H04N 21/234318 (20130101); H04N
21/2368 (20130101); H04N 21/4143 (20130101); H04N
21/4181 (20130101); H04N 21/43622 (20130101); H04L
47/15 (20130101); G11B 20/10009 (20130101); H03M
7/3082 (20130101); H03M 13/6356 (20130101); H04N
5/23248 (20130101); H04L 47/27 (20130101); H04L
65/1043 (20130101); H04N 21/4263 (20130101); H04W
76/20 (20180201); H04N 21/2547 (20130101); H04L
67/1034 (20130101); H04N 19/527 (20141101); H04N
21/854 (20130101); H04L 69/329 (20130101); H04L
2012/40273 (20130101); H04Q 2213/13095 (20130101); H04W
74/0833 (20130101); H04W 76/45 (20180201); H04J
3/0658 (20130101); H04L 51/04 (20130101); H04N
2201/03133 (20130101); H04Q 2213/13349 (20130101); H04M
2203/2088 (20130101); H04N 2201/3212 (20130101); H04L
41/0206 (20130101); H04Q 2213/13076 (20130101); G06F
2209/5018 (20130101); G06F 2221/2115 (20130101); H04N
2201/03187 (20130101); H04N 5/04 (20130101); H04Q
2213/13039 (20130101); H04W 4/12 (20130101); H04M
2203/5054 (20130101); G03G 2215/00063 (20130101); H04N
5/073 (20130101); H04N 5/775 (20130101); H04N
2201/03112 (20130101); H04W 28/18 (20130101); H04W
52/0248 (20130101); H04M 11/06 (20130101); H04W
80/00 (20130101); H04M 1/724 (20210101); H04N
5/126 (20130101); H04W 76/30 (20180201); H04W
88/06 (20130101); H04N 5/445 (20130101); G11B
20/22 (20130101); H04N 2201/3222 (20130101); H04W
88/085 (20130101); H04W 92/12 (20130101); H04N
5/907 (20130101); H04N 2201/03145 (20130101); H04Q
2213/1304 (20130101); G03G 2215/00067 (20130101); H04L
69/14 (20130101); H04B 1/707 (20130101); H04W
4/10 (20130101); H04W 48/08 (20130101); G06F
2221/2105 (20130101); H04N 5/85 (20130101); H04N
2201/3274 (20130101); H04W 24/00 (20130101); H04W
84/12 (20130101); H04L 65/1093 (20130101); H04L
29/12339 (20130101); H04Q 2213/1302 (20130101); H04W
4/06 (20130101); H04W 8/245 (20130101); H04W
52/0274 (20130101); G03G 2215/00109 (20130101); G03G
2215/0164 (20130101); H04N 9/8042 (20130101); H04W
8/26 (20130101); H04W 40/00 (20130101); H04W
84/042 (20130101); H04W 88/16 (20130101); H04N
2201/0094 (20130101); H04Q 2213/13298 (20130101); H04W
72/042 (20130101); H04W 88/08 (20130101); H04L
61/2503 (20130101); H04N 5/66 (20130101); H04N
2201/0091 (20130101); H04W 28/26 (20130101); H04L
1/0075 (20130101); H04L 65/1016 (20130101); H04W
40/02 (20130101); H04Q 2213/13109 (20130101); H04W
72/1268 (20130101); H04W 76/10 (20180201); Y10S
370/906 (20130101); H04L 2012/40215 (20130101); H04N
2201/03141 (20130101); H04L 43/0829 (20130101); H04N
7/0122 (20130101); Y10S 707/99943 (20130101); H04L
2001/0098 (20130101); H04N 5/38 (20130101); Y02D
30/70 (20200801); Y10S 370/907 (20130101); H04W
72/1252 (20130101); H04W 76/18 (20180201); H04L
41/042 (20130101); H04M 3/42221 (20130101); H04N
5/45 (20130101); H04N 2201/02493 (20130101); H04L
41/0604 (20130101) |
Current International
Class: |
H03M
7/30 (20060101); H04N 5/00 (20060101); H04L
27/02 (20060101); H04N 7/24 (20060101); H04L
1/00 (20060101); H03M 007/00 () |
Field of
Search: |
;341/50,51,67 |
References Cited
[Referenced By]
U.S. Patent Documents
Foreign Patent Documents
Other References
Alan W. Nordstrom, "An Optimum Nonlinear Code", Information and
Control 11, (1968), pp. 613-616 & 618-619. .
Klein et al., "A Systematic (16, 8) Code for Correcting Double
Errors, and Detecting Random Triple Errors", pp. 284-288. .
Tee et al., "Iterative Decoding of Systematic Binary Algebraic
Block Codes", pp. 842-846, no date. .
Hammons, Jr. et al., "The Z4-Linearity of Kerdock, Preparata,
Goethals, and Related Codes", 8097 IEEE Transactions on Information
Theory 40(1994) Mar., No. 2, New York, pp. 301-319, no
date..
|
Primary Examiner: JeanPierre; Peguy
Assistant Examiner: Lauture; Joseph
Parent Case Text
RELATED APPLICATIONS
This application is a continuation-in-part of U.S. application Ser.
No. 10/345,609 filed Jan. 16, 2003 now abandoned which is a
continuation-in-part of U.S. application Ser. No. 10/282,394 filed
Oct. 29, 2002 which is a continuation-in-part of U.S. application
Ser. No. 10/011,333 filed Dec. 3, 2001 now U.S. Pat. No. 6,563,436
which claims the benefit of U.S. Provisional Application No.
60/324,096 filed on Sep. 22, 2001. U.S. application Ser. No.
09/804,262 contains disclosure similar in part to disclosure of
this application.
Claims
We claim:
1. A data receiving method comprising: receiving fields each having
a field sync segment and a plurality of data segments, wherein the
field sync segments contain map and count information, wherein the
map information designates locations of first and second data
segments containing respective first and second data in the fields,
and wherein the count information indicates a subsequent field in
which the map information changes; processing the map information
to produce map outputs; and, locating the first and second data
segments according to the map outputs.
2. The data receiving method of claim 1 wherein the fields comprise
alternating even and odd fields, wherein the map and count
information in each of the even and odd fields comprises: a current
map to be used in locating the first and second data segments in
received fields; a next map to be used in locating the first and
second data contained in the subsequent field; and, a frame count
indicating the subsequent field.
3. The data receiving method of claim 2 wherein the map and count
information contained in one of the even and odd fields is
scrambled, and wherein the processing of the map information to
produce map outputs comprises de-scrambling the scrambled map and
count information.
4. The data receiving method of claim 3 wherein the map and count
information contained in another of the even and odd fields is
unscrambled, wherein the unscrambled map and count information
comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16,
and wherein the scrambled map and count information comprises the
sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4.
5. The data receiving method of claim 2 wherein the processing of
the map information to produce map outputs comprises averaging the
map information contained in one of the odd fields with the map
information contained in a corresponding one of the even fields to
produce the map outputs.
6. The data receiving method of claim 5 wherein the map and count
information contained in one of the even and odd fields is
scrambled, and wherein the processing of the map information to
produce map outputs comprises de-scrambling the scrambled map and
count information.
7. The data receiving method of claim 6 wherein the map and count
information contained in another of the even and odd fields is
unscrambled, wherein the unscrambled map and count information
comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16,
and wherein the scrambled map and count information comprises the
sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4.
8. The data receiving method of claim 2 wherein the map and count
information contained in each of the even and odd fields comprises
a map data unit {A.sub.0 B.sub.0 C.sub.0 } and a map data unit
{A.sub.e B.sub.e C.sub.e }, wherein the map data unit {A.sub.0
B.sub.0 C.sub.0 } contains the current map and part of the frame
count, and wherein the map data unit {A.sub.e B.sub.e C.sub.e }
contains the next map and the rest of the frame count.
9. The data receiving method of claim 8 wherein A.sub.0, B.sub.0,
C.sub.0, A.sub.e, B.sub.e, and C.sub.e are map data sub-units,
wherein the map and count information contained in each of the even
and odd fields further comprises first, second, and third Kerdock
Code vectors, wherein the first Kerdock Code vector comprises the
map dats sub-units A.sub.0 and B.sub.0 and a plurality of parity
bits P.sub.1, wherein the second Kerdock Code vector comprises the
map data sub-units C.sub.o and A.sub.e and a plurality of parity
bits P.sub.2,
10. The data receiving method of claim 9 further comprising
decoding the first, second, and third Kerdock Code vectors by use
of a 16/8 Kerdock decoder.
11. The data receiving method of claim 10 wherein decoding relies
on data elements substantially as set out in Appendix A.
12. The data receiving method of claim 10 wherein decoding relies
on data elements substantially as set out in Appendix B.
13. The data receiving method of claim 1 wherein the processing of
the map information to produce map outputs comprises Kerdock
decoding the map and count information.
14. The data receiving method of claim 1 wherein the fields
comprise alternating odd and even fields, and wherein the map and
count information comprises: a current map and part of a frame
count contained in one of the odd and even fields; and, a next map
and the rest of the frame count contained in the other of the odd
and even fields, wherein the current map is used to locate the
first and second data segments contained in received fields,
wherein the next map is used to locate the first and second data
segments contained in the subsequent field, and wherein the frame
count indicates the subsequent field.
15. The data receiving method of claim 14 wherein the map and count
information contained in one of the even and odd fields comprises a
map data unit {A.sub.0 B.sub.0 C.sub.0 }, wherein the map and count
information contained in the other of the even and odd fields
comprises a map data unit {A.sub.e B.sub.e C.sub.e }, wherein the
map data unit {A.sub.0 B.sub.0 C.sub.0 } contains the current map
and part of the frame count, and wherein the map data unit {A.sub.e
B.sub.e C.sub.e } contains the next map and the rest of the frame
count.
16. The data receiving method of claim 15 wherein the map data unit
{A.sub.0 B.sub.0 C.sub.0 } comprises a first 64 bit Kerdock Code
vector, and wherein the map data unit {A.sub.e B.sub.e C.sub.e }
comprises a second 64 bit Kerdock Code vector.
17. The data receiving method of claim 16 further comprising
inverting only one of the first and second 64 bit Kerdock code
vectors.
18. The data receiving method of claim 17 further comprising
combining the inverted one of the first and second 64 bit Kerdock
code vectors and the non-inverted one of the first and second 64
bit Kerdock code vectors.
19. The data receiving method of claim 16 further comprising
decoding the first and second Kerdock code vectors by use of a
64/12 Kerdock decoder.
20. The data receiving method of claim 14 wherein the processing of
the map information to produce map outputs comprises Kerdock
decoding the map and count information.
21. The data receiving method of claim 14 further comprising
inverting only one of the current and next maps.
22. The data receiving method of claim 21 further comprising
combining the inverted one of the current and next maps and the
non-inverted one of the current and next maps.
23. The data receiving method of claim 1 wherein a frame comprises
two of the fields, wherein the map information is contained in the
frame that leads a first frame to which it is to be applied by n
frames, and wherein n is an integer greater than or equal to
one.
24. The data receiving method of claim 1 wherein each pair of
successive fields comprises a frame, wherein the map information
comprises a current map and a next map, wherein the current map is
used to locate the first and second data segments contained in
current frames, wherein the next map is used to locate the first
and second data segments contained in future frames, and wherein
the count information comprises a predetermined value to indicate
that the current map and the next map are the same.
25. The data receiving method of claim 24 wherein the predetermined
value is 1111.
26. The data receiving method of claim 1 wherein the processing of
the map information comprises averaging the map information
contained in one field with the map information contained in
another field.
27. The data receiving method of claim 1 wherein the processing of
the map information comprises inverting the map information
contained in a field but not inverting the map information
contained in a next subsequent field.
28. The data receiving method of claim 1 wherein the fields
comprise alternating odd fields and even fields, wherein a portion
of the count information is contained in one of the odd fields and
the even fields, and wherein the remainder of the count information
is contained in the next field.
29. The data receiving method of claim 1 wherein the processing of
the map information comprises Kerdock decoding the map
information.
30. The data receiving method of claim 1 wherein the map and count
information contained in one field is scrambled, and wherein the
processing of the map information comprises de-scrambling the
scrambled map and count information.
31. The data receiving method of claim 30 wherein the map and count
information contained in another field is unscrambled, wherein the
unscrambled map and count information comprises the sequence of 1 2
3 4 5 6 7 8 9 10 11 12 13 14 15 16, and wherein the scrambled map
and count information comprises the sequence of 13 9 5 1 14 10 6 2
15 11 7 3 16 12 8 4.
32. A data receiving method comprising: receiving frames having
frame sync segments and data segments, wherein each of the frame
sync segments contains map and count information, wherein the map
information designates locations of first and second data segments
containing respective first and second data in the frames, and
wherein the count information indicates a subsequent frame in which
the map information changes, and wherein the map and count
information is encoded; decoding the map and count information;
storing the decoded map and count information in a memory; and,
locating the first and second data segments in received frames
according to the decoded map information.
33. The data receiving method of claim 32 wherein the decoding of
the map and count information comprises providing a reliability
indication specifying the reliability with which the map and count
information is decoded, wherein the storing of the decoded map and
count information comprises: storing the map information in the
memory only if the reliability indication is sufficiently high and
otherwise not changing the memory; and, storing the count
information in the memory only if the reliability indication is
sufficiently high and otherwise changing the count information in
response to a frame sync signal.
34. The data receiving method of claim 33 wherein the frames each
contain an even field and an odd field, wherein the map and count
information in each of the even and odd fields comprises: a current
map to be used in locating the first and second data segments in
received fields; a next map to be used in locating the first and
second data contained in the subsequent field; and, a frame count
indicating the subsequent field.
35. The data receiving method of claim 34 wherein the map and count
information contained in one of the even fields and the odd fields
is scrambled, and wherein the decoding of the map and count
information comprises de-scrambling the scrambled map and count
information.
36. The data receiving method of claim 35 wherein the map and count
information contained in the other of the even field and the odd
field is unscrambled, wherein the unscrambled map and count
information comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16, and wherein the scrambled map and count information
comprises the sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8
4.
37. The data receiving method of claim 34 wherein the decoding of
the map and count information comprises averaging the map
information contained in one of the odd fields with the map
information contained in a corresponding one of the even
fields.
38. The data receiving method of claim 37 wherein the map and count
information contained in one of the even fields and the odd fields
is scrambled, and wherein the decoding of the map and count
information comprises de-scrambling the scrambled map and count
information.
39. The data receiving method of claim 38 wherein the map and count
information contained in the other of the even field and the odd
field is unscrambled, wherein the unscrambled map and count
information comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16, and wherein the scrambled map and count information
comprises the sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8
4.
40. The data receiving method of claim 34 wherein the map and count
information contained in each of the even and odd fields comprises
a map data unit {A.sub.0 B.sub.0 C.sub.0 } and a map data unit
{A.sub.e B.sub.e C.sub.e }, wherein the map data unit {A.sub.0
B.sub.0 C.sub.0 } contains the current map and part of the frame
count, and wherein the map data unit {A.sub.e B.sub.e C.sub.e }
contains the next map and the rest of the frame count.
41. The data receiving method of claim 40 wherein A.sub.0, B.sub.0,
C.sub.0, A.sub.e, B.sub.e, and C.sub.e are map data sub-units,
wherein the map and count information contained in each of the even
and odd fields further comprises first, second, and third Kerdock
Code vectors, wherein the first Kerdock Code vector comprises the
map data sub-units A.sub.0 and B.sub.0 and a plurality of parity
bits P.sub.1, wherein the second Kerdock Code vector comprises the
map data sub-units C.sub.0 and A.sub.e and a plurality of parity
bits P.sub.2, and wherein the third Kerdock Code vector comprises
the map data sub-units B.sub.e and C.sub.e and a plurality of
parity bits P.sub.3.
42. The data receiving method of claim 41 further comprising
decoding the first, second, and third Kerdock Code vectors by use
of a 16/8 Kerdock decoder.
43. The data receiving method of claim 42 wherein decoding relies
on data elements substantially as set out in Appendix A.
44. The data receiving method of claim 42 wherein decoding relies
on data elements substantially as set out in Appendix B.
45. The data receiving method of claim 34 wherein the decoding of
the map and count information comprises Kerdock decoding the map
and count information.
46. The data receiving method of claim 45 wherein the map and count
information contained in one of the even fields and the odd fields
is scrambled, and wherein the decoding of the map and count
information comprises de-scrambling the scrambled map and count
information.
47. The data receiving method of claim 46 wherein the map and count
information contained in the other of the even field and the odd
field is unscrambled, wherein the unscrambled map and count
information comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16, and wherein the scrambled map and count information
comprises the sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8
4.
48. The data receiving method of claim 45 wherein the decoding of
the map and count information comprises averaging the map
information contained in one of the odd fields with the map
information contained in a corresponding one of the even
fields.
49. The data receiving method of claim 48 wherein the map and count
information contained in one of the even fields and the odd fields
is scrambled, and wherein the decoding of the map and count
information comprises de-scrambling the scrambled map and count
information.
50. The data receiving method of claim 49 wherein the map and count
information contained in the other of the even field and the odd
field is unscrambled, wherein the unscrambled map and count
information comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16, and wherein the scrambled map and count information
comprises the sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8
4.
51. The data receiving method of claim 45 wherein the Kerdock
decoding of the map and count information comprises Kerdock
decoding the map and count information by use of a 16/8 Kerdock
decoder.
52. The data receiving method of claim 33 wherein each of the
frames comprises an odd field and an even field, and wherein the
map and count information comprises: a current map and part of a
frame count contained in one of the odd fields and the even fields;
and, a next map and the rest of the frame count contained in the
other of the odd fields and the even fields, wherein the current
map is used to locate the first and second data segments contained
in received fields, wherein the next map is used to locate the
first and second data segments contained in the subsequent field,
and wherein the frame count indicates the subsequent field.
53. The data receiving method of claim 52 wherein the map and count
information contained in one of the even and odd fields comprises a
map data unit {A.sub.0 B.sub.0 C.sub.0 }, wherein the map and count
information contained in the other of the even and odd fields
comprises a map data unit {A.sub.e B.sub.e C.sub.e }, wherein the
map data unit {A.sub.0 B.sub.0 C.sub.0 } contains the current map
and part of the frame count, and wherein the map data unit {A.sub.e
B.sub.e C.sub.e } contains the next map and the rest of the frame
count.
54. The data receiving method of claim 53 wherein the map data unit
{A.sub.0 B.sub.0 C.sub.0 } comprises a first 64 bit Kerdock Code
vector, and wherein the map data unit {A.sub.e B.sub.e C.sub.e }
comprises a second 64 bit Kerdock Code vector.
55. The data receiving method of claim 54 further comprising
inverting only one of the first and second 64 bit Kerdock code
vectors.
56. The data receiving method of claim 55 further comprising
combining the inverted one of the first and second 64 bit Kerdock
code vectors and the non-inverted one of the first and second 64
bit Kerdock code vectors.
57. The data receiving method of claim 54 further comprising
decoding the first and second Kerdock Code vectors by use of a
64/12 Kerdock decoder.
58. The data receiving method of claim 52 wherein the processing of
the map information to produce map outputs comprises Kerdock
decoding the map and count information.
59. The data receiving method of claim 58 wherein the Kerdock
decoding of the map and count information comprises Kerdock
decoding the map and count information by use of a 64/12 Kerdock
decoder.
60. The data receiving method of claim 52 further comprising
inverting only one of the current and next maps.
61. The data receiving method of claim 60 further comprising
combining the inverted one of the current and next maps and the
non-inverted one of the current and next maps current and next
maps.
62. A data transmitting method comprising: inserting map and count
information into field sync segments of fields also containing data
segments, wherein the map information designates locations of first
and second data segments containing respective first and second
data in the fields, and wherein the count information indicates a
subsequent field in which the map information changes; inserting
the first and second data in the respective first and second data
segments as designated by the map information; and, transmitting
the fields.
63. The data transmitting method of claim 62 wherein the fields
comprise alternating even and odd fields, wherein the inserting of
map and count information into field sync segments of fields
comprises inserting the map and count information into field sync
segments of the even and odd fields, wherein the map information
inserted into the even fields and into the odds fields comprises: a
current map to be used in locating the first and second data
contained in transmitted fields; a next map to be used in locating
the first and second data contained in the subsequent field; and, a
frame count indicating the subsequent field.
64. The data transmitting method of claim 63 further comprising
scrambling the map and count information, and wherein the inserting
of map and count information into field sync segments of fields
comprises inserting the scrambled map and count information into
the field sync segment of one of the even fields and the odd
fields.
65. The data transmitting method of claim 64 wherein the map and
count information contained in the other of the even field and the
odd field is unscrambled, wherein the unscrambled map and count
information comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16, and wherein the scrambled map and count information
comprises the sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8
4.
66. The data transmitting method of claim 63 wherein the map and
count information contained in each of the even and odd fields
comprises a map data unit {A.sub.0 B.sub.0 C.sub.0 } and a map data
unit {A.sub.e B.sub.e C.sub.e }, wherein the map data unit {A.sub.0
B.sub.0 C.sub.0 } contains the current map and part of the frame
count, and wherein the map data unit {A.sub.e B.sub.e C.sub.e }
contains the next map and the rest of the frame count.
67. The data transmitting method of claim 66 wherein A.sub.0,
B.sub.0, C.sub.0, A.sub.e, B.sub.e, and C.sub.e are map data
sub-units, wherein the map and count information contained in each
of the even and odd fields further comprises first, second, and
third Kerdock Code vectors, wherein the first Kerdock Code vector
comprises the map data sub-units A.sub.0 and B.sub.0 and a
plurality of parity bits P.sub.1, wherein the second Kerdock Code
vector comprises the map dats sub-units C.sub.0 and A.sub.e and a
plurality of parity bits P.sub.2, and wherein the third Kerdock
Code vector comprises the map data sub-units B.sub.e and C.sub.e
and a plurality of parity bits P.sub.3.
68. The data transmitting method of claim 67 further comprising
using a 16/8 Kerdock encoder for encoding the map and count
information to produce the first, second, and third Kerdock Code
vectors.
69. The data transmitting method of claim 68 wherein the encoding
relies on data elements substantially as set out in Appendix A.
70. The data transmitting method of claim 68 wherein encoding
relies on data elements substantially as set out in Appendix B.
71. The data transmitting method of claim 62 wherein the fields
comprise alternating even and odd fields, and wherein the map and
count information comprises: a current map and part of a frame
count contained in one of the odd fields and the even fields; and,
a next map and the rest of the frame count contained in the other
of the odd fields and the even fields, wherein the current map is
used to locate the first and second data contained in the
transmitted fields, wherein the next map is used to locate the
first and second data contained in the subsequent field, and
wherein the frame count indicates the subsequent field.
72. The data transmitting method of claim 71 wherein the map and
count information contained in one of the even and odd fields
comprises a map data unit {A.sub.0 B.sub.0 C.sub.0 }, wherein the
map and count information contained in the other of the even and
odd fields comprises a map data unit {A.sub.e B.sub.e C.sub.e },
wherein the map data unit {A.sub.0 B.sub.0 C.sub.0 } contains the
current map and part of the frame count, and wherein the map data
unit {A.sub.e B.sub.e C.sub.e } contains the next map and the rest
of the frame count.
73. The data transmitting method of claim 72 wherein the map data
unit {A.sub.0 B.sub.0 C.sub.0 } comprises a first 64 bit Kerdock
Code vector, and wherein the map data unit {A.sub.e B.sub.e C.sub.e
} comprises a second 64 bit Kerdock Code vector.
74. The data transmitting method of claim 73 further comprising
inverting only one of the first and second 64 bit Kerdock code
vectors.
75. The data transmitting method of claim 73 further comprising
using a 64/12 Kerdock encoder for encoding the map and count
information to produce the first and second Kerdock Code
vectors.
76. The data transmitting method of claim 71 further comprising
inverting only one of the current and next maps.
77. The data transmitting method of claim 62 wherein the inserting
of map and count information into field sync segments of fields
comprises encoding the map and count information and inserting the
encoded map and count information into the field sync segments of
fields.
78. The data transmitting method of claim 77 wherein the fields
comprise alternating even and odd fields, wherein the inserting of
map and count information into field sync segments of fields
comprises inserting the map and count information into field sync
segments of the even and odd fields, wherein the map information
inserted into the even fields and into the odds fields comprises: a
current map to be used in locating the first and second data
contained in transmitted fields; a next map to be used in locating
the first and second data contained in the subsequent field; and, a
frame count indicating the subsequent field.
79. The data transmitting method of claim 78 further comprising
scrambling the map and count information, and wherein the inserting
of map and count information into field sync segments of fields
comprises inserting the scrambled map and count information into
the field sync segment of one of the even fields and the odd
fields.
80. The data transmitting method of claim 79 wherein the map and
count information contained in the other of the even field and the
odd field is unscrambled, wherein the unscrambled map and count
information comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16, and wherein the scrambled map and count information
comprises the sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8
4.
81. The data transmitting method of claim 78 wherein the encoding
of the map and count information comprises Kerdock encoding the map
and count information.
82. The data transmitting method of claim 81 wherein the Kerdock
encoding of the map and count information comprises Kerdock
encoding of the map and count information by use of a 16/8 Kerdock
encoder.
83. The data transmitting method of claim 81 further comprising
scrambling the map and count information, and wherein the inserting
of map and count information into field sync segments of fields
comprises inserting the scrambled map and count information into
the field sync segment of one of the even fields and the odd
fields.
84. The data transmitting method of claim 83 wherein the map and
count information contained in the other of the even field and the
odd field is unscrambled, wherein the unscrambled map and count
information comprises the sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16, and wherein the scrambled map and count information
comprises the sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8
4.
85. The data transmitting method of claim 77 wherein the fields
comprise alternating even and odd fields, and wherein the map and
count information comprises: a current map and part of a frame
count contained in one of the odd fields and the even fields; and,
a next map and the rest of the frame count contained in the other
of the odd fields and the even fields, wherein the current map is
used to locate the first and second data contained in the
transmitted fields, wherein the next map is used to locate the
first and second data contained in the subsequent field, and
wherein the frame count indicates the subsequent field.
86. The data transmitting method of claim 85 wherein the encoding
of the map and count information comprises Kerdock encoding the map
and count information.
87. The data transmitting method of claim 85 further comprising
inverting only one of the next map and current map.
88. The data transmitting method of claim 85 wherein the Kerdock
encoding of the map and count information comprises Kerdock
encoding of the map and count information by use of a 64/12 Kerdock
encoder.
89. The data transmitting method of claim 85 further comprising
inverting only one of the current and next maps.
90. The data transmitting method of claim 62 wherein a frame
comprises two of the fields, wherein the map information is
contained in the frame that leads a first frame to which it is to
be applied by n frames, and wherein n is an integer greater than or
equal to one.
91. The data transmitting method of claim 62 wherein each pair of
successive fields comprises a frame, wherein the map information
comprises a current map and a next map, wherein the current map
indicates the first and second data segments contained in current
frames, wherein the next map indicates the first and second data
segments contained in future frames, and wherein the count
information comprises a predetermined value to indicate that the
current map and the next map are the same.
92. The data transmitting method of claim 91 wherein the
predetermined value is 1111.
93. The data transmitting method of claim 62 wherein the inserting
of map and count information into field sync segments comprises
inverting the map information to be contained in one field but not
inverting the map information contained in a next subsequent
field.
94. The data transmitting method of claim 62 wherein the fields
comprise alternating odd fields and even fields, wherein a portion
of the count information is contained in one of the odd fields and
the even fields, and wherein the remainder if the count information
is contained in the next field.
95. The data transmitting method of claim 62 comprising Kerdock
encoding the map information.
96. The data transmitting method of claim 62 comprising scrambling
the map and count information contained in one field.
97. The data transmitting method of claim 96 wherein the map and
count information contained in another field is unscrambled,
wherein the unscrambled map and count information comprises the
sequence of 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16, and wherein the
scrambled map and count information comprises the sequence of 13 9
5 1 14 10 6 2 15 11 7 3 16 12 8 4.
98. A data receiving method comprising: receiving current and next
maps in respective successive fields of an ATSC compliant signal,
wherein the current map indicates location of data in a current
field and the next map indicates location of data in a subsequent
field; inverting only one of the current and next maps; combining
the inverted one of the current and next maps and the non-inverted
other of the current and next maps; and, determining map
information from the combined maps.
99. The data receiving method of claim 98 wherein the received
current and next maps are in the form of Kerdock code vectors.
100. The data receiving method of claim 99 wherein the Kerdock code
vectors each comprises a 64 bit Kerdock code vector representing 12
bits of data.
101. The data receiving method of claim 100 wherein the 12 bits
comprises at least some bits that represent a count down.
102. The data receiving method of claim 100 wherein the 12 bits
represented by the Kerdock code vector corresponding to the current
map comprises a portion of a count down, and wherein the 12 bits
represented by the Kerdock code vector corresponding to the next
map comprises the remainder of the count down.
103. The data receiving method of claim 98 wherein the determining
of the map information comprises correlating the received current
and next maps with stored vectors.
104. The data receiving method of claim 103 wherein the received
current and next maps are in the form of Kerdock code vectors, and
wherein the stored vectors are Kerdock code vectors.
105. The data receiving method of claim 104 wherein the Kerdock
code vectors each comprises a 64 bit Kerdock code vector
representing 12 bits of data.
106. The data receiving method of claim 105 wherein the 12 bits
comprises at least some bits that represent a count down.
107. The data receiving method of claim 105 wherein the 12 bits
represented by the Kerdock code vector corresponding to the current
map comprises a portion of a count down, and wherein the 12 bits
represented by the Kerdock code vector corresponding to the next
map comprises the remainder of the count down.
108. A data transmitting method comprising: inverting only one of a
current map and a next map, wherein the current map indicates
location of data in a current field and the next map indicates
location of data in subsequent field; inserting the non-inverted
one of the current map and the next map and the inverted one of the
current map and the next map into corresponding fields; and,
transmitting the fields.
109. The data transmitting method of claim 108 further comprising
encoding the non-inverted one of the current map and the next map
and the inverted one of the current map and the next map as
corresponding Kerdock code vectors.
110. The data transmitting method of claim 109 wherein the Kerdock
code vectors each comprises a 64 bit Kerdock code vector
representing 12 bits of data.
111. The data transmitting method of claim 110 wherein the 12 bits
comprises at least some bits that represent a count down.
112. The data transmitting method of claim 110 wherein the 12 bits
represented by the Kerdock code vector corresponding to the current
map comprises a portion of a count down, and wherein the 12 bits
represented by the Kerdock code vector corresponding to the next
map comprises the remainder of the count down.
113. A data receiving method comprising: receiving frames each
comprising an odd field and an even field, wherein each of the
fields has a field sync segment and a plurality of data segments,
wherein the field sync segments contain map and count information,
wherein the map and count information comprises a current map, a
next map, and a frame count, wherein the current map is used to
locate data segments that are contained in current frames and that
are coded at different rates, wherein the next map is used to
locate data segments that are contained in future frames and that
are coded at different rates, wherein the count information
indicates a subsequent frame in which the map information changes,
wherein the current map is contained in a frame that leads the
first frame to which it is to be applied by n frames, and wherein n
is an integer greater than or equal to one; processing the map
information to produce map outputs; and, locating the data segments
according to the map outputs.
114. The data receiving method of claim 113 wherein the map and
count information in one of the odd and even fields comprises the
current map and part of the frame count, and wherein the map and
count information in the other of the odd and even fields comprises
the next map and the rest of the frame count.
115. The data receiving method of claim 113 wherein the count
information has a predetermined value to indicate that the current
map and the next map are the same.
116. The data receiving method of claim 115 wherein the
predetermined value is 1111.
117. The data receiving method of claim 113 wherein the processing
of the map information comprises averaging the map information
contained in one field with the map information contained in
another field.
118. The data receiving method of claim 113 wherein the processing
of the map information to produce map outputs comprises inverting
the map information contained in one of the odd and even fields but
not in the other of the odd and even fields.
119. The data receiving method of claim 113 wherein a portion of
the count information is contained in one field, and wherein the
remainder of the count information is contained in a next
subsequent field.
120. The data receiving method of claim 113 wherein the processing
of the map information comprises Kerdock decoding the map
information.
121. The data receiving method of claim 113 wherein n is equal to
one.
122. A data transmitting method comprising: inserting map and count
information into field sync segments of odd and even fields of
frames, wherein the map and count information comprises a current
map, a next map, and a frame count, wherein the current map
identifies data segments that are contained in current frames and
that are coded at different rates, wherein the next map identifies
data segments that are contained in future frames and that are
coded at different rates, wherein the count information indicates a
subsequent frame in which the map information changes, wherein the
current map is contained in a frame that leads the first frame to
which it is to be applied by n frames, and wherein n is an integer
greater than or equal to one; inserting the data segments into the
odd and even fields of the frames; and, transmitting the odd and
even fields of the frames.
123. The data transmitting method of claim 122 wherein the map and
count information in one of the odd and even fields comprises the
current map and part of the frame count, and wherein the map and
count information in the other of the odd and even fields comprises
the next map and the rest of the frame count.
124. The data transmitting method of claim 122 wherein the count
information has a predetermined value to indicate that the current
map and the next map are the same.
125. The data transmitting method of claim 124 wherein the
predetermined value is 1111.
126. The data transmitting method of claim 122 further comprising
inverting the map information contained in one of the odd and even
fields but not in the other of the odd and even fields.
127. The data transmitting method of claim 122 wherein a portion of
the count information is contained in one field, and wherein the
remainder of the count information is contained in a next
subsequent field.
128. The data transmitting method of claim 122 wherein n is equal
to one.
129. The data transmitting method of claim 122 comprising Kerdock
encoding the map information.
Description
TECHNICAL FIELD OF THE INVENTION
The present invention relates to the coding and decoding of data,
such as map data that indicate the distribution of first and second
data segments in a transmitted data field.
BACKGROUND OF THE INVENTION
The ATSC digital television standard presently provides for the
transmission of successive data fields each comprising 313 segments
extending over a 24.2 ms time interval. FIG. 1 discloses an
exemplary format for a data field according to this standard. The
first segment of each field is a field sync segment. The field sync
segment is composed of four two-level segment sync symbols and
space for 828 other two-level symbols. A portion of this space is
used for a field sync, and another portion of this field is
reserved. Except for the reserved portion, the information in the
frame sync segment does not change from field to field. Each of the
remaining segments of each field comprises four two-level segment
sync symbols and 828 n-level data symbols where n is currently
eight, although n could be other integers such as two, four,
sixteen, etc. Except for the segment sync portion, it is highly
likely that the data in the remaining segments of the fields change
from field to field.
As indicated by U.S. patent application Ser. No. 09/804,262 filed
on Mar. 13, 2001, there is presently some interest in extending the
ATSC digital television standard to allow a field to contain a mix
of more robustly coded data (referred to herein as E-VSB data) and
the data currently provided for in the standard (referred to herein
as VSB data). Preferably, the data mix is employed on a
segment-by-segment basis such that some segments of a field are
used to transmit VSB data exclusively and the remaining segments of
the field are used to transmit E-VSB segments exclusively. However,
it is possible that all data segments of a field could contain
either E-VSB data segments exclusively or VSB data segments
exclusively. Moreover, it is also possible that the E-VSB data
contained in some segments of a field may be coded with one robust
coding rate and that the E-VSB data in other segments of the field
may be coded at other robust coding rates.
As disclosed in the above mentioned '262 application, a map that
indicates which segments contain the more robust (E-VSB) data and
which segments contain standard VSB data is preferably provided by
the transmitter to the receiver so that the receiver can properly
decode and otherwise process the received VSB and E-VSB data.
Assuming that a field contains E-VSB data at different coding
rates, the map in that case must also designate the coding rates
that apply to the differently coded E-VSB data segments.
The '262 application describes one mapping system. Co-pending U.S.
patent application Ser. No. 10/011,900 filed Dec. 3, 2001 as well
as the '333 application describe another mapping system that
reliably identifies which segments contain first data (such as VSB
data) and which segments contain second data (such as E-VSB
data).
Multipath distortion, commonly found on terrestrial television
channels, can affect the ability of the receiver to properly
receive and process the map. For example, in the case of map data
transmitted in the reserved portion of the field sync segment, data
that tends to be random from field to field will be superimposed on
the map data if a ghost is a long ghost such that it occurs in the
data of a data segment rather than in the field sync segment. If
the map and its duplicate are transmitted in two successive field
sync segments, the map and its duplicate add with a high degree of
correlation when a map and its duplicate are averaged in a
receiver, but the superimposed data add with a much lower degree of
correlation. Thus, the map is more easily distinguished from the
data. Accordingly, the map is readily detectable.
On the other hand, if the ghost is a short ghost such that it
occurs in the frame sync segment of a field, frame sync symbols
that may not vary from field to field are superimposed on both the
map and the duplicate. Accordingly, while the map and its duplicate
add with a high degree of correlation, the superimposed field sync
symbols also add with a high degree of correlation. Thus, the map
cannot be easily distinguished from the field sync symbols.
Accordingly, the map is difficult to detect.
As indicated in the aforementioned '394 application, interleaving
is used to minimize the adverse effects of burst noise. However, as
discussed more fully below, there is a latency that is inherent
from the interleaving of the map that is used to indicate where in
a frame the receiver can find the various data. This latency
results because any one map, due to the interleaving, is spread out
over a number of frames so that the map cannot be completely
received until all of the frames over which it is spread are
received. As a result, the latency associated with interleaving
significantly increases receiver acquisition time.
Moreover, while interleaving generally protects against a noise
burst impairing all of the map bits or symbols in a particular
field, the effectiveness of such protection is reduced in the event
of multiple noise bursts in that or subsequent fields. Repeated
noise bursts could prevent effective reception of the map even
though the robust and other data in the frame are received without
appreciable degradation.
The present invention, in one of its embodiments, allows maps to be
more easily detected even in the presence of noise bursts.
SUMMARY OF THE INVENTION
In accordance with one aspect of the present invention, a data
receiving method comprises the following: receiving fields having a
field sync segment and a plurality of data segments, wherein the
field sync segments contain map and count information, wherein the
map information designates locations of first and second data
segments containing respective first and second data in the fields,
and wherein the count information indicates a subsequent field in
which the map information changes; processing the map information
to produce map outputs; and, locating the first and second data
segments according to the map outputs.
In accordance with another aspect of the present invention, a data
receiving method comprises the following: receiving frames having
frame sync segments and data segments, wherein each of the frame
sync segments contains map and count information, wherein the map
information designates locations of first and second data segments
containing respective first and second data in the frames, and
wherein the count information indicates a subsequent frame in which
the map information changes, and wherein the map and count
information is encoded; decoding the map and count information;
storing the decoded map and count information in a memory; and,
locating the first and second data segments in received frames
according to the decoded map information.
In accordance with yet another aspect of the present invention, a
data transmitting method comprises the following: inserting map and
count information into field sync segments of fields also
containing data segments, wherein the map information designates
locations of first and second data segments containing respective
first and second data in the fields, and wherein the count
information indicates a subsequent field in which the map
information changes; inserting the first and second data in the
respective first and second data segments as designated by the map
information; and, transmitting the fields.
In accordance with still another aspect of the present invention, a
data receiving method comprises the following: receiving current
and next maps in corresponding fields of an ATSC compliant signal,
wherein the current map indicates location of data in a current
field and the next map indicates location of data in subsequent
field; inverting only one of the current and next maps; combining
the inverted one of the current and next maps and the non-inverted
other of the current and next maps; and, determining map
information from the combined maps.
In accordance with a further aspect of the present invention, a
data transmitting method comprises the following: inverting only
one of a current map and a next map, wherein the current map
indicates location of data in a current field and the next map
indicates location of data in subsequent field; inserting the
non-inverted one of the current map and the next map and the
inverted one of the current map and the next map into corresponding
fields; and, transmitting the fields.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other features and advantages of the present invention
will become more apparent from a detailed consideration of the
invention when taken in conjunction with the drawings in which:
FIG. 1 is a diagram illustrating an exemplary format of a field as
defined in the ATSC digital television standard;
FIG. 2 is a schematic diagram of a map insertion system that
inserts a map into fields to be transmitted;
FIG. 3 shows an example of a convolutional interleaver that can be
used in the map insertion system shown in FIG. 2;
FIG. 4 is a schematic diagram of a portion of a receiver involved
in de-formatting a received field based upon a received map;
FIG. 5 shows an example of a convolutional de-interleaver that can
be used in the receiver portion shown in FIG. 4;
FIG. 6 shows a first embodiment of a Kerdock encoder that can be
used in the map insertion system shown in FIG. 2;
FIG. 7 shows a second embodiment of a Kerdock encoder that can be
used in the map insertion system shown in FIG. 2;
FIG. 8 shows a first embodiment of a Kerdock decoder that can be
used in the receiver portion shown in FIG. 4;
FIG. 9 shows a second embodiment of a Kerdock decoder that can be
used in the receiver portion shown in FIG. 4;
FIG. 10 shows a third embodiment of a Kerdock decoder that can be
used in the receiver portion shown in FIG. 4;
FIGS. 11A and 11B are flow charts illustrating the operation of the
receiver portion shown in FIG. 4;
FIGS. 12 and 13 are corresponding schematic diagrams of an
alternative map insertion system and an alternative receiver that
permit maps to be detected even in the presence of short static
ghosts;
FIGS. 14 and 15 are corresponding schematic diagrams of another
alternative map insertion system and another alternative receiver
that permit maps to be detected;
FIG. 16 shows a 64/12 embodiment of a Kerdock encoder that can be
used in the map insertion system shown in FIG. 14;
FIG. 17 shows a 64/12 embodiment of a Kerdock decoder that can be
used in the receiver portion shown in FIG. 15;
FIG. 18 shows another 64/12 embodiment of a Kerdock encoder that
can be used in the map insertion system shown in FIG. 14; and,
FIG. 19 shows another 64/12 embodiment of a Kerdock decoder that
can be used in the receiver portion shown in FIG. 15.
DETAILED DESCRIPTION
In order to indicate which segments of a field contain VSB data and
which segments of a field contain E-VSB data, a twelve bit map data
unit (mdu) is defined for each data field. Accordingly, the map
data unit is capable of designating one of 4096 possible
combinations of VSB and E-VSB data segments for a respective field.
The map data unit for an odd ATSC transmitted field may be denoted
as {A.sub.0 B.sub.0 C.sub.0 }, and the map data unit for the next
succeeding even ATSC transmitted field may be denoted as {A.sub.e
B.sub.e C.sub.e }, where A.sub.0, B.sub.0, C.sub.0, A.sub.e,
B.sub.e, and C.sub.e each comprises four bits and is referred to
herein as a map data sub-unit. Thus, each map data unit comprises
twelve bits and two map data units for successive odd and even
fields comprise twenty-four bits.
As shown in FIG. 2, a controller 10 generates a sequence of map
data units for application to a Kerdock encoder 12. Kerdock
encoders that may be used for the Kerdock encoder 12 are disclosed
below. Eight bits at a time are supplied to the Kerdock encoder 12.
Thus, the first eight bits supplied to the Kerdock encoder 12
correspond to map data sub-units A.sub.0 B.sub.0, the next eight
bits supplied to the Kerdock encoder 12 correspond to map data
sub-units C.sub.0 A.sub.e, and the next eight bits supplied to the
Kerdock encoder 12 correspond to map data sub-units B.sub.e
C.sub.e. The map data units for succeeding fields are applied to
the Kerdock encoder 12 in a like fashion.
For each eight bit input, the Kerdock encoder 12 produces a sixteen
bit code word or vector that consists of the eight input bits and
eight parity bits P.sub.x. Accordingly, for input map data
sub-units A.sub.0 B.sub.0, the output of the Kerdock encoder 12 is
a code word or vector {A.sub.0 B.sub.0 P.sub.1 }; for map data
sub-units C.sub.0 A.sub.e, the output of the Kerdock encoder 12 is
{C.sub.0 A.sub.e P.sub.2 }; and, for map data sub-units B.sub.e
C.sub.e, the output of the Kerdock encoder 12 is {B.sub.e C.sub.e
P.sub.3 }. Thus, three map data sub-units covering successive odd
and even fields n and n+1 are thereby encoded into three sixteen
bit output vectors containing forty-eight bits in all.
The code vectors that are produced by the Kerdock encoder 12 are
processed by a convolutional interleaver 14 in order to provide
protection from burst noise. Convolutional interleavers and
de-interleavers are described in the ATSC digital television
standard. An interleaver that may be used for the convolutional
interleaver 14 is disclosed in U.S. Pat. No. 5,572,532. The
convolutional interleaver 14 is preferably characterized by the
parameters N=48, B=16 and M=3, where N is M times the block size
(16 data elements) corresponding to three encoded map vectors
produced by the Kerdock encoder 12, B is the interleave depth, and
M is the delay unit size of the interleaver. Thus, the
convolutional interleaver 14 delays the individual bits of the
forty-eight bits of each block of three code vectors by 0, 3, 6, .
. . , 45 bits at the output of the convolutional interleaver
14.
The convolutional interleaver 14 is preferably synchronized to the
ATSC field sync signal that is generated by the controller 10 so
that the successive delays on the input bits are reset at the end
of each field. Accordingly, each field begins with zero delay. As
will be explained in further detail hereinafter, each set of
forty-eight interleaved bits of the blocks of three code vectors
are duplicated for transmission as two level symbols in the
reserved portion of two consecutive field sync segments. It will be
appreciated that this Kerdock coding and duplication results in an
effective coding rate of 1/4 because the map bits are doubled in
number by the Kerdock encoder 12 and are doubled in number again by
the duplication, so that twenty-four bits representing two map data
units are coded into ninety-six bits in two field sync
segments.
It will also be appreciated that, considering the corresponding
de-interleaver in the receiver, a latency interval L must be
accounted for when associating the map data units with the
corresponding fields. The latency interval of the
interleaver/de-interleaver combination is given by the expression
L=N.times.(B-1). In the specific example of the convolutional
interleaver 14 given above, N=48 and B=16. Therefore, the latency
interval of the interleaver/de-interleaver combination according to
this example is L=48.times.15=720 bits or 15 (720/48) fields. If
two additional fields are allowed for processing time, the system
may be characterized by the following relationships:
Coded mdu for field n: A.sub.0 B.sub.0 P.sub.1 C.sub.0 A.sub.E
P.sub.2 B.sub.E C.sub.E P.sub.3
Coded mdu for field n+1: A.sub.0 B.sub.0 P.sub.1 C.sub.0 A.sub.E
P.sub.2 B.sub.E C.sub.E P.sub.3
where mdu A.sub.0 B.sub.0 C.sub.0 identifies the mix of VSB and
E-VSB segments for field n+2+L and where mdu A.sub.E B.sub.E
C.sub.E identifies the mix of VSB and E-VSB segments for field
n+3+L.
A VSB data source 16 provides VSB data and an E-VSB data source 18
provides E-VSB data. One result of the Kerdock encoding applied by
the Kerdock encoder 12 is that the mdus are more robustly encoded
than are the VSB data and the E-VSB data. The controller 10
controls the VSB data source 16 and the E-VSB data source 18 so as
to control the mix of VSB and E-VSB data segments in a particular
field. Because of the system latency interval, the map data unit,
which notifies the receiver of this mix and which is encoded by the
Kerdock encoder 12, is transmitted beginning in a field that is
transmitted 17 or 18 fields earlier than the field containing that
mix and ends in a field that is transmitted 1 or 2 fields earlier
that the field containing that mix. That is, the map data unit
supplied by the controller 10 to the Kerdock encoder 12 during
formatting of the current field corresponds to VSB and/or E-VSB
data to be transmitted 17 or 18 fields later. However, because of
the interleaving performed by the convolutional interleaver 38,
this map data unit is spread over 15 fields.
The data segments supplied by the VSB data source 16 and the E-VSB
data source 18, together with the encoded and interleaved map data
unit bits from the convolutional interleaver 14, are applied to a
data field formatter 20. The data field formatter 20 is
synchronized to the field sync signal from the controller 10 and
formats the transmitted field so that the forty-eight encoded and
interleaved map data unit bits are inserted into the reserved
portion of two successive field sync segments. The VSB data source
16 and the E-VSB data source 18 are controlled by the controller 10
so that the VSB and E-VSB data segments supplied by the VSB data
source 16 and the E-VSB data source 18 to the data field formatter
20 correspond to a map data unit transmitted beginning n+2+L or
n+3+L fields prior thereto. The data field formatter 20 is
synchronized so that these VSB and E-VSB data segments are
appropriately multiplexed throughout the current field in
accordance with that previously transmitted map data unit.
Finally, the formatted fields are successively applied to a
standard ATSC modulator and transmitter 22 for transmission.
An example of the convolutional interleaver 14 is shown in FIG. 3
and includes sixteen paths coupled between an input 24 and an
output 26 by corresponding synchronized switching functions 28 and
29. As shown in FIG. 2, the input 24 is coupled to the Kerdock
encoder 12 and the output 26 is coupled to the data field formatter
20. The switching functions 28 and 29 synchronously step through
the sixteen paths on a data element-by-data element basis so that
one data element received on the input 24 is coupled through the
first path to the output 26, so that the next data element received
on the input 24 is coupled through the second path to the output
26, and so on.
The first path of the convolutional interleaver 14 imposes no delay
on the data elements passing therethrough, the second path of the
convolutional interleaver 14 imposes a three element delay on the
data elements passing therethrough, the third path of the
convolutional interleaver 14 imposes a six element delay on the
data elements passing therethrough, . . . , and the sixteenth path
of the convolutional interleaver 14 imposes a forty-five element
delay on the data elements passing therethrough.
As shown in FIG. 4, the signal transmitted by the ATSC modulator
and transmitter 22 is received by a receiver comprising a tuner 30.
The IF output of the tuner 30 is demodulated by an ATSC demodulator
32 in order to provide an analog baseband output representing the
transmitted symbols. This analog signal is sampled by an A/D
converter 34 under control of a digital processor 38 to convert the
demodulated symbols into corresponding multibit digital values. The
encoded and interleaved map data unit symbols, which are duplicated
in successive fields as discussed above, are applied to a
convolutional de-interleaver 40. The remaining symbols are directly
applied to the digital processor 38, which converts these remaining
symbols to corresponding bits, arranged in data bytes, for
application to a segment de-formatter 42. The segment de-formatter
42 receives a de-interleaved and decoded map data unit from a
Kerdock decoder 44. The segment de-formatter 42 responds to this
de-interleaved and decoded map data unit by passing the VSB
segments in the field to a VSB processor 46 and by passing the
E-VSB segments in the field to an E-VSB processor 48. The VSB
processor 46 and the E-VSB processor 48 decode and otherwise
process the respective VSB data and E-VSB data from the segment
de-formatter 42.
As an example, the VSB processor 46 may perform Reed-Solomon
decoding and, in the case where the VSB data has been trellis
encoded in the transmitter, the VSB processor 46 may also perform
Viterbi decoding. The E-VSB processor 48, for example, may perform
the same decoding as the VSB processor 46 and, in addition, perform
the additional decoding corresponding to the additional coding that
was performed in the transmitter in order to add robustness to the
data. Moreover, the VSB processor 46 and the E-VSB processor 48 may
perform de-interleaving and de-randomization.
The interleaved map data unit symbols from the A/D converter 34 are
applied to the convolutional de-interleaver 40 which de-interleaves
the map data unit symbols in inverse fashion relative to the
convolutional interleaver 14 in order to provide the vectors
produced by the Kerdock encoder 12. The de-interleaved vectors
corresponding to a map data unit and to its corresponding duplicate
map data unit are averaged on a bit-by-bit basis by an averaging
circuit 50 in order to improve the reliability of the map data
units. The de-interleaved and averaged vectors are decoded by the
Kerdock decoder 44 in order to recover the map data units that
control the segment de-formatter 42. Since the mdus were encoded
more robustly than either the VSB data or the E-VSB data, the mdus
will be recovered in the receiver with less errors than the
data.
As explained previously, the latency interval of the
interleave/de-interleave process is accommodated in the system
because the map data units provided by the controller 10 define the
mix of VSB and E-VSB data segments that are to be transmitted L
fields later in time. Exemplary embodiments of the Kerdock decoder
44 and the convolutional de-interleaver 40 are disclosed in the
previously referenced U.S. Pat. Nos. 6,226,318 B1 and 5,572,532
respectively.
As discussed below in more detail, the Kerdock decoder 44 may be
arranged to provide an estimation of the reliability of the
decoding process. In terms of the map data unit specifically, the
Kerdock decoder 44 may be arranged to provide an estimation of the
reliability of the decoding of the map data unit. If this
reliability indicates that the decoded map data unit is not
reliable, the immediately previous map data unit that was reliably
decoded is used to de-format the field instead of the currently
decoded map data unit. This operation is justified by assuming that
the mix between VSB data and E-VSB data changes from field to field
at a relatively slow rate so that the substitute map data unit will
likely define the appropriate segment mix.
An example of the convolutional de-interleaver 40 is shown in FIG.
5 and includes sixteen paths coupled between an input 60 and an
output 62 by corresponding synchronized switching functions 64 and
66. As shown in FIG. 4, the input 60 is coupled to the A/D
converter 34 and the output 62 is coupled to the averaging circuit
50. The switching functions 64 and 66 synchronously step through
the sixteen paths on a data element-by-data element basis so that
one data element received on the input 60 is coupled through the
first path to the output 62, so that the next data element received
on the input 60 is coupled through the second path to the output
62, and so on.
The first path of the convolutional de-interleaver 40 imposes a
forty-five element delay on the data elements passing therethrough,
the second path of the convolutional interleaver 14 imposes a
forty-two delay on the data elements passing therethrough, . . . ,
the fourteenth path of the convolutional interleaver 14 imposes a
six element delay on the data elements passing therethrough, the
fifteenth path of the convolutional interleaver 14 imposes a three
element delay on the data elements passing therethrough, and the
sixteenth path of the convolutional interleaver 14 imposes no delay
on the data elements passing therethrough.
A systematic Kerdock encoder 70 is shown in FIG. 6 and may be used
for the Kerdock encoder 12. The systematic Kerdock encoder 70
accepts an input having N data elements, such as the map data
sub-units A.sub.0 and B.sub.0 having a total of eight bits, and
outputs a corresponding code word having 2N data elements, such as
the code word {A.sub.0 B.sub.0 P.sub.1 } having a total of sixteen
bits, by appending N parity bits, such as the eight parity bits
P.sub.1, to the end of the N input data elements, such as the map
data sub-units A.sub.0 and B.sub.0 having eight bits. The N parity
data elements are read out of a look-up table 72 based on the N
input data elements.
In the case where each map data sub-unit is four bits so that two
map data sub-units are eight bits, the look-up table 72 stores 256
sets of parity bits where each set contains eight bits. Appendix A
shows exemplary data for the look-up table 72. Each bit in this
exemplary data has one of only two values, 1 or -1. In describing
the relationship between the input bits and the sets of parity bits
stored in the look-up table, it is useful to think of a bit having
a value of -1 as a bit having a value of 0. The eight bits that are
provided as an input to the systematic Kerdock encoder 70 are used
as an address into the look-up table 72.
The data stored in the look-up table 72 are arranged so that, when
a set of eight parity bits is read out according to eight input
bits and is appended to the eight input bits, a Kerdock code word
is formed. A Kerdock code word has a minimum distance of six from
any other Kerdock code word. Distance is a measure of how many
corresponding bits differ between two code words.
The relationship between the input bits and the bits stored in the
look-up table 72 fosters the creation of the Kerdock code words
that are output by the systematic Kerdock encoder 70. This
relationship is as follows: the input bits having a value of -1 -1
-1 -1 -1 -1 -1 -1 (i.e., the address 0) are used to address the
first row of Appendix A; the input bits having a value of -1 -1 -1
-1 -1 -1 -1 1 (i.e., the address 1) are used to address the second
row of Appendix A; the input bits having a value of -1 -1 -1 -1 -1
-1 1 -1 (i.e., the address 2) are used to address the third row of
Appendix A; the input bits having a value of -1 -1 -1 -1 -1 -1 1 1
(i.e., the address 3) are used to address the fourth row of
Appendix A; and so on.
As an example, when the input -1 -1 -1 -1 -1 -1 -1 -1 is received
by the systematic Kerdock encoder 70, the first row of Appendix A
is read out from the look-up table 72 and is appended to this input
to form the Kerdock code word -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1
-1 1 -1. As another example, when the input -1 -1 -1 -1 -1 -1 -1 1
is received by the systematic Kerdock encoder 70, the second row of
Appendix A is read out from the look-up table 72 and is appended to
this input to form the Kerdock code word -1 -1 -1 -1 -1 -1 -1 1 1
-1 -1 -1 1 1 -1 -1. It is noted that these two Kerdock code words
have a distance of six from each other because the eighth, ninth,
tenth, twelfth, fourteenth, and fifteenth bits are different
between the two Kerdock code words.
Alternatively, a systematic Kerdock encoder 74 is shown in FIG. 7
and may be used for the Kerdock encoder 12. The systematic Kerdock
encoder 74 accepts an input having N data elements, such as the map
data sub-units A.sub.0 and B.sub.0 having a total of eight bits,
and outputs a corresponding code word having 2N data elements, such
as the code word {A.sub.0 B.sub.0 P.sub.1 } having a total of
sixteen bits, by reading out the 2N data element code word from a
look-up table 76.
In the case where each map data sub-unit is four bits so that two
map data sub-units are eight bits, the look-up table 76 stores 256
code words where each code word contains sixteen bits. Appendix B
shows exemplary data for the look-up table 76. As in the case of
Appendix A, each bit in this exemplary data has one of only two
values, 1 or -1. The eight bits that are provided as an input to
the systematic Kerdock encoder 74 are used as an address into the
look-up table 76 and correspond to the first eight bits of a row in
the data shown in Appendix B. The row of Appendix B that is
addressed by a set of eight input bits is the row in which the
first eight bits match the eight input bits. Each code word stored
in the look-up table 76 is a Kerdock code word because each code
word stored in the look-up table 76 has a minimum distance of six
from any other Kerdock code word stored in the look-up table
76.
As an example, when the input -1 -1 -1 -1 -1 -1 -1 -1 is received
by the systematic Kerdock encoder 74, a row 78 of Appendix A is
read out from the look-up table 76. The row 78 contains the
following bits: -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1. As
another example, when the input -1 -1 -1 -1 -1 -1 -1 1 is received
by the systematic Kerdock encoder 74, a row 80 of Appendix A is
read out from the look-up table 76. The row 80 contains the
following bits: -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1. It is
noted that these two Kerdock code words have a distance of six from
each other because the eighth, ninth, tenth, twelfth, fourteenth,
and fifteenth bits are different between the two Kerdock code
words.
A systematic Kerdock decoder 82 is shown in FIG. 8 and may be used
for the Kerdock decoder 44. The systematic Kerdock decoder 82
accepts an input having 2N data elements, such as eight bits
corresponding to the map data sub-units A.sub.0 and B.sub.0 and 8
bits corresponding to the parity bits, and outputs a vector of N
data elements, such as the map data sub-units A.sub.0 and B.sub.0
having eight bits.
More specifically, a correlator 84 correlates the 2N input data
elements with each of 256 Kerdock code words stored in a look-up
table 86, where each Kerdock code word comprises sixteen data
elements such as bits. Appendix B shows exemplary data for the
look-up table 86. The correlation implemented by the correlator 84,
for example, may be a dot product of the input 2N data elements and
each of the Kerdock code words stored in the look-up table 86.
Thus, the first data element of the 2N input data elements is
multiplied by the first data element of a first Kerdock code word
stored in the look-up table 86 to form a first product, the second
data element of the 2N input data elements is multiplied by the
second data element of the first Kerdock code word stored in the
look-up table 86 to form a second product, . . . , and the
sixteenth data element of the 2N input data elements is multiplied
by the sixteenth data element of the first Kerdock code word stored
in the look-up table 86 to form a sixteenth product. The resulting
sixteen products are added to form a first correlation between the
2N input data elements and the first Kerdock code word stored in
the look-up table 86. This process is repeated for each of the
other 255 Kerdock code words stored in the look-up table 86.
An identifier 88 identifies the Kerdock code word from the look-up
table 86 that produced the largest correlation and outputs the
first eight data elements of this Kerdock code word as the eight
data elements making up two map data sub-units of a map data unit
to be applied to the segment de-formatter 42. The identifier 88 may
also form the difference between the largest correlation and the
next largest correlation as a reliability factor that indicates the
reliability with which the 2N input data elements have been
decoded.
Alternatively, a systematic Kerdock decoder 90 is shown in FIG. 9
and may be used for the Kerdock decoder 44. The systematic Kerdock
decoder 90 accepts an input having 2N data elements, such as the
map data sub-units A.sub.0 and B.sub.0 having eight bits and the
corresponding eight parity bits P.sub.1, and outputs a vector
having N data elements, such as the map data sub-units A.sub.0 and
B.sub.0 having eight bits.
More specifically, a correlator 92 correlates the 2N input data
elements with each of 256 Kerdock code words that are supplied to
the correlator 92 from a sequence generator 94 and a look-up table
96. Each Kerdock code word supplied to the correlator 92 from the
sequence generator 94 and the look-up table 96 comprises sixteen
data elements such as bits. The correlation implemented by the
correlator 92, for example, may be the same correlation as
implemented by the correlator 84.
The first eight bits of the first Kerdock code word supplied to the
correlator 92 comprises a first sequence of eight bits generated by
the sequence generator 94. For example, this first sequence may be
-1 -1 -1 -1 -1 -1 -1 -1 (i.e., 0). The second eight bits of the
first Kerdock code word supplied to the correlator 92 comprise
eight bits read out of the look-up table 96 based on an address
corresponding to the eight bits generated by the sequence generator
94. These two sets of eight bits are appended together and are
supplied to the correlator 92.
Appendix A shows exemplary data for the look-up table 96. The
relationship between the input bits from the sequence generator 94
and the bits stored in the look-up table 96 may be the same as that
used by the systematic Kerdock encoder 70. Accordingly, the input
bits having a value of -1 -1 -1 -1 -1 -1 -1 -1 (i.e., the address
0) are used to address the first row of Appendix A, the input bits
having a value of -1 -1 -1 -1 -1 -1 -1 1 (i.e., the address 1) are
used to address the second row of Appendix A, and so on.
The correlator 92 produces a first correlation based upon the input
2N bits and the first Kerdock code word produced by the sequence
generator 94 and the look-up table 96.
The first eight bits of the second Kerdock code word supplied to
the correlator 92 comprises a second sequence of eight bits
generated by the sequence generator 94. For example, this second
sequence may be -1 -1 -1 -1 -1 -1 -1 1 (i.e., 1). The second eight
bits of the second Kerdock code word supplied to the correlator 92
comprise eight bits read out of the look-up table 96 based on an
address corresponding to the eight bits generated by the sequence
generator 94. These two sets of eight bits are appended together
and are supplied to the correlator 92.
The correlator 92 produces a second correlation based upon the
input 2N bits and the second Kerdock code word produced by the
sequence generator 94 and the look-up table 96, and so on.
An identifier 98 identifies the Kerdock code word from the sequence
generator 94 and the look-up table 96 that produced the largest
correlation and outputs the first eight data elements of this
Kerdock code word as the eight data elements making up two map data
sub-units of a map data unit to be applied to the segment
de-formatter 42. The identifier 98 may also form the difference
between the largest correlation and the next largest correlation as
a reliability factor indicating the reliability with which the 2N
input data elements have been decoded.
As a further alternative, a systematic decoder 100 shown in FIG. 10
may be used for the Kerdock decoder 44. The systematic decoder 100
is a modified form of the non-systematic decoder disclosed in U.S.
Pat. No. 6,226,318 B1. The systematic decoder 100 includes two
column rotators 102 and 104, and eight vector multipliers 106, 108,
110, 112, 114, 116, 118, and 120. The modification involves the
addition of the two column rotators to the non-systematic decoder
disclosed in U.S. Pat. No. 6,226,318 B1.
Appendix C shows the coset leaders that are applied to first inputs
of the multipliers 106, 108, 110, 112, 114, 116, 118, and 120.
Accordingly, the coset leader in the first row of Appendix C is
applied to the first input of the multiplier 106, the coset leader
in the second row of Appendix C is applied to the first input of
the multiplier 108, the coset leader in the third row of Appendix C
is applied to the first input of the multiplier 110, . . . , and
the coset leader in the eighth row of Appendix C is applied to the
first input of the multiplier 120.
The input sixteen data elements to be decoded are re-arranged (such
as rotated) according to the first column of the following table
and this rotated input is applied to each of the second inputs of
the multipliers 106, 108, 110, and 112. The input to be decoded is
rotated according to the second column of the following table and
this rotated input is applied to each of the second inputs of the
multipliers 114, 116, 118, and 120.
TABLE 4.fwdarw.1 4.fwdarw.1 15.fwdarw.2 15.fwdarw.2 14.fwdarw.3
14.fwdarw.3 9.fwdarw.4 9.fwdarw.4 5.fwdarw.5 6.fwdarw.5 12.fwdarw.6
11.fwdarw.6 7.fwdarw.7 8.fwdarw.7 2.fwdarw.8 1.fwdarw.8 3.fwdarw.9
3.fwdarw.9 16.fwdarw.10 16.fwdarw.10 13.fwdarw.11 13.fwdarw.11
10.fwdarw.12 10.fwdarw.12 6.fwdarw.13 5.fwdarw.13 11.fwdarw.14
12.fwdarw.14 8.fwdarw.15 7.fwdarw.15 1.fwdarw.16 2.fwdarw.16
According to the first column of the above table, the fourth input
data element is moved to the first data element position of the
output to be supplied to the second inputs of the multipliers 106,
108, 110, and 112, the fifteenth input data element is moved to the
second data element position of the output to be supplied to the
second inputs of the multipliers 106, 108, 110, and 112, the
fourteenth input data element is moved to the third data element
position of the output to be supplied to the second inputs of the
multipliers 106, 108, 110, and 112, . . . , and the first input
data element is moved to the sixteenth data element position of the
output to be supplied to the second inputs of the multipliers 106,
108, 110, and 112. Accordingly, the sixteen data element input is
rotated by the column rotator 102 to form a sixteen data element
output to be supplied to the second inputs of the multipliers 106,
108, 110, and 112.
Similarly, the second column of the above table shows the rotation
imposed by the column rotator 104 on the sixteen input data
elements to form a sixteen data element output to be supplied to
the second inputs of the multipliers 114, 116, 118, and 120. The
column rotators 102 and 104 in effect convert a systematic code
vector to a non-systematic code vector.
The outputs of the multipliers 106, 108, 110, 112, 114, 116, 118,
and 120 are processed by a corresponding one of 16.times.16
Hadamard transforms 119.sub.1 -119.sub.8 to produce corresponding
spectra that are analyzed by a spectral analyzer 122. The spectral
analyzer 122 determines which spectra contains the largest
coefficient and decodes the largest coefficient to produce the
corresponding Kerdock code word. The first eight bits of this
Kerdock code word are supplied by the spectral analyzer 122 as the
eight data elements making up two map data sub-units of a map data
unit to be applied to the segment de-formatter 42. The spectral
analyzer 122 may also form the difference between the largest
coefficient and the next largest coefficient as a reliability
factor indicating the reliability with which the 2N input data
elements have been decoded.
The receiving arrangement shown in FIG. 4 performs the functions
illustrated by the flow chart of FIGS. 11A and 11B. A block 200
receives a field, and a block 202 parses the field in order to
recover the map data unit symbols. A block 204 de-interleaves the
map data unit symbols, and a block 206 stores the de-interleaved
map data unit symbols in a memory. When a full map data unit has
been de-interleaved as determined by a block 208, a block 210
determines whether this map data unit corresponds to an odd field
or an even field. If the block 210 determines that this map data
unit corresponds to an odd field, a block 212 simply stores the map
data unit awaiting de-interleaving and decoding of the duplicate of
this data map unit because data map. units transmitted in odd
fields are duplicated in even fields. After the non-duplicate map
data unit is stored by the block 212, flow returns to the block
200.
If the block 210 determines that this map data unit corresponds to
an even field, the recovered map data unit is a duplicate of the
map data unit previously de-interleaved and decoded. Accordingly, a
block 214 averages the current map data unit and the previous map
data unit. A block 216 decodes the map data unit average, and a
block 218 computes a reliability factor for the map data unit
average. A block 220 stores the average map and the corresponding
reliability factor.
A block 222 determines whether the reliability factor of a decoded
map data unit corresponding to the field received at the block 200
indicates that the decoded map data unit has been reliably decoded.
If the reliability factor indicates reliable decoding, a block 224
de-formats the field corresponding to the appropriate map data unit
and sends the VSB data and/or the E-VSB data to the VSB processor
46 and/or the E-VSB processor 48, as appropriate, in accordance
with the de-formatting.
On the other hand, if the reliability factor indicates that the
decoding was not reliable as determined at the block 222, a block
226 retrieves the immediately previous map data unit that was
reliably decoded, and a block 228 de-formats the field in
accordance with the retrieved immediately previous map data unit
and sends the VSB data and/or the E-VSB data to the VSB processor
46 and/or the E-VSB processor 48, as appropriate, in accordance
with the de-formatting.
APPENDIX A { -1, 1, -1, 1, 1, -1, 1, -1, }, { 1, -1, -1, -1, 1, 1,
-1, -1, }, { 1, -1, 1, 1, -1, -1, 1, 1, }, { -1, 1, 1, -1, -1, 1,
-1, 1, }, { -1, -1, -1, -1, -1, -1, -1, 1, }, { 1, 1, 1, -1, 1, -1,
1, 1, }, { 1, 1, -1, 1, -1, 1, -1, -1, }, { -1, -1, 1, 1, 1, 1, 1,
-1, }, { 1, 1, 1, 1, 1, 1, -1, 1, }, { -1, -1, -1, 1, -1, 1, 1, 1,
}, { -1, -1, 1, -1, 1, -1, -1, -1, }, { 1, 1, -1, -1, -1, -1, 1,
-1, }, { 1, -1, 1, -1, -1, 1, 1, -1, }, { -1, 1, 1, 1, -1, -1, -1,
-1, }, { -1, 1, -1, -1, 1, 1, 1, 1, }, { 1, -1, -1, 1, 1, -1, -1,
1, }, { 1, 1, 1, -1, -1, -1, -1, -1, }, { -1, -1, 1, 1, 1, -1, -1,
1, }, { -1, -1, -1, -1, -1, 1, 1, -1, }, { 1, 1, -1, 1, 1, 1, 1, 1,
}, { -1, 1, 1, 1, -1, 1, 1, 1, }, { 1, -1, -1, 1, -1, -1, 1, -1, },
{ 1, -1, 1, -1, 1, 1, -1, 1, }, { -1, 1, -1, -1, 1, -1, -1, -1, },
{ 1, -1, -1, -1, 1, -1, 1, 1, }, { -1, 1, 1, -1, 1, 1, 1, -1, }, {
-1, 1, -1, 1, -1, -1, -1, 1, }, { 1, -1, 1, 1, -1, 1, -1, -1, }, {
-1, -1, -1, 1, 1, 1, -1, -1, }, { 1, 1, -1, -1, -1, 1, -1, 1, }, {
1, 1, 1, 1, 1, -1, 1, -1, }, { -1, -1, 1, -1, -1, -1, 1, 1, }, {
-1, -1, 1, -1, 1, 1, 1, 1, }, { 1, 1, 1, 1, -1, 1, 1, -1, }, { 1,
1, -1, -1, 1, -1, -1, 1, }, { -1, -1, -1, 1, -1, -1, -1, -1, }, {
1, -1, 1, 1, 1, -1, -1, -1, }, { -1, 1, -1, 1, 1, 1, -1, 1, }, {
-1, 1, 1, -1, -1, -1, 1, -1, }, { 1, -1, -1, -1, -1, 1, 1, 1, }, {
-1, 1, -1, -1, -1, 1, -1, -1, }, { 1, -1, 1, -1, -1, -1, -1, 1, },
{ 1, -1, -1, 1, 1, 1, 1, -1, }, { -1, 1, 1, 1, 1, -1, 1, 1, }, { 1,
1, -1, 1, -1, -1, 1, 1, }, { -1, -1, -1, -1, 1, -1, 1, -1, }, { -1,
-1, 1, 1, -1, 1, -1, 1, }, { 1, 1, 1, -1, 1, 1, -1, -1, }, { 1, -1,
-1, 1, -1, 1, -1, 1, }, { -1, 1, -1, -1, -1, -1, 1, 1, }, { -1, 1,
1, 1, 1, 1, -1, -1, }, { 1, -1, 1, -1, 1, -1, 1, -1, }, { 1, 1, -1,
-1, 1, 1, 1, -1, }, { -1, -1, 1, -1, -1, 1, -1, -1, }, { -1, -1,
-1, 1, 1, -1, 1, 1, }, { 1, 1, 1, 1, -1, -1, -1, 1, }, { -1, -1, 1,
1, -1, -1, 1, -1, }, { 1, 1, -1, 1, 1, -1, -1, -1, }, { 1, 1, 1,
-1, -1, 1, 1, 1, }, { -1, -1, -1, -1, 1, 1, -1, 1, }, { -1, 1, 1,
-1, 1, -1, -1, 1, }, { 1, -1, 1, 1, 1, 1, 1, 1, }, { 1, -1, -1, -1,
-1, -1, -1, -1, }, { -1, 1, -1, 1, -1, 1, 1, -1, }, { 1, 1, -1, -1,
-1, 1, 1, 1, }, { -1, -1, 1, -1, -1, -1, 1, -1, }, { -1, -1, -1, 1,
1, 1, -1, 1, }, { 1, 1, 1, 1, 1, -1, -1, -1, }, { -1, 1, 1, -1, 1,
1, -1, -1, }, { 1, -1, 1, 1, -1, 1, -1, 1, }, { 1, -1, -1, -1, 1,
-1, 1, -1, }, { -1, 1, -1, 1, -1, -1, 1, 1, }, { 1, -1, -1, 1, -1,
-1, -1, -1, }, { -1, 1, -1, -1, 1, -1, -1, 1, }, { -1, 1, 1, 1, -1,
1, 1, -1, }, { 1, -1, 1, -1, 1, 1, 1, 1, }, { -1, -1, 1, 1, 1, -1,
1, 1, }, { 1, 1, -1, 1, 1, 1, 1, -1, }, { 1, 1, 1, -1, -1, -1, -1,
1, }, { -1, -1, -1, -1, -1, 1, -1, -1, }, { 1, -1, 1, 1, 1, 1, 1,
-1, }, { -1, 1, -1, 1, -1, 1, -1, -1, }, { -1, 1, 1, -1, 1, -1, 1,
1, }, { 1, -1, -1, -1, -1, -1, -1, 1, }, { 1, 1, -1, 1, 1, -1, -1,
1, }, { -1, -1, -1, -1, 1, 1, 1, 1, }, { -1, -1, 1, 1, -1, -1, -1,
-1, }, { 1, 1, 1, -1, -1, 1, 1, -1, }, { -1, -1, 1, -1, -1, 1, -1,
1, }, { 1, 1, 1, 1, -1, -1, 1, 1, }, { 1, 1, -1, -1, 1, 1, -1, -1,
}, { -1, -1, -1, 1, 1, -1, 1, -1, }, { -1, 1, -1, -1, -1, -1, 1,
-1, }, { 1, -1, 1, -1, 1, -1, -1, -1, }, { 1, -1, -1, 1, -1, 1, 1,
1, }, { -1, 1, 1, 1, 1, 1, -1, 1, }, { -1, 1, 1, 1, -1, -1, -1, 1,
}, { 1, -1, -1, 1, 1, -1, 1, 1, }, { 1, -1, 1, -1, -1, 1, -1, -1,
}, { -1, 1, -1, -1, 1, 1, 1, -1, }, { -1, -1, -1, 1, -1, 1, 1, -1,
}, { 1, 1, -1, -1, -1, -1, -1, -1, }, { 1, 1, 1, 1, 1, 1, 1, 1, },
{ -1, -1, 1, -1, 1, -1, -1, 1, }, { 1, 1, 1, -1, 1, -1, 1, -1, }, {
-1, -1, 1, 1, 1, 1, -1, -1, }, { -1, -1, -1, -1, -1, -1, 1, 1, }, {
1, 1, -1, 1, -1, 1, -1, 1, }, { 1, -1, -1, -1, 1, 1, -1, 1, }, {
-1, 1, 1, -1, -1, 1, 1, 1, }, { -1, 1, -1, 1, 1, -1, -1, -1, }, {
1, -1, 1, 1, -1, -1, 1, -1, }, { -1, -1, -1, -1, 1, -1, -1, -1, },
{ 1, 1, 1, -1, 1, 1, -1, 1, }, { 1, 1, -1, 1, -1, -1, 1, -1, }, {
-1, -1, 1, 1, -1, 1, 1, 1, }, { 1, -1, 1, -1, -1, -1, 1, 1, }, {
-1, 1, 1, 1, 1, -1, 1, -1, }, { -1, 1, -1, -1, -1, 1, -1, 1, }, {
1, -1, -1, 1, 1, 1, -1, -1, }, { -1, 1, -1, 1, 1, 1, 1, 1, }, { 1,
-1, -1, -1, -1, 1, 1, -1, }, { 1, -1, 1, 1, 1, -1, -1, 1, }, { -1,
1, 1, -1, -1, -1, -1, -1, }, { 1, 1, 1, 1, -1, 1, -1, -1, }, { -1,
-1, -1, 1, -1, -1, -1, 1, }, { -1, -1, 1, -1, 1, 1, 1, -1, }, { 1,
1, -1, -1, 1, -1, 1, 1, }, { -1, -1, 1, 1, -1, 1, -1, -1, }, { 1,
1, -1, 1, -1, -1, -1, 1, }, { 1, 1, 1, -1, 1, 1, 1, -1, }, { -1,
-1, -1, -1, 1, -1, 1, 1, }, { 1, -1, -1, 1, 1, 1, 1, 1, }, { -1, 1,
-1, -1, -1, 1, 1, -1, }, { -1, 1, 1, 1, 1, -1, -1, 1, }, { 1, -1,
1, -1, -1, -1, -1, -1, }, { -1, 1, 1, -1, -1, -1, 1, 1, }, { 1, -1,
1, 1, 1, -1, 1, -1, }, { 1, -1, -1, -1, -1, 1, -1, 1, }, { -1, 1,
-1, 1, 1, 1, -1, -1, }, { 1, 1, -1, -1, 1, -1, -1, -1, }, { -1, -1,
1, -1, 1, 1, -1, 1, }, { -1, -1, -1, 1, -1, -1, 1, -1, }, { 1, 1,
1, 1, -1, 1, 1, 1, }, { -1, 1, -1, -1, 1, 1, -1, 1, }, { 1, -1, 1,
-1, -1, 1, 1, 1, }, { 1, -1, -1, 1, 1, -1, -1, -1, }, { -1, 1, 1,
1, -1, -1, 1, -1, }, { -1, -1, 1, -1, 1, -1, 1, -1, }, { 1, 1, 1,
1, 1, 1, -1, -1, }, { 1, 1, -1, -1, -1, -1, 1, 1, }, { -1, -1, -1,
1, -1, 1, -1, 1, }, { 1, 1, -1, 1, -1, 1, 1, -1, }, { -1, -1, -1,
-1, -1, -1, -1, -1, }, { -1, -1, 1, 1, 1, 1, 1, 1, }, { 1, 1, 1,
-1, 1, -1, -1, 1, }, { 1, -1, 1, 1, -1, -1, -1, 1, }, { -1, 1, -1,
1, 1, -1, 1, 1, }, { -1, 1, 1, -1, -1, 1, -1, -1, }, { 1, -1, -1,
-1, 1, 1, 1, -1, }, { 1, -1, -1, -1, -1, -1, 1, -1, }, { -1, 1, 1,
-1, 1, -1, -1, -1, }, { -1, 1, -1, 1, -1, 1, 1, 1, }, { 1, -1, 1,
1, 1, 1, -1, 1, }, { 1, 1, 1, -1, -1, 1, -1, 1, }, { -1, -1, 1, 1,
-1, -1, 1, 1, }, { -1, -1, -1, -1, 1, 1, -1, -1, }, { 1, 1, -1, 1,
1, -1, 1, -1, }, { -1, -1, -1, 1, 1, -1, -1, 1, }, { 1, 1, -1, -1,
1, 1, 1, 1, }, { 1, 1, 1, 1, -1, -1, -1, -1, }, { -1, -1, 1, -1,
-1, 1, 1, -1, }, { -1, 1, 1, 1, 1, 1, 1, -1, }, { 1, -1, -1, 1, -1,
1, -1, -1, }, { 1, -1, 1, -1, 1, -1, 1, 1, }, { -1, 1, -1, -1, -1,
-1, -1, 1, }, { 1, 1, 1, 1, 1, -1, 1, 1, }, { -1, -1, -1, 1, 1, 1,
1, -1, }, { -1, -1, 1, -1, -1, -1, -1, 1, }, { 1, 1, -1, -1, -1, 1,
-1, -1, }, { -1, 1, -1, 1, -1, -1, -1, -1, }, { 1, -1, -1, -1, 1,
-1, -1, 1, }, { 1, -1, 1, 1, -1, 1, 1, -1, }, { -1, 1, 1, -1, 1, 1,
1, 1, }, { 1, -1, 1, -1, 1, 1, -1, -1, }, { -1, 1, 1, 1, -1, 1, -1,
1, }, { -1, 1, -1, -1, 1, -1, 1, -1, }, { 1, -1, -1, 1, -1, -1, 1,
1, }, { -1, -1, -1, -1, -1, 1, 1, 1, }, { 1, 1, 1, -1, -1, -1, 1,
-1, }, { 1, 1, -1, 1, 1, 1, -1, 1, }, { -1, -1, 1, 1, 1, -1, -1,
-1, }, { 1, -1, 1, -1, 1, -1, -1, 1, }, { -1, 1, 1, 1, 1, 1, 1, 1,
}, { -1, 1, -1, -1, -1, -1, -1, -1, }, { 1, -1, -1, 1, -1, 1, 1,
-1, }, { 1, 1, 1, 1, -1, -1, 1, -1, }, { -1, -1, -1, 1, 1, -1, -1,
-1, }, { -1, -1, 1, -1, -1, 1, 1, 1, }, { 1, 1, -1, -1, 1, 1, -1,
1, }, { -1, -1, -1, -1, 1, 1, 1, -1, }, { 1, 1, 1, -1, -1, 1, -1,
-1, }, { 1, 1, -1, 1, 1, -1, 1, 1, }, { -1, -1, 1, 1, -1, -1, -1,
1, }, { -1, 1, -1, 1, -1, 1, -1, 1, }, { 1, -1, -1, -1, -1, -1, 1,
1, }, { 1, -1, 1, 1, 1, 1, -1, -1, }, { -1, 1, 1, -1, 1, -1, 1, -1,
}, { -1, -1, -1, 1, -1, -1, 1, 1, }, { 1, 1, -1, -1, 1, -1, 1, -1,
}, { 1, 1, 1, 1, -1, 1, -1, 1, }, { -1, -1, 1, -1, 1, 1, -1, -1, },
{ 1, -1, -1, -1, -1, 1, -1, -1, }, { -1, 1, 1, -1, -1, -1, -1, 1,
}, { -1, 1, -1, 1, 1, 1, 1, -1, }, { 1, -1, 1, 1, 1, -1, 1, 1, }, {
-1, 1, 1, 1, 1, -1, -1, -1, }, { 1, -1, -1, 1, 1, 1, -1, 1, }, { 1,
-1, 1, -1, -1, -1, 1, -1, }, { -1, 1, -1, -1, -1, 1, 1, 1, }, { 1,
1, 1, -1, 1, 1, 1, 1, }, { -1, -1, 1, 1, -1, 1, 1, -1, }, { -1, -1,
-1, -1, 1, -1, -1, 1, }, { 1, 1, -1, 1, -1, -1, -1, -1, }, { 1, 1,
-1, 1, 1, 1, -1, -1, }, { -1, -1, -1, -1, -1, 1, -1, 1, }, { -1,
-1, 1, 1, 1, -1, 1, -1, }, { 1, 1, 1, -1, -1, -1, 1, 1, }, { -1, 1,
-1, -1, 1, -1, 1, 1, }, { 1, -1, 1, -1, 1, 1, 1, -1, }, { 1, -1,
-1, 1, -1, -1, -1, 1, }, { -1, 1, 1, 1, -1, 1, -1, -1, }, { 1, -1,
1, 1, -1, 1, 1, 1, }, { -1, 1, -1, 1, -1, -1, 1, -1, }, { -1, 1, 1,
-1, 1, 1, -1, 1, }, { 1, -1, -1, -1, 1, -1, -1, -1, }, { -1, -1, 1,
-1, -1, -1, -1, -1, }, { 1, 1, 1, 1, 1, -1, -1, 1, }, { 1, 1, -1,
-1, -1, 1, 1, -1, }, { -1, -1, -1, 1, 1, 1, 1, 1, }, { -1, 1, 1,
-1, -1, 1, 1, -1, }, { 1, -1, 1, 1, -1, -1, -1, -1, }, { 1, -1, -1,
-1, 1, 1, 1, 1, }, { -1, 1, -1, 1, 1, -1, -1, 1, }, { -1, -1, 1, 1,
1, 1, -1, 1, }, { 1, 1, -1, 1, -1, 1, 1, 1, }, { 1, 1, 1, -1, 1,
-1, -1, -1, }, { -1, -1, -1, -1, -1, -1, 1, -1, }, { 1, 1, -1, -1,
-1, -1, -1, 1, }, { -1, -1, 1, -1, 1, -1, 1, 1, },
{ -1, -1, -1, 1, -1, 1, -1, -1, }, { 1, 1, 1, 1, 1, 1, 1, -1, }, {
1, -1, -1, 1, 1, -1, 1, -1, }, { -1, 1, -1, -1, 1, 1, -1, -1, }, {
-1, 1, 1, 1, -1, -1, 1, 1, }, { 1, -1, 1, -1, -1, 1, -1, 1, }
APPENDIX B { 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, },
{ -1, 1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, -1, -1, }, {
-1, 1, -1, -1, 1, 1, -1, -1, -1, -1, 1, 1, 1, -1, 1, 1, }, { 1, -1,
-1, -1, 1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, -1, }, { -1, 1, -1,
-1, -1, -1, -1, -1, 1, 1, -1, -1, -1, 1, 1, 1, }, { 1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 1, 1, -1, 1, -1, -1, }, { 1, -1, -1, -1,
-1, -1, 1, 1, -1, -1, -1, -1, 1, -1, 1, 1, }, { -1, 1, -1, -1, -1,
-1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, }, { -1, -1, 1, -1, 1, -1, 1,
-1, 1, -1, -1, 1, 1, 1, 1, -1, }, { 1, 1, 1, -1, 1, -1, 1, -1, -1,
1, 1, -1, 1, 1, -1, 1, }, { 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1,
1, -1, -1, 1, -1, }, { -1, -1, 1, -1, 1, -1, -1, 1, 1, -1, 1, -1,
-1, -1, -1, 1, }, { 1, 1, 1, -1, -1, 1, -1, 1, 1, -1, 1, -1, 1, 1,
1, -1, }, { -1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1, 1, 1, -1, 1,
}, { -1, -1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, -1, -1, 1, -1, }, {
1, 1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, -1, -1, 1, }, { 1, 1,
-1, -1, 1, 1, 1, 1, -1, 1, 1, -1, 1, -1, 1, -1, }, { -1, -1, -1,
-1, 1, 1, 1, 1, 1, -1, -1, 1, 1, -1, -1, 1, }, { -1, -1, -1, -1, 1,
1, -1, -1, 1, -1, 1, -1, -1, 1, 1, -1, }, { 1, 1, -1, -1, 1, 1, -1,
-1, -1, 1, -1, 1, -1, 1, -1, 1, }, { -1, -1, -1, -1, -1, -1, -1,
-1, -1, 1, -1, 1, 1, -1, 1, -1, }, { 1, 1, -1, -1, -1, -1, -1, -1,
1, -1, 1, -1, 1, -1, -1, 1, }, { 1, 1, -1, -1, -1, -1, 1, 1, 1, -1,
-1, 1, -1, 1, 1, -1, }, { -1, -1, -1, -1, -1, -1, 1, 1, -1, 1, 1,
-1, -1, 1, -1, 1, }, { -1, 1, 1, -1, 1, -1, 1, -1, -1, -1, -1, -1,
-1, -1, 1, 1, }, { 1, -1, 1, -1, 1, -1, 1, -1, 1, 1, 1, 1, -1, -1,
-1, -1, }, { 1, -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, 1, 1, 1,
}, { -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, 1, -1, -1, }, { 1,
-1, 1, -1, -1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, 1, }, { -1, 1, 1,
-1, -1, 1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, }, { -1, 1, 1, -1,
-1, 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, }, { 1, -1, 1, -1, -1, 1, 1,
-1, -1, -1, -1, -1, 1, 1, -1, -1, }, { 1, 1, -1, -1, 1, 1, -1, 1,
1, -1, -1, -1, -1, -1, 1, 1, }, { -1, -1, -1, -1, 1, 1, -1, 1, -1,
1, 1, 1, -1, -1, -1, -1, }, { -1, -1, -1, -1, 1, 1, 1, -1, -1, 1,
-1, -1, 1, 1, 1, 1, }, { 1, 1, -1, -1, 1, 1, 1, -1, 1, -1, 1, 1, 1,
1, -1, -1, }, { -1, -1, -1, -1, -1, -1, 1, -1, 1, -1, 1, 1, -1, -1,
1, 1, }, { 1, 1, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1,
-1, }, { 1, 1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, }, {
-1, -1, -1, -1, -1, -1, -1, 1, 1, -1, -1, -1, 1, 1, -1, -1, }, {
-1, 1, 1, -1, 1, -1, -1, -1, 1, 1, 1, -1, 1, -1, 1, -1, }, { 1, -1,
1, -1, 1, -1, -1, -1, -1, -1, -1, 1, 1, -1, -1, 1, }, { 1, -1, 1,
-1, 1, -1, 1, 1, -1, -1, 1, -1, -1, 1, 1, -1, }, { -1, 1, 1, -1, 1,
-1, 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, }, { 1, -1, 1, -1, -1, 1, 1,
1, 1, 1, -1, 1, 1, -1, 1, -1, }, { -1, 1, 1, -1, -1, 1, 1, 1, -1,
-1, 1, -1, 1, -1, -1, 1, }, { -1, 1, 1, -1, -1, 1, -1, -1, -1, -1,
-1, 1, -1, 1, 1, -1, }, { 1, -1, 1, -1, -1, 1, -1, -1, 1, 1, 1, -1,
-1, 1, -1, 1, }, { -1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1,
1, -1, }, { 1, -1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1,
}, { 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, 1, -1, -1, 1, -1, }, {
-1, 1, -1, -1, 1, 1, 1, -1, 1, 1, 1, -1, -1, -1, -1, 1, }, { 1, -1,
-1, -1, -1, -1, 1, -1, 1, 1, 1, -1, 1, 1, 1, -1, }, { -1, 1, -1,
-1, -1, -1, 1, -1, -1, -1, -1, 1, 1, 1, -1, 1, }, { -1, 1, -1, -1,
-1, -1, -1, 1, -1, -1, 1, -1, -1, -1, 1, -1, }, { 1, -1, -1, -1,
-1, -1, -1, 1, 1, 1, -1, 1, -1, -1, -1, 1, }, { 1, 1, 1, -1, 1, -1,
-1, -1, 1, -1, 1, 1, -1, 1, 1, 1, }, { -1, -1, 1, -1, 1, -1, -1,
-1, -1, 1, -1, -1, -1, 1, -1, -1, }, { -1, -1, 1, -1, 1, -1, 1, 1,
-1, 1, 1, 1, 1, -1, 1, 1, }, { 1, 1, 1, -1, 1, -1, 1, 1, 1, -1, -1,
-1, 1, -1, -1, -1, }, { -1, -1, 1, -1, -1, 1, 1, 1, -1, -1, -1, -1,
-1, 1, 1, 1, }, { 1, 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, 1, -1, 1, -1,
-1, }, { 1, 1, 1, -1, -1, 1, -1, -1, -1, 1, -1, -1, 1, -1, 1, 1, },
{ -1, -1, 1, -1, -1, 1, -1, -1, 1, -1, 1, 1, 1, -1, -1, -1, }, { 1,
1, -1, -1, -1, 1, 1, -1, -1, -1, 1, -1, -1, 1, 1, 1, }, { -1, -1,
-1, -1, -1, 1, 1, -1, 1, 1, -1, 1, -1, 1, -1, -1, }, { -1, -1, -1,
-1, -1, 1, -1, 1, 1, 1, 1, -1, 1, -1, 1, 1, }, { 1, 1, -1, -1, -1,
1, -1, 1, -1, -1, -1, 1, 1, -1, -1, -1, }, { -1, -1, -1, -1, 1, -1,
-1, 1, -1, -1, -1, 1, -1, 1, 1, 1, }, { 1, 1, -1, -1, 1, -1, -1, 1,
1, 1, 1, -1, -1, 1, -1, -1, }, { 1, 1, -1, -1, 1, -1, 1, -1, 1, 1,
-1, 1, 1, -1, 1, 1, }, { -1, -1, -1, -1, 1, -1, 1, -1, -1, -1, 1,
-1, 1, -1, -1, -1, }, { 1, -1, 1, -1, 1, 1, -1, -1, -1, 1, 1, 1, 1,
1, 1, -1, }, { -1, 1, 1, -1, 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, -1,
1, }, { -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, -1, }, {
1, -1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, -1, 1, }, { -1, 1,
1, -1, -1, -1, 1, 1, -1, 1, -1, -1, 1, 1, 1, -1, }, { 1, -1, 1, -1,
-1, -1, 1, 1, 1, -1, 1, 1, 1, 1, -1, 1, }, { 1, -1, 1, -1, -1, -1,
-1, -1, 1, -1, -1, -1, -1, -1, 1, -1, }, { -1, 1, 1, -1, -1, -1,
-1, -1, -1, 1, 1, 1, -1, -1, -1, 1, }, { -1, 1, -1, -1, -1, 1, 1,
-1, 1, -1, -1, -1, 1, -1, 1, -1, }, { 1, -1, -1, -1, -1, 1, 1, -1,
-1, 1, 1, 1, 1, -1, -1, 1, }, { 1, -1, -1, -1, -1, 1, -1, 1, -1, 1,
-1, -1, -1, 1, 1, -1, }, { -1, 1, -1, -1, -1, 1, -1, 1, 1, -1, 1,
1, -1, 1, -1, 1, }, { 1, -1, -1, -1, 1, -1, -1, 1, 1, -1, 1, 1, 1,
-1, 1, -1, }, { -1, 1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, -1,
-1, 1, }, { -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, 1, 1, -1,
}, { 1, -1, -1, -1, 1, -1, 1, -1, 1, -1, -1, -1, -1, 1, -1, 1, }, {
-1, -1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, 1, }, { 1, 1,
1, -1, 1, 1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, }, { 1, 1, 1,
-1, 1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, }, { -1, -1, 1, -1, 1,
1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, }, { 1, 1, 1, -1, -1, -1, 1, 1,
1, 1, 1, -1, -1, -1, 1, 1, }, { -1, -1, 1, -1, -1, -1, 1, 1, -1,
-1, -1, 1, -1, -1, -1, -1, }, { -1, -1, 1, -1, -1, -1, -1, -1, -1,
-1, 1, -1, 1, 1, 1, 1, }, { 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, -1,
1, 1, 1, -1, -1, }, { -1, 1, -1, -1, -1, 1, 1, 1, -1, 1, -1, 1, -1,
-1, 1, 1, }, { 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1,
-1, -1, }, { 1, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, 1, 1, 1, 1,
1, }, { -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, 1, -1, 1, 1, -1, -1,
}, { 1, -1, -1, -1, 1, -1, -1, -1, -1, 1, 1, -1, -1, -1, 1, 1, }, {
-1, 1, -1, -1, 1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, }, {
-1, 1, -1, -1, 1, -1, 1, 1, 1, -1, 1, -1, 1, 1, 1, 1, }, { 1, -1,
-1, -1, 1, -1, 1, 1, -1, 1, -1, 1, 1, 1, -1, -1, }, { -1, -1, 1,
-1, 1, 1, -1, 1, -1, -1, -1, -1, 1, -1, 1, -1, }, { 1, 1, 1, -1, 1,
1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, }, { 1, 1, 1, -1, 1, 1, 1, -1,
1, 1, -1, -1, -1, 1, 1, -1, }, { -1, -1, 1, -1, 1, 1, 1, -1, -1,
-1, 1, 1, -1, 1, -1, 1, }, { 1, 1, 1, -1, -1, -1, 1, -1, -1, -1, 1,
1, 1, -1, 1, -1, }, { -1, -1, 1, -1, -1, -1, 1, -1, 1, 1, -1, -1,
1, -1, -1, 1, }, { -1, -1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, -1, 1,
1, -1, }, { 1, 1, 1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, 1, -1,
1, }, { -1, -1, -1, -1, -1, 1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1, },
{ 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1, }, { 1, 1,
-1, -1, -1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, -1, }, { -1, -1, -1,
-1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, }, { 1, 1, -1,
-1, 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, -1, }, { -1, -1, -1,
-1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1, 1, }, { -1, -1, -1, -1, 1,
-1, 1, 1, 1, 1, -1, -1, -1, -1, 1, -1, }, { 1, 1, -1, -1, 1, -1, 1,
1, -1, -1, 1, 1, -1, -1, -1, 1, }, { -1, 1, 1, -1, 1, 1, -1, 1, -1,
1, 1, -1, -1, 1, 1, 1, }, { 1, -1, 1, -1, 1, 1, -1, 1, 1, -1, -1,
1, -1, 1, -1, -1, }, { 1, -1, 1, -1, 1, 1, 1, -1, 1, -1, 1, -1, 1,
-1, 1, 1, }, { -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, -1, -1,
-1, }, { 1, -1, 1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, 1, 1, 1,
},
{ -1, 1, 1, -1, -1, -1, 1, -1, 1, -1, 1, -1, -1, 1, -1, -1, }, {
-1, 1, 1, -1, -1, -1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, }, { 1, -1,
1, -1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, -1, }, { -1, 1, 1,
1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, }, { 1, -1, 1, 1,
-1, -1, -1, -1, 1, 1, 1, 1, 1, -1, 1, 1, }, { 1, -1, 1, 1, -1, -1,
1, 1, 1, 1, -1, -1, -1, 1, -1, -1, }, { -1, 1, 1, 1, -1, -1, 1, 1,
-1, -1, 1, 1, -1, 1, 1, 1, }, { 1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1,
1, 1, -1, -1, -1, }, { -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1,
-1, 1, 1, }, { -1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, -1,
-1, }, { 1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, },
{ 1, 1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, -1, -1, -1, 1, }, { -1,
-1, -1, 1, -1, 1, -1, 1, 1, -1, -1, 1, -1, -1, 1, -1, }, { -1, -1,
-1, 1, -1, 1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 1, }, { 1, 1, -1, 1,
-1, 1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, }, { -1, -1, -1, 1, 1, -1,
1, -1, -1, 1, -1, 1, -1, -1, -1, 1, }, { 1, 1, -1, 1, 1, -1, 1, -1,
1, -1, 1, -1, -1, -1, 1, -1, }, { 1, 1, -1, 1, 1, -1, -1, 1, 1, -1,
-1, 1, 1, 1, -1, 1, }, { -1, -1, -1, 1, 1, -1, -1, 1, -1, 1, 1, -1,
1, 1, 1, -1, }, { -1, -1, 1, 1, -1, -1, -1, -1, 1, -1, -1, 1, -1,
1, -1, 1, }, { 1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, -1, -1, 1, 1,
-1, }, { 1, 1, 1, 1, -1, -1, 1, 1, -1, 1, -1, 1, 1, -1, -1, 1, }, {
-1, -1, 1, 1, -1, -1, 1, 1, 1, -1, 1, -1, 1, -1, 1, -1, }, { 1, 1,
1, 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, }, { -1, -1, 1, 1, 1,
1, 1, 1, -1, 1, -1, 1, -1, 1, 1, -1, }, { -1, -1, 1, 1, 1, 1, -1,
-1, -1, 1, 1, -1, 1, -1, -1, 1, }, { 1, 1, 1, 1, 1, 1, -1, -1, 1,
-1, -1, 1, 1, -1, 1, -1, }, { 1, -1, -1, 1, -1, 1, -1, 1, 1, 1, 1,
1, 1, 1, -1, -1, }, { -1, 1, -1, 1, -1, 1, -1, 1, -1, -1, -1, -1,
1, 1, 1, 1, }, { -1, 1, -1, 1, -1, 1, 1, -1, -1, -1, 1, 1, -1, -1,
-1, -1, }, { 1, -1, -1, 1, -1, 1, 1, -1, 1, 1, -1, -1, -1, -1, 1,
1, }, { -1, 1, -1, 1, 1, -1, 1, -1, 1, 1, -1, -1, 1, 1, -1, -1, },
{ 1, -1, -1, 1, 1, -1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, }, { 1, -1,
-1, 1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, }, { -1, 1,
-1, 1, 1, -1, -1, 1, 1, 1, 1, 1, -1, -1, 1, 1, }, { -1, -1, 1, 1,
-1, -1, 1, -1, -1, 1, 1, 1, 1, 1, -1, -1, }, { 1, 1, 1, 1, -1, -1,
1, -1, 1, -1, -1, -1, 1, 1, 1, 1, }, { 1, 1, 1, 1, -1, -1, -1, 1,
1, -1, 1, 1, -1, -1, -1, -1, }, { -1, -1, 1, 1, -1, -1, -1, 1, -1,
1, -1, -1, -1, -1, 1, 1, }, { 1, 1, 1, 1, 1, 1, -1, 1, -1, 1, -1,
-1, 1, 1, -1, -1, }, { -1, -1, 1, 1, 1, 1, -1, 1, 1, -1, 1, 1, 1,
1, 1, 1, }, { -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1,
-1, }, { 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, 1, -1, -1, 1, 1, }, {
1, -1, -1, 1, -1, 1, 1, 1, -1, -1, -1, 1, -1, 1, -1, 1, }, { -1, 1,
-1, 1, -1, 1, 1, 1, 1, 1, 1, -1, -1, 1, 1, -1, }, { -1, 1, -1, 1,
-1, 1, -1, -1, 1, 1, -1, 1, 1, -1, -1, 1, }, { 1, -1, -1, 1, -1, 1,
-1, -1, -1, -1, 1, -1, 1, -1, 1, -1, }, { -1, 1, -1, 1, 1, -1, -1,
-1, -1, -1, 1, -1, -1, 1, -1, 1, }, { 1, -1, -1, 1, 1, -1, -1, -1,
1, 1, -1, 1, -1, 1, 1, -1, }, { 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1,
-1, 1, -1, -1, 1, }, { -1, 1, -1, 1, 1, -1, 1, 1, -1, -1, -1, 1, 1,
-1, 1, -1, }, { 1, -1, 1, 1, -1, -1, 1, -1, -1, -1, 1, -1, -1, -1,
-1, 1, }, { -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, 1, -1,
}, { -1, 1, 1, 1, -1, -1, -1, 1, 1, 1, 1, -1, 1, 1, -1, 1, }, { 1,
-1, 1, 1, -1, -1, -1, 1, -1, -1, -1, 1, 1, 1, 1, -1, }, { -1, 1, 1,
1, 1, 1, -1, 1, -1, -1, -1, 1, -1, -1, -1, 1, }, { 1, -1, 1, 1, 1,
1, -1, 1, 1, 1, 1, -1, -1, -1, 1, -1, }, { 1, -1, 1, 1, 1, 1, 1,
-1, 1, 1, -1, 1, 1, 1, -1, 1, }, { -1, 1, 1, 1, 1, 1, 1, -1, -1,
-1, 1, -1, 1, 1, 1, -1, }, { -1, -1, -1, 1, -1, 1, 1, 1, -1, 1, -1,
-1, 1, -1, -1, -1, }, { 1, 1, -1, 1, -1, 1, 1, 1, 1, -1, 1, 1, 1,
-1, 1, 1, }, { 1, 1, -1, 1, -1, 1, -1, -1, 1, -1, -1, -1, -1, 1,
-1, -1, }, { -1, -1, -1, 1, -1, 1, -1, -1, -1, 1, 1, 1, -1, 1, 1,
1, }, { 1, 1, -1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, },
{ -1, -1, -1, 1, 1, -1, -1, -1, 1, -1, -1, -1, 1, -1, 1, 1, }, {
-1, -1, -1, 1, 1, -1, 1, 1, 1, -1, 1, 1, -1, 1, -1, -1, }, { 1, 1,
-1, 1, 1, -1, 1, 1, -1, 1, -1, -1, -1, 1, 1, 1, }, { -1, -1, 1, 1,
1, -1, -1, 1, 1, 1, -1, 1, 1, -1, -1, -1, }, { 1, 1, 1, 1, 1, -1,
-1, 1, -1, -1, 1, -1, 1, -1, 1, 1, }, { 1, 1, 1, 1, 1, -1, 1, -1,
-1, -1, -1, 1, -1, 1, -1, -1, }, { -1, -1, 1, 1, 1, -1, 1, -1, 1,
1, 1, -1, -1, 1, 1, 1, }, { 1, 1, 1, 1, -1, 1, 1, -1, 1, 1, 1, -1,
1, -1, -1, -1, }, { -1, -1, 1, 1, -1, 1, 1, -1, -1, -1, -1, 1, 1,
-1, 1, 1, }, { -1, -1, 1, 1, -1, 1, -1, 1, -1, -1, 1, -1, -1, 1,
-1, -1, }, { 1, 1, 1, 1, -1, 1, -1, 1, 1, 1, -1, 1, -1, 1, 1, 1, },
{ -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, 1, }, { 1,
-1, -1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, }, { 1, -1,
-1, 1, -1, -1, -1, -1, -1, 1, -1, -1, 1, 1, -1, 1, }, { -1, 1, -1,
1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, }, { 1, -1, -1, 1, 1,
1, -1, -1, 1, -1, 1, 1, -1, -1, -1, 1, }, { -1, 1, -1, 1, 1, 1, -1,
-1, -1, 1, -1, -1, -1, -1, 1, -1, }, { -1, 1, -1, 1, 1, 1, 1, 1,
-1, 1, 1, 1, 1, 1, -1, 1, }, { 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1,
-1, 1, 1, 1, -1, }, { 1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -1,
1, -1, 1, }, { -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, -1, -1, -1, 1, 1,
-1, }, { -1, 1, 1, 1, 1, -1, 1, -1, 1, -1, 1, 1, 1, -1, -1, 1, }, {
1, -1, 1, 1, 1, -1, 1, -1, -1, 1, -1, -1, 1, -1, 1, -1, }, { -1, 1,
1, 1, -1, 1, 1, -1, -1, 1, -1, -1, -1, 1, -1, 1, }, { 1, -1, 1, 1,
-1, 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, -1, }, { 1, -1, 1, 1, -1, 1,
-1, 1, 1, -1, -1, -1, 1, -1, -1, 1, }, { -1, 1, 1, 1, -1, 1, -1, 1,
-1, 1, 1, 1, 1, -1, 1, -1, }, { 1, 1, -1, 1, -1, -1, 1, 1, -1, -1,
1, -1, 1, 1, -1, -1, }, { -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, -1, 1,
1, 1, 1, 1, }, { -1, -1, -1, 1, -1, -1, -1, -1, 1, 1, 1, -1, -1,
-1, -1, -1, }, { 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 1, -1,
-1, 1, 1, }, { -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1, 1,
-1, -1, }, { 1, 1, -1, 1, 1, 1, -1, -1, 1, 1, 1, -1, 1, 1, 1, 1, },
{ 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, }, { -1,
-1, -1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, 1, 1, }, { 1, -1, 1,
1, 1, -1, -1, -1, 1, -1, 1, -1, 1, 1, -1, -1, }, { -1, 1, 1, 1, 1,
-1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, }, { -1, 1, 1, 1, 1, -1, 1,
1, -1, 1, 1, -1, -1, -1, -1, -1, }, { 1, -1, 1, 1, 1, -1, 1, 1, 1,
-1, -1, 1, -1, -1, 1, 1, }, { -1, 1, 1, 1, -1, 1, 1, 1, 1, -1, -1,
1, 1, 1, -1, -1, }, { 1, -1, 1, 1, -1, 1, 1, 1, -1, 1, 1, -1, 1, 1,
1, 1, }, { 1, -1, 1, 1, -1, 1, -1, -1, -1, 1, -1, 1, -1, -1, -1,
-1, }, { -1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1, -1, -1, 1, 1, },
{ 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, -1, 1, }, { -1,
-1, -1, 1, -1, -1, 1, -1, -1, -1, -1, -1, -1, 1, 1, -1, }, { -1,
-1, -1, 1, -1, -1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, }, { 1, 1,
-1, 1, -1, -1, -1, 1, 1, 1, -1, -1, 1, -1, 1, -1, }, { -1, -1, -1,
1, 1, 1, -1, 1, 1, 1, -1, -1, -1, 1, -1, 1, }, { 1, 1, -1, 1, 1, 1,
-1, 1, -1, -1, 1, 1, -1, 1, 1, -1, }, { 1, 1, -1, 1, 1, 1, 1, -1,
-1, -1, -1, -1, 1, -1, -1, 1, }, { -1, -1, -1, 1, 1, 1, 1, -1, 1,
1, 1, 1, 1, -1, 1, -1, }, { 1, 1, 1, 1, 1, -1, -1, -1, 1, 1, -1,
-1, -1, -1, -1, 1, }, { -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, 1, 1,
-1, -1, 1, -1, }, { -1, -1, 1, 1, 1, -1, 1, 1, -1, -1, -1, -1, 1,
1, -1, 1, }, { 1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, },
{ -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, 1, }, { 1, 1,
1, 1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, 1, -1, }, { 1, 1, 1, 1,
-1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, 1, }, { -1, -1, 1, 1, -1, 1,
-1, -1, 1, 1, -1, -1, 1, 1, 1, -1, }, { 1, -1, -1, 1, -1, -1, 1,
-1, 1, -1, -1, 1, 1, -1, -1, -1, }, { -1, 1, -1, 1, -1, -1, 1, -1,
-1, 1, 1, -1, 1, -1, 1, 1, }, { -1, 1, -1, 1, -1, -1, -1, 1, -1, 1,
-1, 1,
-1, 1, -1, -1, }, { 1, -1, -1, 1, -1, -1, -1, 1, 1, -1, 1, -1, -1,
1, 1, 1, }, { -1, 1, -1, 1, 1, 1, -1, 1, 1, -1, 1, -1, 1, -1, -1,
-1, }, { 1, -1, -1, 1, 1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 1, 1, }, {
1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, }, { -1, 1,
-1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1, 1, }
APPENDIX C -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1
-1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1
1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1
1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1
1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1
The arrangement disclosed in FIG. 2 is modified as shown in FIG. 12
in order to permit maps to be more easily detected in the presence
of short static ghosts. Except for an additional component, the
arrangements shown in FIGS. 2 and 12 are the same and, therefore,
FIGS. 2 and 12 use the same reference numbers to depict the same
components. The arrangement of FIG. 12, however, also includes a
scrambler 300 that scrambles the bits in the duplicate map while
not scrambling the bits in the original map.
As shown in FIG. 12, the scrambler 300 operates on the output of
the Kerdock encoder 12 and supplies its output to the convolutional
interleaver 14. Because the scrambler 300 does not scramble the
first occurrence of the map, the forty eight bits of the map
{A.sub.0 B.sub.0 P.sub.1 }, {C.sub.0 A.sub.e P.sub.2 }, {B.sub.e
C.sub.e P.sub.3 } from the Kerdock encoder 12 pass through the
scrambler 300 in the sequence in which they leave the Kerdock
encoder 12. However, because the scrambler 300 scrambles the
duplicate of the map, the forty eight bits of the duplicate map
{A.sub.0 B.sub.0 P.sub.1 }, {C.sub.0 A.sub.e P.sub.2 }, {B.sub.e
C.sub.e P.sub.3 } from the Kerdock encoder 12 exit the scrambler
300 in a sequence that is different from the sequence that leaves
the Kerdock encoder 12.
As indicated above, the Kerdock encoder 12 encodes the maps in
groups of two map data sub-units (four bits per map data sub-unit)
to produce sixteen output bits per group. These sixteen bits
comprise eight bits of the corresponding two map sub-units and
eight parity bits. These sixteen bits in sequence may be
arbitrarily designated as 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16.
Therefore, the first occurrence of the first sixteen bits of a map
exits the scrambler 300 in this sequence. However, the second
occurrence of these first sixteen bits (i.e., the first sixteen
bits of the duplicate map) exits the scrambler 300 in a scrambled
sequence. For example, these sixteen bits may exit the scrambler
300 in the following sequence: 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8
4. Accordingly, the first bit in the original map is the fourth bit
in the duplicate map, the second bit in the original map is the
eighth bit in the duplicate map, and so on. Other alternative
scrambling sequences could be used.
Likewise, the first occurrence of the second sixteen bits of the
map exits the scrambler 300 in the unscrambled sequence, and the
second occurrence of these second sixteen bits (i.e., the second
sixteen bits of the duplicate map) exits the scrambler 300 in the
scrambled sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4.
Similarly, the first occurrence of the third sixteen bits of the
map exits the scrambler 300 in the unscrambled sequence, and the
second occurrence of these third sixteen bits (i.e., the third
sixteen bits of the duplicate map) exits the scrambler 300 in the
scrambled sequence of 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4.
Therefore, because the original map is not scrambled and the
duplicate map is scrambled, the likelihood, in the case of a short
static ghost, that the original map and the duplicate map will be
superimposed on the same frame sync bits is materially reduced
making recovery of the map from the average of the original and
duplicate maps much more likely.
The arrangement disclosed in FIG. 4 is likewise modified as shown
in FIG. 13 in order to permit the maps to be more easily detected
in the presence of short static ghosts. Except for an additional
component, the arrangements shown in FIGS. 4 and 13 are the same
and, therefore, FIGS. 4 and 13 use the same reference numbers to
depict the same components. The arrangement of FIG. 13, however,
also includes a de-scrambler 310 that is provided between the
convolutional de-interleaver 40 and the averaging circuit 50. The
de-scrambler 310 reverses the process of the scrambler 300.
Accordingly, the de-scrambler 310 passes the original map bits
without de-scrambling and de-scrambles the bits of the duplicate
map to reverse the scrambling of the duplicate map imposed by the
scrambler 300.
In order to support effective map recovery in the receiver in the
presence of burst noise or repeated bursts of noise, a twelve bit
map data unit (mdu) is still defined. However, of these twelve
bits, ten bits are used to define a map and the remaining two bits
form half of a four bit frame count. A first mdu, which may be
designated as mdu.sub.0, is denoted as {A.sub.0 B.sub.0 C.sub.0 }.
This mdu comprises ten bits to define a current map and two of the
bits of the four bit frame count. The two frame count bits and the
ten bits defining the current map may be distributed in any desired
fashion in mdu.sub.0. A second mdu, which may be designated as
mdu.sub.e, is denoted as {A.sub.e B.sub.e C.sub.e }. This mdu
comprises ten bits to define a next map and the remaining two of
the bits of the four bit frame count. As before, the remaining two
frame count bits and the ten bits defining the next map may be
distributed in any desired fashion in mdu.sub.e.
The current map is the map that the receiver uses in determining
the location of data in the field of a frame that it is currently
receiving, the next map is the map that the receiver will use in
determining the location of data in the fields of a future frame,
and the frame count indicates the number of frames that the
receiver will have to receive before it starts using the next map
to determine the location of data in the fields of the future
frame. As each field of each frame prior to the future frame is
transmitted, the current map and the next map stay the same.
However, the frame count is decremented as each of these frames is
transmitted. As is known in the art, a frame consists of two
fields.
For example, it may be assumed that frame 0 is a first frame to
which map.sub.a is to be applied as the current map. The
transmitter inserts map.sub.a into both fields of frame -1, i.e.,
the frame that is transmitted prior to frame 0. The transmitter
also inserts map.sub.b, which defines the next map, and the frame
count 0 into frame -1. Thus, the current map leads the first frame
to which it is to be applied by one frame. The receiver recovers
map.sub.a, map.sub.b, and the frame count 0 from frame -1, and
stores the recovered map.sub.a, map.sub.b, and the frame count of 0
in a memory. However, the receiver uses a previously received
current map to find data in the frame -1.
In preparing frame 0 for transmission, the transmitter inserts into
frame 0 the same maps that it inserted into frame -1, i.e.,
map.sub.a and map.sub.b. However, the frame count that the
transmitter inserts into frame 0 is now k. The receiver stores
map.sub.a, and map.sub.b, and the frame count k that it receives in
frame 0. The receiver uses map.sub.a to locate data in frame 0.
This process continues such that map.sub.a and map.sub.b are
transmitted in each of the following frames 1, 2, . . . , k-1. The
frame count is decremented in each of these frames. When frame k is
transmitted, frame k now contains map.sub.b as the current map, a
new map map.sub.c as the next map, and a frame count of 0. Below is
a table for a simplified example of the above operation where
k=5.
Frame Frame # count Map data . . . . . . . . . -1 0 Current map =
map (a, 0) next map = map (b, 6) 0 5 Current map = map (a, 1) next
map = map (b, 6) 1 4 Current map = map (a, 2) next map = map (b, 6)
2 3 Current map = map (a, 3) next map = map (b, 6) 3 2 Current map
= map (a, 4) next map = map (b, 6) 4 1 Current map = map (a, 5)
next map = map (b, 6) 5 0 Current map = map (b, 6) next map = map
(c, 12) 6 5 Current map = map (b, 7) next map = map (c, 12) 7 4
Current map = map (b, 8) next map = map (c, 12) 8 3 Current map =
map (b, 9) next map = map (c, 12) 9 2 Current map = map (b, 10)
next map = map (c, 12) . . . . . . . . .
The frame count is decremented modulo k=5. The map changes every
k+1 frames. The notation "map(x,y)" refers to a specific map x that
will apply to frame #y. As discussed above, the current map leads
the frame to which it is to be applied by one frame. The leading is
reflected in the map data of the Table. If the location of VSB data
and E-VSB data does not change from frame k-1 to frame k, the
current map and the next map simply remain the same.
As indicated above, the receiver maintains its own frame count in
its memory and also saves the current map and the next map in the
memory. As each frame (comprising two fields) is received, the
receiver either stores the frame count in that frame in the memory
or decrements the stored frame count by one, as discussed more
fully below. Thus, the part of the memory that stores the frame
counter may be referred to herein as a count down counter.
Therefore, if the portion of one or more fields containing the map
and frame count information cannot be properly received because of
noise in the channel, the receiver can determine from its own count
down counter when to begin using the next map that it has stored in
memory.
The transmitter can insert the current map, the next map, and the
frame count into any desired segment of a field. Preferably, the
transmitter is arranged to insert the current map, the next map,
and the frame count into the reserved portion of the field sync
segment of a field. Moreover, the transmitter may be arranged to
scramble the current map, the next map, and the frame count in the
even fields but not in the odd fields. For example, the current
map, the next map, and the frame count in the odd field, which is
defined as the field having the positive middle PN63 sequence in
its field sync segment, are not scrambled. On the other hand, the
current map, the next map, and the frame count in the. even field,
which is defined as the field having the negative middle PN63
sequence in its field sync segment, are scrambled. The transmitter
can use the scrambling sequences disclosed above for this
scrambling. Also, because the same map and count information are
transmitted in the odd and even fields of a frame, this information
can be averaged in the receiver as discussed above.
As shown in FIG. 14, a controller 400 generates a sequence of map
data units for application to a Kerdock encoder 402. Eight bits at
a time are supplied to the Kerdock encoder 402. Thus, the first
eight bits supplied to the Kerdock encoder 402 correspond to map
data sub-units A.sub.0 B.sub.0, the next eight bits supplied to the
Kerdock encoder 402 correspond to map data sub-units C.sub.0
A.sub.e, and the next eight bits supplied to the Kerdock encoder
402 correspond to map data sub-units B.sub.e C.sub.e. The map data
units for succeeding fields are applied to the Kerdock encoder 402
in a like fashion.
For each eight bit input, the Kerdock encoder 402 produces a
sixteen bit code word or vector that consists of the eight input
bits and eight parity bits P.sub.x. Accordingly, for input map data
sub-units A.sub.0 B.sub.0, the output of the Kerdock encoder 12 is
a code word or vector {A.sub.0 B.sub.0 P.sub.1 }; for map data
sub-units C.sub.0 A.sub.e, the output of the Kerdock encoder 12 is
{C.sub.0 A.sub.e P.sub.2 }; and, for map data sub-units B.sub.e
C.sub.e, the output of the Kerdock encoder 12 is {B.sub.e C.sub.e
P.sub.3 }. Thus, three map data sub-units covering the current map,
the next map, and the frame count are thereby encoded as three
sixteen bit output vectors containing forty-eight bits in all. For
these purposes, the Kerdock encoder 402 may use any of the Kerdock
encoding techniques described above in connection with FIGS. 6 and
7 or other Kerdock encoding technique.
As shown in FIG. 14, a scrambler 404 operates on the output of the
Kerdock encoder 402 and supplies its output to a data field
formatter 20. The scrambler 404 scrambles the current map, the next
map and the frame count that are inserted in the even field of a
frame, and does not scramble the current map, the next map and the
frame count that are inserted in the odd field of that frame.
Because the scrambler 404 does not scramble the map and frame count
data inserted into the odd field, the forty eight bits, i.e.,
{A.sub.0 B.sub.0 P.sub.1 }, {C.sub.0 A.sub.e P.sub.2 }, and
{B.sub.e C.sub.e P.sub.3 }, from the Kerdock encoder 402
corresponding to the map and frame count data for the odd field
pass through the scrambler 404 in the sequence in which they leave
the Kerdock encoder 402. However, because the scrambler 404 does
scramble the map and frame count data inserted into the even field,
the forty eight bits, i.e., {A.sub.0 B.sub.0 P.sub.1 }, {C.sub.0
A.sub.e P.sub.2 }, and {B.sub.e C.sub.e P.sub.3 }, from the Kerdock
encoder 402 corresponding to the map and frame count data for the
even field exit the scrambler 404 in a sequence that is different
from the sequence that leaves the Kerdock encoder 402. The
scrambler 404 may use the scrambling sequence disclosed above.
A VSB data source 406 provides VSB data, and an E-VSB data source
408 provides E-VSB data. The controller 400 controls the VSB data
source 406 and the E-VSB data source 408 so as to control the mix
of VSB and E-VSB data segments in a field according to its
corresponding current map. The data segments supplied by the VSB
data source 406 and the E-VSB data source 408, together with the
encoded (and possibly scrambled) map and frame count data from the
scrambler 404, are applied to a data field formatter 410. The data
field formatter 410 is synchronized to the field sync signal from
the controller 400 and formats the transmitted field so that the
forty-eight encoded (and possibly scrambled) map and frame count
bits are inserted into the reserved portion of a field sync segment
as described above. Thus, the VSB data source 406 and the E-VSB
data source 408 are controlled by the controller 400 so that the
VSB and E-VSB data segments supplied by the VSB data source 406 and
the E-VSB data source 408 to the data field formatter 410
correspond to the current map of the map and frame count data from
the scrambler 404. The data field formatter 410 is synchronized so
that these VSB and E-VSB data segments are appropriately
multiplexed throughout the current field in accordance with the
current map contained in the same field.
Finally, the formatted fields are successively applied to a
standard ATSC modulator and transmitter 412 for transmission.
As shown in FIG. 15, the signal transmitted by the ATSC modulator
and transmitter 412 is received by a receiver comprising a tuner
420. The IF output of the tuner 420 is demodulated by an ATSC
demodulator 422 in order to provide an analog baseband output
representing the transmitted symbols. This analog signal is sampled
by an A/D converter 424 under control of a digital processor 426 to
convert the demodulated symbols into corresponding multibit digital
values. The encoded map and frame count data contained in the field
just received are applied to a descramler 427 that reverses the
scrambling imposed by the scrambler 404. The encoded map and frame
count data contained in the field just received are then applied to
an averager 428 that, as discussed above, averages the encoded map
and frame count data contained in two fields of the same frame. The
averaged and encoded map and frame count data are then applied to a
Kerdock decoder 430 for decoding. The Kerdock decoder 430 may use
any of the Kerdock decoding techniques described above in
connection with FIGS. 8 and 9 or other suitable Kerdock decoding
technique. As discussed above, the encoded map and frame count data
includes the current map, the next map, and the frame count
discussed above.
The Kerdock decoder 430 applies the decoded current map and the
decoded next map to a memory 438. The current map that is stored in
the memory 438 and that applies to the field being received is
supplied to a segment de-formatter 432. The segment de-formatter
432 responds to this current map by passing the VSB segments in the
field being received to a VSB processor 434 and by passing the
E-VSB segments in the field being received to an E-VSB processor
436. The VSB processor 434 and the E-VSB processor 436 decode and
otherwise process the respective VSB data and E-VSB data from the
segment de-formatter 432.
Moreover, the Kerdock decoder 430 applies the decoded frame count
from the field being received to a count down counter 440. As
suggested above, the counter down counter 440 may be part of the
memory 438. Additionally, the Kerdock decoder 430 applies the
reliability factor discussed above to the memory 438 and to the
count down counter 440.
If the reliability factor indicates that the map and frame count
information contained in the field being received is reliable, the
received frame count is stored in the count down counter 440, and
the current map and the next map are also stored as discussed
above. On the other hand, if the reliability factor indicates that
the map and frame count information contained in the field being
received is not reliable because, for example, the field being
received has been corrupted by noise, two actions are taken. First,
the count in the count down counter 440 is decremented modulo k
(once per frame) based on frame sync signal timing. Second, the old
current map and the old next map are retained in the memory 438,
unless the counter down counter 440 is decremented to zero. In that
case, the current map, which is stored in the memory 438 and which
is to be applied to the next received frame, is set to the stored
next map, and the next map is left as is.
In this way, the count down counter 440 can keep track of when the
next map stored in the memory 438 should be used as the current
map. Thus, if the map and the frame count information is not
properly received in one or more fields around the transition from
current map use to next map use, the receiver, prompted by the
count down counter 440, can simply use the next map that is stored
in the memory 438. In the example of table above, if the map and
frame count information are not adequately received in the fields
of frames 4 and 5, the receiver can simply use map (b, 6) that is
stored in the memory 438 to locate the various data in the fields
of frame 6.
In this way, the present invention is able to withstand burst noise
without the use of interleaving and de-interleaving. Moreover, the
present invention is able to withstand repeated bursts of
noise.
As described above, an unscrambled version of the current map, the
next map, and the frame count k are inserted into the odd field of
a frame, and the scrambled version of the same current map, the
same next map, and the same frame count k are inserted into the
even field of the same frame. Then, an unscrambled version of the
same current map, the same next map, and the frame count k-1 are
inserted into the odd field of the next frame, and the scrambled
version of the same current map, the same next map, and the same
frame count k-1 are inserted into the even field of the same next
frame. For each field, the map and count information is encoded by
the Kerdock encoder 402 prior to supply to the scrambler 404. The
Kerdock encoder 402, as described above, may be referred to as a
16/8 encoder because it provides a 16 bit encoded output based on
an 8 bit input. Similarly, the Kerdock decoder 430, as described
above, may be referred to as a 16/8 decoder because it provides an
8 bit decoded output based on a 16 bit input.
The Kerdock encoder 402 may instead be a 64/12 encoder, and the
Kerdock decoder 430 may instead be a 64/12 decoder. Thus, a
non-systematic Kerdock encoder 450 in the form of a 64/12 encoder
is shown in FIG. 16 and may be used for the Kerdock encoder 402.
The non-systematic Kerdock encoder 450 accepts an input having 12
bits, such as the map data sub-units A.sub.0, B.sub.0, and C.sub.0
having a total of twelve bits, and outputs a corresponding code
word having 64 bits by reading out an appropriate 64 bit code word
from a look-up table 452.
The look up table 452 stores 4096 Kerdock code vectors each having
a length of 64. That is, each of these Kerdock code vectors
comprises 64 bits. There are 2.sup.64 different code vectors having
a length of 64. However, only 2.sup.12 or 4096 of these 2.sup.64
different code vectors satisfy the requirements for being a Kerdock
code vector. These Kerdock vectors are described in "The Z.sub.4
-linearity of Kerdock, Preparata, Goethals, and Related Codes," by
A. Roger Hammons, Jr., P. Vijay Cumar, A. R. Calderbank, N. J. A.
Sloane, and Patrick Sole, IEEE Transactions on Information Theory,
vol. 40, #2, pp 301-319, March, 1994. Thus, each different
combination of the twelve input bits can be used as a unique
address into the look up table 452 in order to uniquely select a
corresponding one of the 4096 Kerdock code vectors.
When the Kerdock encoder 450 is used as the Kerdock encoder 402 of
FIG. 14, the controller 400 supplies two groups of twelve bits per
frame to the Kerdock encoder 450. The first group contains the
current map and the first two of the four bits that comprise the
frame count. The Kerdock encoder 450 uses these twelve bits in the
first group as an address into the look up table 452 in order to
output a corresponding 64 bit Kerdock Code vector. The date field
formatter inserts this 64 bit Kerdock code vector into the odd
field of a frame.
The second group contains the next map and the second two of the
four bits that comprise the frame count. The Kerdock encoder 450
uses these twelve bits in the second group as an address into the
look up table 452 in order to output a corresponding 64 bit Kerdock
Code vector. The date field formatter inserts this 64 bit Kerdock
code vector into the even field of a frame.
Thus, when a 16/8 Kerdock encoder is used, the current map, the
next map, and the entire frame count can be encoded as three 16 bit
Kerdock code vectors for insertion into the reserved portion of the
field sync segment of a single field. However, when a 64/12 Kerdock
encoder is used, the current map, the next map, and the entire
frame count are encoded as two 64 bit Kerdock code vectors. Because
the reserved portion of the field sync segment of a single field
contains insufficient space to hold both of these Kerdock code
vectors, the first of these Kerdock code vectors (representing the
current map and the first two frame count bits) is inserted into
the odd field of a frame, and the second of these Kerdock code
vectors (representing the next map and the second two frame count
bits) is inserted into the even field of the frame.
Therefore unlike the 16/8 Kerdock encoder case where the current
map, the next map, and the frame count are transmitted twice, once
in the odd field of a frame and once in the even field of the
frame, the current map, the next map, and the frame count are
transmitted only once in the case of the 64/12 Kerdock encoder case
where both fields of a frame are required to contain this map and
frame count information. Accordingly, no portion of the map and
frame information is scrambled when a 64/12 Kerdock encoder is
used. However, scrambling is not really necessary when two 64 bit
Kerdock code vectors are required to transmit the map and frame
count information because of the additional robustness obtained by
the additional length of the code vectors. Therefore, when the
Kerdock encoder 402 is a 64/12 Kerdock encoder, the scrambler 404
may be eliminated.
Also, this additional robustness means that the descrambler 427 and
the averager 428 may be eliminated. The descrambler 427 is not
necessary when the scrambler 404 is not used. Implementation of the
averager 428 becomes more awkward because the map and frame count
information is transmitted only once when a 64/12 Kerdock encoder
is used. While it might be possible to average only the map
information from two succeeding frames because only the frame count
typically changes from frame to frame (unless the frame count has
expired), the additional robustness obtained from the use of longer
Kerdock code vectors makes averaging unnecessary.
A non-systematic Kerdock decoder 454 is shown in FIG. 17 and may be
used for the Kerdock decoder 430. The non-systematic Kerdock
decoder 454 accepts an input having 64 bits and outputs a vector of
12 bits that may contain two of the four bits of the frame count in
addition to either the current map or the next map.
More specifically, a correlator 456 correlates the 64 input bits
with each of 4096 Kerdock code words stored in a look-up table 458.
These Kerdock code words may be the same Kerdock code words stored
in the look up table 452. The correlation implemented by the
correlator 456, for example, may be a dot product of the input 64
bits and each of the Kerdock code words stored in the look-up table
458.
Thus, the first bit of the 64 input bits is multiplied by the first
bit of a first Kerdock code word stored in the look-up table 458 to
form a first product, the second bit of the 64 input bits is
multiplied by the second bit of the first Kerdock code word stored
in the look-up table 86 to form a second product, . . . , and the
sixty-forth bit of the 64 input bits is multiplied by the
sixty-forth bit of the first Kerdock code word stored in the
look-up table 86 to form a sixty-forth product. The resulting
sixty-four products are added to form a first correlation between
the 64 input bits and the first Kerdock code word stored in the
look-up-table 458. This process is repeated for each of the other
4095 Kerdock code words stored in the look-up table 458.
An identifier 460 identifies the Kerdock code word from the look-up
table 458 that produces the largest correlation, and outputs the
twelve bits that correspond to this Kerdock code word as the twelve
output bits making up either the current and two of the frame count
bits or the next map and the other two frame count bits. The
identifier 460 may also form the difference between the largest
correlation and the next largest correlation as a reliability
factor that indicates the reliability with which the 64 input bits
have been decoded.
It is possible to given a particular frame count in the transmitted
frames a specialized meaning. For example, a frame count of 1111
can be used to indicate to the receiver that the current map and
the next map are the same.
In the context of the embodiment described above with respect to
FIGS. 16 and 17, a static ghost can make properly receiving and
decoding the map information difficult, if not impossible. The
embodiment of the invention described below in relation to FIGS. 18
and 19 facilitates the proper receiving and decoding of the map
information even in the presence of a static ghost.
As shown in FIG. 18, a non-systematic Kerdock encoder 470 in the
form of a 64/12 encoder may be used for the Kerdock encoder 402.
The non-systematic Kerdock encoder 470, as before, accepts an input
having 12 bits, such as the map data sub-units A.sub.0, B.sub.0,
and C.sub.0 having a total of twelve bits, and outputs a
corresponding code word having 64 bits by reading out an
appropriate 64 bit code word from a look-up table 472.
Also as before, when the Kerdock encoder 470 is used as the Kerdock
encoder 402 of FIG. 14, the controller 400 supplies two groups of
twelve bits per frame to the Kerdock encoder 470. The first group
contains the current map and the first two of the four bits that
comprise the frame count. The Kerdock encoder 470 uses these twelve
bits in the first group as an address into the look up table 472 in
order to output a corresponding 64 bit Kerdock code vector. The
data field formatter inserts this 64 bit Kerdock code vector into
the odd field of a frame.
The second group contains the next map and the second two of the
four bits that comprise the frame count. The Kerdock encoder 470
uses these twelve bits in the second group as an address into the
look up table 472 in order to output a corresponding 64 bit Kerdock
code vector. The data field formatter inserts this 64 bit Kerdock
code vector into the even field of a frame.
The 64 bit Kerdock code vectors read from the look up table 472 are
supplied to an inverter 474 and also to a first contact 476 of a
switch 478. The output of the inverter 474 is supplied to a second
contact 480 of the switch 478. The switch 478 has a movable contact
482 that is controlled by the controller 400 (see dashed line).
When the 64 bit Kerdock code vector that is to be inserted into the
odd field of a frame is read out of the look up table 472, the
switch 478 is controlled by the controller 400 so that the first
contact 476 and the movable contact 482 engage and the inverter 474
is bypassed. Therefore, this 64 bit Kerdock code vector is inserted
into the odd field of a frame as a non-inverted 64 bit Kerdock code
vector.
However, when the 64 bit Kerdock code vector that is to be inserted
into the even field of a frame is read out of the look up table
472, the switch 478 is controlled by the controller 400 so that the
second contact 480 and the movable contact 482 engage and the
inverter 474 is not bypassed. Therefore, this 64 bit Kerdock code
vector is inserted into the even field of a frame as an inverted 64
bit Kerdock code vector. This process continues so that odd field
64 bit Kerdock code vectors are non-inverted and the even field 64
bit Kerdock code vectors are inverted.
A non-systematic Kerdock decoder 490 is shown in FIG. 19 and may be
used for the Kerdock decoder 430. The non-systematic Kerdock
decoder 490 accepts an input having 64 bits and outputs a vector of
12 bits that contains two of the four bits of the frame count in
addition to ten bits of map information.
More specifically, a received 64 bit Kerdock code vector is
provided both to an inverter 492 and to a first contact 494 of a
switch 496. The output of the inverter 492 is coupled to a second
contact 498 of the switch 496. The switch 496 has a movable contact
500 that is coupled to a combiner 502.
When the 64 bit Kerdock code vector in the odd field of a frame is
received, the switch 496 is controlled by the digital processor 38
(see dashed line) so that the first contact 494 and the movable
contact 500 engage and the inverter 492 is bypassed. Therefore,
this 64 bit Kerdock code vector is passed directly to the combiner
502, which holds this odd field 64 bit Kerdock code vector until
the even field 64 bit Kerdock code vector is received. The combiner
502 is controlled by the digital processor 38 (see dashed
line).
When the 64 bit Kerdock code vector in the even field of a frame is
received, the switch 496 is controlled by the digital processor 38
so that the second contact 498 and the movable contact 500 engage
and the inverter 492 is not bypassed. Therefore, this even field 64
bit Kerdock code vector, which had been inverter by the inverter
474 in the transmitter, is re-inverted by the inverter 492 back to
its original state.
The combiner 502 performs a bit wise addition of the re-inverted
even field 64 bit Kerdock code vector and the odd field 64 bit
Kerdock code vector that it previously held. The combiner 502
supplies the combined 64 bit Kerdock vector to a correlator 504.
This process continues so that corresponding pairs of odd field 64
bit Kerdock code vectors and re-inverted even field 64 bit Kerdock
code vectors are likewise combined into a corresponding combined 64
bit Kerdock code vector that is supplied by the combiner 502 to the
correlator 504.
The correlator 504 correlates the combined 64 bit Kerdock code
vector from the combiner 502 with each of 4096 Kerdock code words
stored in a look-up table 508. These Kerdock code words may be the
same Kerdock code words stored in the look up table 472. The
correlation implemented by the correlator 504 for example, may be a
dot product of the input 64 bits and each of the Kerdock code words
stored in the look-up table 506.
In the case where the current map transmitted as the odd field 64
bit Kerdock vector and the next map transmitted as the even field
64 bit Kerdock vector are the same, the correlator 504 produces a
single, large peak correlation. An identifier 508 identifies the
Kerdock code word from the look-up table 506 that produces this
single, large correlation peak, and outputs the twelve bits that
correspond to this Kerdock code word as the twelve output bits that
make up both the current map and the next map.
In the case where the current map transmitted as the odd field 64
bit Kerdock vector and the next map transmitted as the even field
64 bit Kerdock vector are not the same, the correlator 504 produces
two smaller correlation peaks. Because these two smaller but still
relatively large correlation peaks result from the correlation
process, the digital processor 38 (see dashed line to the
correlator 504) can determine that the current map and the next map
are not the same. In this event, the digital processor 38 can
ignore the correlation result and instead use a map that had
previously been stored in a memory 510 (see dashed line).
If a ghost of static data is received at the time both the current
map and the next map are received, the ghost received during the
current map is not inverted, but the ghost received during the next
map is inverted by the inverter 492. Accordingly, when the combiner
502 combines the Kerdock code vectors representing the current map
and the inverted next map, the ghosts cancel. In this manner, the
map information is properly received and decoded even in the
presence of a static ghost.
Certain modifications of the present invention have been discussed
above. Other modifications will occur to those practicing in the
art of the present invention. For example, the blocks that have
been described above in relation to the various drawing figures
described herein may be hardware blocks, software modules, logic
arrays, etc. Moreover, the arrangements shown in these drawing
figures may be implemented as separate blocks as shown, or the
blocks may be combined or divided as desired without departing from
the scope of the invention.
Also, as disclosed above, the convolutional interleaver 14 and
de-interleaver 40 are preferably characterized by the parameters
N=48, B=16 and M=3. However, the convolutional interleaver 14 and
de-interleaver 40 may be characterized by the other values for the
parameters N, B, and M.
As described above, the map as originally transmitted is not
scrambled and the duplicate of the map is scrambled. Instead, the
map as originally transmitted may be scrambled, in which case the
duplicate of the map is not scrambled. Moreover, it is possible to
scramble both the map and its duplicate according to different
scrambling sequences.
Moreover, the map and its duplicate can be combined in ways other
than averaging. For example, the map and its duplicate may simply
be added. Alternatively, if a receiver has a ghost detector, then
the map and its duplicate do not have to be combined in the case
where the ghost detector does not detect a short static ghost.
Instead, the better of the two maps can be selected in order to
separate the data in a data frame.
Furthermore, as described above, the transmitter of FIG. 14 does
not change the current map or the next map in the fields of the
frame whose frame count is 0 and, instead, makes the map change in
frame k+1 whose frame count is reset to k (or other number). Thus,
in frame k+1, the previous next map becomes the current map, and a
new map is used as the next map. This map change, however, can be
made in the frame following the frame whose frame count is 1 or any
other frame. Thus, the frame count that triggers the map change is
arbitrary.
Additionally, it is noted that four bits are used to specify the
frame count, and that the value of k is thereby limited. However,
the map change described above can be delayed by a number of frames
greater than k. Indeed, the same current map and next map
combination may be inserted into any number of frames greater than
k by simply not decrementing k or not decrementing k completely
until dk frames later, where d is any number greater than 1.
Accordingly, any one or more values of k greater than 0 (or other
switch number) can simply be repeated a desired number of
times.
Also, in connection with at least the invention of FIGS. 14-17,
encoders and decoders using coding and decoding techniques other
than Kerdock encoding and decoding may be used in place of the
Kerdock encoder 402 and the Kerdock decoder 43.
Additionally, as described above, interleaving and de-interleaving
need not be employed in connection with the invention disclosed
with respect to FIGS. 14-17. Nevertheless, interleaving and
de-interleaving may be employed in connection with the invention
disclosed with respect to FIGS. 14-17. Such interleaving and
de-interleaving can provide additional protection against burst
noise.
Moreover, as indicated above, a field may contain E-VSB data coded
using different coding rates. In this case, the map must
additionally designate the various coding rates that apply to the
differently coded E-VSB data segments.
Furthermore, as indicated above with respect to FIGS. 18 and 19, an
inverter in a transmitter inverts the 64 bit Kerdock code vector to
be inserted into the even field and does not invert the 64 bit
Kerdock code vector to be inserted into the odd field.
Alternatively, the inverter in the transmitter could instead
inverts the 64 bit Kerdock code vector to be inserted into the odd
field and not invert the 64 bit Kerdock code vector to be inserted
into the even field. In this case, the inverter in the receiver
inverts the received odd field 64 bit Kerdock code vector and does
not invert the received even field 64 bit Kerdock code vector.
Also, the Kerdock code vectors that are combined by the combiner
502 may be transmitted and received in different fields of the same
frame or in the fields of different frames. For example, the
combiner 502 may be arranged to combine the even field 64 bit
Kerdock code vector from one frame and the odd field 64 bit Kerdock
code vector from an adjacent frame.
Moreover, the switches 478 and 496 have been shown in FIGS. 18 and
19 as mechanical switches for ease of understanding. However, it
should be understood that these switches may be of any type such as
electronic switches.
Accordingly, the description of the present invention is to be
construed as illustrative only and is for the purpose of teaching
those skilled in the art the best mode of carrying out the
invention. The details may be varied substantially without
departing from the spirit of the invention, and the exclusive use
of all modifications which are within the scope of the appended
claims is reserved.
* * * * *