KR0143126B1 - 서브코드 데이타 처리를 위한 디-인터리브 어드레스 발생회로 - Google Patents
서브코드 데이타 처리를 위한 디-인터리브 어드레스 발생회로Info
- Publication number
- KR0143126B1 KR0143126B1 KR1019950008991A KR19950008991A KR0143126B1 KR 0143126 B1 KR0143126 B1 KR 0143126B1 KR 1019950008991 A KR1019950008991 A KR 1019950008991A KR 19950008991 A KR19950008991 A KR 19950008991A KR 0143126 B1 KR0143126 B1 KR 0143126B1
- Authority
- KR
- South Korea
- Prior art keywords
- output
- symbol
- counter
- adder
- pack
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1866—Error detection or correction; Testing, e.g. of drop-outs by interleaving
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/102—Programmed access in sequence to addressed parts of tracks of operating record carriers
- G11B27/105—Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/19—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier
- G11B27/28—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording
- G11B27/30—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on the same track as the main recording
- G11B27/3027—Indexing; Addressing; Timing or synchronising; Measuring tape travel by using information detectable on the record carrier by using information signals recorded by the same method as the main recording on the same track as the main recording used signal is digitally coded
- G11B27/3063—Subcodes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B2220/00—Record carriers by type
- G11B2220/20—Disc-shaped record carriers
- G11B2220/25—Disc-shaped record carriers characterised in that the disc is based on a specific recording technology
- G11B2220/2537—Optical discs
- G11B2220/2545—CDs
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
이 발명은 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에 관한 것으로서, CD와 관련된 어프리케이션 셋에서 일반 데이터와는 다른 목적으로 사용하기 위해서 만든 서브코드 데이터를, ECC의 효율을 높이고 전체적인 디스크(CD)에 발생된 에러를 감쇄시킬수 있도록, 인터리브된 상태의 데이터에서 다시 원래 상태의 데이터 위치로 찾아내기 위한 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에 관한 것이다.
Description
제1도는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로를 나타낸 블록도.
제2도는 현재 시.디. 시프템에서 표준으로 사용하는 인터리브 방식을 나타낸 도표.
제3도는 이 발명의 실시예에 따른, 현재 시.디. 시스템에서 표준으로 사용하는 디-인터리브 방식을 나타낸 도표.
제4도는 서브코드 데이터 포맷을 나타낸 도면.
제5도는 제2도의 인터리브 방식을 이해하기 쉽게 나타낸 도면.
제6도는 제3도의 디-인터리브 방식을 이해하기 쉽게 나타낸 도면.
제7도의 (a)와 (b)는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 타이밍 발생 회로부의 상세회로도.
제8도의 (a)와 (b)는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 맵드심볼 로케이터부의 상세 회로도.
제9도는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 이-인터리브 어드레스 발생 회로에서 팩 카운터의 상세 회로도.
제10도의 (a)와 (b)는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 패킷 카운터의 상세 회로도.
제11도는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 사용되는 기본적인 제어신호의 타이밍 다이어그램.
제12도는 심볼이 인터리브되는 예를 나타낸 도면.
제13도는 팩의 구성을 나타낸 도면.
제14도는 이 발명의 실시예에서 스타트 어드레스를 기준으로 N개의 팩을 저장할 수 있다고 가정한 메모리를 나타낸 도면.
제15도는 이 발명의 실시예에서 인터리브된 심볼들이 디-인터리브되어 원래의 어드레스를 찾아가는 과정을 나타낸 도면.
제16도는 이 발명의 실시예에서 사용한 메모리가 순환되면서 사용됨을 나타낸 도면이다.
*도면의 주요부분에 대한 부호의 설명
11 : 타이밍 발생 회로부 12 : 심볼 카운터
13 : 팩 카운터 14 : 패킷 카운터
15 : 제1 덧셈기 16 : 맵드 심볼 로케이터
17 : 제2 덧셈기 18 ; 심볼 디텍터
19 : 컨스탄트 뺄셈기 20 : 컨스탄트 덧셈기
21 : 비교기 22 : 먹스
23 : 제3 덧셈기
이 발명은 서브코드 데이터(SubCode Data) 처리를 위한 디-인터리브 어드레스(De-Interleave Address) 발생 회로에 관한 것으로서, 더욱 상세하게 말하자면 시.디.(Compact Disk;이하 CD라 함)와 관련된 어플리케이션셋(Application Set)에서 일반 데이터와는 다른 목적으로 사용하기 위해서 만든 서브코드 데이터를 기록상태 이전의 원래의 데이터로 복구할 수 있도록 해주는 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에 관한 것이다. 먼저 용어에 대해 설명하면, 연속적인 버스트(Burst) 에러를 단순한 랜덤(Random) 에러로 분산시키므로써 나중에 ECC(Error Correction Circuit)에 의해서 충분히 복구가 가능하도록 데이터의 순서를 바꾸어 기록하는 기능을 인터리브(Interleave)라 하고, 다시 이를 복구하기 위해서 이와 반대 순서대로 데이터를 원위치로 배열하는 것을 디-인터리브라고 한다.
또한, 서브코드 데이터에 관하여 간단히 살펴보면, 이 데이터는 유저비트(User Bit) 또는 콘트롤 신호라고도 부르며, 유저가 디스크를 사용하기 쉽게 하기 위한 코드로, CD상에서 일반 데이터와 같이 기록되어 있다가 재생시에는 별도로 분리되어서 처리되도록 되어있다. 이 데이터는 현재 CD-G, CD-EG에서 주로 사용하는 영상 정보 데이터와 디스크의 위치를 가지고 있는 데이터로 분리되어 있는데 이것의 용도는 디스크 제작자들에 의해서 변경되어질 수 있다.
이러한 서브코드 데이터는, 디스크에 흠집이 생기거나 상처가 생기었을 경우에 데이터가 대량으로 손실되는 것을 방지하기 위하여, 데이터를 순서적으로 기록하지 않고, CD에 일정한 형식을 정하여 순서를 바꾸어서 기록하게 된다. 그 이유는 순서적으로 기록을 하였을 경우에는 디스크에 흠집이 발생하였을 경우, 그 흠집 위치에 있던 연속으로 연결된 데이터가 모두 손실되기 때문이다. 따라서 이럴 경우에는 ECC를 거치더라도 ECC가 손실된 에러를 복구할 수 있는 범위를 벗어나므로 그 위치와 관련된 에러는 모두 손실되는 문제점이 있다.
따라서 이 발명의 목적은 상기한 종래의 문제점을 해결하기 위한 것으로서, 디스크에 기록할 때 제2도와 같은 방식으로 그 순서를 바꾸어서 기록(인터리브)을 하고 제3도와 같은 순서대로 재생(디-인터로브)을 하면 디스크상의 8-16개의 연속적인 버스트 에러가 재생시에는 단지 1-2개씩의 랜덤 에러로 되기 때문에, 각각의 에러들이 여러 위치로 분산되므로써 ECC에 희해 손실된 데이타를 충분히 복구할 수 있게 된다는 것을 이용하여, ECC의 효율을 높이고 전체적인 디스크에 발생된 에러를 감쇄시킬 수 있도록, 인터리브된 상태의 데이터를 다시 원래 상태의 데이터 위치로 찾아내기 위한 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로를 제공하기 위한 것이다.
상기한 목적을 달성하기 위한 수단으로써 이 발명의 구성은, 서브코드 데이터를 디-인터리브하기 위해 필요한 기본적인 제어 신호들을 출력하는 타이밍 발생 회로(Timing Generation Circuit)부와, 상기한 타이밍 발생 회로부에서 출력한 신호들과 외부의 신호를 입력받아, 심볼을 카운트하는 심볼 카운터(Symbol Counter)와, 상기한 타이밍 발생 회로부에서 출력한 신호들과 외부의 신호를 입력받아, 팩을 카운트하는 팩 카운터(Pack Counter)와, 상기한 타이밍 발생 회로부에서 출력한 신호들과 외부의 신호를 입력받아, 패킷을 카운트하는 패킷 카운터(Packet Counter)와, 상기한 팩 카운터와 상기한 패킷 카운터의 출력을 입력받아 합하는 제1덧셈기(Adder)와, 상기한 심볼 카운터의 출력을 입력받아, 디-인터리브하기 위해서, 인터리브되어 퍼져있는 심볼들의 위치를 추적하는 맵드 심볼 로케이터(Mapped Symbol Locator)와, 상기한 제1 덧셈기의 출력과 상기한 맵드 심볼 로케이터의 출력을 입력받아 합하는 제2 덧셈기와, 상기한 심볼 카운터의 출력을 입력받아, 특정 위치의 심볼을 찾아내는 심볼디텍터(Symbol Detector)와, 상기한 제2 덧셈기의 출력을 입력받아, 특정한 상수값을 빼는 컨스탄스 뺄셈기(Constant Subracter)와, 상기 제2 덧셈기의 출력을 입력받아, 특정한 상수값을 더하는 컨스탄트 덧셈기와, 상기한 제2 덧셈기의 출력을 입력받아, 특정 상수값과 비교하는 비교기(Comparator)와, 상기한 제2 덧셈기의 출력과 상기한 컨스탄트 뺄셈기의 출력과 상기한 컨스탄트 덧셈기의 출력을 입력받고, 상기한 비교기의 출력과 상기한 심볼 디텍터의 출력에 따라 상기한 3 입력중에서 하나를 선택하여 출력하는 먹스(Multiplxer)와, 외부의 스타트 어드레스와 상기한 먹스의 출력을 입력받아, 실제 어드래스를 출력하는 제3 덧셈기로 이루어진다.
상기한 구성에 의하여, 이 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 이 발명을 용이하게 실시할 수 있는 가장 바람직한 실시예를 첨부된 도면을 참조로 하여 상세히 설명한다.
제1도는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로를 나타낸 블록도이다.
제1도에 도시되어 있듯이 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로의 구성은, 서브코드 데이터를 디-인터리브 하기 위해 필요한 기본적인 제어 신호들(symbol, sync_pack, sync_packet)을 출력하는 타이밍 발생 회로부(11)와, 상기한 타이밍 발생 회로부(11)에서 출력한 신호들(symbol, sync_pack, sync_packet)과 외부의 신호(system_reset)를 입력받아, 심볼을 카운트하는 심볼 카운터(+1 increment counter)(12)와, 상기한 타이밍 발생 회로부(11)에서 출력한 신호들(sync_pack, sync_packet)과 외부의 신호(system_reset)를 입력받아, 팩을 카운트하는 팩 카운터(+24 increment counter)(13)와, 상기한 타이밍 발생 회로부(11)에서 출력한 신호(sync_packet)와 외부의 신호(system_reset)를 입력받아, 패킷을 카운트하는 패킷 카운터(+96 increment counter)(14)와, 상기한 팩 카운터(13)와 상기한 패킷 카운터(14)의 출력을 입력받아 합하는 제1 덧셈기(15)와, 상기한 심볼 카운터(12)의 출력을 입력받아, 디-인터리브하기 위해서, 인터리브되어 2 패킷에 걸쳐서 퍼져있는 심볼들의 위치를 추적하는 맵드 심볼 로케이터(16)와, 상기한 제1 덧셈기(15)의 출력과 상기한 맵드 심볼 로케이터(16)의 출력을 입력받아 합하는 제2 덧셈기(17)와, 상기한 심볼 카운터(12)의 출력을 입력받아, 특정 위치(0, 8, 16)의 심볼을 찾아내는 심볼 디텍터(18)와, 상기한 제2 덧셈기(17)의 출력을 입력받아, 특정한 상수값(192)을 빼는 컨스탄스 뺄셈기(19)와, 상기한 제2 덧셈기(17)의 출력을 입력받아, 특정한 상수값((N-2)*96)을 더하는 컨스탄트 덧셈기(20)와, 상기한 제2 덧셈기(17)의 출력을 입력받아, 특정 상수값(191)과 비교하는 비교기(21)와, 상기한 제2 덧셈기(17)의 출력과 상기한 컨스탄트 뺄셈기(19)의 출력과 상기한 컨스탄트 덧셈기(20)의 출력을 입력받고, 상기한 비교기(21)의 출력과 상기한 심볼 디텍터(18)의 출력에 따라 상기한 3 입력(제2 덧셈기(17)의 출력, 컨스탄트 뺄셈기(19)의 출력, 커스탄트 덧셈기(20)의 출력)중에서 하나를 선택하여 출력하는 먹스(22)와, 외부의 스타트 어드레스(Stsrt_Address)와 상기한 먹스(22)의 출력을 입력받아 실제 어드레스(Real_Address)를 출력하는 제3 덧셈기(23)로 이루어진다.
제7도의 (a)와 (b)는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 타이밍 발생 회로부의 상세 회로도이다.
제7도의 (a)와 (b)에 도시되어 있듯이, 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 타이밍 발생회로부(11)는, 서브코드 데이터의 블록 동기 신호인 scor과, 서브코드 데이터의 동기 신호인 wfck와, 이 타이밍 발생 회로부(11)의 동작여부를 결정하는 subcen과, 이 타이밍 발생 회로부(11)에 기본적인 최소 단위의 클럭을 제공하는 add_valid를 입력 신호에 포함하고, 심볼 카운터(12)의 클럭으로 입력되는 symbol과, 팩카운터(13)의 클럭으로 입력되는 sync_pack과, 패킷 카운터(14)의 클럭으로 입력되는 sync_packet을 출력 신호에 포함하며 다음과 같은 프로그램에 의해 회로 합성 툴(SYNOPSYS)을 이용하여 이루어진다.
제8도의 (a)와 (b)는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 맵드 심볼 로케이터부의 상세 회로도이다.
제8도의 (a)와 (b)에 도시되어 있듯이, 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 맵드 심볼 로케이터(16)는, 심볼 카운터(12)에서 출력되는 pack_symbol_counter4:0를 입력 신호로 하고 제2 덧셈기(17)로 입력되는 mapped_pack_symbol_counter7:0를 출력 신호로 하며 다음과 같은 프로그램에 의해 회로 합성 툴(SYNOPSYS)을 이용하여 이루어진다.
제9도는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 팩 카운터(13)의 상세 회로도이다.
제9도에 도시되어 있듯이, 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 팩 카운터(13)는, 팩 카운터(13)를 초기화하는 외부의 system_reset과, 타이밍 발생 회로부(11)에서 출력되며 팩 카운터(13)의 클릭으로 사용되는 sync_pack과, 타이밍 발생 회로부(11)에서 출력되며 패킷 카운터(14)의 클릭으로 사용되는 sync_packet을 입력 신호로 하고, 제1 덧셈기(15)에 입력되는 pack_add6:0를 출력 신호로 하며 다음과 같은 프로그램에 의해 회로 합성 툴(SYNOPSYS)을 이용하여 이루어진다.
제10도의 (a)와 (b)는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 패킷 카운터(14)의 상세 회로도이다.
제10도의 (a)와 (b)에 도시되어 있듯이, 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 패킷 카운터(14)는, 패킷 카운터(14)를 초기화하는 외부의 system_reset과 타이밍 발생 회로부(11)에서 출력되며 패킷 카운터(14)의 클럭으로 사용되는 sync_packet을 입력 신호로 하고, 제1 덧셈기(15)에 입력되는 packet_add12:0를 출력 신호로 하며 다음과 같은 프로그램에 의해 회로 합성 툴(SYNOPSYS)을 이용하여 이루어진다.
상기한 구성에 의한, 이 발명의 실시예에 따른 작용은 다음과 같다.
먼저 서브코드 데이터에 대해서 설명한다.
제4도는 서브코드 데이터 포맷을 나타낸 도면이다.
제4도에 도시되어 있듯이, 서브코드 데이터는 가장 작은 단위인 팩 단위로 24개의 심볼(Symbol)에 의해 구성되어 있다. 여기에서 심볼은 1 바이트(Byte)를 의미하며 각각의 의미를 살펴보면 각 비트(Bit)를 채널(Channel)이라 정의하고 상위 비트부터 P, Q, R, S, T, U, V, W 채널이라고 부른다. 여기에서 P 채널은 사용되고 있지 않으며, R-W 채널은 CD-G, CD-EG에서 사용할 수 있도록 영상 정보를 가지고 있다.
그리고 다음 단위로는 4개의 팩을 묶어서 1패킷(Packet)이라고 부른다. 이것은 제4도와 같이 4개의 팩 이외에 동기신호로 2 심볼 S0, S1을 포함하고 있어서 총 98 바이트를 포함하고 있다.
다음으로 인터리브와 디-인터리브 방식을 설명한다.
제2도는 현재 시.디. 시스템에서 표준으로 사용하는 인터리브 방식을 나타낸 도표이고,
제3도는 이 발명의 실시예에 따른, 현재 시.디. 시스템에서 표준으로 사용하는 디-인터리브 방식을 나타낸 도표이고,
제5도는 제2도의 인터리브 방식을 이해하기 쉽게 나타낸 도면이고,
제6도는 제3도의 디-인터리브 방식을 이해하기 쉽게 나타낸 도면이고,
제11도는 이 발명의 실시예에 따른 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로에서 사용되는 기본적인 제어신호의 타이밍 다이어그램이고,
제12도는 심볼이 인터리브되는 예를 나타낸 도면이고,
제13도는 팩의 구성을 나타낸 도면이고,
제14도는 이 발명의 실시예에서 스타트 어드레스를 기준으로 N개의 팩을 저장할 수 딨다고 가정한 메모리를 나타낸 도면이고,
제15도는 이 발명의 실시예에서 인터리브된 심볼들이 디-인터리브되어 원래의 어드레스를 찾아가는 과정을 나타낸 도면이고,
제16도는 이 발명의 실시예에서 사용한 메모리가 순환되면서 사용됨을 나타낸 도면이다.
제2도, 제3도, 제5도, 제6도에 도시되어 있듯이, 이 방식은 1개의 팩, 즉 24개의 심볼을 뒤섞어 놓은 상태로 각각의 심볼은 다시 최대 7개의 팩 지연(delay)을 가지고 있다.
제5도와 제6도에서 X축은 팩 지연을 의미하고 Y축은 심볼을 의미한다.
인터리브되는 예를 들어 설명하면, 2번째 심볼(제5도에서 세로의1)이 인터리브될 위치는 1개의 팩 지연과 18번째 심볼, 즉 24(1개 팩의 크기) + 18 = 42 만큼 증가된 어드레스에 기록된다. 0번째 위치를 기준으로 하면 42번째 위치로 들어가게 되는 것이다. 또한 3번째 심볼은 5*24(5팩) + 5 = 125번째 위치로 가서 기록된다.(제12도 참조)
이와 같이 임의의 1개의 팩은 제13도에 도시되어 있듯이 자기 자신(현재의 팩)을 포함해서 뒤로 8개의 팩에, 각각의 팩마다 3개의 심볼(데이타)씩 분산되어서 기록(인터리브)된다.(제2도와 제5도 참조)
따라서 원래의 데이터(심볼)로 복구하기 위해서는, 위에서와 같이 8 팩에 걸쳐서 인터리브 되어있는 데이터들을 원래의 위치 순서대로 디-인터리브하기 위해서 어드레스를 발생시켜야 한다. 즉, 임의의 i번째 패킷, j번째 팩이 등어올 경우에 그 팩내의 심볼들은 제3도와 제6도에 표시된 방법에 따라 원래의 위치로 갈 수 있도록 어드레스를 제공해야 한다.
그리고 최초 또는 임의의 위치에서 디-인터리브를 시작하였을 경우에 8 팩에 걸쳐서 데이터가 퍼져있으므로 실제 최초로 복구된 팩은 8 팩의 데이터를 모두 디-인터리브하였을 때 비로써 1개의 정상적인 팩이 형성되고 9번째 팩부터는 8개의 팩 거리를 두고 연속적인 디-인터리브 수행이 가능하다.
디-인터리브되는 예를 들어 설명하면, 3번째(제5도의 세로의2) 심볼과 4번째(제5도의 세로의3) 심볼을 인터리브 하고 다시 디-인터리브하였을 경우에 2개의 심볼이 최종 결과에서도 순서대로 3번째와 4번째에 복구되면 된다.
먼저 제2도와 제5도의 3번째 심볼을 인터리브 할 때는 5개의 팩 지연 후에 6번째(번호로는 5) 위치로 간다. 이것을 그대로 제6도에서 쫓아가면 6번째(번호로는 5) 입력으로 들어온 심볼은 2개의 팩 지연 후에 3번째 심볼(제6도에서 세로의 2)로 간다.
같은 방법으로 4번째 심볼은 인터리브 할 때 7개의 팩 지연 후에 24번째 위치로 들어가고 이것을 입력으로 받아 디-인터리브 할 때는 팩 지연없이 그대로 4번째 위치로 들어간다.
따라서, 3번째 심볼과 4번째 심볼은 인터리브와 디-인터리브되면서 팩 지연은 모두 7개로 같고 위치도 다시 3번째와 4번째로 돌아온다.
여기에서 제2도와 제3도 그리고 제5도와 제6도는 서로 대칭 구조를 갖는 것을 알 수 있다.
위에서 살펴본 것과 같이 인터리브된 심볼을 연속적으로 받아들이면서 메모리에 저장할 때, 인터리브되기 전의 원래의 심볼 위치(순서)를 찾기 위한 어드레스 발생 회로가 제1도의 구성이다.
제1도는 임의의 N개의 패킷을 저장할 수 있는 메모리(Memory)를 가정하였을 때 디-인터리브 어드레스를 발생시킬수 있는 어드레스 발생 회로이다.
한편, 다음의 프로그램은 N 패킷을 저장할 수 있는 메모리에 임의의 i번째 패킷의 j번째 팩을 디-인터리브할 경우에 각 심볼의 원래 위치를 찾아내기 위한 것으로 제1도를 수식으로 표현한 것이다.
여기에서 제5도에 보인 바와 같이 현재의 팩에서 0,8,16번째 심볼은 인터리브를 하더라도 원래의 데이터 위치 그대로 기록되므로 이것을 이용하여 심볼 카운터 출력이 단지 0, 8, 16 심볼인가를 검출하여 그대로 어드레스를 발생시키면 되고 다른 팩 위치에 기록된 데이터는 그 이전의 7 팩으로부터 상대적인 위치를 찾아 기록하게 된다. 제6도는 임의의 패킷 i, 팩 j를 디-인터리브하였을 경우에 대해서 상대적인 위치를 보인 것이다.
임의의 패킷 i, 팩 j, 심볼 k를 연속적인 어드레스 상의 위치에 복구하기 위해서는
현재 메모리는 제14도에서 처럼 Start_Address를 시작으로 N개의 팩을 저장할 수 있는 영역이 존재하고 이 영역을 순환하면서 사용한다고 가정한다.
단, 0 I N-1 ;
0 j 3 ; (팩) -- 3번쩨 팩이란 0부터 시작하므로 j=2이다
0 k 23 ;
0 Mapped_Symbol_Loctor(k) 191 ;
여기에서 N은 메모리상의 패킷 개수로써 총 96*N byte가 필요하다. 그리고 S_A는 Start_Address로 N 패킷의 처음 어드레스를 의미한다.
이제 제1도의 각 부분의 기능 및 동작을 제11도의 타이밍 다이어그램과 상기한 프로그램 내의 수식을 참조하여 설명하면, 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로의 타이밍 발생 회로부(11)에서는 기본적으로 동기신호 scor 및 wfck 신호등을 이용하여 전체 회로를 제어하기 위한 신호들을 발생시키게 된다. 이들 신호들은 동기신호 scor에 의해서 발생된 sync_packet 신호와 wfck를 카운트(count)하여 24심볼마다 발생되는 sync_pack 신호, 그리고 각각의 심볼마다 발생하는 symbol 신호등이며, 각 패킷의 동기 신호로 scor 신호가 입력되면, 동시에 각 패킷에는 98개의 wfck 신호가 입력으로 들어오는데 각 wfck 마다 다시 P, Q, R, S, T, U, V, W의 8비트 신호가 시리얼(Serial)로 들어오게 되고 P-W 데이터 1바이트를 심볼이라 부른다.
타이밍 발생 회로부(11)는 먼저 scor신호에 의해서 각각의 패킷을 구분하는 sync_packet 신호를 발생시키게 된다. 이 신호는 매 scor 마다 발생하여 제1도의 패킷 카운터(14)를 구동하게 되는데 이는 패킷에 해당하는 96 심볼 개수만큼 증가시키게 된다. 그리고 이것은 바로 밑의 팩 카운터(13) 및 심볼 카운터(12)의 리셋 신호로 사용되기도 한다.
그리고 매 wfck를 카운트하고 있다가 24개의 심볼마다 클럭 신호를 발생시키는데 이것은 24개의 심볼에 해당하는 sync_pack 신호로 팩 카운터(13)의 입력이 되어서 매 클럭마다 24 크기만큼 증가하게 된다. 역시 이 신호는 바로 밑의 심볼 카운터(12)의 초기화 신호인 리셋 신호로 사용된다.
그리고 매 심볼 마다 이를 메모리에 저장함과 동시에 심볼 카운터(12)의 입력 신호인 symbol 신호는 매 패킷 단위마다 98번 뜨게되며 그 밑에 심볼 카운터(12)의 출력을 나타내었다(제11도 참조). 이것은 매 sync_pack 신호에 의해서 초기화된다.
카운터의 기능을 정리하면, 패킷 카운터(14)는 system_reset이 0이 될 때 출력이 모두 0으로 되고, 그 이후에 sync_packet이 펄스 형태로 들어올 때마다 출력 값이 그 이전의 출력 값에 96의 크기를 더한 값으로 출력된다.(0-96-192-288-...)
팩 카운터(13)는 sync_pack이 펄스 형태로 들어올 때 마다 그 출력 값이 그 이전 출력 값에 24의 크기를 더한 값으로 출력된다.(0-24-48-72-...)
심볼 카운터(12)의 출력은 맵드 심볼 로케이터(16)의 입력으로 들어가는데 이것은 앞에서 설명한 바와 같이 인터리브할 때 1개의 팩이 8개의 팩, 즉, 192개의 위치로 일정한 규칙을 가지고 흩어져 있으므로 이것의 상대적이 위치를 가리키는 포인터(pointer)가 된다. 따라서 맵드 심볼 로케이터(16)는 8팩에 걸쳐 퍼져있는 데이터를 정해진 규칙에 의해 디-인터리브하기 위해서 그 퍼져있는 위치를 찾아내는 값을 출력한다. 이에 대한 맵핑(Mapping) 관계는 제6도에 나타내었다.
제1 덧셈기(15)는 팩 카운터(13)와 패킷 카운터(14)의 출력을 합하여 제2 덧셈기(17)로 출력한다.
제2 덧셈기(17)는 제1 덧셈기(15)의 출력과 맵드 심볼 로케이터(16)의 출력을 합하여 출력한다.
한편 심볼 디텍터(18)는 단순하게 심볼 카운터(12)의 출력중에서 0, 8, 16번째 위치의 심볼만을 검출하기 위해서 사용되는 것으로 이것은 제5도에 보는 바와 같이 특정 위치의 데이터는 인터리브하여도 항상 같은 팩 내의 같은 위치에 기록되므로 이것을 검출하여 보다 쉽게 위치를 추적하기 위한 것이다. 따라서 0, 8, 16번 위치의 경우는 단지 packet*i + pack*j + k의 어드레스가 실제 디-인터리브한 어드레스와 같다.
그리고 비교기(21)에서는 Mapped된 어드레스 (packet*i + pack*j + Mapped_symbol_locator(k))값을 다시 191보다 큰가 작은가를 검출하게 되는데 그 이유는 연속적으로 인터리브된 데이터가 입력으로부터 들어올 것이므로 이 데이터에 따라서 실시간으로 데이터를 디-인터리브하여 메모리상에 순서적으로 기록하기 위해서 먼저 들어온 데이터들이 어드레스의 앞부분부터 팩이 완성되도록 하기 위해서이다.
이때 191보다 크다는 것이 판명되었을 경우에는 단순히 상수 192를 감쇄시키는 컨스탄트 뺄셈기(19)로써 간단히 처리될 수 있으며, 컨스탄트 덧셈기(20)에서 (N-2)*96 값을 더하는 경우는 191보다 작은 경우로써 이 경우에는, 메모리가 start_Address를 기준으로 N개의 패킷을 최대로 저장할 수 있고, 이것을 넘을 경우 다시 앞부분부터 순환 방식으로 저장하여야 하므로, 현재 0번째 패킷, 1번째 팩 데이터를 입력으로할 경우 단지 현재 팩에는 0, 8, 16개의 심볼만 유효하고 나머지 심볼들은 그 이전 7개의 팩에 들어가야될 데이터인데 이것은 어드레스 상에서 더 앞에 있어야 되고, 이 발명에서는 단지 N개의 패킷을 가정하였으므로(실제 메모리에서도 같다.) 그 아래 어드레스는 다시 맨 위의 어드레스에 해당하므로 이를 마추어 주기 위한 것이다.
그리고 먹스(22)는, 심볼 디텍터(18)와 상수 191과의 크기 비교에 의해 비교기(21)에서 나온 제어 신호를 c, a, b의 단자로 입력받고 이들 신호에 따라서, 제2 덧셈기(17)의 출력을 받아 컨스탄트 뺄셈기(19)에서 상수 192를 뺀 출력(a)과 제2 덧셈기(17)의 출력을 받아 컨스탄트 덧셈기(20)에서 (N-2)*96의 값을 더한 출력(b)과, 제2 덧셈기에서 직접된 출력(c)등의 3가지 입력 신호 중에 어느 하나를 선택하여 출력을 해주게 된다. 그리고 최종적으로 제3 덧셈기(23)에서 메모리의 start_Address를 더해주며 실제 메모리 상의 임의 위치를 심볼 위치를 찾아내어서 저장을 할 수 있게 된다.
이상의 설명을 종합할 수 있는 또 다른 예로, 현재 0번째 패킷, 9번째 팩 위치의 메모리에 있는 데이터를 디-인터리브 한다고 가저할 때 어드레스 복구 과정을 살펴본다(앞의 프로그램 참조),
이와 같이 현재의 팩을 중심으로 하여, 뒤로 7팩에 퍼트린다. 이것이 디-인터리브 방식에 따라 데이터를 복구하는 과정이다(제15도 참조).
여기에서 -192를 하는 이유는 현재 들어오는 데이터 중에서 임의의 1개의 팩을 완성하기 위해서는 적어도 그 뒤로 8개의 팩이 모여야만 완성되기 때문이다.
따라서 0, 8, 16번째 심볼이 들어가는 팩을 기준으로 그 뒤 7개 팩에 걸쳐서 데이터가 디-인터리브 되도록 한다.
또, (N-2)*96 연산이 필요한 이유는, 메모리는 순환되면서 계속 사용되어야 하므로 1부터 8까지의 팩(191보다 작은 경우 또는 같은 경우:24*8=192개;1-191)을 뒤로 퍼트리면 Start_Address 밑으로 내려간다.
그러나 실제로는 N번째 패킷의 끝과 연결되었다고 생각하면 -192 연산을 하는 대신 N번째 패킷에서 빼주면 되므로 다음과 같이 연산이 행해져야 된다.
(N-2)*96 = N*96 - 192
여기에서 N*96은 사용가능한 메모리의 마지막 위치이다(제16도 참조).
한편, 이 발명의 실시예에서 사용한 회로 합성 틀은 자동으로 회로를 만들어 주는 틀로써, 입력으로는 VHDL 코드를 사용한다.
VHDL 코드란 HDL(Hardware Description Language)의 일종으로 회로의 동작을 프로그램 방식으로 기술한 것인데 간단히 C 또는 포트란의 개념으로 생각하면 된다.
예를 들면, 입력으로 어떤 회로를 위한 코드, 즉 프로그램이 들어가면, 이 프로그램을 툴이 분석하고, 툴이 가지고 있는 라이브러리(Library;앤드 게이트, 난드 게이트 등의 기본 셀이 저장되어 있다.)에서 가장 적당한 최적의 게이트들을 찾아서 입력 조건에 만족하는 회로를 자동으로 만들어 낸다.
이상에서와 같이 이 발명의 실시예에서, ECC의 효율을 높이고 전체적인 디스크(CD)에 발생된 에러를 감쇄시킬수 있도록, 인터리브된 상태의 데이터를 다시 원래 상태의 데이터 위치로 찾아내기 위한 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로를 제공할 수 있다.
이 발명의 이러한 효과는 CD-G, CD-EG, CD-ROM 등에 이용될 수 있다.
Claims (6)
- 서브코드 데이터를 디-인터리브하기 위해 필요한 기본적인 제어 신호들을 출력하는 타이밍 발생 회로부와, 상기한 타이밍 발생 회로부에서 출력한 신호들과 외부의 신호를 입력받아, 심볼을 카운트하는 심볼 카운터와, 상기한 타이밍 발생 회로부에서 출력한 신호들과 외부의 신호를 입력받아, 팩을 카운트하는 팩 카운터와, 상기한 타이밍 발생 회로부에서 출력한 신호들과 외부의 신호를 입력받아, 패킷을 카운트하는 패킷 카운터와, 상기한 팩 카운터와 상기한 패킷 카운터의 출력을 입력받아 합하는 제1 덧셈기와, 상기한 심볼 카운터의 출력을 입력받아, 디-인터리브하기 위해서, 인터리브되어 퍼져있는 심볼들의 위치를 추적하는 맵드 심볼 로케이터와, 상기한 제1 덧셈기의 출력과 상기한 맵드 심볼 로케이터의 출력을 입력받아 합하는 제2 덧셈기와, 상기한 심볼 카우터의 출력을 입력받아, 특정 위치의 심볼을 찾아내는 심볼 디텍터와, 상기한 제2 덧셈기의 출력을 입력받아, 특정한 상수값을 빼는 컨스탄트 뺄셈기와, 상기한 제2 덧셈기의 출력을 입력받아, 특정한 상수값을 더하는 컨스탄트 덧셈기와, 상기한 제2 덧셈기의 출력을 입려갇아, 특정 상수값과 비교하는 비교기와, 상기한 제2 덧셈기의 출력과 상기한 컨스탄트 뺄셈기의 출력과 상기한 컨스탄트 덧셈기의 출력을 입력받고, 상기한 비교기의 출력과 상기한 심볼 디텍터의 출력에 따라 상기한 3 입력중에서 하나를 선택하여 출력하는 먹스와, 외부의 스타트 어드레스와 상기한 먹스의 출력을 입력받아, 실제 어드래스를 출력하는 제3 덧셈기로 이루어지는 것을 특징으로 하는 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로.
- 제1항에 있어서, 상기한 타이밍 발생 회로부(11)는, 서브코드 데이터의 블록 동기 신호인 scor과, 서브코드 데이터의 동기 신호인 wfck와, 이 타이밍 발생 회로(11)의 동작여부를 결정하는 subcen과, 이 타이밍 발생 회로부(11)에 기본적인 최소 단위의 클럭을 제공하는 add_valid를 입력 신호에 포함하고, 심볼 카운터(12)의 클럭으로 입력되는 symbol과, 팩 카운터(13)의 클럭으로 입력되는 sync_pack과, 패킷 카운터(14)의 클럭으로 입력되는 sync_packet을 출력 신호에 포함하며 다음과 같은 프로그램에 의해 회로 합성 툴(SYNOPSYS)을 이용하여 이루어지는 것을 특징으로 하는 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로.
- 제1항에 있어서, 상기한 팩 카운터(13)는, 팩 카운터(13)를 초기화하는 외부의 system_reset과, 타이밍 발생 회로부(11)에서 출력되며 팩 카운터(13)의 클럭으로 사용되는 sync_pack과,타이밍 발생 회로부(11)에서 출력되며 패킷 카운터(14)의 클럭으로 사용되는 sync_packet을 입력 신호로 하고, 제1 덧셈기(15)에 입력되는 pack_add6:0를 출력 신호로 하며 다음과 같은 프로그램에 의해 회로 합성툴을 이용하여 이루어지는 것을 특징으로 하는 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로.
- 제 1항에 있어서, 상기한 맵드 심볼 로케이터(16)는, 심볼 카운터(12)에서 출력되는 pack_symbol_counter4:0를 입력 신호로 하고 제2 덧셈기(17)로 입력되는 mapped_pack_symbol_counter7:0를 출력 신호로 하며 다음과 같은 프로그램에 의해 회로 합성 툴을 이용하여 이루어지는 것을 특징으로 하는 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로.
- 제1항에 있어서, 상기한 패킷 카운터(14)는, 패킷 카운터(14)를 초기화하는 외부의 syster_reset과 타이밍 발생 외로부(11)에서 출력되며 패킷 카운터(14)의 클럭으로 사용되는 sync_packet을 입력 신호로 하고, 제1 덧셈기(15)에 입력되는 packet_add12:0를 출력 신호로 하며 다음과 같은 프로그램에 의해 회로 합성 툴을 이용하여 이루어지는 것을 특징으로 하는 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로.
- 제1항에 있어서, 상기한 심볼 디택터(18)는, 심볼 카운터(12)의 출력중에서 0, 8, 16번째 위치의 심볼만을 검출하기 위해서 사용되는 것을 특징으로 하는 서브코드 데이터 처리를 위한 디-인터리브 어드레스 발생 회로.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950008991A KR0143126B1 (ko) | 1995-04-17 | 1995-04-17 | 서브코드 데이타 처리를 위한 디-인터리브 어드레스 발생회로 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950008991A KR0143126B1 (ko) | 1995-04-17 | 1995-04-17 | 서브코드 데이타 처리를 위한 디-인터리브 어드레스 발생회로 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960038615A KR960038615A (ko) | 1996-11-21 |
KR0143126B1 true KR0143126B1 (ko) | 1998-08-17 |
Family
ID=19412339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950008991A KR0143126B1 (ko) | 1995-04-17 | 1995-04-17 | 서브코드 데이타 처리를 위한 디-인터리브 어드레스 발생회로 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR0143126B1 (ko) |
-
1995
- 1995-04-17 KR KR1019950008991A patent/KR0143126B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR960038615A (ko) | 1996-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5592404A (en) | Versatile error correction system | |
US4730321A (en) | Disk drive with improved error correction code | |
US4577319A (en) | Error flag processor | |
EP0278383A2 (en) | Error correction method using reed-solomon code | |
US4802169A (en) | Method of and device for storing and reading digital information at option protected or not by an error correcting code | |
EP0766246A1 (en) | Method for recording (sending)/reproducing (receiving) data, apparatus thereof, and data recording medium | |
US5910935A (en) | Vibration-resistant playback device having improved synchronization | |
US4748628A (en) | Method and apparatus for correcting errors in digital audio signals | |
JPS5945556A (ja) | デイジタル・デ−タの誤りを補正する装置 | |
US4451919A (en) | Digital signal processor for use in recording and/or reproducing equipment | |
KR850001444B1 (ko) | 디지탈 신호 처리장치 | |
EP1233523A1 (en) | Method and apparatus for decoding error correction code | |
KR960016509B1 (ko) | 데이타 오류 검출 방법 및 검출 회로 | |
KR0143126B1 (ko) | 서브코드 데이타 처리를 위한 디-인터리브 어드레스 발생회로 | |
EP0144431B1 (en) | Error-correcting apparatus | |
EP1388944A1 (en) | Cross interleave reed-solomon code correction | |
US4451921A (en) | PCM Signal processing circuit | |
EP0180470B1 (en) | Control system for deinterleaving memories in digital audio reproducing apparatus | |
JP3313056B2 (ja) | Cd−romドライブのデコーディング装置における誤り訂正のためのメモリ読出し方法及び回路 | |
JP3242148B2 (ja) | エラー訂正方法 | |
JPH0142069B2 (ko) | ||
EP0123322B1 (en) | Address indication circuit capable of relatively shifting channel addresses relative to memory addresses | |
EP1388946A1 (en) | Cross interleave reed-solomon code correction | |
JP2612029B2 (ja) | 誤り訂正制御方式 | |
JP2000032042A (ja) | データ多重化装置、データ多重化方法、及びデータ多重化方法を記録したコンピュータ読み取り可能な記録媒体 |
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: 20030307 Year of fee payment: 6 |
|
LAPS | Lapse due to unpaid annual fee |