KR20060061247A - 스크램블러, 디스크램블러 및 방법, 및 디스크 장치 - Google Patents

스크램블러, 디스크램블러 및 방법, 및 디스크 장치 Download PDF

Info

Publication number
KR20060061247A
KR20060061247A KR1020050115713A KR20050115713A KR20060061247A KR 20060061247 A KR20060061247 A KR 20060061247A KR 1020050115713 A KR1020050115713 A KR 1020050115713A KR 20050115713 A KR20050115713 A KR 20050115713A KR 20060061247 A KR20060061247 A KR 20060061247A
Authority
KR
South Korea
Prior art keywords
sequence
data
scrambled
value
byte
Prior art date
Application number
KR1020050115713A
Other languages
English (en)
Other versions
KR100654111B1 (ko
Inventor
히로키 다케우치
Original Assignee
엔이씨 일렉트로닉스 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔이씨 일렉트로닉스 가부시키가이샤 filed Critical 엔이씨 일렉트로닉스 가부시키가이샤
Publication of KR20060061247A publication Critical patent/KR20060061247A/ko
Application granted granted Critical
Publication of KR100654111B1 publication Critical patent/KR100654111B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1866Error detection or correction; Testing, e.g. of drop-outs by interleaving
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/12Formatting, e.g. arrangement of data block or words on the record carriers
    • G11B2020/1264Formatting, e.g. arrangement of data block or words on the record carriers wherein the formatting concerns a specific kind of data
    • G11B2020/1288Formatting by padding empty spaces with dummy data, e.g. writing zeroes or random data when de-icing optical discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/14Digital recording or reproducing using self-clocking codes
    • G11B20/1403Digital recording or reproducing using self-clocking codes characterised by the use of two levels
    • G11B20/1423Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code
    • G11B20/1426Code representation depending on subsequent bits, e.g. delay modulation, double density code, Miller code conversion to or from block codes or representations thereof
    • G11B2020/145317PP modulation, i.e. the parity preserving RLL(1,7) code with rate 2/3 used on Blu-Ray discs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B2220/00Record carriers by type
    • G11B2220/20Disc-shaped record carriers
    • G11B2220/25Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
    • G11B2220/2537Optical discs
    • G11B2220/2541Blu-ray discs; Blue laser DVR discs

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Error Detection And Correction (AREA)
  • Optical Recording Or Reproduction (AREA)

Abstract

디스크램블러는 인코딩 시퀀스 Q 와 관련된 바이트 데이터로부터 생성되는 스크램블링된 데이터 및 시퀀스 Q 에 대응하는 스크램블값을 프로세싱 시퀀스 P 로 수신한다. 디스크램블러는 입력 데이터의 인코딩 시퀀스 Q 의 스크램블값을 생성하는 스크램블값 생성부를 포함하고 스크램블값 및 입력 바이트 데이터로부터 디스크램블링된 데이터를 계산한다. 인코딩 시퀀스 Q 는 코드 스트링의 각 바이트 데이터와 관련된다. 인코딩 시퀀스 Q 에 대응하는 스크램블값은 코드 스트링의 인코딩 시퀀스 Q 의 각각에 대응하는 바이트 데이터에 대해 소정의 연산을 수행함으로써 획득된다.
블루-레이, 디스크, 에러 검출, 스크램블러, 디스크램블러

Description

스크램블러, 디스크램블러 및 방법, 및 디스크 장치{SCRAMBLER, DESCRAMBLER AND METHOD, AND DISC APPARATUS}
도 1 은 본 발명의 일 실시형태에 따른 재생 유닛의 신호 프로세서의 일부를 개략적으로 나타낸 블록도.
도 2 는 블루-레이 디스크의 기록 유닛 블록에 포함되는 바이트 단위 데이터의 배열 시퀀스를 나타낸 도면.
도 3 은 2 개의 코드 스트링 (D0, D1) 의 확대도.
도 4 는 인코딩 방향 및 기록 방향에서의 바이트 데이터의 비트들의 배열 시퀀스를 나타내는 패턴도.
도 5 는 스크램블링된 데이터 Si 를 생성하는 스크램블러로서의 시프트 레지스터를 나타낸 도면.
도 6 은 본 발명의 일 실시형태에 따른 재생 유닛의 디스크램블러를 나타낸 블록도.
도 7 은 도 6 의 디스크램블러를 구체적으로 나타낸 도면.
도 8 은 도 7 의 디스크램블러의 108-회 SFR (41) 을 나타내는 회로도.
도 9 는 도 7 의 디스크램블러의 216-회 SFR (42) 을 나타내는 회로도.
도 10 은, 본 발명의 일 실시형태에 따른 재생 유닛의 디스크램블링 프로세스를 나타내는 흐름도.
도 11 은 에러 검출을 위한 에러검출코드들 및 연산 유닛을 나타낸 도면.
도 12 는 블루-레이 디스크의 기록 유닛 블록에 포함되는 비트 단위 데이터의 배열 시퀀스를 나타낸 도면.
도 13 은 2 개의 코드 스트링 (D0, D1) 의 확대도.
도 14 는 본 발명의 일 실시형태에 따른 에러 검출값 계산 방법을 나타낸 도면.
도 15 는 본 발명의 일 실시형태에 따른 재생 유닛의 에러 검출기의 특정 구성을 나타내는 블록도.
도 16 은 도 15 의 에러 검출기의 제산부 (205) 를 나타낸 도면.
도 17 은 본 발명의 일 실시형태에 따른 재생 유닛의 에러 검출 프로세스를 나타낸 흐름도.
도 18 은 본 발명의 일 실시형태에 따른 재생 유닛의 신호 프로세서의 일부를 개략적으로 나타낸 블록도.
*도면의 주요 부분에 대한 부호의 설명*
1 : 신호 프로세서 18 : 디스크램블러
19 : 에러 검출기 20 : 에러 정정기
30 : 시프트 레지스터 40 : 스크램블값 생성기
41 : 108-회 SFR 42 : 216-회 SFR
43 : 스크램블 업데이트 SFR 44 : 섹터 스크램블 초기값 저장소
45 : 행 스크램블 초기값 저장소 46 : 다음 행 스크램블 초기값 저장소
50 : 제어기 100 : 기록 유닛 블록
200 : 시프트 레지스터 201 : 에러 검출기
204 : 대체값 테이블 205 : 제산부
206 : 특정 대체값 테이블 207 : 특수 특정 대체값 테이블
210 : 비트 프로세싱 연산부 220 : 바이트 프로세싱 연산부
318 : EDC 추가 회로 319 : 스크램블러
320 : 에러 정정기 인코더
본 발명은 디스크에 기록될 데이터를 스크램블링하기 위한 스크램블러 및 스크램블링하는 방법, 디스크로부터 판독되는 데이터를 디스크램블링하기 위한 디스크램블러 및 디스크램블링하는 방법, 및 스크램블러 및/또는 디스크램블러를 가지는 디스크 장치에 관련된 것이다.
CD, CD-R/RW 및 CD-ROM 과 같은 제 1 세대 광학 디스크 및 디지털 다목적 디스크 (DVD) 와 같은 제 2 세대 광학 디스크에 이어, 제 3 세대 광학 디스크라고 지칭되는 405 ㎚ (파란색-보라색 광) 의 더 짧은 광원 파장을 가지는 블루-레이 디스크가 개발되었다 (2003 년 10 월 7 일의 "차세대 광학 디스크" 니케이 전자 서적 참조). 블루-레이 디스크는, 빔 스팟 영역을 DVD 경우의 5 분의 1 로 감소시키기 위해 대물 렌즈의 개구수 (NA) 를 0.85 로 증가시키고, 또한 광원 파장을 단축함으로써 DVD 의 기록 밀도보다 약 5 배의 기록 밀도에서의 판독 및 쓰기 기록 마크들을 가능하게 한다. 또한, 블루-레이 디스크는 0.1 ㎜ 두께의 투명 피복층으로 피복되고 디스크 기판에 배치되는 위상 변화 기록층을 가짐으로써 디스크와 레이저 광의 상대적인 기울기에서 기인하는 수차를 감소시킨다.
높은 기록 밀도를 가지고 얇은 피복층을 포함하는 제 3 세대 광학 디스크는 큰 기록 용량을 가지는 반면에, 버스트 에러들은 예를 들어 동일한 결함 크기에도 불구하고 제 2 세대 광학 디스크 등에서보다 더욱 중요하다.
일반적으로, 디지털 데이터를 광학 디스크에 기록할 때, 용이한 재생을 위해 에러 정정 코드 (ECC) 가 추가되고 기록 인코딩 프로세싱이 수행된다. 데이터가 고밀도로 기록되는 블루-레이 디스크의 경우, 데이터를 정확하게 판독하기 위한 에러 정정 등을 위해 복잡한 프로세싱이 요구된다.
이하, ECC 블록으로 지칭되는 에러 정정 블록은 64 킬로바이트 사용자 데이터의 단위로 구성된다. 입력 사용자 데이터는, 2048 바이트의 사용자 데이터에 4 바이트의 에러검출코드 (EDC) 가 추가되는 2052 바이트의 논리 섹터이다. ECC 블록은 32 개의 논리 섹터 (코드 스트링) 및 버스트 에러를 방지하기 위해 규칙적인 간격으로 삽입되는 보조 데이터 (피켓 코드) 를 포함한다 (일본 미심사 특허 출원 공개 제 2003-242728 호 참조). 그 후, ECC 블록은 런 (run) 길이를 제한하기 위해 1-7PP (패리티 보존/금지 RMTR) 변조로 지칭되는 변조 메카니즘에 의해 변조되고 디스크에 기록된다.
블루-레이 디스크의 ECC 블록에 포함되는 기록 데이터는 도 2 에 나타낸 바와 같이 배열된다. 기록 데이터는 아직 회전되지 않았고, ECC 블록을 보조 데이터와 함께 구성하지 않았다. 이것을 이하 기록 유닛 블록이라 한다. ECC 를 추가할 때 열 방향이 데이터 입력 시퀀스 (이하 인코딩 시퀀스라 함) 인 경우, 기록 데이터는 디스크에 행 방향으로 기록된다.
블루-레이 디스크에서, 2048 바이트 사용자 데이터에 추가될 4 바이트 EDC 는, 4 바이트의 0 데이터가 추가된 2048 바이트의 데이터 (코드 스트링) 를 시프트 레지스터에 상술한 인코딩 시퀀스로 순차적으로 입력하여 소정의 연산을 수행함으로써 계산된다. 2048 바이트 사용자 데이터 및 계산된 4 바이트 EDC 로 구성되는 코드 스트링의 에러를 검출하는 것은, 그 코드 스트링을 동일한 시프트 레지스터에 동일한 시퀀스로 입력함으로써 가능하다.
그러나 블루-레이 디스크에서 디스크에 고밀도로 기록된 데이터를 정확하게 재생하기 위해 복잡한 인터리빙 프로세싱이 수행되기 때문에, 코드 스트링들은 인코딩 시퀀스와는 다른 시퀀스로 기록되며, 이하, 이 시퀀스를 기록 시퀀스라고 한다. 따라서, 판독 데이터의 시퀀스는 인코딩의 시퀀스에 대응하지 않고, 따라서, 있는 그대로 에러 검출과 같은 프로세스를 수행하는 것은 불가능하다.
이러한 이유로, 종래의 광학 디스크 장치는 하나의 기록 유닛 블록의 모든 데이터를 판독하고, 그것을 버퍼에 임시로 저장하고, 그 후, 그것을 인코딩 시퀀스와 동일한 시퀀스로 판독해 냄으로써, 정확한 연산을 가능하게 하기 위해 인코딩 시퀀스와 에러 검출 시퀀스가 동일하다.
그러나 본 발명은, ECC 블록에 포함된 모든 코드 스트링들 (기록 유닛 블록들) 을 버퍼로 한번에 로딩하고 기록 시퀀스의 데이터를 인코딩 시퀀스로 재배열하고 에러 검출값을 획득하기 위해 재배열된 데이터를 시프트 레지스터로 입력하는 프로세스는, 기록 유닛 블록들의 모든 데이터를 저장하기 위해 큰 버퍼 메모리를 가지는 장치를 요구하는 것을 인식하였다. 또한, 에러 검출을 위해 발생하는 메모리 액세스는 버퍼 메모리 액세스의 처리량을 감소시킨다.
본 발명의 일 실시형태에 따라, 제 1 시퀀스와 관련된 스크램블링되지 않은 데이터 및 제 1 시퀀스에 대응하는 스크램블값으로부터 생성되는 스크램블링된 데이터를 스크램블값을 이용하여 디스크램블링함으로써 디스크램블링된 데이터를 생성하기 위한 디스크램블러가 제공되며, 여기서 스크램블링된 데이터는 제 1 시퀀스와 관련되고, 제 1 시퀀스에 대응하는 스크램블값 각각은 초기값에 대해 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 획득된다. 이 디스크램블러는, 제 1 시퀀스와 다른 제 2 시퀀스로 입력되는 스크램블링된 데이터의 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부, 및 스크램블링된 데이터 및 스크램블링된 데이터의 제 1 시퀀스에 대응하는 스크램블값으로부터 디스크램블링된 데이터를 계산하는 코드 스트링 연산부를 포함한다.
본 발명은 제 2 프로세싱 순서로 입력되는 바이트 데이터의 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부를 포함하기 때문에, 제 1 시퀀 스와 다른 제 2 시퀀스로 디스크램블링 연산을 수행할 수 있다.
본 발명의 다른 실시형태에 따라, 제 1 시퀀스와 관련된 스크램블링되지 않은 데이터 및 제 1 시퀀스에 대응하는 스크램블값으로부터 스크램블링되고, 스크램블값을 이용하여 디스크램블링되는, 스크램블링된 데이터를 생성하는 스크램블러가 제공되며, 여기서 스크램블링되지 않은 데이터는 제 1 시퀀스와 관련되고, 제 1 시퀀스에 대응하는 스크램블값 각각은 초기값에 대해 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 획득된다. 이 디스크램블러는, 제 1 시퀀스와 다른 제 2 시퀀스로 입력되는 스크램블링되지 않은 데이터의 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부, 및 스크램블링되지 않은 데이터 및 스크램블링되지 않은 데이터의 제 1 시퀀스에 대응하는 스크램블값으로부터 스크램블링된 데이터를 계산하는 코드 스트링 연산부를 포함한다.
본 발명은 제 2 프로세싱 순서로 입력되는 바이트 데이터의 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부를 포함하기 때문에, 제 1 시퀀스와 다른 제 2 시퀀스로 스크램블링/디스크램블링 연산을 수행할 수 있다.
본 발명의 또 다른 실시형태에 따라, 사용자 데이터를 포함하는 K (K 는 자연수) 바이트의 프로세싱대상 코드 스트링으로부터, 각 바이트 데이터가 제 1 시퀀스와 관련되며 에러 검출 코드가 추가된 사용자 데이터로 구성되는 K 바이트의 에러검출코드 추가 코드 스트링을 생성하는 에러검출코드 추가부, 및 에러검출코드 추가 코드 스트링의 각 바이트 데이터 및 제 1 시퀀스에 대응하는 스크램블값으로부터 스크램블링되고 스크램블값을 이용하여 디스크램블링되는 스크램블링된 데이 터를 생성하는 스크램블링부를 포함하는 디스크 장치가 제공된다. 이 디스크 장치에서, 프로세싱대상 코드 스트링을 소정의 연산 방법에 의해 제 1 시퀀스로 프로세싱함으로써 에러검출코드 추가 코드 스트링이 획득된다. 초기값에 대해 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 제 1 시퀀스에 대응하는 각 스크램블값이 획득된다. 에러검출코드 추가부는, 프로세싱대상 코드 스트링의 각 바이트 데이터의 제 1 시퀀스에 대응하는 특정 대체값을 출력하는 대체값 출력부, 및 대체값 출력부의 출력 결과에 따라 프로세싱대상 코드 스트링의 각 바이트 데이터에 대해 각 바이트 데이터 및 각 바이트 데이터에 대응하는 특정 대체값을 제 1 시퀀스와 다른 제 2 시퀀스로 프로세싱함으로써 에러검출코드 추가 코드 스트링을 생성하는 코드 스트링 생성부를 포함한다. 스크램블링부는, 제 2 시퀀스로 입력되는 에러검출코드 추가 코드 스트링의 각 바이트 데이터의 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부, 및 입력 바이트 데이터 및 입력 바이트 데이터의 제 1 시퀀스에 대응하는 스크램블값으로부터 스크램블링된 데이터를 계산하는 코드 스트링 연산부를 포함한다.
또한, 본 발명은 입력 바이트 데이터의 제 1 시퀀스에 대응하는 특정 대체값을 이용함으로써 제 2 시퀀스로도 에러검출코드 추가 코드 스트링을 계산할 수 있다. 또한, 본 발명은, 입력 바이트 데이터의 제 1 시퀀스에 대응하는 스크램블값을 생성함으로써, 제 2 시퀀스로 입력되는 에러검출코드 추가 코드 스트링에 대해 스크램블링 연산을 수행한 결과로서 스크램블링된 데이터를 계산할 수 있다.
따라서, 본 발명은 종래의 인코딩 시퀀스와 다른 시퀀스로 프로세싱한 후에 도 종래의 인코딩 시퀀스로 프로세싱함으로써 디스크램블링될 수 있는 스크램블링된 데이터의 생성을 가능하게 하고, 또한, 종래의 인코딩 시퀀스로 프로세싱함으로써 디스크램블링될 수 있는 스크램블링된 데이터에 대해 종래의 인코딩 시퀀스와 다른 시퀀스로 디스크램블링 연산의 수행을 가능하게 한다.
본 발명의 상기 및 다른 목적들, 이점들 및 특징들이 첨부한 도면들과 연관되는 이하의 설명으로부터 보다 명확해질 것이다.
이하, 첨부 도면들을 참조하여 발명을 상세히 설명한다. 당업자는, 본 발명의 교시를 이용하여 다양한 변형 실시예가 달성될 수 있으며 발명이 예시 목적으로 설명된 실시형태들에 한정되지 않음을 인식할 것이다.
이하, 도면들을 참조하여 본 발명의 특정 실시형태를 상세히 설명한다. 이 실시형태는 본 발명을 특히 디스크램블링 및 에러 검출 계산에서 향상된 프로세싱 성능을 가지는 광학 디스크 재생 유닛에 적용한다. 에러검출코드를 사용자 데이터에 추가할 때의 인코딩 시퀀스와 에러검출코드가 추가된 사용자 데이터를 광학 디스크에 기록할 때의 기록 시퀀스가 서로 다른 광학 디스크 재생 유닛에 이 발명을 적합하게 적용할 수 있다.
이하의 실시형태는, 인코딩 시퀀스와 기록 시퀀스가 상이한 광학 디스크의 예로서 블루-레이 디스크를 취하였지만, 디스크는 블루-레이 디스크에 한정되는 것이 아니라 다른 광학 디스크 및 자기 광학 디스크와 같은 매체일 수도 있다. 따라서, 또한, 본 발명은, 소정 시퀀스의 데이터에 대한 소정의 계산의 수행에 의 해 가역적으로 계산되고 획득될 수 있는 특정 데이터를 매체로/매체로부터 기록 또는 판독하는 데이터 프로세싱에도 적용가능하다. 이하의 실시형태가 재생 유닛을 예로서 취하였지만, 본 발명은 기록 유닛 또는 기록/재생 유닛에 적용할 수도 있음이 명확하다.
1. 광학 디스크 재생 유닛
도 1 은 본 발명의 일 실시형태에 따라 재생 유닛의 신호 프로세서의 일부를 개략적으로 나타내는 블록도이다. 재생 유닛의 신호 프로세서 (1) 에는 디스크 (미도시) 로부터 판독된 데이터의 변조에 의해 획득되는 변조된 데이터가 공급된다. 신호 프로세서 (1) 는 메인 데이터 및 보조 데이터를 분리하는 분리기 (11), 분리기 (11) 에 의해 분리된 메인 데이터를 회전시키는 회전기 (12), 및 보조 데이터를 디인터리빙하는 디인터리버 (13) 를 포함한다. 또한, 신호 프로세서 (1) 는 디인터리빙된 메인 데이터의 신드롬을 생성하는 메인 신드롬 생성기 (14), 그 신드롬을 저장하는 메인 메모리 (15), 디인터리빙된 보조 데이터를 저장하는 BIS 메모리 (16), 및 보조 데이터로부터 신드롬을 생성하는 BIS 신드롬 생성기 (17) 를 포함한다. 또한, 신호 프로세서 (1) 는, 회전기 (12) 로부터 메인 데이터를 수신하고 그 데이터를 디스크램블링하는 디스크램블러 (18) 및 그 데이터의 에러를 검출하는 에러 검출기 (19) 를 포함한다. 또한, 신호 프로세서 (1) 는 각 데이터의 에러를 정정하는 에러 정정기 (20) 를 포함한다. 에러 정정기 (20) 로부터 에러 위치 및 에러 값을 수신하는 입/출력부 (21) 및 디스크램블링된 데이터를 출력하는 출력부 (22) 는 버스 (23) 에 의해 메모리 (24) 에 접속된다. 호스트 인터페이스 (25) 는 버스 (23) 에 접속되고, 호스트 인터페이스 (25) 를 통해 판독되어진 데이터는 PC 와 같은 호스트 (26) 로 전송된다.
블루-레이 디스크에서, 에러 정정 (ECC) 블록은 64 킬로바이트 사용자 데이터 단위로 에러 정정 인코딩된다. ECC 블록은 이후 설명할 롱 디스턴스 코드 (LDC) 블록, 및 피켓 코드로 칭해지는 보조 데이터를 포함한다. 보조 데이터는 버스트 지시자 서브코드 (burst indicator subcode; BIS) 에 의해 에러 정정됨으로써, 보조 데이터의 에러 상태 검출에 의해 버스트 에러가 검출될 수 있다.
사용자 데이터는 2048 바이트 단위로 판독되고 기록된다. 4 바이트 에러 검사 코드 EDC 가 사용자 데이터에 추가됨으로써, 각 논리 섹터는 2052 바이트로 구성된다. 논리 섹터들은 8 개의 섹터로 그룹핑되고, 각각 216 바이트를 가지는 76 개의 조각들로 분할되고, 리드-솔로몬 코드로 인코딩된다. 이 데이터는 38 바이트 × 496 바이트 (496 = (2 × 216) + (2 × 32)) 의 영역 (LDC) 에 배열된다. 따라서, LDC 는 304 코드 워드들로 구성되고, 각 코드 워드는 216 개의 정보 심볼 및 32 개의 패리티 심볼을 포함하는 코드 워드 길이의 248 심볼들로 구성된다. 코드 워드들은 ECC 블록의 세로 방향으로 매 2 × 2 마다 인터리빙되어 152 바이트 × 496 바이트의 ECC 블록을 구성한다.
디스크로부터 판독된 데이터는 변조되고 광학 디스크 장치의 신호 프로세서 (1) 의 분리기 (11) 로 제공된다. 분리기 (11) 는 판독 데이터를 LDC (이하, 메인 데이터라 함) 및 보조 데이터로 분리하고 그것들을 회전기 (12) 및 디인터리버 (13) 에 각각 제공한다. 메인 데이터는 EEC 블록에서 열 방향으로 회전되었 기 때문에, 회전기 (12) 는 ECC 블록에 포함된 32 개의 논리 섹터들을 회전 이전의 상태로 되돌리도록 설정하고 그것들을 메인 신드롬 생성기 (14) 및 디스크램블러 (18) 에 제공한다.
메인 신드롬 생성기 (14) 는 신드롬을 생성하기 위해 메인 데이터에 대해 소정의 계산을 수행하고 그것을 예를 들어 정적 랜덤 액세스 메모리 (SRAM) 로 구현되는 메인 메모리 (15) 에 제공한다. 보조 데이터는 디인터리버 (13) 에 의해 디인터리빙되고 정적 RAM 등으로 구현되는 BIS 메모리 (16) 에 저장된다. 그 후, 그것은 보조 데이터의 신드롬을 생성하기 위해 BIS 신드롬 생성기 (17) 로 매 코드 워드마다 제공된다. 보조 데이터의 신드롬은 BIS 메모리 (16) 에 저장된 보조 데이터를 정정하기 위해 에러 정정기 (20) 에 제공된다. 버스트 에러가 존재하는 경우, 메인 데이터는 그 정보에 기초하여 정정된다.
한편, 메인 메모리 (15) 는 메인 데이터의 신드롬을 저장한다. 그 신드롬은 에러 정정기 (20) 로 매 코드 워드로 제공된다. 메모리 (24) 에 저장된 메인 데이터의 에러 위치 및 에러 값은 에러 정정 수행을 위해 입/출력 회로 (21) 로 제공된다.
또한, 메인 데이터는 디스크램블러 (18) 에 의해 디스크램블링되고 에러 검출기 (19) 에 의해 에러가 검출된다. 특히, 이 실시형태의 디스크램블러는, 기록 이전에 수행된 스크램블링의 시퀀스 (이하, 인코딩 시퀀스라고 함) 와 상이한 시퀀스로 기록된 데이터를 인코딩 시퀀스와 상이한 시퀀스로 판독할 수 있고, 인코딩 시퀀스와 상이한 시퀀스 (이하, 프로세싱 시퀀스라고 함) 로 디스크램블링을 수 행할 수 있다. 또한, 이 실시형태의 에러 검출기 (19) 는 앞에서의 프로세싱 시퀀스의 데이터 입력으로부터 각 코드 스트링의 에러 검출값을 계산하는 회로이다. 디스크램블링 및 에러 검출값 계산을 인코딩 시퀀스와 상이한 프로세싱 시퀀스로 수행하는 것이 가능하기 때문에, 판독 데이터를 프로세싱 전에 인코딩 시퀀스로 재배열할 필요가 없다. 이것은 도 1 의 메모리 (24) 에서 이용되는 작업 영역인, 시퀀스를 재배열하기 위한 버퍼의 필요를 제거한다.
2. 데이터 배열
이하, 이 실시형태의 재생 유닛의 디스크램블러 및 에러 검출기를 설명한다. 우선, 블루-레이 디스크에서 기록 유닛 블록의 데이터의 배열 시퀀스를 설명한다. 도 2 는 블루-레이 디스크의 기록 유닛 블록에 포함되는 데이터의 배열 시퀀스를 바이트 단위로 나타낸 것이다 (이하 바이트 데이터라 함). 도 2 는 도 1 의 분리기 (11) 에 의해 블루-레이 디스크의 ECC 블록으로부터 보조 데이터를 분리하고 메인 데이터를 반대회전한 (derotating) 후의 데이터 구조를 나타낸다. 이하의 설명에서, 도 2 에 나타낸 2052 × 32 바이트의 데이터는 기록 유닛 블록이라고 한다. 기록 유닛 블록 (100) 은 여기서 D0 내지 D31 로도 지칭되는 32 개의 코드 스트링 (섹터들) D(x) 로 구성된다. 하나의 코드 스트링 D(x) 는, 4 바이트의 EDC 코드가 2048 바이트의 사용자 데이터에 추가된 2052 바이트 데이터로 구성된다. 도 3 은 2 개의 코드 스트링 (D0, D1) 의 확대도이다. 도면에서 나타낸 값들은 바이트 단위의 디스크램블링의 시퀀스 (인코딩 시퀀스) 를 나타낸다. 기록 유닛 블록은 304 개의 열 및 216 바이트 행들을 포함한다. 도 3 에서, N 은 열 번호 (0 ≤ N ≤ 303) 를 나타내고 M 은 행 번호 (0 ≤ M ≤ 215) 를 나타낸다.
코드 스트링 D(x) 에서, 216 바이트들은 한 열에서 배열되고 연속적으로 다음 열에서 배열된다. 따라서, 예를 들어, N = 제 9 열은, M = 제 0 행 내지 제 107 행을 점유하는, 코드 스트링 D0 의 제 1994 내지 제 2051 바이트 데이터를 가진다. N = 제 9 열의 M = 제 108 내지 제 215 행은 다음 코드 스트링 D1 의 제 0 내지 제 107 바이트 데이터가 점유한다. 이러한 방식으로, 기록 유닛 블록들은 짝수 코드 스트링 및 홀수 코드 스트링이 하나의 유닛 (코드 스트링 세트) 을 형성하도록 배열된다. 즉, 데이터가 19 개의 열로 구성되는 매 2 개의 코드 스트링마다 동일한 시퀀스로 반복적으로 배열된다.
코드 스트링 D0 내지 D31 은, ECC 블록을 형성하기 위해 도 2 및 도 3 에 나타낸 인코딩 시퀀스로 소정의 계산을 수행함으로써 스크램블링되고, 디스크에 기록된다. 기록시, 기록 유닛 블록의 데이터는 도 2 의 화살표에 의해 나타내어진 행 방향으로 기록되며, 이 행 방향은 인코딩 방향으로서의 열 방향에 수직이다.
도 2 및 도 3 의 열 방향의 바이트 시퀀스가 인코딩 시퀀스이다. 이 사양에서, 열 방향의 바이트 데이터는 도 2 및 도 3 의 숫자 값으로 나타내어지는 인코딩 바이트 시퀀스 (제 1 시퀀스) Q 와 관련된다. 인코딩 바이트 시퀀스 Q 는 인코딩 시퀀스이다. 또한, 비트 단위의 데이터 시퀀스는 필요에 따라 인코딩 비트 시퀀스 q 로 칭해진다. 이 시퀀스의 바이트 데이터가 열 및 행의 어레이로 배열되는 기록 유닛 블록에서, 행 방향의 바이트 시퀀스는 디스크의 기록 데이 터의 시퀀스이다. 이 사양에서, 행 방향의 바이트 데이터는 기록 바이트 시퀀스 (제 2 시퀀스) P 로 나타내어진다. 인코딩 바이트 시퀀스 Q 는 블루-레이 디스크의 원래의 디스크램블링 프로세싱 및 에러 검출 프로세싱의 프로세싱 시퀀스를 나타낸다. 기록 바이트 시퀀스 P 는 블루-레이 디스크의 기록 데이터의 시퀀스를 나타내며, 이것은 이 실시형태의 디스크램블링 프로세싱 및 에러 검출 프로세싱의 프로세싱 시퀀스를 나타낸다. 따라서, 이 실시형태는, 디스크에의 데이터 기록 및 재생은 보통의 블루-레이 디스크의 기록 바이트 시퀀스 P 와 동일한 시퀀스로 수행하는 반면에, 디스크램블링 및 에러 검출은 종래의 인코딩 바이트 시퀀스 (= Q) 와 상이한 시퀀스로 수행한다. 이 실시형태는 디스크램블링 및 에러 검출 프로세싱의 시퀀스들을 기록 바이트 시퀀스 P 와 동일하게 함으로써, 데이터가 그 자체로서 프로세싱될 수 있도록 판독 데이터를 버퍼에 한번에 로딩하고 그것을 재배열할 필요를 제거시킨다.
도 4 는 바이트 데이터에 포함된 비트들의 배열 시퀀스를 인코딩 방향 및 기록 방향으로 나타내는 패턴도이다. 도 4 에 나타낸 바와 같이, 열 방향의 인코딩 바이트 시퀀스 Q 의 하나의 바이트 데이터는 인코딩 비트 시퀀스 q 로 최상위 비트 MSB 내지 최하위 비트 LSB 를 포함한다. 도 13 에 나타낸 바와 같이, 기록 유닛 블록이 비트 단위로 관측될 때, 기록 방향의 하나의 바이트 데이터는 인코딩 방향의 8 비트 데이터에 대응한다. 따라서, 데이터를 인코딩 바이트 시퀀스 Q 또는 인코딩 비트 시퀀스 q 로 기록할 때, 데이터는 도 4 에 나타낸 바와 같이 기록 비트 시퀀스 p 로 배열된다. 따라서, 기록 방향의 각 바이트 데이터의 MSB 내지 LSB 는 인코딩 방향의 각 바이트 데이터의 MSB 내지 LSB 에 대응한다. 기록 방향의 비트 데이터는 이 사양의 기록 비트 시퀀스 p 와 관련된다.
이 실시형태의 디스크램블링 프로세싱은 행 방향의 바이트 시퀀스 (기록 바이트 시퀀스 P) 에 따라 바이트 단위로 수행된다. 인코딩 바이트 시퀀스 Q 는 0 ≤ Q ≤ 2051 를 만족하도록 하나의 인코딩 열과 관련된다. 기록 바이트 시퀀스 P 는 0 ≤ P ≤ 65663 를 만족하도록 하나의 기록 유닛 블록과 관련된다.
3. 디스크램블러
디스크에 기록된 데이터는 기록의 시퀀스로 판독되기 때문에, 판독 데이터는 인코딩 시퀀스 Q 와 상이한 시퀀스이다. 그러나, 스크램블링은 데이터에 대해 인코딩 시퀀스로 소정의 연산을 수행함으로써 디스크램블링되는 프로세스이기 때문에, 판독 시퀀스 P 로 수행되는 소정의 연산으로 데이터를 디스크램블링할 수 없다. 이 실시형태는 데이터가 인코딩 시퀀스 Q 와 상이한 기록 시퀀스 P 로 프로세스되더라도 그 데이터를 디스크램블링하는 연산 회로 및 방법을 목적으로 한다.
먼저, 본 발명의 이해를 촉진하기 위해 디스크램블링 프로세싱을 설명한다. 코드 스트링을 스크램블링 및 디스크램블링할 때 동일한 방법이 이용될 수도 있다. 데이터를 스크램블링할 때, 8 비트 입력 데이터 Di 와 스크램블러에서 생성되는 8 비트 스크램블링된 데이터 (스크램블값) Si 의 mod 2 가산 (배타적 논리합 연산) 은 다음의 수학식에서 나타내어지는 스크램블링된 데이터 DSi 를 제공하며,
DSi = Si + Di
여기서 "+" 는 배타적 논리합 연산 EOX (XOR) 를 나타낸다. 또한, 심볼 "+" 는 이하의 설명에서도 XOR 연산을 나타낸다.
유사하게, 데이터를 디스크램블링할 때, 스크램블링된 입력 데이터 Di 와 스크램블러에서 생성되는 8 비트 스크램블값 Si 는 디스크램블링된 데이터 DSi 를 생성한다. 스크램블값 Si 는 두 경우에 모두 입력 데이터 Di 에 대응한다. 이하, 디스크램블링을 설명한다.
도 5 는 스크램블링된 데이터 Si 를 생성하는 스크램블러의 예로서 시프트 레지스터를 나타낸다. 도 5 에 나타낸 시프트 레지스터 (30) 는 소정의 값으로 초기화된다. 8 시프팅 후의 b7 내지 b0 의 Si 값과 입력 데이터 Di 에 대한 XOR 연산은 디스크램블링된 데이터 DSi 를 생성한다. 따라서, 디스크램블링된 데이터 DSi 의 획득은 스크램블값 Si 를 획득하는 것을 요구한다.
도 2 및 도 3 에서 나타낸 기록 유닛 블록에 포함되는 데이터는 기록 유닛 블록의 행 방향 (기록 방향) 으로 판독된다. 데이터는 기록 바이트 시퀀스 P 로 디스크램블러로 입력된다. 따라서, 상기 수학식 1 의 연산 표현은 다음과 같다.
DSi = Si + Di
= S (P × 216) mod 2052 + Di
디스크램블러로 입력되는 기록 바이트 시퀀스 P (디스크램블링 시퀀스) 와 인코딩 바이트 시퀀스 Q 가 동일한 경우, 스크램블값 Si 는 각 데이터 입력 클록에 대해 시프트 레지스터 (30) 를 1 회 시프팅함으로써 획득될 수 있다. 그러나 입력 데이터가 인코딩 바이트 시퀀스 Q 와 상이한 디스크램블링 시퀀스인 기록 바이트 시퀀스 P 로 입력되는 경우, 스크램블값 Si 는 시프트 레지스터 (30) 를 단순하게 시프팅하는 것에 의해 획득될 수 없다. 도 3 에 나타낸 바와 같이, 기록 바이트 시퀀스 P 는, DQ =0 → DQ =216 → DQ =432 → DQ =648 → … 이다. 따라서, 시프트 레지스터 (30) 로부터 출력될 시프트 레지스터 값 (스크램블값) 은, 0 회 시프팅된 값 → 216 회 시프팅된 값 → 432 회 시프팅된 값 → … 이다. 따라서, M = 행 (행은 0 내지 303) 이고 N = 열 (열은 0 내지 215) 인경우, 데이터가 기록 바이트 시퀀스 P 로 입력되었을 때 출력될 스크램블값은 ((216 × N ) mod 2052 + M) 회 시프팅된 값이다. 이것은 1 바이트 데이터의 각 입력에 대해 시프트 레지스터 (30) 를 216 회 시프팅시킬 필요가 있는 것을 의미한다. 이것은 각 계산에 대해 216 클록을 요구하며, 더 긴 디스크램블링 프로세싱 시간을 유발한다. 이를 방지하기 위해서는, 전체 기록 유닛 블록을 버퍼로 한번에 로딩하고, 그 데이터를 인코딩 바이트 시퀀스 Q 로 재배열하고, 그것을 시프트 레지스터 (30) 로 입력할 필요가 있다. 이것은 기록 유닛 블록을 한번에 로딩하기 위한 RAM 과 같은 저장 영역을 요구하고, 다른 곳에 할당될 수 있는 RAM 액세스 성능을 저하시킨다.
이 결점을 극복하기 위해, 이 실시형태는 인코딩 바이트 시퀀스 Q 와 기록 바이트 시퀀스 P 의 일정성 (regularity) 을 이용한다. 이 실시형태는, 기록 바이트 시퀀스 P 로 시프트 레지스터 (30) 의 스크램블값과 유사한 스크램블값 Sk 를 계산하기 위해, 시프트 레지스터 (30) 가 데이터를 1 회 시프팅하는 반면 데이터를 복수 회 시프팅할 수 있는 2 개의 시프트 레지스터를 결합한다. 이것은 인코딩 바이트 시퀀스 Q 와 상이한 시퀀스로 입력되는 데이터의 디스크램블링 수행을 가능하게 한다.
이하, 이 실시형태의 디스크램블러를 상세히 설명한다. 도 3 에 나타낸 바와 같이, 기록 바이트 시퀀스 P 에서, 기록 유닛 블록 (100) 의 바이트 데이터는, 인코딩 바이트 시퀀스 Q 의 매 216 바이트 또는 108 바이트마다의 데이터이다. 따라서, 이 실시형태는, 하나의 클록에 시프트 레지스터 (30) 에서 108 회 시프팅된 값을 계산할 수 있는 108 회 시프트 레지스터 (SFR) 및 하나의 클록에 시프트 레지스터 (30) 에서 216 회 시프팅된 값을 계산할 수 있는 216-회 SFR 을 이용한다. 108-회 SFR 및 216-회 SFR 은 시프트 레지스터 (30) 의 매 16 비트에 대해 특정 승산기로 XOR 연산을 수행함으로써 구현된다. 이 실시형태는, 108-회 SFR 및 216-회 SFR 의 세트를 포함하는 스크램블값 생성기에서 기록 바이트 시퀀스 P 로 입력되는 바이트 데이터의 스크램블값을 계산함에 의해 1 바이트 데이터에 대해 요구되는 프로세싱 시간을 단축한다.
도 6 은 도 1 의 디스크램블러 (18) 를 나타내는 블록도이다. 도 7 은 도 6 의 디스크램블러를 세부적으로 나타낸 것이다. 디스크램블러 (18) 는 스크램블값 Si 를 이용하여 인코딩 시퀀스 Q 및 인코딩 시퀀스 Q 에 대응하는 스크램블값과 관련되는 스크램블링된 데이터를 디스크램블링하여 디스크램블링된 데이터를 생성한다. 스크램블링된 데이터는 인코딩 시퀀스 Q 와 관련되고, 인코딩 시퀀스 Q 에 대응하는 각 스크램블값은 인코딩 시퀀스 Q 에 대응하는 소정의 연산을 초기값에 대해 수행함으로써 획득된다.
디스크램블러 (18) 는 기록 유닛 블록의 각 데이터 DQ 를 판독 시퀀스 (판독 바이트 시퀀스 P) 로 수신한다. 도 6 에 나타낸 바와 같이, 디스크램블러 (18) 는, 인코딩 시퀀스 Q 와 상이한 기록 바이트 시퀀스 P 로 입력된 스크램블링된 데이터 SQ 의 인코딩 시퀀스 Q 에 대응하는 판독 바이트 시퀀스 P 로, 바이트 데이터 DQ 를 디스크램블링하기 위해, 스크램블값 SQ 를 생성하는 스크램블값 생성부 (스크램블값 생성기; 40), 및 스크램블링된 데이터 및 스크램블링된 데이터의 인코딩 시퀀스 Q 에 대응하는 스크램블값 SQ 로부터 디스크램블링된 데이터를 계산하는 논리 회로 (이하, XOR 라고 함; 60) 를 포함한다. 코드 스트링 연산부는 제어기 (50) 및 XOR (60) 를 포함한다. 제어기 (50) 는 데이터 DQ 에 따라 스크램블값 생성기 (40) 를 제어한다. XOR (60) 는 스크램블값 SQ 와 입력 데이터 DQ 에 대 한 XOR 연산의 수행 및 그 결과를 기록 바이트 시퀀스 P 로 디스크램블링함으로써 획득되는 데이터 DSQ 를 출력한다.
스크램블값 생성기 (40) 는 108-회 SFR (41), 216-회 SFR (42), 스크램블 업데이트 SFR (43), 섹터 스크램블 초기값 저장소 (44), 행 스크램블 초기값 저장소 (45), 다음 행 스크램블 초기값 저장소 (46), 및 스위치들 (47 내지 49) 을 포함한다. 제어기 (50) 는 입력 데이터 DQ 의 열 및 행을 카운트하는 카운터 (51) 및 카운터의 카운트 값에 따라 제어 신호를 생성하는 제어 신호 생성기 (52) 를 포함한다.
섹터 스크램블 초기값 저장소 (44) 는 코드 스트링의 Q = 제 0 데이터 DQ 에 대응하는 스크램블값 S0 를 저장한다. 스크램블값 S0 는 스크램블링용으로 이용되는 도 4 의 시프트 레지스터 (30) 의 초기값이다.
행 스크램블 초기값 저장소 (45) 는 현재 열 (N = 0 내지 303) 및 행 (M = 0 내지 215) 에 대응하는 초기값을 저장하며, 이 초기값을 여기서는 행 스크램블 초기값이라고 한다. 스크램블 업데이트 SFR (43) 은 행 스크램블 초기값에 대응하는 업데이트된 스크램블값으로서 현재 행 다음의 행에 대응하는 초기값을 생성한다. 스크램블 업데이트 SFR (43) 은 도 5 의 시프트 레지스터 (30) 와 동일한 구성을 가지며, 그것은 1 클록에 시프트 레지스터 (30) 의 1 회 시프트 연산과 동일한 연산을 수행할 수 있다.
스위치 (47) 는 제어 신호 생성기 (52) 로부터 제어 신호 S1 을 수신하고, 행 스크램블 초기값 및 업데이트된 스크램블값으로부터 하나를 선택하고, 그리고 그 선택된 값을 출력한다. 다음 행 스크램블값 저장소 (46) 는 스위치 (47) 로 부터 선택되고 출력된 값을 다음 행 스크램블 초기값으로서 저장한다.
스위치 (48) 는 제어 신호 생성기 (52) 로부터 제어 신호 S2 를 수신하고, 섹터 스크램블값 및 다음 행 스크램블 초기값으로부터 하나를 선택하고, 그리고 그 선택된 값을 출력한다. 행 스크램블 초기값 저장소 (45) 는 스위치 (48) 로부터 선택되고 출력된 값을 현재 행 스크램블 초기값으로서 저장한다.
108-회 SFR (41) 은 현재 행 스크램블 초기값을 수신하고 이 값을 108 회 시프팅한 후의 값을 출력한다. 216-회 SFR (42) 은 이전 데이터 DQ - 1 의 스크램블값 SQ -1 을 216 회 시프팅한 후의 값을 출력한다. 스위치 (49) 는 제어 신호 생성기 (52) 로부터 제어 신호 S3 를 수신하고, 현재 행 스크램블 초기값, 108 회 시프팅된 값 및 216회 시프팅된 값으로부터 하나를 선택하고, 그리고 그 선택된 값을 스크램블값 SQ 로서 출력한다.
카운터 (51) 는 열 카운트 값 N 을 데이터 DQ 가 입력될 때마다 0 부터 303 까지 증가시킨다. 또한, 열 카운트 값이 303 에서 0 으로 변할때 카운터 (51) 는 행 카운트 값 M 을 0 부터 215 까지 증가시킨다. 행 카운트 값 M 이 215 에서 0 으로 변하는 타이밍은 하나의 기록 유닛 블록의 프로세싱 종료 타이밍이다.
제어 신호 생성기 (52) 는 제어 신호 S1 에 따라 행 카운트 값 M 이 증가하기 1 클록 전 타이밍에 스크램블 업데이트 SFR (43) 을 1 회 시프트시킨다. 스 크램블 업데이트 SFR (43) 은 현재 행에 대응하는 N = 제 0 열의 스크램블값을 다음 행에 대응하는 스크램블 값 (업데이트된 스크램블 값) 으로 업데이트한다. 이 연산은 이후 설명한다.
또한, 제어 신호 생성기 (52) 는, (N mod 19) = 9 이고 (M mod 216) = 108 일 때 또는 (N mod 19) = 0 이고 (M mod 216) = 0 일 때 섹터 스크램블 초기값 S0 을 선택하고 출력하도록, 그리고 다른 타이밍에서는 다음 행 스크램블 초기값을 선택하고 저장된 값을 출력하도록 스위치 (48) 를 제어하는 제어 신호 S2 를 출력한다.
또한, 제어 신호 생성기 (52) 는, (N mod 19 ) = 0 일 때 행 스크램블 초기값 저장소 (45) 를 선택하도록, (N mod 19) = 10 이고 M = 0 내지 107 일 때 및 (N mod 19) = 9 이고 M = 108 내지 215 일 때 108-회 SFR (41) 을 선택하도록, 그리고 다른 타이밍에서는 216-회 SFR (42) 을 선택하고, 그 선택된 값을 출력하도록 스위치 (49) 를 제어하는 제어 신호 S3 를 출력한다.
도 8 은 108-회 SFR (41) 을 나타내고 도 9 는 216-회 SFR (42) 을 나타낸다. 도 8 및 도 9 의 상단부에 108-회 SFR (41) 및 216-회 SFR (42) 의 회로도가 각각 나타나 있다. 도 8 및 도 9 의 하단부에 108-회 SFR (41) 및 216-회 SFR (42) 의 레지스터들에 각각 저장되는 비트들 b0 내지 b15 의 연산 표현이 나타나 있다. 108-회 SFR (41) 및 216-회 SFR (42) 은 모두 16 비트 (b0 내지 b15) 병렬 SFR 이고, 도 5 의 시프트 레지스터 (30) 에서 각각 108 회 및 216 회 시프팅 된 값과 등가의 값들을 출력한다. 시프트 레지스터 (30) 는 다음의 다항식에 의해 획득되며,
φ(x) = X16 + X15 + X13 + X4 + 1
여기서 X 는 시프트 레지스터가 생성 다항식에 의해 나타내어질 때의 엘리먼트를 나타낸다. 도 8 및 도 9 의 하단부에 각각 나타낸 108 회 및 216 회의 시프팅 연산에 대한 수식 표현은 다항식 φ(x) 로부터 주어진다. 108-회 SFR (41) 및 216-회 SFR (42) 은 수식 표현들을 실행하기 위한 시프트 레지스터들이다.
4. 디스크램블링 프로세스
이하, 도 7 에 나타낸 디스크램블러의 디스크램블링 프로세스를 설명한다. 도 10 은 이 실시형태에 따른 디스크램블링 프로세스를 나타내는 흐름도이다. 도 10 에 나타낸 바와 같이, 먼저, 프로세스는 스크램블값 S0 을 저장하기 위해 섹터 스크램블 초기값 저장소 (44) 를 초기화한다 (단계 SP1). 그 후, 프로세스는 제어 신호들 S1 내지 S3 로 모든 스위치들 (47 내지 49) 을 초기화한다 (단계 SP2). 초기화에 의해, 스위치 (48) 는 스크램블 초기값 S0 를 출력하기 위해 섹터 스크램블 초기값 저장소 (44) 의 출력을 선택한다. 또한, 스위치 (49) 는 행 스크램블 초기값을 출력하기 위해 행 스크램블 초기값 저장소 (45) 의 출력을 선택한다. 또한, 스위치 (47) 는 스크램블 업데이트 SFR (43) 의 출력을 선택한다. 스위치 (48) 는 섹터 스크램블 초기값 저장소 (44) 를 선택하기 때문에, 스크램블 업데이트 SFR (43) 의 값은 선택되거나 출력되지 않는다.
각 스위치의 선택에 의해, 도 5 에서와 동일한 구성을 가지는 스크램블 업데이트 SFR (43) 은 섹터 스크램블 초기값 S0 를 수신한다. 스크램블 업데이트 SFR (43) 은 섹터 스크램블 초기값 S0 을 1 회 시프팅한 후의 값인 업데이트 스크램블값 (스크램블값 S1) 을 생성한다 (단계 SP3). 업데이트 스크램블값은 행 카운트 값 M 이 증가하는 타이밍에만 선택된다. 그 후, 프로세스는 단계 SP4 내지 SP18 을 반복함으로써, 스크램블값 생성기 (40) 는 입력 데이터 DQ 에 대응하는 스크램블값 SQ 를 출력하고, 그 후, 스크램블값 SQ 및 입력 데이터 DQ 를 입력 데이터 DQ 를 입력하는 시퀀스로 디스크램블링함으로써 획득되는 데이터 DSQ 를 출력한다.
그 후, 바이트 데이터 DQ 가 입력되고 (단계 SP4) 열 카운트 값 N 이 증가된다 (단계 SP5). 입력 바이트 데이터 DQ 는 DQ =0 내지 DQ = 65663 이고, 기록 바이트 시퀀스 P 의 1 바이트 데이터가 하나의 클록에 입력된다. 기록 유닛 블록 (100) 의 제 1 데이터 DQ =0 가 입력될 때, 카운터는 열 카운트 값 N 및 행 카운트 값 M 을 0 으로 설정하고 카운팅을 시작한다. 열 카운트 값 N 은 0 부터 303 까지 카운트된다 (단계 SP5). 행 카운트 값 M 은 열 카운트 값 N 의 값에 따라 업데이트 된다. 행 카운트 값 M 은 열 카운트 값 N 이 303 에서 0 으로 변하는 타이밍에만 증가되고, 215 까지 카운트된다. 프로세스는 입력 바이트 데이터 DQ 가 어느 행에 속하는지를 판정한다. 행 카운트 값 M 이 107 이하인 경우 (단계 SP7 에서 예), 판정값 H1 이 10 으로 설정된다 (단계 SP8). 그러나, 행 카운트 값 M 이 107 을 초과하는 경우 (단계 SP7 에서 아니오), 판정값 H2 가 9 로 설정된다 (단계 SP9). 또한, 프로세스는 열 카운트 값 N 을 19 로 나눈 후의 나머지 (N mod 19) 가 판정값 H1 또는 H2 인지 여부를 판정한다 (단계 SP12).
(N mod 19) 가 판정값 H1 또는 H2 (N = 9, 10, 28, 29, … , 294, 295) 인 경우, 즉, 홀수 코드 스트링에 이웃하는 짝수 코드 스트링의 마지막 열 또는 짝수 코드 스트링에 이웃하는 홀수 코드 스트링의 제 1 열의 데이터 DQ 가 입력된 경우, 스위치 (49) 는 제어 신호 S2 에 의해 108-회 SFR (41) 의 출력을 선택한다. 또한, 열 카운트 값 N 을 19 로 나눈 나머지가 0 인 경우 (단계 SP12), 즉, 짝수 코드 스트링의 제 1 열의 데이터가 입력된 경우, 스위치 (49) 는 제어 신호 S2 에 의해 행 스크램블 초기값을 출력한다 (단계 SP13).
또한, 열 카운트 값 N = 0 인 경우, 즉, 열 카운트 값 N 을 304 로 나눈 후의 나머지가 0 인 경우 (단계 SP14), 스위치 (47 내지 49) 는 다음과 같은 선택을 하고, 스크램블 업데이트 SFR (43) 은 값을 1 회 시프팅시킨다 (단계 SP15). 구체적으로, 스위치 (47) 는 업데이트된 스크램블값을 다음 행 스크램블 초기값 저장소 (46) 로 출력하기 위해 스크램블 업데이트 SFR (43) 의 출력을 선택한다. 스위치 (48) 는 업데이트된 스크램블값을 행 스크램블 초기값 저장소 (45) 로 출력하기 위해 다음 행 스크램블 초기값 저장소 (46) 를 선택한다. 또한, 스위치 (49) 는 업데이트된 스크램블값을 OUTPUT 을 통해 출력하기 위해 행 스크램블 초기값 저장소 (45) 의 출력을 선택한다.
앞에서 설명한 바와 같이, 열 카운트 값 N 이 0 이 되거나 행 카운트 값 M 이 증가하는 타이밍에, 스크램블 업데이트 SFR (43) 로부터 업데이트된 스크램블값이 스위치 (47), 다음 행 스크램블 초기값 저장소 (46), 스위치 (48), 행 스크램블 초기값 저장소 (45), 및 스위치 (49) 를 통해 OUTPUT 으로부터 출력된다. 그 후, 스크램블 업데이트 SFR (43) 은, 다음 행에 대응하는 업데이트된 스크램블값을 생성하기 위해 현재 행에 대응하는 업데이트된 스크램블값을 1 회 시프팅한다. 스크램블 업데이트 SFR (43) 은, 섹터 스크램블 초기값 저장소 (44) 로부터 공급되는 섹터 스크램블 초기값 (S0) 을 행 카운트 값 M 이 증가할 때마다 먼저 시프팅하여 도 3 에 나타낸 제 0 열의 제 1 행으로부터 제 215 행까지의 스크램블값 S0 → S1 → … → S214 → S215 를 생성한다.
그 후, 열 카운트 값 N 을 19 로 나눈 후의 나머지가 0 또는 9 또는 10 이 아니고 N = 0 이 아닌 경우, 스위치 (49) 는 이전 값을 216 회 시프팅하기 위해 216-회 SFR (42) 을 선택하고 OUTPUT 을 통해 시프팅된 값을 출력한다 (단계 SP16). 따라서, 스크램블값 SQ 이 OUTPUT 으로부터 출력된다. 그 후, XOR (60) 는 디스크램블링을 위해 스크램블값 SQ 와 데이터 DQ 에 대해 XOR 연산을 수행하여 디스크램블러 (18) 로부터 디스크램블링된 데이터 DSQ 를 출력한다 (단계 SP17). 다음 데이터 DQ 가 입력되는 경우, 프로세스는 단계 SP4 로부터 반복된다.
상기 일련의 연산들에 의해, 입력 데이터 DQ 에 대응하는 스크램블값 SQ 가 OUTPUT 을 통해 출력된다. 구체적으로, 기록 유닛 블록의 제 1 데이터 DQ =0 가 입력되는 경우, 섹터 스크램블 초기값 저장소 (44) 로부터의 스크램블값 S0 가 스위치 (48), 행 스크램블 초기값 저장소 (45), 및 스위치 (49) 를 통해 OUTPUT 으로부터 출력된다. 그 후, 스위치들 (47 내지 49) 을 적당하게 스위칭함으로써, 입력 데이터 DQ 에 대응하는 스크램블값 SQ 가 출력된다. 출력 스크램블값 SQ 가 XOR (60) 로 입력된다. XOR (60) 은 스크램블값 SQ 에 대해 데이터 DQ 와 XOR 연산을 수행하여 디스크램블링된 데이터 DSQ 를 출력한다.
이하, 도 3 에 나타낸 데이터 SQ 가 DQ = 0 부터 순차적으로 입력되는 경우에 관하여 상기 디스크램블링 프로세스를 상세히 설명한다. 앞에서 설명한 바와 같이, 데이터 DQ =0/P=0 (DQ /P 는 인코딩 바이트 시퀀스 Q 의 데이터 / 기록 바이트 시퀀스 P) 의 입력시, 섹터 스크램블 초기값 저장소 (44) 의 초기값 S0 는, 행 스크램블 초기값 저장소 (45) 에 의해 래치되고, 스위치 (49) 에 의해 선택되고, 그리고 OUTPUT 을 통해 출력된다. 동시에, 초기값 S0 는 216-회 SFR (42) 로 제공된다. 데이터 DQ =216/P=1 가 입력된 때로부터 한 클록 후, 프로세스는 216 회 시프팅된 S0 의 값인 값 S216 을 계산하고 그 결과를 출력한다. 스위치 (49) 는 (N mod 19) = 10 이고 M = 0 내지 107 일 때, (N mod 19) = 9 이고 M = 108 내지 215 일 때, 및 (N mod 19) = 0 일 때 이외의 타이밍에는 216-회 SFR (42) 의 출력을 선택한다. 즉, 데이터 DQ =0 이 입력된 후 열 카운터 값 N 이 9 에 도달할 때까지 동일한 열 및 동일한 코드 스트링의 바이트 데이터의 프로세싱 주기동안, 스위치 (49) 는 216-회 SFR (42) 의 출력을 선택하고 그 선택된 값을 OUTPUT 을 통해 출력한다.
따라서, OUTPUT 은 216 회 시프팅된 S0 인 값을 순차적으로 출력한다 (S0 → S216→ S432 → … → S1944 (S(N × 216) mod 2052)). 그 후, N = 10 이고 M = 0 인 경우의 데이터 DQ =108/P= 10 의 입력시에, 스위치 (49) 는 108-회 SFR (41) 의 출력을 선택한다. 스위치 (49) 는, (N mod 19) = 10 이고 M = 0 내지 107 일 때 및 (N mod 19) = 9 이고 M = 108 내지 215 일 때의 타이밍에, 즉, 하나의 코드 스트링으로부터 동일한 행의 다음 코드 스트링으로 변하는 바이트 데이터를 프로세싱하는 타이밍에, 108-회 SFR (41) 의 출력을 선택한다. 108-회 SFR (41) 은, 이 경우에는 S0 이 108 회 시프팅된 S108 인, 행 스크램블 초기값 저장소 (45) 의 출력을 출력한다. 따라서, N = 9 → N = 10 인 경우 입력 데이터 DQ 가 DQ =1944/P= 9 에서 DQ=108/P= 10 로 변할 때 적당한 스크램블값을 출력할 수 있다. 그 후, 스위치 (49) 는 216-회 SFR (42) 의 출력을 선택하도록 전환된다. OUTPUT 을 통해 출력되는 값 S108 은 216-회 SFR (42) 에도 제공되고, 216 회 시프팅된 값 S108 은 (S108 → S324 → … → S1836) 후에 N = 11 내지 18 에서 출력된다.
그 후, 열 카운트 값 N = 19 일 때 데이터 (N mod 19) = 0 의 입력에 대해, 데이터 DQ =0/P=19 가 다시 입력된다. 이 타이밍에, 스위치 (49) 는 행 스크램블 초기값 저장소 (45) 의 출력을 선택한다. 앞에서 설명한 바와 같이, 행 스크램블 초기값 저장소 (45) 가 초기값 S0 을 저장하기 때문에, 값 S0 은 OUTPUT 을 통해 출력된다. 따라서, 시프팅 타임의 번호가 DQ =1836/P= 18 에서 DQ =0/P= 19 로 변할 때라도 OUTPUT 을 통해 적당한 스크램블값 S0 를 출력할 수 있다. 그 후, 동일한 연산이 M = 0 의 동일한 행에서의 연산에서 반복된다.
그러면, 행 카운트 값 M 이 0 에서 1 로 변할 때 제 305 데이터 DQ =304 (N = 0, M = 1) 의 입력에 대해, 스위치들 (47 및 48) 의 선택이 변한다. 이 값은 다음 기록 유닛 블록의 제 0 데이터가 입력될 때까지 다음과 같이 고정된다. 구체적으로, 스위치 (47) 는 행 스크램블 초기값 저장소 (45) 로부터 스크램블 업데이트 SFR (43) 의 출력을 선택하도록 전환된다. 스위치 (48) 는 다음 행 스크램블 초기값 저장소 (46) 를 선택하도록 전환된다.
이 전환에 의해, 초기값 S0 가 스크램블 업데이트 SFR (43) 에서 1 회 시프팅된 값 S1 이 다음 행 스크램블 초기값 저장소 (46) 에 저장된다. 이 값은 다 음 클록까지 행 스크램블 초기값 저장소 (45) 에 저장되고, 스위치 (48 및 49) 를 통해 OUTPUT 으로부터 출력된다. 이 프로세스는 2 개의 클록을 요구한다. S1 이 출력될 때까지 2 개의 클록이 요구되기 때문에, 행 카운트 값 M 이 0 에서 1 로 변하는 타이밍보다 1 클록 이전인, 마지막 열 바로 전의 열 (N = 302) 의 데이터 바이트를 입력하는 타이밍에, 스위치 (47) 는 스크램블 업데이트 SFR (43) 로 전환되고, 마지막 열 (N = 303) 에 데이터 바이트를 입력하는 타이밍에, 스위치 (48) 는 다음 행 스크램블 초기값 저장소 (46) 를 선택한다. 행 스크램블 초기값 저장소 (45) 에 저장되는 값 S1 은 데이터 바이트를 다음 행 (행 카운트 값 M = 0, DQ =1/P=304) 의 최상부에 입력하는 타이밍에 스위치 (49) 를 통해 OUTPUT 으로부터 출력된다. 행 스크램블 초기값 저장소 (45) 는 동일한 행의 데이터가 입력되는 주기 동안 (M = 1 인 주기 동안) 값 S1 을 계속해서 저장하고 있는다. 그 후, 열 카운트 값 N 에 따른 프로세스는 앞에서 설명한 바와 같이 M = 1 의 주기 동안 반복된다. 동일한 프로세스가 행 카운트 값 M 이 215 에 도달할 때까지 반복됨으로써 기록 바이트 시퀀스 P 로 입력되는 바이트 데이터 DQ 의 스크램블값 SQ 를 생성한다.
이 실시형태는 108-회 SFR (41), 216-회 SFR (42), 및 스크램블 업데이트 SFR (43) 을 결합하고, 그것들의 출력의 선택을 도 2 및 도 3 에서 나타낸 행 방향으로 입력되는 기록 바이트 시퀀스 P 의 입력 데이터에 대해 제어함으로써, 인코딩 바이트 시퀀스 Q 에 대한 시프트 레지스터 (30) 에 의한 연산과 등가인 시프트 연산을 수행한다. 이것은 전체 기록 유닛 블록을 버퍼로 로딩하고 데이터를 인코딩 바이트 시퀀스 Q 로의 재배열을 가능하게 하는 프로세스 없이 기록 바이트 시퀀스 P 로 입력되는 기록 유닛 블록의 순차적인 프로세싱을 가능하게 한다.
도 3 에 나타낸 기록 유닛 블록의 데이터는 216 회 또는 108 회 순환하기 때문에, 예를 들어, 108 회 시프트 레지스터 SFR (41) 들을 결합하는 것이 실현 가능하다. 이 경우, 216 회의 시프트 연산을 요구하는 프로세싱은 108 회 시프트 레지스터 SFR 에서 연산을 2 회 수행할 수도 있다. 또한, 시프트 연산에 요구되는 시프팅 회수는 108 회이기 때문에, 108 의 약수에서 2 의 승수인 횟수만큼 시프팅 연산을 수행할 수 있는 SFR 의 조합의 사용은, 기록 바이트 순서 P 로 입력된 데이터의 스크램블값을 계산할 수 있게 한다.
5. 에러 검출기
이하, 이 실시형태에 따른 재생 유닛의 에러 검출기를 설명한다. 블루-레이 디스크에서, 도 2 에 나타낸 각 코드 스트링 D0 내지 D31 에서, 4 바이트 (32 비트) 에러검출코드 (EDC) 가 2048 바이트 (16384 비트) 데이터 I(x) 에 추가된다. 32 비트 에러검출코드는 16384 비트 코드 스트링 I(x) 를 다음의 생성 다항식으로 나눔으로써 획득될 수 있다.
G(x) = X32 + X31 + X4 + 1
16384 비트 코드 스트링 I(x) 에 추가될 에러검출코드 EDC(x) 는 다음의 수학식으로 나타내어지며,
EDC(x) = ∑bt×Xt = I(x) mod G(x) (∑ : t = 31 내지 0)
여기서, I(x) = ∑bt×Xt (∑ : t = 16415 내지 32) 이다.
그 결과, 에러검출코드 EDC(x) 가 추가된 코드 스트링 D(x) 는 다음의 수학식으로 나타내어진다.
D(x) = I (x) + EDC(x)
블루-레이 디스크에 데이터를 기록할 때, 수학식 5 에 의해 계산되는 EDC(x) 가 추가되는, 32 개의 코드 스트링들 D(x) 또는 논리 섹터들로 구성되는 기록 유닛 블록 및 보조 데이터는 하나의 ECC 블록으로서 인터리빙되고 디스크에 기록됨으로써 버스트 에러 등을 방지한다. ECC 블록을 판독 및 재생할 때, 상기 데이터는 32 코드 스트링들 D(x) 로 구성되는 기록 유닛 블록으로 인터리빙된다. 그 후, 각 기록 유닛 블록은 필요에 따라 에러 정정되고 각 코드 스트링 D(x) 에 대한 에러 검출값이 계산된다.
수학식 5 에 의해 나타내어지는 에러검출코드 EDC(x) 는 코드 스트링 D(x) 를 도 11 에 나타낸 32 비트 시프트 레지스터에 입력함으로써 획득될 수 있다. 코드 스트링 D(x) 의 모든 코드를 입력한 후의 32 비트 시프트 레지스터의 값은 에러검출코드 EDC(x) (= 0) 의 역할을 한다. 일반적으로, 디스크로부터 판독된 데이터의 에러를 검출하는 에러 검출기는 에러검출코드를 추가하기 위한 것과 유사한 연산 유닛으로 판독된 코드 스트링 D(x) 의 모든 코드들을 입력함으로써 획득되는 32 비트 시프트 레지스터 값을 계산하고, 32 비트 시프트 레지스터 값이 0 이 아닌 때 에러를 검출한다. 따라서, D(x) 를 도 11 에 나타낸 32 비트 시프트 레지스터에 입력하는 것은, D(x) 를 G(x) 로 나눈 후의 나머지가 0 인지 여부 (D(x) mod G(x) = 0 인지 여부) 의 판정을 가능하게 함으로써 에러를 검출한다.
또한, 블루-레이 디스크에서, 에러검출코드 EDC (x) 가 추가되는 코드 스트링 D(x) 는 버스트 에러를 방지하기 위해 인코딩 시퀀스와 상이한 순서로 기록된다. 따라서, 판독 데이터의 시퀀스 (기록 시퀀스) 는 원래의 시퀀스 (인코딩 시퀀스) 와 다르다. 따라서, 도 11 에 나타낸 시프트 레지스터 (200) 에 의해 에러 검출값을 계산할 때, 광학 디스크로부터 판독된 판독 데이터를 동일한 기록 시퀀스로 입력하는 것은 불가능하다. 이것은 데이터를 미리 인코딩 시퀀스로 재배열할 필요를 증가시킨다.
이러한 단점을 극복하기 위해, 이 실시형태는 도 11 에 나타낸 시프트 레지스터의 이용 없이 인코딩 시퀀스와 상이한 프로세싱 시퀀스로 에러 검출값을 계산하는 것을 가능하게 하는 에러 검출 방법을 목적으로 한다. 에러 검출기는 비트 단위로 프로세싱될 데이터의 바이트 단위 입력을 가능하게 하는 회로를 가진다. 도 12 및 도 13 은 각각 도 2 및 도 3 에 나타낸 바이트 단위의 데이터 포맷을 비 트 단위로 나타낸 것이다.
이 실시형태는 행 방향의 바이트 시퀀스를 기록 시퀀스로서 나타내고, 열 방향의 바이트 시퀀스를 인코딩 시퀀스로서 나타낸다. 도 12 는 기록 유닛 블록의 데이터의 배열 순서를 비트 단위로 나타낸 것이다. 도 13 은 2 개의 코드 스트링의 확대도이다. 도 12 및 도 13 의 숫자 값은 각 비트의 인코딩 비트 시퀀스를 나타낸다. 열 방향의 비트들이 도 12 및 도 13 에 나타낸 인코딩 비트 시퀀스 q 와 관련된 경우, 인코딩 비트 시퀀스 q 의 MSB 부터 LSB 까지의 비트들이 행 방향으로 재배열된 시퀀스가 디스크에 데이터를 실제로 기록하는 시퀀스 (기록 비트 시퀀스 p) 이다.
하나의 코드 스트링 D(x) 는 16416 비트 (2052 바이트) 데이터로 구성된다. 각 코드 스트링 D(x) 에서, 기록 방향에 수직인 열 방향의 바이트 데이터는 인코딩 바이트 시퀀스 Q 와 관련된다. 인코딩 시퀀스의 바이트 데이터의 비트들은 인코딩 비트 시퀀스 16415 → 16414 → … → 14689 → 14688 → 14687 → … → 1 → 0 와 관련된다. 32 개의 코드 스트링들 D(x) 는 65664 바이트의 기록 유닛 블록 F(x) 를 구성한다. 디스크로부터 판독된 데이터는 기록 비트 시퀀스 p 로 되어 있고, 앞에서 설명한 디스크램블링 프로세싱 및 이 에러 검출기의 에러 검출 프로세싱은 1 바이트가 기록 비트 시퀀스 p 의 8 비트를 포함하는 기록 바이트 시퀀스 P 로 수행된다. 데이터를 열 방향에서 재배열할 때, 기록 비트 시퀀스 p 는 각 열마다 8 비트를 가지는 행 방향의 시퀀스이며, 따라서 인코딩 비트 시퀀스 q 는 연속적이다. 따라서, p = 0 → 1 → … → 7 → 8 → 9 → … → 15 → … 의 기록 비트 시퀀스는, q = 16415 → 16414 → … → 16408 → 14687 → 14686 → … → 14680 → … 의 인코딩 비트 시퀀스에 대응한다 (도 4 참조).
도 13 에 나타낸 바와 같이, 이 실시형태의 에러 검출기는 각 열에서 8 비트 데이터로 구성되는 바이트 단위의 기록 바이트 시퀀스 P 로 기록 유닛 블록 (100) 을 수신한다. 따라서, 기록 비트 시퀀스 p 로 디스크로부터 판독된 비트 데이터는, 행 방향으로 배열되고 각 8 비트씩을 가지는 304 개의 열로 구성되는 304 바이트 (2432 비트) 를 각 행이 포함하는 기록 바이트 시퀀스 P 로 입력된다. 이 실시형태에서, 기록 바이트 시퀀스 P 의 데이터 입력은 DP ,i 에 의해 제 0 바이트부터 순차적으로 나타내어지며, 여기서, "i" 는 0 ≤ i ≤ 7 를 만족하고 기록 비트 시퀀스 p 의 1 바이트에 포함되는 8 비트의 프로세싱 순서를 나타낸다.
또한, 기록 블록 F(x) 에서, 열 번호는 N 에 의해 나타내어지고, 비트 행 번호는 m 에 의해 나타내어지고, 그리고 행 번호는 M 에 의해 나타내어진다. 예를 들어, N = 0 이고 M = 0 (인코딩 비트 시퀀스 q = 16415 내지 16408) 의 바이트 데이터는 기록 바이트 시퀀스 P = 0 에 있고, 제 0 순서로 에러 검출기로 입력되고, DP =0, i 로서 나타내어진다. 유사하게, N = 18 이고 M = 0 의 바이트 데이터는 기록 바이트 시퀀스 P = 18 에 있고, 인코딩 비트 시퀀스 q = 1726 인 m = 1 의 비트 데이터는 기록 바이트 시퀀스 P = 18 의 바이트 데이터의 제 2 비트로서 입력되며, DP =18, 1 로서 나타내어진다. 이러한 방법으로, N = 0 이고 M = 215 의 데이터는 기록 바이트 시퀀스 P = 65360 에 있고, 인코딩 비트 시퀀스 q = 14688 의 비 트 데이터는 기록 바이트 시퀀스 P = 65360 의 바이트 데이터의 제 8 비트로서 입력되고 DP =65360, 7 로서 나타내어진다.
이 실시형태의 에러 검출기에 대한 이해를 촉진하기 위해, 먼저 그 원리를 설명한다. 블루-레이 디스크에서, 에러 검출값은 코드 스트링 D(x) (인코딩 비트 시퀀스 q = 16415 내지 0) 를 도 11 의 시프트 레지스터 (200) 로 입력함으로서 획득되는 시프트 레지스터 값이다. 예를 들어, 코드 스트링 D(x) = D0 는 시프트 레지스터 (200) 로 입력되고, 다음의 3 비트에 대해서만 D0 은 "1" 이고 나머지 다른 값 모두에 대해서는 "0" 이다. 그 3 비트는, 제 0 순서의 데이터 입력인 기록 비트 시퀀스 p = 0 의 제 16415 순서의 데이터 (q = 16415) , 제 1728 순서의 데이터 입력인 기록 비트 시퀀스 p = 1728 의 제 14687 순서의 데이터 (q = 14687) , 및 제 3456 순서의 데이터 입력인 기록 비트 시퀀스 p = 3456 의 제 12959 순서의 데이터 (q = 12959) 이다. B16415 = B14687 = B12959 = 1 이 만족된다.
이 경우, 데이터 코드 스트링 D0 를 32 비트 시프트 레지스터 (200) 로 입력한 결과는, 시프트 레지스터 (200) 를 "00000001h" 로 초기화하고, 이 값을 각각 16415 회, 14687 회, 및 12959 회 시프팅한 후의 값들을 획득하고, 그 값들에 대해 XOR 연산을 수행함으로써 계산된다. 32 비트 시프트 레지스터 (200) 에 코드 스트링 D0 를 입력한 결과 E0 는 다음 수학식에 의해 계산된다.
E0 = B16415X16415 mod G(x) + B14687X14687 mod G(x) + B12959X12959 mod G(x) = (X16415 + X14687 + X12959) mod G(x)
이 개념이 주어지면, 코드 스트링 D0 의 전체를 시프트 레지스터 (200) 에 입력함으로써 획득되는 32 비트 시프트 레지스터 값인 결과 E0 는, 코드 스트링을 형성하는 비트 데이터가 "1" 인 시프트 레지스터 값들에 대해 XOR 연산을 수행함으로써 계산될 수 있다. 구체적으로, 코드 스트링 D0 의 경우, 제 0 순서로 입력되는 제 16415 순서의 데이터, 제 1728 순서로 입력되는 제 14687 순서의 데이터, 제 3456 순서로 입력되는 제 12959 순서의 데이터인 단지 3 비트만이 "1" 을 나타내고 나머지 데이터는 "0" 을 나타내기 때문에, B16415, B14687, B12959 의 계수를 이용한 XOR 연산 수행은 시프트 레지스터 값 E0 의 계산을 가능하게 한다.
따라서, X16415 mod G(x), X14687 mod G(x), 및 X12959 mod G(x) 의 계산은, 코드 스트링 D(x) 의 32 비트 시프트 레지스터 값인 에러 검출값 E(x) 의 획득을 가능하게 한다.
기록 유닛 블록의 각 코드 스트링 D(x) 는 16416 비트 데이터로 구성된다. 예를 들어, 입력 비트 데이터 "1" 의 입력에 대해 인코딩 비트 시퀀스 q 에 대응하는 Xq mod G(x) 를 나타내기 위해, 상기 Xq mod G(x) 가 각 비트에 대해 홀딩되는 경우, XOR 연산의 수행에 의해 코드 스트링 D(x) 의 32 비트 시프트 레지스터 값을 계산할 수 있다. 32 비트 시프트 레지스터 값을 계산하는 가장 용이한 방법은, 코드 스트링 D(x) 의 각 비트에 대응하는 16416 Xq mod G(x) 를 저장하고, 입력 데 이터의 인코딩 비트 시퀀스의 모든 Xq mod G(x) 에 대해 XOR 연산을 수행하는 것이다. 이하, Xq mod G(x) 를 대체값이라고 한다.
하나의 코드 스트링 D(x) 는 (q + 1) = k (1 ≤ k) 비트로 구성된다. 각 비트는 그것의 인코딩 비트 시퀀스 q 에 대응하는 대체값 Xq mod G(x) 을 가진다. 대체값 Xq mod G(x) 는, k 비트 코드 스트링 D'(x) 의 비트들이 제 q 순서 비트를 제외하고는 모두 0 인 코드 스트링 (이하, 대체 코드 스트링 d(x) 로서) 을 G(x) 로 나눈 후의 나머지를 나타내며, 이것은 대체 코드 스트링 d(x) 의 에러 검출값이다. 원래의 코드 스트링으로부터 계산된 에러 정정 코드에 대해 원래의 코드 스트링의 대응하는 비트가 에러일 때, 즉, 원래의 코드 스트링 D(x) 의 단지 하나의 비트만이 에러일 때, 대체 코드 스트링은 신드롬이다.
k 비트 코드 스트링 D(x) 는 k 개의 대체 코드 스트링 d(x) 에 대응한다. 대체 코드 스트링 d(x) 를 G(x) 로 나눈 후의 나머지는 대체값 Xq mod G(x) 이다. 에러 검출값 E(x) 는, 입력 코드 스트링 D(x) 에서 코드 "1" 을 가지는 비트에 대응하는 모든 대체값들 Xq mod G(x) 에 대해 XOR 연산을 수행함으로써 계산될 수 있다. 이 실시형태는 대체값들 Xq mod G(x) 를 미리 계산하고 그 값들을 테이블에 저장하지만, 그 값들을 필요할 때 계산하는 것이 실현 가능하다.
도 14 는 이 개념들을 이용하여 에러 검출값을 계산하는 방법을 나타낸 것이 다. k 비트 코드 스트링 D(x) 의 비트들이 모두 "1" 인 코드 스트링 {111….1} 이 기본 코드 스트링 D'(x) 인 것으로 가정한다. 코드 스트링 D'(x) 를 도 11 에 나타낸 시프트 레지스터 (200) 에 입력함으로써 획득되는 32 비트 시프트 레지스터 값은 코드 스트링 D'(x) 의 에러 검출값 E'(x) 를 나타낸다. 이하, k = q + 1 = 16416 비트의 코드 스트링 D'(x) 를 설명한다.
앞에서 설명한 바와 같이, 기본 코드 스트링 D'(x) 는 k 개의 대체 코드 스트링들 d(x) 에 대응한다. k 비트 코드 스트링은 인코딩 비트 시퀀스 q = 16415 내지 0 에 관련되는 경우, 하나의 코드 스트링은 k 개의 대체 코드 스트링 d(x) 에 대응하며, 여기서 인코딩 비트 시퀀스의 특정 순서의 비트 데이터 가 "1" 이고 나머지 모든 데이터는 "0" 이다. 각 대체 코드 스트링 d(x) 에서, 각 인코딩 비트 시퀀스의 상이한 위치의 하나의 비트는 "1" 을 나타낸다. 구체적으로, 대체 코드 스트링들 d(x) 는, 최상위 비트 (q = 16415) 만이 "1" 인 대체 코드 스트링 d(x)16415 = {100…0}, 제 16414 순서의 비트만이 "1" 인 대체 코드 스트링 d(x)16414 = {010…0}, 제 16413 순서의 비트만이 "1" 인 대체 코드 스트링 d(x)16413 = {001…0}, 제 0 순서의 비트만이 "1" 인 대체 코드 스트링 d(x)0 = {000…1} 를 포함한다. 대체 코드 스트링 d(x)q 를 시프트 레지스터 (200) 에 입력함으로써 획득되는 32 비트 시프트 레지스터 값이 대체값 Xq mod G(x) = Rq 이다. 대체값 Xq mod G(x) = Rq 는 인코딩 비트 시퀀스 q 에 대응한다.
따라서, 코드 스트링들로서 동일한 개수의 비트 데이터로 구성되고, 코드 스트링들로서 동일한 비트 시퀀스와 관련될 때, 비트 시퀀스에 대응하는 대체 코드 스트링은, 비트 시퀀스의 비트 데이터 만이 "1" 을 나타내고 나머지 모든 비트 데이터는 "0" 을 나타내는 코드 스트링이다. 코드 스트링의 각 비트 데이터의 대체값은, 대체 코드 스트링을 시프트 레지스터 (200) 에 비트 데이터의 인코딩 비트 시퀀스로 입력한 결과 (연산 값) 이다. 따라서, 코드 스트링 D'(x) 를 시프트 레지스터 (200) 에 입력하여 획득되는 32 비트 시프트 레지스터 값 (에러 검출값 E'(x)) 은, 각 대체 코드 스트링들 d(x)q 를 시프트 레지스터 (200) 에 입력하여 획득되는 32 비트 시프트 레지스터 값 (대체값 Rq) 전체에 대해 XOR 연산 수행한 결과이다.
앞에서 설명한 바와 같이, 코드 스트링 D(x) 의 에러 검출값 E(x) 는, 이 실시형태의 k = 16416 의 대체값들 Rq 인, 테이블의, 코드 스트링 D(x) 의 비트의 개수와 동일한 개수의 대체값들 Xq mod G(x) = Rq 을 저장하고, 입력 코드 스트링 D(x) 의 코드 "1" 을 가지는 비트를 가지는 대체값들 Rq 의 XOR 연산의 수행에 의해 획득될 수 있다. 이 방법은 코드 스트링 D(x) 를 시프트 레지스터 (200) 에 입력할 필요를 제거하기 때문에, 코드 스트링 D(x) 의 시퀀스의 입력이 인코딩 비트 시퀀스와 상이한 경우라도 에러 검출값 E(x) 를 계산할 수 있다.
데이터는 기록 유닛 블록 단위로 프로세싱된다. 기록 유닛 블록 F(x) 는 32 개의 코드 스트링들 D(x) 를 포함하고, 에러 검출값 E(x) 는 각 코드 스트링 D(x) 에 대해 계산되기 때문에, 하나의 기록 유닛 블록 F(x) 로부터 32 개의 에러 검출값들 E(x) 가 획득된다.
이하, 전체 비트 개수 k 보다, 각 비트 데이터에 대응하는 대체값들의 더 적은 개수로 에러 검출값들 E(x) 를 계산하는 방법을 설명한다. 이 실시형태는, 기록 유닛 블록에서 비트 데이터의 배열 시퀀스 및 바이트 데이터의 배열의 일정성을 이용하여, 앞에서 설명한 k = 16416 보다 적은 19 개의 대체값들로 에러 검출기를 형성한다.
기록 유닛 블록 F(x) 는, 회전 이전 상태로 설정된 후에, 회전기 (12; 도 1 참조) 로부터 도 13 에 바이트 단위로 나타낸 기록 바이트 순서 P 로 제공된다. 바이트 단위의 바이트 데이터 DP ,i 에 포함되는 8 비트의 비트 데이터는 인코딩 비트 시퀀스 q 가 연속적으로 위치하는 열 방향의 비트들이다. 따라서, 비트 행 번호 m = j 인 행의 각 비트에 대한 대체값 Rq 는, 비트 행 번호 m = j - 1 인 바로 이전 행의 각 비트에 대한 대체값 Rq - 1 를 도 11에 나타낸 시프트 레지스터 (200) 에 입력하고, 이 값을 1 회 시프팅함으로써 획득되는 시프트 레지스터 값이다. 따라서, 입력 바이트 데이터에 포함된 비트 데이터의 8 비트 모두에 대응하는 대체값 Rq 를 저장하지 않고, 하나의 비트 데이터에 대응하는 대체값으로부터 용이하게 각 비트 데이터에 대한 대체값 Rq 를 계산할 수 있다.
이것은, 각 바이트 데이터에 대한 하나의 비트 데이터에 대응하는 하나의 대체값을 그 바이트 데이터에 대한 특정 대체값으로서 단순히 준비함으로써, 각 비트 데이터들을 그 비트 데이터들에 대응하는 대체값들로 용이하게 변환하는 것을 가능하게 하며, 이하, 이 하나의 대체값을 특정 대체값이라고 한다. 이 경우, 대체값들의 개수는 k/8 = K 로 홀딩됨으로써 대체값들을 2052 개인 1/8 로 감소시킨다.
또한, 도 2 내지 도 6, 도 12 및 도 13 을 참조하여 설명한 바와 같이, 이 실시형태의 광학 디스크는, 216 바이트 데이터를 인코딩 바이트 시퀀스 Q 또는 1728 비트 데이터를 인코딩 비트 시퀀스 q 로 각각 포함하는 304 개의 열들이 열 방향으로 배치되어 있는 32 개의 코드 스트링들로 각각 구성되는 기록 유닛 블록들을 가진다. 따라서, 도 3 에 나타낸 바와 같이, 각 열 방향의 인코딩 바이트 시퀀스 Q 는 연속적이다. 또한, 도 13 에 나타낸 바와 같이, 각 열 방향의 바이트 데이터는, 제 0 행부터 제 215 행까지 하나씩 증가하는 인코딩 비트 시퀀스 q 와 연속적이다.
하나의 코드 스트링 D(x) 는 9 개 반의 열로 구성되고, 기록 유닛 블록 F(x) 는 짝수 및 홀수 코드 스트링들의 세트를 포함한다. 따라서, 19 개의 코드 스트링 세트들이 하나씩 배열된다. 도 2 및 도 3 에 나타낸 바와 같이 각 기록 바이트 시퀀스 P 는 19 개의 상이한 인코딩 바이트 시퀀스 Q 를 포함하고, 각 19 개의 기록 바이트 순서 P 에서 짝수 및 홀수 코드 스트링들의 다음 코드 스트링 세 트는 동일한 인코딩 바이트 시퀀스 Q 를 갖는다. 앞에서 설명한 바와 같이, 이 실시형태의 광학 디스크에서, 기록 유닛 블록은 일정성을 가지고 반복적으로 배열되는 19 개의 인코딩 바이트 시퀀스 Q 를 가진다.
따라서, 이 실시형태는 19 개의 특정 대체값들을 하나의 인코딩 시퀀스 세트의 특수 열에 특수 대체값들 U0 내지 U18 로서 홀딩하고, 특정 대체값들 U0 내지 U18 로부터 다른 행의 특정 대체값 RQ 를 계산하고, 그 후, 각 특정 대체값 RQ 로부터 대체값 Rq 를 계산함으로써, 홀딩되는 대체값들의 개수가 특수한 특정 대체값들 U0 내지 U18 의 개수와 동일하게 단지 19 개이다.
따라서, 하나의 코드 스트링 D(x) 에 포함되는 비트들의 개수에 대응하는 대체값들 Rq 의 개수 k 는 16416 이고, 이 실시형태는 기록 유닛 블록에 포함되는 데이터 배열의 일정성을 이용하여 대체값들로서 홀딩되는 데이터 양의 개수를 1/864 인 19 개로 상당히 감소시킬 수 있다.
이하, 본 발명에 따른 재생 유닛의 에러 검출기를 상세하게 설명한다. 도 15 는 에러 검출기의 특정 구성을 나타내는 블록도이다. 판독 기록 유닛 블록 F(x) 는 그것이 디스크램블링되는 디스크램블러로 바이트 단위의 바이트 데이터로서 기록 바이트 순서 P 로 입력된다. 그 후, 디스크램블링된 바이트 데이터는 기록 바이트 시퀀스 P 로 에러 검출기 (201) 로 입력된다. 에러 검출기 (201) 는 EDC 가 추가된 코드 스트링의 에러 검출값을 계산함으로써 에러를 검출한 다. 에러 검출할 검출대상 코드 스트링은 2052 바이트를 포함하며, 각 바이트 데이터는 관련되어 있다. 소정의 연산 방법에 의해 인코딩 바이트 시퀀스 Q 로 검출대상 코드 스트링이 프로세스될 때 에러 검출값이 획득된다.
에러 검출기 (201) 는 바이트 데이터의 열 및 행을 카운트하는 카운터 (202) 및, 입력 바이트 데이터에 대응하는 특정 대체값을 출력하는 대체값 출력부를 포함한다. 대체값 출력부는 데이터 스위치 (203), 대체값 테이블 (204), 제산부 (205), 업데이트 특정 대체값 테이블 (206), 특수 특정 대체값 테이블 (207), 및 정정된 대체값 출력부 (208) 를 포함한다.
데이터 스위치 (203) 의 출력은 카운터 (202) 의 카운트 값에 따라 제어된다. 대체값 테이블 (204) 은 현재 입력 데이터의 행들에 대응하는 19개의 특정 대체값들을 홀딩한다. 제산부 (205) 는 현재의 대체값들을 제산하고 다음 행들에 대응하는 19 개의 업데이트된 대체값들을 계산한다. 업데이트 특정 대체값 테이블 (206) 은 제산의 결과들을 홀딩한다. 특수 특정 대체값 테이블 (207) 은 19 개의 특수 특정 대체값들을 홀딩한다. 정정된 대체값 출력부 (208) 는 대체값 테이블 (204) 로부터 각 열의 업데이트된 대체값 (이하, 정정된 대체값이라 함) 을 수신한다. 각 부분은 8 비트로 구성된 바이트의 단위로 데이터를 프로세스한다.
각 입력 바이트 데이터의 비트 데이터와 관련되는 인코딩 비트 시퀀스에 대응하는 대체값들이 되도록, 대체값, 특정 대체값, 특수 대체값, 및 정정된 대체값이 각각 준비된다. 에러 검출기 (201) 는, 각 비트 데이터, 및 각 비트 데이터 와 관련되고 입력 시퀀스 (기록 바이트 시퀀스 P / 기록 비트 시퀀스 p) 와 상이한 인코딩 비트 시퀀스 q 에 대응하는 대체값으로부터 에러 검출값을 계산한다. 이하에서는, 기록 바이트 시퀀스 P 의 바이트 데이터 DP ,i 에 대응하는 대체값 (특정 대체값) 을 RP , i 로 나타낸다. 구체적으로, 바이트 데이터 DP , i 의 각 비트 데이터는 인코딩 비트 시퀀스 q 에 관련되고, 인코딩 비트 시퀀스 q 에 대응하는 대체값 Rq 는 특정 대체값 RP ,i 이다.
또한, 에러 검출기 (201) 는, 대체값 출력부의 출력 결과에 대응하는, 검출대상 코드 스트링의 에러 검출값을 계산하는 에러 검출값 계산부를 포함한다. 에러 검출값 계산부는, 검출대상 코드 스트링의 각 바이트 데이터 및 인코딩 바이트 시퀀스 Q 에 대응하는 특정 대체값을, 인코딩 시퀀스와 상이한 기록 시퀀스 P 로 프로세싱함으로써 에러 검출값을 계산한다.
에러 검출값 계산부는 비트 프로세싱 연산부 (210) 및 바이트 프로세싱 연산부 (220) 를 포함한다. 비트 프로세싱 연산부 (210) 는 정정된 대체값 출력부 (208) 의 출력 및 입력 바이트 데이터로부터 비트 단위의 바이트당 바이트 에러 검출값을 계산한다. 바이트 프로세싱 연산부 (220) 는 비트 프로세싱 연산부 (210) 로부터 결과를 수신하고, 하나의 코드 스트링 D(x) 에 대한 에러 검출값 E(x) 를 출력한다. 바이트 프로세싱 연산부 (220) 는 논리 회로 (XOR; 221), 바이트 에러 검출값 홀딩부 (222), 및 리셋부 (223) 를 포함하고, 비트 프로세싱 연산부 (210) 로부터 각 바이트 출력의 에러 감출 값 Ep 를 수신한다. 논리 회 로 (XOR; 221) 는 현재의 입력 바이트 데이터의 에러 검출값 EP 와 이전 입력 바이트 데이터의 에러 검출값의 XOR 연산 결과의 XOR 를 계산한다. 바이트 에러 검출값 홀딩부 (222) 는 XOR (221) 로부터의 출력을 홀딩하고, 코드 스트링 D(x) 의 에러 검출값 E(x) 로서 제 2051 회에서 홀딩되는 값을 출력한다. 리셋부 (223) 는 새로운 기록 유닛 블록 F(x) 이 입력될 때마다 에러 검출값 홀딩부 (222) 의 데이터를 리셋한다. 단지 하나의 바이트 프로세싱 연산부 (220) 만을 나타내었지만, 기록 유닛 블록 F(x) 에 포함되는 코드 스트링 D(x) 의 개수와 동일한 개수의 바이트 에러 검출값 홀딩부 (222) 가 제공되고, 각 코드 스트링 D(x) 의 바이트 데이터에 대응하는 바이트 에러 검출값이 비트 프로세싱 연산부 (210) 로부터 각 바이트 에러 검출값 홀딩부 (222) 로 제공된다. 바이트 에러 검출값 홀딩부들 (222) 이외의 부분은 공통적으로 사용될 수도 있다.
카운터 (202) 는 디스크램블링된 기록 유닛 블록 F(x) 을 바이트 단위로 수신하고, 그것을 카운트해서 열 번호 N 의 카운트 값 N 및 행 번호 M 의 카운트 값 M 을 업데이트한다. 또한, 카운터 (202) 는 바이트 데이터 DP , i 를 비트 프로세싱 연산부 (210) 에 제공한다. 앞에서 설명한 바와 같이, 입력 바이트 데이터 DP, i 에서, "P" 는 기록 바이트 시퀀스를 나타내며, 하나의 기록 유닛 블록 F(x) 의 코드 스트링 D(x) 에서 기록 바이트 시퀀스 P = 0 내지 16415 이고, "i" 는 연속적인 인코딩 비트 시퀀스의 8 비트 데이터로 구성되는 하나의 바이트 데이터에 포함되는 0 내지 제 7 비트 번호를 나타낸다.
바이트 단위의 코드 스트링 D(x) 는 도 3 에 나타낸 기록 바이트 시퀀스 P 의 바이트 데이터를 DP =0,i → DP =1,i → DP =2,i → … → DP =65662,i → DP =65663, i 의 순서로 수신한다. 카운터 (202) 는 데이터 DP ,i 가 입력될 때마다 열 카운트 번호 N 을 증가시킨다. 카운터 (202) 는 열 카운트 값 N 을 303 까지 카운트 한 후 카운트 값 N 을 0 으로 리셋한다. 카운터는 열 카운트 값 N 을 0 으로 리셋하는 타이밍에 바이트 행 카운트 값 M 을 증가시킨다. 또한, 카운터 (202) 는 열 카운트 값 N 및 바이트 행 카운트 값 M 에 따라 데이터 스위치 (203) 의 스위칭을 제어하기 위해 제어 신호를 출력한다. 특정 대체값 테이블 (204), 비트 프로세싱 연산부 (210), 및 바이트 프로세싱 연산부 (220) 의 출력을 카운트 값들 N 및 M 에 따라 제어하기 위해 각 제어 신호를 생성하고 출력하는 것이 가능하다.
예를 들어, 특정 대체값 테이블 (204) 에 저장되는 19 개의 특수 특정 대체값들 RM =0 (= U0 내지 U18) 을 선택하고 출력하도록, 입력 바이트의 데이터 입력 타이밍인, 열 카운트 값 N 을 업데이트하는 타이밍에 제어 신호를 특정 대체값 테이블 (204) 에 제공하는 것이 가능하다. 또한, 이후에 설명할 에러 검출 중간값을 0 으로 리셋하도록, 데이터 입력 타이밍에 제어 신호를 비트 프로세싱 연산부 (210) 에 제공하는 것이 가능하다. 또한, 리셋부 (223) 의 출력을 0 으로 리셋하도록, 하나의 기록 유닛 블록 F(x) 의 모든 코드 스트링 D(x) 의 입력이 종료하는 타이밍에 제어 신호를 바이트 프로세싱 연산부 (220) 에 출력하는 것이 실현 가능하다.
데이터 스위치 (203) 는, 현재의 입력 바이트 데이터를 포함하는 열 카운트 값 M 에 대응하는 특정 대체값 (U0 내지 U18) 을 대체값 테이블 (204) 로부터, 업데이트 특정 대체값 테이블 (206) 에 저장된 다음 행에 대응하는 업데이트 대체값 R'M, 및 특수 특정 대체값 테이블 (207) 에 저장된 특수 특정 대체값 RM =0 을 수신한다. 제산부 (205) 는 대체값 테이블 (204) 로부터 대체값을 수신하고, 현재 행의 다음의 행의 대체값인 업데이트 대체값 R'M 을 계산하기 위해 이후 설명할 소정의 연산을 수행한다. 업데이트 대체값 R'M 은 업데이트 특정 대체값 테이블 (206) 에 저장된다.
데이터 스위치 (203) 는 바이트 행 카운트 값 M 이 215 로부터 0 으로 변하는 타이밍에 특수 특정 대체값 RM =0 을 선택하고, 그 값을 대체값 테이블 (204) 에 출력한다. 데이터 스위치 (203) 는, 바이트 행 카운트 값 M 이 215 에서 0 으로 변하는 타이밍과 다른 타이밍에는, 업데이트 특정 대체값 테이블 (206) 로부터 다음 행에 대응하는 업데이트 대체값 R'M 을 선택하고, 바이트 행 카운트 값 M 이 증가하고 업데이트 신호가 입력될 때마다 선택된 값을 대체값 테이블 (204) 에 출력한다. 대체값 테이블 (204) 은 열 카운트 값 N 이 증가하거나 데이터가 입력되는 타이밍에 현재 저장된 19 개의 특수 대체값 RM 을, 제 0 행에 대응하는 대체값부터 연속적으로 선택하고, 선택된 값을 정정된 대체값 출력부 (208) 에 정정된 대체값 RP 로서 출력한다.
업데이트 특정 대체값 테이블 (206) 은, 제산부 (205) 에 의해 현재 대체값으로부터 생성되는 다음 행의 입력 바이트 데이터에 대응하는 특정 대체값인 업데이트 대체값 R'M 을 홀딩하고, 이 값을 바이트 행 카운트 값 M 이 업데이트될 때마다 출력한다. 이 실시형태의 특수 특정 대체값 테이블 (207) 은, 기록 바이트 시퀀스 P = 0 내지 19 의 제 7 비트 데이터 (데이터 DP =0,7 내지 DP = 19,7) 에 대응하는 대채 값들 U0 내지 U18 을 16416 비트의 코드 스트링 D(x) 의 특수 특정 대체값 RM= 0 로서 저장한다.
이 실시형태는, 특수 특정 대체값이 제 0 내지 제 18 순서로 입력되는 각 바이트 데이터의 제 7 비트에 대응하는 대체값 RM =0 = R0 ,7 내지 R=18, 7 인 경우를 설명하였지만, 특수 특정 대체값은 그것으로 제한되지 않는다. 그것은 임의의 코드 스트링 세트의 임의의 하나의 행에 대응하는 특정 대체값 RP 일 수도 있다. 특정 대체값 RP 는 바이트 데이터에서 임의의 8 조각의 비트 데이터에 대응하는 대체값일 수도 있다.
이 실시형태는 업데이트 연산의 수행에 의해 업데이트 대체값 R'M 을 생성함으로써 19 개의 특수 특정 대체값들 RM =0 은 각 행의 특정 대체값들 RM 이고, 따라서 미리 저장되는 대체값들의 개수를 단지 19 조각의 특수 특정 대체값들 RM = 0 으로 감소시킨다.
제산부 (205) 는 시프트 레지스터 (200) 에 반대되는 시프트 연산을 수행하는 시프트 레지스터이다. 도 16 은 제산부 (205) 를 나타낸다. 19 개의 특정 대체값들 RP ,7 을 수신하면, 제산부 (205) 는 그 값들을 8 회 시프트하고, 바로 다음 행의 대체값을 출력한다. 예를 들어, 제 0 행의 특수 특정 대체값들 RM =0 은, 8 회의 시프트 연산에 의해, 제 1 행의 특수 특정 대체값 RP =304,i=7 내지 RP =322,i= 7 로 변한다.
비트 프로세싱 연산부 (210) 는 병렬/직렬 변환기 (이하, P/S 변환기; 211), 스위치 (212), 에러 검출 중간값 홀딩부 (213), 논리 회로 (XOR; 214), 제산부 (215), 스위치 (216), 및 비트 에러 검출값 홀딩부 (217) 를 포함한다. P/S 변환기 (211) 는 입력 데이터 DP , i 로서 병렬로 제공되는 8 비트 데이터를 수신하고 이 데이터를 직렬 비트 데이터로서 출력한다. 스위치 (212) 는 P/S 변환기 (211) 의 출력에 따라 정정된 대체값 출력부 (208) 의 출력을 선택한다. XOR (214) 는 스위치 (212) 와 에러 검출 중간값 홀딩부 (213) 의 출력들의 XOR 연산을 수행한다. 제산부 (215) 는 XOR (214) 의 출력을 제산한다. 스위치 (216) 는 제산부 (215) 와 0 의 출력 중 하나를 선택하고 선택된 값을 출력한다. 비트 에러 검출값 홀딩부 (217) 는, XOR (214) 로부터의 비트 에러 검출값 출력이 8 회 업데이트 될 때마다 바이트 에러 검출값을 출력한다.
이하, 비트 프로세싱 연산부 (210) 를 상세하게 설명한다. P/S 변환기 (211) 는 8 비트 바이트 데이터 DP , i 를 직렬 레이터로 변환하고 그것을 한 비트씩 연속적으로 출력한다. 스위치 (212) 는 직렬로 변환된 입력 비트 데이터 DP ,i 가 "0" 인 경우 "0" 을 출력하고, "1" 인 경우 정정된 대체값 출력부 (208) 의 출력 (정정된 대체값) 을 선택한다. 제산부 (215) 는 도 11 에 나타낸 시프트 레지스터 (200) 이고 XOR (214) 의 출력 결과를 제산한다. 스위치 (216) 는 1 바이트의 연산이 종료할 때까지 제산부 (215) 의 출력의 선택을 유지하고, 1 바이트의 연산이 종료할 때마다, 즉, 연산이 8 회 수행된 후, 0 을 선택하고 출력한다. 에러 검출 중간값 홀딩부 (213) 는, 제산부 (215) 의 제산 결과를 에러 검출 중간값 CP , i 로서 저장한다. XOR (214) 는 에러 검출 중간값 홀딩부 (213) 에 저장된 에러 검출 중간값 CP ,i 과 데이터 DP ,i 에 대한 정정된 대체값 또는 0 과의 XOR 를 계산하고, 그 결과를 비트 에러 검출값 EP , i 로서 비트 에러 검출값 홀딩부 (217) 로 출력한다.
예를 들어, 입력 바이트 데이터 DP ,i 가 P/S 변환기 (211) 에 제공되는 경우, P/S 변환기 (211) 는 직렬 데이터 DP ,0, 데이터 DP ,1 내지 데이터 DP ,7 을 연속적으로 출력한다. 예를 들어, 하나의 입력 바이트 데이터의 인코딩 비트 시퀀스 q 는 q + 7 내지 q 이다. 이 경우, bq +7 내지 bq +0 에 대응하는 비트 데이터로 구성되는 바이트 데이터가 DP , i 로서 입력된다. 그러면, P/S 변환기 (211) 는 1 비트 당 비트 데이터를 MSB 의 순서 bq +7 → bq +6 → bq +5 → bq +4 → bq +3 → bq +2 → bq +1 → bq +0 로 출력한다. 정정된 대체값 출력부 (208) 는 Xq mod G(x) 를 정정된 대체값 DP,i=7 = Rq 로서 저장한다.
제 1 비트 bq +7 가 P/S 변환기 (211) 로부터 출력될 때, 비트 에러 검출값 홀딩부 (217) 는,
EP ,0 = bq +7Xq +1 mod G(x) + CP ,0
을 저장한다. 에러 검출 중간값 CP ,0 = 0 이다.
이 값은 제산부 (215) 에 의해 제산되어 에러 검출 중간값,
CP ,1 = (bq +7Xq +1 mod G(x)) mod G(x) = bq +7Xq +1 mod G(x)
을 생성한다. 이 값은 에러 검출 중간값 홀딩부 (213) 에 저장된다.
그 후, 제 2 비트 bq +6 이 P/S 변환기 (211) 로부터 출력될 때, 비트 에러 검출값 홀딩부 (217) 는,
EP ,1 = bq +6 Xq mod G(x) + bq +7 Xq +1 mod G(x) = (bq +6Xq + bq +7Xq +1) mod G(x)
를 저장한다. 유사하게, 이 값은 제산부 (215) 에 의해 제산되어 다음의 에러 검출 중간값,
CP ,2 = (bq +6Xq +1 + bq +7Xq +2) mod G(x)) mod G(x) = (bq +6Xq +1 + bq +7Xq +2) mod G(x)
을 생성한다. 이 값은 에러 검출 중간값 홀딩부 (213) 에 저장된다.
이러한 방식으로, 제 8 비트 bq +0 가 마지막으로 입력된 후의 비트 에러 검출값은,
EP ,7 = bq +7Xq +7 + bq +6Xq +6 + bq +5Xq +5 + bq +4Xq +4 + bq +3Xq +3 + bq +2Xq +2 + bq +1Xq +1 + bq +0Xq +0) mod G(x)
이다. 이 값은, 1 바이트 데이터에 대한 에러 검출값인 바이트 에러 검출값 EP 이다.
바이트 에러 검출값 EP 는 바이트 프로세싱 연산부 (220) 에 한 바이트씩 제공된다. 바이트 에러 검출값 EP 는, 바이트 프로세싱 연산부 (22) 의 XOR (221) 에 입력되고, 2052 바이트의 XOR 이 계산된 후에 에러 검출값 E(x) 로서 출력된다. 바이트 에러 검출값 홀딩부 (222) 는 예를 들어 32 개의 홀딩부들로 구성되며, 열 카운트 값 N 에 따라 매 10 또는 9 바이트 마다 XOR (221) 의 결과들을 저장하여, 각 코드 스트링 D(x) 에 대응하는 값을 홀딩한다. 그 후, 하나의 기록 유닛 블록 F(x) 의 바이트 에러 검출값 EP 의 입력 동안, 각 홀딩부의 값은 순차적으로 XOR (221) 로부터의 값으로 업데이트된다. 리셋부 (223) 는 카운터 (202) 로부터의 제어 신호에 따라 바이트 에러 검출값 홀딩부 (222) 와 0 중 하나를 선택한다. 이 실시형태는, 하나의 기록 유닛 블록 F(x) 의 입력 후이고 다음 기록 유닛 블록 F(x) 의 각 코드 스트링 D(x) 의 제 1 바이트 에러 검출값 EP 입력 전인 타이밍에, 즉 행 카운트 값 M = 0 이고 N = 0, 10, 19, 29, …, 인 타이밍에, "0" 을 출력하고, 그 외의 타이밍에는 바이트 에러 검출값 홀딩부 (222) 의 출력을 출력한다. 바이트 에러 검출값 홀딩부 (222) 의 각 홀딩부에 홀딩된 값을 에러 검출값 E(x) 로서 출력한 후 값을 0 으로 리셋하는 것이 가능하다.
6. 에러 검출 방법
이하, 상술한 구성을 가지는 에러 검출기의 연산을 설명한다. 도 17 은 이 실시형태의 에러 검출기 (201) 의 연산을 나타내는 흐름도이다. 이하, 설명을 간략화하기 위해, 코드 스트링 D0 (Dq =0 내지 Dq =16416 = {100000000….000000001}) 의 16416 비트의 입력에 대해 에러 검출값을 계산하는 방법을 설명한다. 심볼 "q" 는 인코딩 비트 시퀀스를 나타내고, 코드 스트링 D0 는 실제로 기록 바이트 시퀀스 P 로 입력된다. 즉, 코드 스트링 D0 는 기록 비트 시퀀스 p 로 프로세스되지만, 각 비트 데이터는 입력 시퀀스인 기록 비트 시퀀스 p 와 상이한 인코딩 비트 시퀀스 q 와 관련된다. 코드 스트링 D0 는, 코드 스트링 D0 가 인코딩 비트 시퀀스 q 로 재배열될 때, 단지 최상위 비트 및 최하위 비트만이 "1" 이고 나머지 비트들은 "0" 인 코드 스트링이다. 계산될 에러 검출값은 코드 스트링 D0 를 비트 시퀀스 q = {100000000….000000001} 로 재배열하고 그것을 도 11 에 나타낸 시프트 레지스터 (200) 로 입력함으로써 획득되는 시프트 레지스터 값이다. 실 제로, 32 개의 코드 스트링들로 구성되는 기록 유닛 블록 F(x) 는 앞에서 설명한 바이트 단위의 기록 바이트 시퀀스 P 로 순차적으로 입력된다.
먼저, 특수 특정 대체값 테이블 (207) 의 특수 특정 대체값들 U0 내지 U19 는, 기록 유닛 블록 F(x) 의 기록 바이트 시퀀스 P = 0 바이트인 타이밍에 로딩되고, 데이터 스위치 (203) 를 통해 특정 대체값 테이블 (204) 에 저장된다 (단계 SP21). 데이터가 기록 유닛 블록 F(x) 의 바이트 시퀀스 P = 0 이 아니고 행 카운트 값 M 이 업데이트 되는 경우, 업데이트 대체값 테이블 (206) 에 저장된 업데이트 특정 대체값이 로딩된다. 특정 대체값 테이블 (204) 은, 하나의 행의 바이트 데이터의 입력이 종료할 때까지, 즉, 예를 들어, 그것이 제 0 행인 경우 바이트 데이터 DP=0,i 내지 DP =304, i 의 입력이 종료할 때까지, 19 개의 특정 대체값들을 순차적으로 출력한다. 이 경우, 열 번호들 (열 카운트 값들) N 을 19 로 나눈 후의 나머지들인 0 내지 18 은 포인터 (N mod 19) 이고, 특정 대체값 테이블 (204) 은, 그 포인터에 의해 지시되는 행에 대응하는 특수 특정 대체값을 정정된 대체값 출력부 (208) 로 출력한다 (단계 SP22). 기록 바이트 순서 P = 0 의 바이트 데이터의 제 7 비트의 비트 데이터 DP =0,7 에 대응하는 대체값 RP =0, 7 인, 제 0 바이트 데이터의 특정 대체값은, 대체 코드를 도 7 의 시프트 레지스터 (30) 로 나눔으로써 획득되는 32 비트 시프트 레지스터 값 (18461F40h) 인, 제 16408 순서의 X 데이터 (X16408) 만이 "1" 인 (대체 코드 스트링 = {000000001…00000000} (16416 바이트)) 데이터의 mod G(x) 와 동일하다.
그 후, 제 0 바이트 데이터 DP =0,i = {10000000(80h)} 가 카운터 (202) 로 입력된다 (단계 SP23). 바이트 데이터 DP =0,i 는 인코딩 비트 시퀀스 q = 16415 내지 16408 의 데이터이다. 에러 검출 중간값 CP ,i = C0 ,0 는 0 으로 리셋된다. P/S 변환기 (211) 는 제 0 입력 데이터 DP =0, i 를 8 비트 직렬 데이터로 변환하고, 변환된 데이터를 스위치 (212) 로 한 비트씩 순차적으로 제공한다 (단계 SP24). XOR (214) 는 에러 검출 중간값 CP ,i = C0 ,0 과 스위치 (212) 의 출력 BP,i 에 대해 XOR 연산을 수행하고, 비트 에러 검출값 홀딩부 (217) 의 비트 에러 검출값 EP , 0 를 업데이트한다 (단계 SP25). 이 예에서, 제 0 비트 데이터 DP =0,0 = 1 이기 때문에, 스위치 (212) 는 정정된 대체값 (Xq mod G(x) = RP ,7, 여기서 G(x) = X32 + X31 + X4 + 1) 을 출력한다. 이 예에서, 비트 에러 검출값 홀딩부 (217) 는, 18461F40h 의 정정된 대체값 RP =0,7 와 에러 검출 중간값 CP ,i = C0 ,0 = 0 에 대한 XOR 연산의 결과인 값 EP =0,0 을 저장한다.
8 비트 전부가 종료되지 않았으므로 (단계 SP26 에서 아니오), XOR (214) 의 출력 EP =0,0 은 제산부 (215) 에 의해 에러 검출 중간값 (CP =0,1 = EP =0,0 mod G(x) = RP=0,6) 으로 제산되고, 에러 검출 중간값 홀딩부 (213) 에 저장된다.
이 예에서, 제 0 비트 데이터의 입력 후, RP =0,7 = EP =0,0 = 18461F40h 의 mod G(x) 가 계산된다. 그 결과, CP =0,1 = 308C3E80h = {000000010…00000000} 가 에러 검출 중간값 홀딩부 (213) 에 저장된다. 이것은 단지 X16408 이 "1" 인 대체 코드 스트링을 시프트 레지스터 (30) 에 의해 왼쪽으로 1회 시프팅하여 획득되는 데이터이다. 이 값은, 도 7 의 시프트 레지스터 (30) 에서 단지 X16409 만 "1" 인 대체 코드 스트링을 나눔으로써 획득되는 32 비트 시프트 레지스터 값 (308C3E80h) (= R0 ,6) 인, 단지 X16409 만 "1" (대체 코드 스트링 = {000000010…00000000} (16416 바이트)) 인 대체 코드 스트링의 mod G(x) 와 동일하다.
먼저, 제 0 바이트의 제 1 비트 데이터가 DP =0,1 = 0 이기 때문에, 정정된 대체값 RP ,7 은 선택되지 않고, 에러 검출 중간값 CP =0,1 이 비트 에러 검출값 홀딩부 (217) 로 XOR (214) 를 통해 로딩된다 (단계 SP27).
즉, 스위치 (212) 로 입력되는 비트 데이터 DP ,i 가 "1" 인 경우, 스위치 (212) 의 출력 BP,i 는 Rq 와 동일하고, 비트 데이터 DP ,i 가 "0" 인 경우, 스위치 (212) 의 출력 BP,i 는 0 과 동일하다. 제 7 비트의 입력에서, 제산부 (215) 는 에러 검출 중간값 CP ,i 더하기 스위치 (212) 의 출력 Bq ,i 값을 수신하고, 에러 검출 중간값 홀딩부 (213) 는 (CQ ,i + BQ ,i) mod G(x) 를 저장한다.
이 예에서, 나머지 제 1 내지 제 7 비트 데이터는 DP0 ,1 내지 DP0 ,7 = 0 이기 때문에, 에러 검출 중간값을 제산부 (215) 로 나눈 후의 값이 비트 에러 검출값 홀딩부 (217) 로 순차적으로 로딩된다. 즉, 단지 X16408 이 "1" 인 대체 코드 스트링의 mod G(x) 가 비트 에러 검출값 홀딩부 (217) 로 제 0 비트의 입력에 의해 로딩된다. 데이터는 제산부 (215) 에 의해 제 1 내지 제 7 비트의 입력에 의해 반복적으로 제산되어, X16408 mod G(x) → X16409 mod G(x) → … → X16415 mod G(x) 가 된다. 그 결과, 비트 에러 검출값 홀딩부 (217) 는, 제 0 바이트의 마지막 비트인 제 7 비트 데이터 DP =0,7 가 입력될 때, X16415 mod G(x) 를 저장한다.
8 회의 연산이 종료된 후 (단계 SP26 에서 예), 에러 검출 중간값 CP ,i 는 0 으로 리셋되고, 비트 에러 검출값 홀딩부 (217) 에 저장되는 비트 에러 검출값 E0 ,7 는 바이트 프로세싱 연산부 (220) 의 XOR (121) 로 제공된다 (단계 SP27). 이 실시형태에서, 비트 에러 검출값 E0 ,7 = 230F9088h 이 출력된다. 그 후, 바이트 에러 검출값의 초기값 (= 0) 으로 XOR 연산 후의 값이 바이트 에러 검출값 홀딩부 (222) 에 저장된다 (단계 SP28). 이 방식으로, 바이트 에러 검출값 홀딩부 (222) 는, 과거의 비트 에러 검출값 EP ,7 (8 비트당 연산 값) 의 적분 후의 값인 값 E(x)P-1 을 저장한다. 값 E(x)P-1 및 비트 프로세싱 연산부 (210)에 의해 계산되 는 비트 에러 검출값 EP 는 각 코드 스트링 D(x) 에 대해 순차적으로 XOR 되어, 바이트 에러 검출값 E(x)P 를 업데이트한다.
1 바이트 에러 검출값의 연산 후, 카운터 (202) 는 열 카운트 값 N 을 증가시킨다 (단계 SP29). 열 카운트 값 N 이 303 에서 0 으로 변하는 경우 (단계 SP30 에서 예), 프로세스는 바이트 행 카운트 값 M 을 업데이트 하며 (단계 SP31), 열 카운트 값 N 이 다른 값인 경우, 프로세스는 단계 SP22 부터 프로세스를 반복한다. 또한, 바이트 행 카운트 값 M 이 업데이트되는 경우, 프로세스는 업데이트 특정 대체값 테이블 (206) 에 저장되는 업데이트 특정 대체값을 대체값 테이블 (204) 로 로딩하고 (단계 SP21), 단계 SP22 부터 반복한다. 바이트 행 카운트 값 M 이 215 에서 0 으로 변하는 경우 (단계 SP32 에서 예), 즉, 하나의 기록 유닛 블록 F(x) 의 32 개의 코드 스트링들 D(x) 의 에러 검출값들 E(x) 의 계산이 종료될 때, 프로세스는 각 에러 검출값 E(x) 를 출력한다 (단계 SP33). 그 후, 다음 기록 유닛 블록의 에러 검출값들의 계산 수행시 (단계 SP34 에서 예), 프로세스는 단계 SP21 부터 반복한다. 이 경우, 대체값 테이블 (204) 은 특수 특정 대체값 테이블 (207) 의 특수 특정 대체값을 로딩하고, 단계 SP22 부터 프로세스를 반복한다.
이 예에서, 인코딩 비트 시퀀스 q 에서 MSB 또는 LSB 가 아닌 데이터는 모두 "0" 이기 때문에, 바이트 에러 검출값 홀딩부 (222) 에 저장되는 값은, 제 0 바이트부터 기록 바이트 시퀀스 P = 32536 까지, EP =0,7 = 230F9088h 로 유지된다. 코드 스트링 D0 에서, 기록 바이트 시퀀스 P = 32537 의 바이트 데이터 DP =32537,i = 000000001b 가 입력되는 경우, 이 값에 대응하는 정정된 대체값 RP = Xq mod G(x) = F81FF949h 가 업데이트 특정 대체값 테이블 (206) 로부터 로딩된다. 이것은 바이트 데이터 DP =32537,i = Dq =7 내지 Dq = 0 이며, 이것은 코드 스트링 D0 에서 인코딩 바이트 시퀀스 Q = 2051 의 마지막 바이트이다. 정정된 대체값 RP = Xq mod G(x) = F81FF949h 는, 단지 X0 만 "1" 인 대체 코드 스트링 (= {00000000….00000001}) 을 시프트 레지스터 (30) 에서 제산하여 획득되는 값과 동일하다.
비트 프로세싱 연산부 (210) 가 바이트 데이터 (DP ,i) 를 수신하는 경우, 그것은 그 데이터를 직렬 데이터로 변환한다 (단계 SP3, 4). 에러 검출 중간값 CP,i 는 0 으로 리셋된다. 제 0 비트부터 제 6 비트까지의 데이터 DP ,0 내지 DP ,6 = 0 이기 때문에, 비트 에러 검출값은 0 이다 (단계 SP5 내지 SP10). 마지막 비트 데이터 DP ,7 = 1 이기 때문에, 정정된 대체값 Xq mod G(x) = F81FF949h 가 비트 에러 검출값 홀딩부 (217) 로 로딩되며, 그 후 바이트 에러 검출값 EP =32537/Q= 2051 으로서 출력되고, 적분된 과거 바이트 에러 검출값과 XOR 된다. 코드 스트링 D0 에서 다른 모든 비트들이 "0" 이기 때문에, E(x) = E0 + EQ = 2051 이며, 여기서 "+" 는 XOR 을 나타내며, 이것은 X16415 의 mod G(x) 와 X0 의 mod G(x) 의 합 = (X16415 + X0) 이며, 여기서 "+" 는 XOR 를 나타낸다. 이 값은 시프트 레지스터 (30) 에서 D(x) 를 나눈 후의 나머지이며, 에러 검출값 E(x) 와 동일하다.
이후에 설명할 바와 같이, 이 실시형태는 데이터를 시프트 레지스터 (30) 로 인코딩 시퀀스로 입력하지 않고 에러 검출값의 계산을 가능하게 한다. 따라서, 디스크에 기록된 데이터의 기록 순서에 무관하게 에러 검출값을 계산하는 것이 가능하다. 종래의 방법은, 시프트 레지스터에 데이터를 인코딩 시퀀스로 입력함으로써 획득되는 에러검출코드가 추가된 데이터를 기록하고, 에러 검출값을 계산하기 위해 시프트 레지스터로서의 동일한 연산부에 데이터를 판독하여 입력한다. 따라서, 기록 시퀀스 (판독 시퀀스) 가 인코딩 시퀀스와 상이한 경우, 에러 코드를 생성하고 에러 검출값을 생성하기 위해, 기록 블록들 단위의 데이터 판독을 인코딩 시퀀스로 1 회 재배열하고, 그 데이터를 시프트 레지스터로 입력하는 것이 필수적이었다. 그러나, 이러한 방법은, 각 데이터의 배열 시퀀스를 변경하기 위해 기록 유닛 블록들을 버퍼에 저장할 것을 요구하고, 이것은 데이터 재생을 프로세싱할 때 버퍼의 높은 점유 레이트를 요구한다. 한편으로는, 본 실시형태는, 데이터를 시프트 레지스터에 인코딩 시퀀스로 입력하지 않고 테이블을 참조함으로써 판독 시퀀스로 에러 검출값의 계산을 가능하게 한다. 이것은 에러 검출값을 계산할 때 기록 유닛 블록들을 저장하기 위한 버퍼의 필요를 제거한다.
또한, 본 실시형태는, 데이터 배열의 일정성에 기초하여 반복적으로 이용되 는 대체값만을 홀딩하고, 그것을 업데이팅함으로써 테이블에 저장된 대체값을 이용한다. 이것은 대체값의 개수를 절약하여 테이블 사이즈를 감소시킨다.
7. 기록 유닛
이상의 설명은 본 발명을 재생 유닛의 에러 검출기에 적용하지만, 앞에서 설명한 바와 같이, 기록 유닛에 에러검출코드를 추가할 때에도 동일한 구성이 가능하며, 이것은 시프트 레지스터 (200) 의 이용 없이 동일한 연산의 수행을 가능하게 한다. 또한, 이 경우, 인코딩 시퀀스가 아닌 기록 바이트 시퀀스의 사용자 데이터의 에러검출코드를 계산하는 것을 가능하게 하며, 따라서, 기록 유닛 블록을 버퍼로 1 회 로딩하고 데이터를 인코딩 바이트 시퀀스로 재배열할 필요를 제거한다.
도 18 은 기록 유닛을 나타내는 블록도이다. 기록 유닛에서, EDC 추가 회로 (318) 는 호스트로부터 제공되는 사용자 데이터로부터 에러검출코드를 생성한다. 그 후, 스크램블러 (319) 는 EDC 가 추가된 사용자 데이터로 구성되는 코드 스트링을 스크램블링한다.
그 후, 스크램블링된 데이터는, 메인 데이터가 에러 정정 인코딩되고 메인 메모리 (315) 에 저장되는 에러 정정기 인코더 (320) 로 제공된다. 또한, 입/출력부 (321) 로부터의 보조 데이터 (BIS) 는 에러 정정 인코딩된다. 스크램블러 (319) 에 의해 스크램블링되는 데이터는 커플링부 (314) 에 의해 메인 메모리 (315) 에 저장되는 에러 정정 코드와 커플링되고, 회전기 (312) 로 제공되어 회전된다. 그 후, 보조 데이터가 BIS 메모리 (316) 를 통해 인터리버 (313) 에 제 공되어 인터리빙된다. 커플링부 (311) 는 회전된 메인 데이터와 인터리빙된 보조 데이터를 커플링하고 커플링된 데이터를 ECC 클러스터로서 출력한다. ECC 클러스터는 변조되고 디스크에 기록된다.
이 실시형태의 EDC 추가 회로 (318) 는 입력부 (322) 를 통해 호스트 (326) 로부터 제공되는 사용자 데이터를 기록 바이트 시퀀스 Q 로 수신한다. EDC 추가 회로 (318) 는, 사용자 데이터를 시프트 레지스터 (200) 로 인코딩 바이트 순서Q 로 입력함으로써 생성된 에러검출코드 EDC(x) 를 사용자 데이터에 추가하여, 코드 스트링 D(x) 를 생성한다.
EDC 추가 회로 (318) 는 상기 에러 검출기와 동일한 구성을 가질 수도 있다. 즉, 그것은 적어도 특수 특정 대체값을 홀딩하는 테이블, 및 특수 특정 대체값으로부터 특정 대체값을 생성하는 시프트 레지스터를 포함하고, 바이트 단위의 에러검출코드를 계산하는 비트 프로세싱 연산부에 특정 대체값을 제공한다. 또한, EDC 추가 회로 (318) 는 이들 값들의 XOR 를 계산하는 바이트 프로세싱 연산부를 가지고 에러 정정 코드를 출력한다. 또한, 대체값은 앞에서와 동일한 방식으로 준비된다. 구체적으로, 대체값은 사용자 데이터의 각 비트 데이터의 각 인코딩 비트 시퀀스 q 에 대응하고, 그것은 대체 코드 스트링을 도 11 에 나타낸 시프트 레지스터로 입력함으로써 획득될 수 있다. 코드 스트링이 2048 바이트 사용자 데이터 및 4 바이트 0 데이터로 구성된 2052 바이트의 데이터인 경우, 앞의 프로세스와 정확하게 동일한 프로세스에 의해, 에러검출코드가 추가된 데이터를 획득할 수 있다. 구체적으로, 전술한 경우와 마찬가지로 코드 스트링은 2052 바이트 및 16416 비트일 수도 있고, 인코딩 비트 시퀀스 q 는 코드 스트링의 각 비트 데이터와 관련될 수도 있다. 대체 코드 스트링은 단지 인코딩 비트 시퀀스 q 에 대응하는 소정 비트 데이터만이 "1" 을 나타내고 나머지 모든 비트 데이터는 "0" 을 나타내는 코드 스트링일 수도 있다.
그 후, EDC 추가 회로 (318) 로부터의 코드 스트링 출력은 스크램블러 (319) 로 기록 바이트 시퀀스 P 로 입력된다. 스크램블러 (319) 는 인코딩 바이트 시퀀스 Q 에 대응하는 스크램블값 SQ 로부터 데이터 스크램블링된다. 인코딩 바이트 시퀀스 Q 와 관련된 스크램블링된 데이터 SDQ 는 EDC(x) 가 추가된 코드 스트링으로부터 생성된다.
전술한 디스크램블링된 데이터와 정확히 마찬가지로, 스크램블링된 데이터 SDQ 는 입력 바이트 데이터 DQ 및 입력 바이트 데이터 DQ 의 인코딩 바이트 시퀀스 Q 에 대응하는 스크램블값 SQ 로부터 생성된다. 또한, 스크램블러 (319) 는, 기록 바이트 시퀀스 P 의 바이트 데이터 입력에 대한, 인코딩 바이트 시퀀스 Q 에 대응하는 스크램블값 SQ 를 생성하는 스크램블값 생성부를 포함한다. 스크램블링된 데이터 DSQ 는, 스크램블 데이터 SQ 및 기록 바이트 시퀀스 P 의 바이트 데이터 DQ 입력으로부터 생성되고, 이것은 전술한 디스크램블러와 동일하다. 스크램블링된 데이터는 스크램블러 (319) 로부터 에러 검출 인코더 (320) 로 기록 바이트 시퀀스 P 로 제공된다.
장치가 기록/재생 유닛인 경우, 에러 코드 추가 회로 및 에러 검출기의, 스크램블러 및 디스크램블러와 같은 연산 유닛은 동일한 구성요소들이다. 데이터 기록 프로세스도 데이터 판독 프로세스도, 스크램블링/디스크램블링 프로세싱 및 코드 추가/에러 검출 프로세싱시에 데이터의 재배열을 요구하지 않기 때문에, 메모리 (324) 를 이용할 필요의 제거를 가능하게 한다.
본 발명은 앞에서 언급한 실시형태에 제한되는 것이 아니라 다양한 변형들이 발명의 범위를 벗어나지 않고 만들어질 수도 있다. 예를 들어, 각 프로세싱과 논리 구성간의 관계는 전술한 예에 제한되지 않는다. 설계자는 각 회로 및 디스크 장치를 효율적인 기능들 및 회로 구성으로 설계할 수도 있다.
본 발명은 발명의 범위 및 사상을 벗어나지 않고 변형 및 변경될 수도 있는상기 실시형태에 제한되지 않음이 명확하다.
본 발명은 소정의 시퀀스로 데이터를 프로세싱함으로써, 데이터가 소정의 시퀀스와 다른 시퀀스로 프로세싱되더라도 에러 검출값의 계산을 가능하게 하는 데이터에 에러검출코드의 추가를 가능하게 하고, 에러의 검출을 가능하게 한다.

Claims (15)

  1. 제 1 시퀀스와 관련된 스크램블링되지 않은 데이터 및 상기 제 1 시퀀스에 대응하는 스크램블값으로부터 생성되는 스크램블링된 데이터를 상기 스크램블값을 이용하여 디스크램블링함으로써 디스크램블링된 데이터를 생성하는 디스크램블러로서,
    상기 스크램블링된 데이터는 상기 제 1 시퀀스와 관련되고, 상기 제 1 시퀀스에 대응하는 상기 각 스크램블값은 초기값에 대해 상기 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 획득되며,
    상기 디스크램블러는,
    상기 제 1 시퀀스와 다른 제 2 시퀀스로 입력되는 상기 스크램블링된 데이터의 상기 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부; 및
    상기 스크램블링된 데이터, 및 상기 스크램블링된 데이터의 상기 제 1 시퀀스에 대응하는 상기 스크램블값으로부터 상기 디스크램블링된 데이터를 계산하는 코드 스트링 연산부를 포함하는, 디스크램블러.
  2. 제 1 항에 있어서,
    상기 제 1 시퀀스는 스크램블링된 데이터의 복수의 조각들로 구성되는 스크램블링된 코드 스트링에 관한 시퀀스를 나타내고,
    상기 제 2 시퀀스는 복수의 스크램블링된 코드 스트링들로 구성되는 기록 유 닛 블록에 관한 시퀀스를 나타내는, 디스크램블러.
  3. 제 2 항에 있어서,
    상기 제 2 시퀀스는 소정의 변환 규칙에 따라 상기 제 1 시퀀스를 변환함으로써 획득되는, 디스크램블러.
  4. 제 2 항에 있어서,
    상기 기록 유닛 블록은, X 개의 행 및 Y 개의 열 (X 및 Y 는 자연수) 로 구성되는 행렬을 포함하며, 여기서, 상기 제 1 시퀀스는 열 방향에 관련되고 상기 제 2 시퀀스는 행 방향에 관련되는, 디스크램블러.
  5. 제 4 항에 있어서,
    상기 스크램블값 생성부는, 상기 제 1 시퀀스에 대응하는 스크램블값을 하나의 시프트 연산으로 출력하는 표준 시프트 레지스터에 의한 소정 회수의 시프트 연산들과 동일한 연산을 하나의 시프트 연산으로 수행하는 변환 시프트 레지스터를 포함하는, 디스크램블러.
  6. 제 5 항에 있어서,
    상기 기록 유닛 블록의 상기 X 개의 행 및 상기 Y 개의 열은 2 의 멱승 (exponentiation of 2) 이고,
    상기 소정 회수는 2 의 멱승인 X 의 약수들 중 하나인, 디스크램블러.
  7. 제 5 항에 있어서,
    상기 스크램블값 생성부는,
    상기 표준 시프트 레지스터와 동일한 연산을 하나의 시프트 연산으로 수행하는 업데이트 시프트 레지스터; 및
    상기 스크램블링된 데이터의 상기 제 1 시퀀스에 대응하는 상기 스크램블값의 출력을 제어하는 제어부를 포함하며,
    상기 변환 시프트 레지스터는 상기 표준 시프트 레지스터에 의한 X 회의 시프트 연산들과 동일한 연산을 하나의 시프트 연산으로 수행하고, 그리고
    상기 제어부는 입력 스크램블링된 데이터와 관련된 상기 제 2 시퀀스에 따라 상기 업데이트 시프트 레지스터 및 상기 변환 시프트 레지스터의 시프트 연산의 타이밍을 제어하고 연산 결과를 출력할 것을 선택하는, 디스크램블러.
  8. 제 5 항에 있어서,
    상기 기록 유닛 블록은 스크램블링된 코드 스트링 2 개로 구성되고 짝수개의 열을 가지는 스크램블링된 코드 스트링 세트를 포함하고,
    상기 스크램블값 생성부는,
    제 1 및 제 2 변환 시프트 레지스터;
    상기 표준 시프트 레지스터와 동일한 연산을 하나의 시프트 연산으로 수행하 는 업데이트 시프트 레지스터; 및
    상기 스크램블링된 데이터의 상기 제 1 시퀀스에 대응하는 상기 스크램블값의 출력을 제어하는 제어부를 포함하며,
    상기 제 1 변환 시프트 레지스터는 상기 표준 시프트 레지스터에 의한 X / 2 (X / 2 는 정수) 회의 시프트 연산과 동일한 연산을 하나의 시프트 연산으로 수행하고,
    상기 제 2 변환 시프트 레지스터는 상기 표준 시프트 레지스터에 의한 X 회의 시프트 연산과 동일한 연산을 하나의 시프트 연산으로 수행하고, 그리고
    상기 제어부는 입력 스크램블링된 데이터와 관련되는 상기 제 2 시퀀스에 따라 각 시프트 레지스터의 시프트 연산의 타이밍을 제어하고 상기 각 시프트 레지스터의 연산 결과를 출력할 것을 선택하는, 디스크램블러.
  9. 제 8 항에 있어서,
    상기 제어부는, 하나의 스크램블링된 코드 스트링에 이어지는 동일한 행의 다음 스크램블링된 코드 스트링의 스크램블링된 데이터를 입력하는 타이밍에 상기 제 1 변환 시프트 레지스터의 연산 결과를 출력할 것을 선택하고, 동일한 행의 동일한 스크램블링된 코드 스트링의 스크램블링된 데이터를 입력하는 타이밍에 상기 제 2 변환 시프트 레지스터의 연산 결과를 출력할 것을 선택하고, 그리고 하나의 행에 이어지는 다음 행의 스크램블링된 데이터를 입력하는 타이밍에 상기 업데이트 시프트 레지스터의 연산 결과를 출력할 것을 선택하는, 디스크램블러.
  10. 제 8 항에 있어서,
    상기 제어부는, 상기 입력 스크램블링된 데이터의 열 번호 및 행 번호를 기록 유닛 블록에서 카운트하고, 상기 시프트 연산을 제어하고, 그리고 카운트 결과에 따라 상기 연산 값을 출력할 것을 선택하는, 디스크램블러.
  11. 제 1 시퀀스와 관련되는 스크램블링되지 않은 데이터 및 상기 제 1 시퀀스에 대응하는 스크램블값으로부터 생성되는 스크램블링된 데이터를 상기 스크램블값을 이용하여 디스크램블링함으로써 디스크램블링된 데이터를 생성하는 디스크램블링 방법으로서,
    상기 스크램블링된 데이터는 상기 제 1 시퀀스와 관련되고, 상기 제 1 시퀀스에 대응하는 상기 각 스크램블값은 초기값에 대해 상기 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 획득되며,
    상기 디스크램블링 방법은,
    상기 제 1 시퀀스와 다른 제 2 시퀀스로 입력되는 상기 스크램블링된 데이터의 상기 제 1 시퀀스에 대응하는 스크램블값을 생성하는 단계; 및
    상기 스크램블링된 데이터, 및 상기 스크램블링된 데이터의 상기 제 1 시퀀스에 대응하는 상기 스크램블값으로부터 상기 디스크램블링된 데이터를 계산하는 단계를 포함하는, 디스크램블링 방법.
  12. 제 1 시퀀스와 관련되는 스크램블링되지 않은 데이터 및 상기 제 1 시퀀스에 대응하는 스크램블값으로부터 스크램블링되고 상기 스크램블값을 이용하여 디스크램블링되는 스크램블링된 데이터를 생성하는 스크램블러로서,
    상기 스크램블링되지 않은 데이터는 상기 제 1 시퀀스와 관련되고, 상기 제 1 시퀀스에 대응하는 상기 각 스크램블값은 초기값에 대해 상기 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 획득되며,
    상기 스크램블러는,
    상기 제 1 시퀀스와 다른 제 2 시퀀스로 입력되는 상기 스크램블링되지 않은 데이터의 상기 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부; 및
    상기 스크램블링되지 않은 데이터, 및 상기 스크램블링되지 않은 데이터의 상기 제 1 시퀀스에 대응하는 상기 스크램블값으로부터 상기 스크램블링된 데이터를 계산하는 코드 스트링 연산부를 포함하는, 스크램블러.
  13. 제 1 시퀀스와 관련되는 스크램블링되지 않은 데이터 및 상기 제 1 시퀀스에 대응하는 스크램블값으로부터 생성되는 스크램블링된 데이터에 기초하여 생성되는 기록 데이터를 상기 제 1 시퀀스와 다른 제 2 시퀀스로 판독하는 판독부; 및
    상기 스크램블링된 데이터 및 상기 스크램블값으로부터 디스크램블링된 데이터를 생성하는 디스크램블링부를 포함하는 디스크 장치로서,
    상기 제 1 시퀀스에 대응하는 상기 각 스크램블값은 초기값에 대해 상기 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 획득되며,
    상기 디스크램블링부는,
    상기 스크램블링된 데이터의 상기 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부; 및
    상기 스크램블링된 데이터, 및 상기 스크램블링된 데이터의 상기 제 1 시퀀스에 대응하는 상기 스크램블값으로부터 상기 디스크램블링된 데이터를 계산하는 코드 스트링 연산부를 포함하는, 디스크 장치.
  14. 제 1 시퀀스와 관련되는 스크램블링되지 않은 데이터 및 상기 제 1 시퀀스에 대응하는 스크램블값으로부터 스크램블링되고 상기 스크램블값을 이용하여 디스크램블링되는 스크램블링된 데이터를 생성하는 스크램블링부; 및
    상기 스크램블링된 데이터에 기초하여 생성되는 기록 데이터를 기록하는 기록부를 포함하는 디스크 장치로서,
    상기 제 1 시퀀스에 대응하는 상기 각 스크램블링값은 초기값에 대해 상기 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 획득되며,
    상기 스크램블링부는,
    상기 제 1 시퀀스와 다른 제 2 시퀀스로 입력되는 상기 스크램블링되지 않은 데이터의 상기 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부; 및
    상기 스크램블링되지 않은 데이터, 및 상기 스크램블링되지 않은 데이터의 상기 제 1 시퀀스에 대응하는 상기 스크램블값으로부터 상기 스크램블링된 데이터를 계산하는 코드 스트링 연산부를 포함하는, 디스크 장치.
  15. 사용자 데이터를 포함하는 K (K 는 자연수) 바이트의 프로세싱대상 코드 스트링으로부터, 각 바이트 데이터가 제 1 시퀀스와 관련되고 에러검출코드가 추가된 사용자 데이터로 구성되는 K 바이트의 에러검출코드 추가 코드 스트링을 생성하는 에러검출코드 추가부; 및
    상기 에러검출코드 추가 코드 스트링의 상기 각 바이트 데이터 및 상기 제 1 시퀀스에 대응하는 스크램블값으로부터 스크램블링되고 상기 스크램블값을 이용하여 디스크램블링되는 스크램블링된 데이터를 생성하는 스크램블링부를 포함하는 디스크 장치로서,
    상기 에러검출코드 추가 코드 스트링은 소정의 연산 방법에 의해 상기 제 1 시퀀스로 상기 프로세싱대상 코드 스트링을 프로세싱함으로써 획득되며,
    상기 제 1 시퀀스에 대응하는 상기 각 스크램블값은 초기값에 대해 상기 제 1 시퀀스에 대응하는 소정의 연산을 수행함으로써 획득되며,
    상기 에러검출코드 추가부는,
    상기 프로세싱대상 코드 스트링의 상기 각 바이트 데이터의 상기 제 1 시퀀스에 대응하는 특정 대체값을 출력하는 대체값 출력부; 및
    상기 대체값 출력부의 출력 결과에 따라, 상기 프로세싱대상 코드 스트링의 상기 각 바이트 데이터에 대해, 상기 각 바이트 데이터 및 상기 각 바이트 데이터 에 대응하는 상기 특정 대체값을 상기 제 1 시퀀스와 다른 제 2 시퀀스로 프로세싱함으로써 상기 에러검출코드 추가 코드 스트링을 생성하는 코드 스트링 생성부를 포함하며,
    상기 스크램블링부는,
    상기 제 2 시퀀스로 입력되는 상기 에러검출코드 추가 코드 스트링의 상기 각 바이트 데이터의 상기 제 1 시퀀스에 대응하는 스크램블값을 생성하는 스크램블값 생성부; 및
    상기 입력 바이트 데이터, 및 상기 입력 바이트 데이터의 상기 제 1 시퀀스에 대응하는 상기 스크램블값으로부터 상기 스크램블링된 데이터를 계산하는 코드 스트링 연산부를 포함하는, 디스크장치.
KR1020050115713A 2004-12-01 2005-11-30 스크램블러, 디스크램블러 및 방법, 및 디스크 장치 KR100654111B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004348324A JP4643978B2 (ja) 2004-12-01 2004-12-01 スクランブル回路、デ・スクランブル回路及び方法、並びにディスク装置
JPJP-P-2004-00348324 2004-12-01

Publications (2)

Publication Number Publication Date
KR20060061247A true KR20060061247A (ko) 2006-06-07
KR100654111B1 KR100654111B1 (ko) 2006-12-06

Family

ID=36567412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050115713A KR100654111B1 (ko) 2004-12-01 2005-11-30 스크램블러, 디스크램블러 및 방법, 및 디스크 장치

Country Status (5)

Country Link
US (1) US8102996B2 (ko)
JP (1) JP4643978B2 (ko)
KR (1) KR100654111B1 (ko)
CN (1) CN100555434C (ko)
TW (1) TWI333199B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7957294B2 (en) * 2005-12-01 2011-06-07 Electronics And Telecommunications Research Institute PCI express packet filter including descrambler
JP4930251B2 (ja) 2007-07-31 2012-05-16 富士通セミコンダクター株式会社 誤り訂正装置及びデスクランブル回路
JP2009048713A (ja) * 2007-08-21 2009-03-05 Toshiba Microelectronics Corp デスクランブル回路及びエラー検出コード計算回路
CN101957782B (zh) * 2009-07-17 2013-05-01 慧国(上海)软件科技有限公司 避免数据储存装置的数据发生移位错误的方法及控制器
KR20110055178A (ko) * 2009-11-19 2011-05-25 삼성전자주식회사 플래시 메모리 장치 및 그것을 포함한 메모리 시스템
CN107506326B (zh) * 2017-07-05 2019-03-15 芯启源(南京)半导体科技有限公司 数据传输加扰和解扰电路、发送和接收装置及系统
CN111400232B (zh) 2020-04-10 2024-01-16 芯启源(上海)半导体科技有限公司 一种基于数据位宽展开的scramble与descramble硬件实现方法
US11502703B2 (en) 2020-05-20 2022-11-15 SK Hynix Inc. Descrambler for memory systems and method thereof
CN112667195A (zh) * 2021-01-05 2021-04-16 深圳市亿联智能有限公司 一种对特征加扰数据解扰处理的方法
CN114221737B (zh) * 2021-11-01 2023-07-18 深圳市紫光同创电子有限公司 一种基于jesd204b协议的加解扰方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319712A (en) * 1993-08-26 1994-06-07 Motorola, Inc. Method and apparatus for providing cryptographic protection of a data stream in a communication system
EP1315092B1 (en) * 1995-06-30 2007-04-18 Sony Corporation Data recording method and apparatus, and data reproducing method and apparatus
JP3566007B2 (ja) * 1996-11-12 2004-09-15 富士通株式会社 デスクランブル回路、スクランブルパターン生成回路及びスクランブルパターン生成方法
JPH1115642A (ja) 1997-06-26 1999-01-22 Sony Corp スクランブル装置およびデスクランブル装置ならびにその方法
US6252961B1 (en) * 1997-07-17 2001-06-26 Hewlett-Packard Co Method and apparatus for performing data encryption and error code correction
JP2000090595A (ja) * 1998-09-09 2000-03-31 Victor Co Of Japan Ltd デ・スクランブル装置
DE69939254D1 (de) * 1999-06-22 2008-09-18 Hitachi Ltd Kryptografisches Gerät und Verfahren
JP2001023316A (ja) * 1999-07-05 2001-01-26 Hitachi Ltd ディジタルデータ再生方法及びディジタルデータ再生回路並びに誤り検出方法
EP1112632B1 (en) * 1999-07-07 2005-04-13 Samsung Electronics Co., Ltd. Apparatus and method for generating scrambling code in umts mobile communication system
KR100657240B1 (ko) 1999-07-10 2007-01-12 삼성전자주식회사 랜덤 데이터 발생기
US6526010B1 (en) * 1999-10-13 2003-02-25 Matsushita Electric Industrial Co., Ltd. Recording medium, method and apparatus for recording/reproducing information which has been scrambled using a medium identifier and a sector number
JP3306413B2 (ja) * 2000-01-31 2002-07-24 三洋電機株式会社 誤り訂正装置および誤り訂正方法
EP1223578A3 (en) 2000-12-12 2008-07-16 Kabushiki Kaisha Toshiba Data processing method using error-correcting code and an apparatus using the same method
JP4016652B2 (ja) 2001-12-13 2007-12-05 株式会社日立製作所 記録再生装置、再生装置。
JP2003187532A (ja) * 2001-12-13 2003-07-04 Hitachi Ltd スクランブル符号化復号方法およびその回路、記憶装置、記憶媒体
KR100510492B1 (ko) 2002-10-07 2005-08-26 삼성전자주식회사 광디스크 시스템에서의 워드 단위스크램블링/디스크램블링 장치 및 그 방법
JP4608931B2 (ja) * 2004-01-09 2011-01-12 ソニー株式会社 情報処理装置および方法、プログラム、並びに記録媒体

Also Published As

Publication number Publication date
CN100555434C (zh) 2009-10-28
KR100654111B1 (ko) 2006-12-06
US8102996B2 (en) 2012-01-24
TWI333199B (en) 2010-11-11
TW200634746A (en) 2006-10-01
JP2006155836A (ja) 2006-06-15
US20060115087A1 (en) 2006-06-01
JP4643978B2 (ja) 2011-03-02
CN1819046A (zh) 2006-08-16

Similar Documents

Publication Publication Date Title
KR100654111B1 (ko) 스크램블러, 디스크램블러 및 방법, 및 디스크 장치
KR100654110B1 (ko) 에러검출코드 추가 회로, 에러 검출 회로 및 방법, 및디스크 장치
US4637021A (en) Multiple pass error correction
US5996105A (en) ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes
AU2002353342B2 (en) Method of encoding and decoding
EP1750264B1 (en) Error detecting code calculation circuit, error detecting code calculation method, and recording apparatus
US8171373B2 (en) Coding circuit for recording data on DVD disk
JPH0267825A (ja) 誤り訂正回路
US7836375B2 (en) Scrambler circuit, encoding device, encoding method and recording apparatus
US20020064277A1 (en) Data recording method, data recording apparatus, data reproduction method and data reproduction apparatus
JP2007299393A (ja) 回転する記憶媒体の複数の層にデータを読み書きする方法、プログラム及びデータ記憶装置
US5471486A (en) Methods and devices for encoding data symbols in accordance with a BCH code to obtain a code word in which parity symbols are located in the middle of the code word
JP2010218631A (ja) 誤り訂正回路及びデータ記憶装置
JP2008146828A (ja) 光ディスク装置のエンコードデータ符号回路
KR100509137B1 (ko) 에러 정정 장치
JPH11328880A (ja) 誤り訂正装置及び光ディスク読取装置
KR100739669B1 (ko) 광 정보저장 매체, 데이터 기록장치 및 데이터 기록방법
KR100691065B1 (ko) 고밀도 광 기록매체에서의 데이터 에러정정 코드생성방법과 이에 의한 에러 정정 방법, 그리고 그 장치
JP2009048713A (ja) デスクランブル回路及びエラー検出コード計算回路
US8196023B2 (en) Encoder and optical disk recording apparatus
KR100784740B1 (ko) 에러 검출 코드 산출 회로, 에러 검출 코드 산출 방법, 및 레코딩 장치
JP3928414B2 (ja) ディジタルデータ記録再生方法、ディジタルデータ記録再生装置及び記録媒体
KR20030073532A (ko) 이중 피오 신드롬 연산장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20111028

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20121114

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee