KR0120823B1 - 데이터처리장치 - Google Patents
데이터처리장치Info
- Publication number
- KR0120823B1 KR0120823B1 KR1019880006685A KR880006685A KR0120823B1 KR 0120823 B1 KR0120823 B1 KR 0120823B1 KR 1019880006685 A KR1019880006685 A KR 1019880006685A KR 880006685 A KR880006685 A KR 880006685A KR 0120823 B1 KR0120823 B1 KR 0120823B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- host computer
- error
- register
- correction
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
내용 없음
Description
제1도 내지 제4도는 본 발명이 응용되는 디스크기록재생장치에 사용되는 데이터포맷을 나타낸 개략도.
제5a도, 제5b도는 제3도, 제4도에 나타낸 포맷의 서브데이터로 구성되는 서브코드의 데이터포맷을 나타낸 개략도.
제6도는 제4도에 나타낸 포맷의 에러정정부호의 구성을 나타낸 개략도.
제7도는 본 발명이 응용되는 디스크기록재생장치를 나타낸 개략블록도.
제8도는 호스트콤퓨터와 인터페이스회로의 접속을 나타낸 개념도.
제9도는 리세트레지스터 주변회로의 구체적 구성을 나타낸 회로도.
제10도는 제7도에 나타낸 메모리관유닛의 구체적 구성을 나타낸 블록도.
제11도는 제7도에 나타낸 버퍼메모리의 메모리맵을 나타낸 개략도.
제12a도, 제12b도는 제11도에 나타낸 메모리맵상의 기입정정플랙영역의 설명을 위한 개략도.
제13a도, 제13b도는 디스크기록재생장치의 동작을 나타낸 플로차트.
제14도는 용량이 확대된 버퍼메모리를 나타낸 개략도.
제15도는 디스크기록재생장치의 동작의 다른 실시예를 나타낸 플로차트.
제16도는 본 발명의 에러정정의 알고리즘을 코딩데이터의 정정에 응용한 일예를 나타낸 플로차트.
제17도는 본 발명의 에러정정의 알고리즘을 서브코드의 정정에 응용한 일예를 나타낸 플로차트.
본 발명은 데이터처리장치에 관한 것이다.
종래부터, 퍼스날콤퓨터나 워드프로세서 등의 각종 데이터처리장치에서는, 그들의 외부기억매체로서 플로피디스크 등의 디스크기록매체가 사용되고 있다.
종래, 디스크장치에 있어서의 데이터의 기입동작이나 독출동작은, 호스트콤퓨터가 일련의 제어명령을 상기 디스크장치에 공급하여, 데이터처리수단이나 회전구동수단 등의 각종 기능블록을 순번으로 작동시켜서 소정의 처리를 종료한 것을 확인하면 다음의 제어동작으로 진행한다고 하는 방법으로 실행하고 있었다.
그런데, 종래의 플로피디스크장치에서는, 전술과 같이 호스트콤퓨터로부터 공급되는 일련의 제어데이터에 의하여 각종 데이터처리수단이나 회전구동수단 등의 각종 기능블록을 순번으로 작동시켜서 소정의 처리를 종료한 것을 확인하면 다음의 제어동작으로 진행한다고 하는 방법의 데이터의 기입동작이나 독출동작을 실행하고 있었으므로, 호스트콤퓨터가 데이터의 기록이나 재생의 개시로부터 종료까지 디스크장치의 동작제어를 행하지 않으면 안된다. 따라서, 디스크장치는, 그 제어동작에 호스트콤퓨터의 처리능력을 점유하여 버리고, 호스트콤퓨터의 처리효율을 현저하게 저하시켜 버린다고 하는 문제점이 있었다.
또 에러정정부호화되어 기록된 데이터의 에러를 정정하는 경우, 예를 들면 종래부터 고려되고 있는 3중 소실(消失)정정루틴에 있어서의 에러정정부호(패리티)의 플랙의 사용방법에서는, 랜덤에러에는 강하지만, 버스트에러시에 2중 에러정정루틴을 실행할 확률이 높고, 예를 들면 3심벌에러를 2심벌에러로서 잘못 판단하여 버린 것과 같은 경우에도, 정정이 행해지지 않고 정정불능으로 되어 버리는 확률이 높았다.
본 발명의 목적은 전술한 종래의 문제점을 해결한 데이터처리장치를 제공하는 것에 있다.
본 발명의 주목적은 간단한 프로그램으로 외부 제어할 수 있도록하여, 호스트콤퓨터에의 제어의존율을 낮추고, 상기 호스트콤퓨터의 처리효율을 저하시키지 않고, 데이터의 기록/재생을 효율좋게 행할 수 있도록 한 신규의 구성의 데이터처리장치를 제공하는 것이다.
또, 본 발명의 다른 목적은 버스트에러에 대한 정정능력을 향상시킬 수 있도록 한 데이터처리장치를 제공하는 것이다.
본 발명에 의하여, 외부데이터기억매체를 가지는 타입의 데이터처리장치에 있어서, 마이크로프로그램루틴으로서 실행될 일련의 소정의 명령을 나타내고, 호스트콤퓨터와 기억매체 사이에 데이터전송을 개시시키는 매크로코맨드명령을 발생하는 호스트콤퓨터와, 상기 호스트콤퓨터로부터의 매크로코맨드명령에 따라서, 상기 매크로코맨드명령에 의하여 결정된 각 세트의 마이크로프로그램 명령스텝을 발생하는 마이크로프로그램제어수단과, 상기 호스트콤퓨터로부터의 데이터를 기억하여 상기 기억매체상에 기록하고, 상기 기억매체로부터 재생된 데이터를 기억하여 상기 호스트콤퓨터에 공급하는 메모리수단과, 상기 메모리수단으로부터 공급된 데이터를 상기 기억매체상에 기록하고, 상기 기억매체상에 기억된 데이터를 재생하여 상기 메모리수단에 공급하는 기록재생수단과, 각 세트의 마이크로프로그램 명령스텝에 따라서, 상기 데이터를 상기 메모리수단에 및 이로부터의 공급을 제어하고, 상기 메모리수단내의 개시어드레스 및 전송될 데이터의 원하는 번호를 나타내는 제더데이터를 기억하는 제어데이터기억수단을 포함하는 메모리제어수단과로 이루어지고, 상기 메모리수단에 및 이로부터 전송될 데이터는, 상기 개시어드레스로부터 시작하여, 전송될 상기 데이터의 번호에 대응하는 번호를 가지는 상기 메모리수단내의 어드레스에 각각 기억되고, 이로부터 검색되는 것을 특징으로 하는 데이터처리장치를 제공한다.
다음에, 본 발명의 실시예에 대하여 도면에 따라서 상세히 설명한다.
본 발명에 의한 데이터처리장치 및 에러정정방법이 적용되는 디스크기록재생장치의 설명에 앞서, 사용되는 데이터포맷을 제1도~제6도에 따라서 설명한다. 단, 본 발명에 직접 관여하지 않는 포맷에 대하여는, 그 설명을 생략한다.
먼저, 플로피디스크의 데이터포맷에 대하여 설명한다.
[트랙포맷]
제1도에 트랙포맷을 나타낸다. 1트랙은, 인덱스와, 섹터 #0~섹터 #3의 4개의 섹터로 이루어진다. 1트랙은, 스타트위치로부터, 순차, 갭 0(전치(前置)인덱스갭), 인덱스, 갭 1(포스트인덱스갭), 섹터 #0, 갭 2(섹터갭), 섹터 #1, 갭 2(섹터갭), 섹터 #2, 갭 2(섹터갭), 섹터 #3, 갭 3(최종갭)으로 이루어진다. 인덱스는, 연속 Tmax 신호이다. 그리고, 1프레임(F)은 44바이트(B)로 이루어지고, 1바이트는 10채널비트로 이루어진다.
PG는 플로피디스트를 회전구동하는 스핀들모터의 회전에 따라서 발생하는 회전위상검출신호이고, 인덱스와 관련지어진다.
[섹터포맷]
제2도에 섹터포맷을 나타낸다. 1섹터는, 순차, 프리앰블데이터 2BH, 동기(同期)프레임, 서브프레임, 코팅데이터(데이터프레임 0~n~127) 및 포스트앰블데이터 2BH로 이루어지고, 5765B의 길이를 가진다.
[서브프레임포맷]
제3도에 서브프레임포맷을 나타낸다. 1서브프레임은, 순차, 동기데이터, 서브데이터, 프레임어드레스, 서브데이터와 어드레스에 대한 패리티, 모드데이터, 트랙번호, 섹터번호(#0,#1,#2,#3), 헤드번호, 코피보호, 예비에리어 및 프레임어드레스와 모드데이터 이후의 데이터에 대한 패리티(4심벌)로 이루어지고, 44B의 길이를 가진다.
[데이터프레임포맷]
제4도에 데이터프레임포맷을 나타낸다. 1데이터프레임은, 순차, 동기데이터, 서브데이터, 프레임어드레스, 서브데이터와 어드레스에 대한 패리티, 코딩데이터(32심벌), 후술하는 C1패리티(4심벌) 및 C2패리티(4심벌)로 이루어지고, 44B의 길이를 가진다.
[서브코드포맷]
서브코드는 제4도에 나타낸 데이터프레임의 1바이트의 서브데이터를 1섹터의 128데이터프레임으로부터 128바이트 진행시키는 것이고, 제5a도에 나타낸 바와 같이 서브코드어셈블리로서 구성되고, 서브코드 #0, #1, #2, #3으로 이루어진다. 1서브코드는, 제5b도에 나타낸 바와 같이 순차, 모드데이터, 트랙번호, 섹터번호, 헤드번호, 코피보호코드, 예비에리어, 이상의 데이터에 대한 패리티(4심벌)로 이루어지고, 32B의 길이를 가진다.
[데이터프레임의 에러정정부호포맷]
다음에, 전술한 데이터프레임의 C2패리티 및 C1패리티의 형성에 대하여 설명한다. 제6도에는, 1섹터를 구성하는 데이터중 C2패리티 및 C1패리티의 형성에 관여하는 데이터프레임과, C1패리티의 형성에 관여하는 서브프레임을 나타내고 있다. C2패리티는, 매트릭스형으로 배치된 복수의 심벌중 도면중 좌상으로부터 우하방향으로 뻗도록 인터리브된 C2계열의 복수 심벌 즉 코딩데이터로 형성된다. 또, C1패리티는, 도면중 상으로부터 하방향으로 수직으로 뻗는 C1계열의 복수 심벌 즉 프레임어드레스, 코딩데이터 및 C2패리티로 형성된다. 그리고, C1패리티 및 C2패리티에는 예를 들면 리드솔로몬부호가 사용된다.
[디스크기록재생장치]
다음에, 상기의 데이터포맷을 가지는 데이터의 디스크에의 기록재생장치에 대하여 제7도에 따라서 설명한다.
기록하고자 하는 데이터는, 호스트콤퓨터(1)로부터 디스크제어부(10)내의 인터페이스회로(11) 및 디스크 콘트롤러(12)를 통하여 버퍼메모리(2)에 공급된다. 이 버퍼메모리(2)는, 예를 들면 1섹터분으로서 8K바이트 정도의 기억용량을 가지는 S·RAM이 사용된다. 상기 버퍼메모리(2)에 기입된 데이터는, 엔코더 및 디코더의 기능을 가지는 에러정정프로세서(13)에 의하여 전술한 제6도에 나타낸 바와 같은 코드처리, 즉 C2패리티, C1패리티의 형성 및 부가 등의 처리가 실시된다. 엔코드처리가 실시된 버퍼메모리(2)로부터의 출력은 변조회로(14)에 공급되고, 예를 들면 8/10변환 등의 처리가 실시된 후, 기록/재생회로(3)를 통하여 자기헤드(4)에 공급되어, 플로피디스크(5)에 기록되도록 되어 있다. 플로피디스크(5)는, 기구계 제어용의 마이크로콤퓨터(6)에 의하여 제어되는 스핀들모터(7)에 의하여 예를 들면 3600rpm의 속도로 회전구동된다. 또, 자기헤드(4)의 이동 등에 대하여도 마이크로콤퓨터(6)에 의하여 제어된다. 또, 마이크로콤퓨터(6)는 시리얼통신을 행하기 위하여, 마이크로콤퓨터(6)와 디스크콘트롤러(12)의 사이에는, 시리얼/파랄렐 인터페이스(15)가 배설되어 있다. 그리고, 기록/재생회로(3)는, 소거회로로서의 기능도 가지는 것이다.
플로피디스크(5)로부터 자기헤드(4)에 의하여 독출된 데이터는 기록/재생회로(3)를 통하여 복조회로(16)에 공급된다. 이 데이터는 복조회로(16)에서 10/8변환 등의 처리가 실시된 후, 버퍼메모리(2)에 공급되어 기입된다. 버퍼메모리(2)에 기입된 1섹터분의 데이터는, 에러정정프로세서(13)에 의하여 소정의 디코드처리, 즉 C1패리티 및 C2패리티에 의한 에러정정 등의 처리나 용장(冗長)비트의 제거 등의 처리가 실시된 후, 디스크콘트롤러(12) 및 인터페이스회로(11)를 통하여 호스트콤퓨터(1)에 공급되도록 되어 있다.
디스크콘트롤러(12)는 마이크로프로그램제어부(12a)와 명령실행부(12b)로 구성되고, 마이크로프로그램제어부(12a)는, 인터페이스회로(11)를 통하여 상기 호스트콤퓨터(1)로부터 공급되는 단순명령을 해석하여, 일련의 기입/독출제어를 행하기 위한 마이크로코드를 명령실행부(12b)에 공급한다.
또, 디스크콘트롤러(12)에서 형성된 제어데이터는 버퍼메모리(2)에 대한 어드레스제어를 행하는 메모리관리유닛(17)에 내부버스를 통하여 부여된다.
그리고, 인터페이스회로(11), 디스크콘트롤러(12), 에러정정프로세서(13), 변조회로(14), 복조회로(16), 메모리관리유닛(17) 및 시리얼/파랄렐 인터페이스(15)로 이루어지는 디스크제어부(10)는, 예를 들면 1칩 LSⅠ(대규모 집적회로)화되어 구성할 수 있다.
[인터페이스회로]
이 실시예에 있어서, 상기 인터페이스회로(11)는, 콘트롤디코더(20)와 상기 호스트콤퓨터(1)와의 인터페이스용으로, 제8도에 나타낸 바와 같이 1바이트의 리세트레지스터(21), 1바이트의 스테이터스레지스터(22), 1바이트의 코맨드레지스터(23), 4바이트의 파라미터레지스터(24) 및 1바이트의 데이터레지스터(25)의 5종류의 레지스터를 구비하고 있다.
상기 5종류의 레지스터는, 호스트콤퓨터(1)로부터 공급되는 어드레스 A0, A1, 리드코맨드 RD, 라이트코맨드 WR, 어드레스를 디코더(1a)에서 디코드하여 얻어지는 칩셀렉트 CS, DMA 어크놀리지 DACK의 6비트데이터에 의하여 콘트롤디코더(20)에서 표 1과 같이 선택되도록 되어 있다.
[리세트레지스터]
리세트레지스터(21)에는, 이 플로피디스크장치의 초기설정 및 드라이브의 캘리브레이트를 행하기 위한 리세트코맨드데이터가 부여된다. 상기 리세트코맨드가 상기 리세트레지스터(21)에 부여되면, 이 플로피디스크장치는, 상기 스핀들모터(7)가 즉시 정지하고, 자기헤드(4)가 홈포지션으로 돌아온다.
즉, 상기 인터페이스회로(11)는, 제9도에 요부 구성을 나타낸 바와 같이, 상기 호스트콤퓨터(1)로부터 데이터버스를 통하여 공급되는 8비트의 리세트데이터(D7,D6,D5,D4,D3,D2,D1,D0)가 상기 호스트콤퓨터(1)로부터 기입펄스로 리세트레지스터(21)에 기입되도록 되어 있는 동시에, 상기 기입펄스에 따라서 리세트펄스를 작성하는 리세트펄스작성회로(26)와, 이 리세트펄스작성회로(26)에서 작성한 리세트펄스를 상기 리세트레지스터(21)에 부여된 리세트데이터(D7,D6,D5,D4,D3,D2,D1,D0)에 따라서 선택적으로 출력하기 위한 복수의 게이트(27),(28)를 구비하고 있다. 이 실시예에서는, 상기 8비트의 리세트데이터(D7,D6,D5,D4,D3,D2,D1,D0)중, 최하위 비트 D0를 제7도에 나타낸 상기 마이크로프로그램제어부(12a)의 리세트플랙으로서 사용하고, 또 하위 제2비트를 D1를 동일하게 제7도에 나타낸 메카데크시스템콘트롤러의 마이크로콤퓨터(6)의 리세트플랙으로서 사용하여, 상기 마이크로프로그램제어부(12a)와 상기 메카데크시스템콘트롤러(6)에 개별로 리세트를 걸 수 있도록 되어 있다.
또, 상기 호스트콤퓨터(1)측에는, 상기 플로피디스크장치의 전술과 같은 각종 일련의 제어동작을 상기 마이크로프로그램제어부(12a)가 행하고 있는 동안에 상기 스테이터레지스터(22)나 파라미터레지스터(24)의 내용을 감시하여, 오동작 등을 검출한 경우에, 리세트데이터를 필요에 따라서 상기 인터페이스회로(11)의 리세트레지스터(21)에 공급하여, 상기 마이크로프로그램제어부(12a)나 메카데크시스템콘트롤러(6)에 개별로 리세트를 걸 수 있다. 이 플로피디스크장치는, 상기 리세트동작에 의하여, 오동작에 대한 대책처리를 행하거나, 상기 마이크로프로그램제어부(12a)가 단독으로 처리를 실행하고 있는 동안에 상기 메카데크시스템콘트롤러(6)의 초기화 처리를 행하여, 효율좋게 플로피디스크(5)에 대한 데이터의 기록·재생을 행할 수 있다.
그리고, 전술한 예에서는, 상기 마이크로프로그램제어부(12a)와 메카데크시스템콘트롤러(6)를 개별로 리세트하도록 하였으나, 상기 리세트레지스터(21)의 비트수분만큼 리세트하는 디바이스를 세분화할 수 있다.
따라서, 본 발명에 의하면 디스크 등의 기록매체에 대하여 데이터의 기록·재생을 행하는 기록재생수단을 마이크로프로그램제어수단에 의하여 간단한 프로그램으로 외부 제어할 수 있고, 또한 호스트콤퓨터로부터 레지스터에 공급되는 리세트데이터에 따라서, 상기 기록재생수단이나 마이크로프로그램제어수단으로 개별로 리세트를 걸 수 있으므로, 리세트동작을 효율좋게 신속하게 행할 수 있고, 호스트콤퓨터에의 제어의존율을 낮추고, 상기 호스트콤퓨터의 처리효율을 저하시키지 않고, 데어터의 기록·재생을 좋게 행할 수 있다.
[스테이터스레지스터]
또, 상기 스테이터스레지스터(22)는, 이 플로피디스크장치의 각 상태를 8비트로 나타내는 것이고, 호스트콤퓨터(1)에 그 정보가 보내지도록 되어 있다.
스테이터스레지스터(22)는 제8도에 나타낸 바와 같이 그 최상위 D7비트의 D7(Non-DMA Data Request)플랙이 외부 시스템 즉 호스트콤퓨터(1)와의 사이에서 데이터전송을 행할 경우의 핸드셰이크(hand-shaking)의 목적으로 사용된다. 이 D7(Non-DMA Data Request)플랙은, 데이터의 전송이 가능하게 될 때마다 1로 되고, 데이터의 전송중은 0으로 되고, 1바이트의 데이터전송을 종료하면 다시 1로 되고, 결정된 전송수에 이르기까지 반전을 반복한다. 다음의 D6비트의 D6(No Media)플랙은, 플로피디스크(5)의 장착상태를 나타내는 것이고, 플로피디스크(5)가 장착되어 있지 않을 때, 또는 장착중에 이젝트버튼의 조작에 의하여 플로피디스크(5)가 인발되었을 경우에 1로 된다. 다음의 D5비트의 D5(Mdeia Change)플랙은, 플로피디스크(5)가 교환된 가능성이 있는 것을 나타내는 것이고, 리세트시, 또는 일단 이젝트된 플로피디스크(5)가 장착되어 있지 않을 때, 또는 장착중에 이젝트버튼의 조작에 의하여 플로피디스크(5)가 인발되었을 경우에 1로 된다. 또, 상기 D5(Media Change)플랙은, 다음에 데이터가 플로피디스크(5)로부터 정확하게 기입됨으로써 0으로 복귀한다. 다음의 D4비트의 D4(Write Protect)플랙은, 플로피디스크(5)dpt의 기입의 금지상태를 나타내는 것이고, 기입이 금지되어 있는 플로피디스크(5)를 장착한 경우와 플로피디스크(5)가 장착되어 있지 않을 때 1로 되고, 기입이 가능한 플로피디스크(5)의 장착에 의하여 0으로 된다.
다음의 D3비트 및 D2비트의 D3(ECC Error(MSB))플랙 및 D2(ECC Error(LSB))플랙은, 독출처리에 따라서 상기 에러정정프로세서(13)에서 자동적으로 실행되는 에러검출·정정의 과정에서, 어떠한 에러가 발생했는가를 2비트로 4개의 상태치로서 나타내도록 되어 있다.
즉, 2계열(C1계열, C2계열)의 디코드(정정)시에 있어서, C1패리티에 의한 정정루틴 및 C2패리티에 의한 정정루틴을 양쪽 모두 실행하지 않았을 경우(에러없음의 경우)에는 0으로 되고, C1패리티에 의한 정정루틴만을 실행한 경우에는 1로 되고, C2패리티에 의한 정정루틴도 실행한 경우에는 10으로 되고, 정정불능의 경우에는 11로 되도록 되어 있다.
따라서, 예를 들면 디스턴스 5의 CIRC(cross interleave Reed solomon code)의 경우에 있어서, 에러없음의 경우에는 0으로 되고, 1프레임에 대하여 2심벌에러 이하의 경우에는, C1패리티만으로 정정할 수 있으므로, 1로 된다. 또, 1프레임에 대하여 3심벌에러 이상의 경우에는, C2패리티에 의한 정정루틴을 실행하므로, 10으로 되고, 1프레임에 대하여 3심벌에러 이상이고, C2계열에서 보아 3심벌에러 이상의 것이 있었을 경우, 또는 소실정정을 할 수 없을 경우에는 11로 된다. D3플랙, D2플랙의 값은 1섹터의 처리가 종료된 시점에서 유효하고, 그 섹터의 에러상태를 나타내고 있다.
다음의 D1비트의 D1(Drive Error)플랙은, 드라이브의 오동작을 나타내는 것이고, 드라이브의 기능이 정확하게 행해지지 않았을 경우에, 1로 되고, 다음에 독출/기입/소거가 정상으로 실행될 때까지, 또는 상기 리세트코맨드를 접수할 때까지, 1의 상태를 유지한다. 그리고, 최하위의 D0비트의 D0(Command Busy)플랙은, 상기 리세트코맨드 이외의 코맨드의 실행상태를 나타내는 것이고, 상기 리세트코맨드 이외의 코맨드의 실행 및 처리중에 1로 되고, 처리의 종료에 따라서 0으로 복귀한다.
이상과 같이 스테이터스레지스터(22)의 내용에 따라서 드라이브의 상태나 기록매체로 되는 플로피디스크(5)의 열화의 상황을 호스트콤퓨터(1)측에서 알 수 있다. 또, 플로피디스크(5)의 심벌에러레이트가 10-3정도 보증되어 있으면, C2패리티에 의한 정정루틴을 실행하는 것은, 버스트에러가 존재하는 경우라고 생각되므로, 1의 경우에는 랜덤에러, 또 10'의 경우에는 버스트에러(정정가능)라고 하는 상태로 에러의 종류도 대략 알 수 있다.
[코맨드레지스터]
또, 상기 코맨드레지스터(23)에는, 이 플로피디스크장치를 제어하기 위한 모든 코맨드데이터가 부여되고, 각 기본기능에 대응한 비트를 각각 1로 함으로써 지정된다. 상기 마이크로프로그램제어부(12a)는, 상기 호스트콤퓨터(1)에서 상기 코맨드레지스터(23)에 부여되는 1바이트의 코맨드데이터의 내용을 해석하여, 상기 명령실행부(12b)에 데이터의 소거동작, 기록동작 또는 재생동작 등을 소정의 시퀀스로 자동적으로 실행시킨다.
상기 코맨드레지스터(23)는 제8도에 나타낸 바와 같이 최상위측의 D7비트 및 D6비트에는, 드라이브지정코맨드(Unit Select 1, Unit Select 2)가 부여된다. 상기 2비트의 드라이브지정코맨드(Unit Select 1, Unit Select 2)에 의하여, 최대 4대까지의 드라이브지정을 행할 수 있다. 다음의 D5비트에는, 실행금지코맨드(Execution Inhibit)가 부여된다. 이 D5비트를 0으로 함으로써, 하위의 D4~D0비트로 지정되는 기능을 무효로 한다. 실행을 수반하는 처리를 행하는 경우에는, 상기 D5비트를 1로 한다. 또, D4비트에는, 상기 스핀들모터(7)의 회전을 지령하는(Mon : Motor On)코맨드가 부여된다. 상기 스핀들 모터(7)는, 상기 D4비트를 1'로 함으로써 회전한다. 또, 상기 스핀들모터(7)는, 상기 D4비트를 0으로 함으로써, 미리 정해진 시간 후에 정지한다. 또한, 상기 자기헤드(4)는, 상기 스핀들모터(7)의 회전개시에 따라서 홈포지션으로부터 최외주측으로 이동하고, 상기 스핀들모터(7)의 정지에 따라서 현재 위치로부터 홈포지션으로 돌아온다. 그리고, 상기 D4비트는 통상의 독출/기입/소거의 동작마다 1로 세트할 필요는 없고, 상기 마이크로프로그램제어부(12a)는, 상기 D4비트가 0'이라도, 상기 독출/기입/소거의 처리에 따라서 자동적으로 상기 스핀들모터(7)의 회전을 개시하고, 처리가 종료된 시점으로부터 일정시간 경과 후에 정지하도록 되어 있다. 다음의 D3비트에는, 데이터의 전송(Data Transfer)코맨드가 공급된다. 이 D3비트를 1로 함으로써, 플로피디스크장치와 호스트콤퓨터(1) 사이에서 데이터의 송수신을 행한다. 상기 데이터의 송수신은, 데이터레지스터를 통하여 상기 버퍼메모리(2)에 대하여 시퀀셜 전송에 의하여 행해진다. 이 경우의 전송데이터수는, 4K바이트, 512바이트, 또는 256바이트의 어느 하나가 선택가능하고, 각각의 4K바이트내 어드레스도 지정가능하게 되어 있다. 그리고, 상기 버퍼메모리(2)는, 이 플로피디스크장치의 동작과 관계없이, 상기 호스트콤퓨터(1)의 일시적 뱅크메모리로서 사용할 수도 있고, 4K바이트의 물리적 섹터단위뿐만 아니고, 512바이트, 256바이트의 논리섹터단위로도 액세스할 수 있다. 다음의 D2비트에는, 소거(ER : Erase)코맨드가 부여된다. 이 D2비트를 1로 함으로써, 파라미터레지스터(24)에서 지정한 물리적 섹터단위로 소거가 행해진다. 다음의 D1비트에는, 기입(WR : Write)코맨드가 부여된다. 이 D1비트를 1로 함으로써, 파라미터레지스터(24)에서 지정한 물리적 섹터단위로 기입이 행해진다. 또, 파라미터레지스터(24)에서 인덱스를 지정한 경우에는, 인덱스신호가 기록된다. 여기서, 상기 기입(WR)코맨드에 의하여, 상기 마이크로프로그램제어부(12a)는, 데이터를 상기 프로로피디스크(5)에 기입하기 위한 소정의 시퀀스에 따라서 처리를 행하고, 에러정정처리를 위한 패리티데이터/서브코드데이터/헤더정보를 상기 에러정정프로세서(13)에서 자동적으로 생성하여, 소정의 포맷에 따라서 순차 출력시킨다. 그리고, 상기 기입(WR)코맨드에 의하여, 데이터전송/소거/기입의 일련의 동작을 실행가능하고, 상기 마이크로프로그램제어부(12a)가 소정의 시퀀스에 따라서 자동적으로 처리를 행하도록 되어 있다. 다음의 D0비트에는 독출(RD : Read)코맨드가 부여된다. 이 D0비트를 1로 함으로써, 파라미터레지스터(24)에서 지정한 물리적 섹터단위로 독출이 행해진다. 그리고, 파라미터레지스터(24)에서 인덱스를 지정한 경우는 무효로 되고, 스테이터스레지스터(22)중에서 드라이브에러로 된다. 여기서, 상기 독출(RD)코맨드에 의하여, 상기 프로그램제어부(12a)는, 데이터를 상기 플로피디스크(5)로부터 데이터를 독출하기 위한 소정의 포맷에 따라서 상기 버퍼메모리(2)상에 독립된 데이터에 대하여 에러데이터의 검출/정정처리를 상기 에러정정프로세서(13)에 행하게 한다. 또, 상기 플로피디스크(5)로부터 재생한 데이터의 버퍼메모리(2)에의 데이터전송과, 이 버퍼메모리(2)로부터 호스트콤퓨터(1)에의 데이터전송은, 상기 독출(RD)코맨드에 의하여 실행가능하고, 상기 마이크로프로그램제어부(12a)가 소정의 시퀀스에 따라서 자동적으로 처리를 행하도록 되어 있다. 또, 독출이 정상으로 종료된 경우는, 파라미터레지스터(24)에 재생된 트랙/섹터번호가 기입된다.
[파라미터레지스터]
또한, 파라미터레지스터(24)는, 독출/기입/소거를 물리적 섹터단위로 행할 때의 트랙/섹터번호, 트랙단위의 소거, 인덱스신호의 기입을 지정하기 위한 파라미터데이터가 부여된다. 이 파라미터레지스터(24)는, 예를 들면 4바이트로 구성되어 있고, 1바이트의 독출 또는 기입마다 레지스터포인터(도시하지 않음)가 진행하고, 최종바이트, 이 경우 4바이트째의 독출, 또는 2바이트째의 기입이 종료된 시점에서, 다시 액세스를 계속하면 포인터가 1바이트째로 돌아오도록 되어 있다. 그리고, 포인터는, 이 파라미터레지스터(24) 이외의 레지스터의 액세스가 생긴 시점에서 1바이트째로 복귀하고, 파라미터레지스터(24)의 접수순서가 초기화된다.
상기 파라미터레지스터(24)의 1바이트째는, 독출/기입/소거처리를 수반하는, 물리적 섹터어드레스와, 상기 버퍼메모리(2)와 호스트콤퓨터(1) 사이에서 데이터전송을 행하는, 가상적인 논리섹터어드레스의 지정, 논리섹터사이즈의 선택지정, 인덱스의 기입지정, 트랙소거지정을 행하기 위한 섹터레지스터(24a)로서 사용되고 있다. 이 섹터레지스터(24a)는, 최상위측의 2비트(D7,D6)로 3종류의 논리섹터사이즈를 선택적으로 지정하는 동시에, 인덱스의 기입지정 및 1트랙 전체의 소거를 지정[1,1]한다. 상기 섹터레지스터(24a)의 최상위측의 2비트(D7,D6)를 [1,1]로하여 상기 코맨드레지스터(23)에 기입/소거의 콤비네이션코맨드를 보여함으로써, 상기 마이크로프로그램제어부(12a)는, 트랙 전체를 일단 소거한 후에 인덱스신호의 기입처리를 행한다. 이와 같이하여 인덱스신호를 플로피디스크(5)에 기입함으로써, 이후 상기 플로피디스크(5)에 대하여 물리적 섹터 단위로 액세스가 가능하게 된다. 또, 다음의 2비트(D5,D4)는, 4K바이트의 물리적 섹터어드레스를 지정하는 것이고, 독출처리가 정상으로 행해진 경우에 값이 유효하게 되고, 필요에 따라서 호스트콤퓨터(1)측에서 지정한 트랙어드레스와의 조회를 행할 수 있다. 그리고, 최하우측의 4비트(D2,D2,D1,D0)는, 512바이트 단위의 논리적 섹터어드레스를 지정한다.
또, 상기 파리미터레지스터(24)의 2바이트째는, 트랙번호를 지정하기 위한 트렉레지스터(24b)로서 사용되고 있다. 이 트랙레지스터(24b)는, 독출처리가 정상으로 행해진 경우에 하위 7비트가 트랙번호로서 유효하게 되고, 필요에 따라서 호스트콤퓨터(1)측에서 지정한 트랙어드레스와의 조회를 행할 수 있다. 또한, 상기 파라미터레지스터(24)의 3바이트째와 4바이트째의 레지스터(24c),(24d)에는 2바이트의 코피보호코드(CPC : Copy Protection Code)가 부여된다.
[데이터레지스터]
또한, 상기 데이터레지스터(25)는, 상기 플로피디스크장치와 호스트콤퓨터(1)사이에서 데이터의 전송을 행할 때에 사용되는 것이고, 프로그램전송·DMA전송의 쌍방에 대응하고 있으며, 어느 경우도 이 레지스터(25)를 통하여, 데이터의 전송이 행해진다.
[메모리관리유닛]
또, 버퍼메모리(2)의 어드레스관리 등을 행하는 상기 메모리관리유닛(17)은, 전술과 같이 기록모드나 재생모드에 있어서의 섹터단위의 데이터의 기입이나 독출을 행할 수 있을 뿐만 아니고, 제10도에 나타낸 바와 같은 구성으로 함으로써, 호스트콤퓨터(1)와의 사이의 데이터의 전송동작을 1섹터분의 4096바이트의 데이터 단위나 상기 호스트콤퓨터(1)측의 오퍼레이팅 시스템(OS)으로 정해져 있는 소정 데이터단위의 데이터수 이외의 임의의 수의 데이터를 상기 버퍼메모리(2)의 임의의 어드레스로부터 기입 또는 독출할 수 있도록 되어 있다.
즉, 상기 메모리관리유닛(17)은, 상기 호스트콤퓨터(1)측으로부터 상기 버퍼메모리(2)를 액세스하여 데이터전송을 행하여 데이터의 기입 또는 독출을 행할 경우에, 그 액세스개시어드레스를 나타내는 데이터 즉 전송개시어드레스데이터를 미리 스토어하는 개시어드레스레지스터(30)와, 전송데이터수를 나타내는 데이터를 미리 스토어하는 데이터수레지스터(31)와, 상기 개시어드레스레지스터(30)에 스토어되어 있는 전송개시어드레스데이터가 프리세트되는 메모리어드레스카운터(32)와, 상기 데이터수레지스터(31)에 스토어되어 있는 데이터수 데이터가 프리세트되는 데이터수카운터(33)와, 상기 메모리어드레스카운터(32) 및 상기 데이터수카운터(33)의 프리세트제어 및 카운터제어를 행하는 제어회로(34)를 구비하여 이루어지고, 상기 버퍼메모리(2)의 메모리관리를 다음과 같이 행한다.
상기 메모리관리유닛(17)은, 상기 호스트콤퓨터(1)로부터 상기 버퍼메모리(2)를 액세스하여 데이터전송을 행하는 데이터의 기입 또는 독출을 행하는 경우에, 미리 전송개시어드레스데이터와 전송데이터수를 나타내는 데이터를 상기 호스트콤퓨터(1)에서 부여하고, 상기 전송개시어드레스데이터를 상기 개시어드레스레지스터(30)에 스토어하는 동시에 상기 데이터수데이터를 상기 데이터수레지스터(31)에 스토어하여 두고, 상기 제어회로(34)가 데이터전송의 개시전에 상기 전송개시어드레스데이터와 전송데이터수를 나타내는 데이터를 상기 메모리어드레스카운터(32)와 데이터수카운터(33)에 프리세트하여, 상기 메모리어드레스카운터(32)에 프리세트된 전송개시어드레스데이터로 표시되는 어드레스로부터 상기 버퍼메모리(2)를 액세스하여 데이터전송을 개시한다. 그리고, 상기 제어회로(34)는, 1바이트의 데이터전송을 종료할 때마다, 카운트 펄스를 상기 메모리어드레스카운터(32) 및 데이터수카운터(33)에 공급하여, 상기 메모리어드레스카운터(32)를 인크리멘트시키는 동시에 상기 데이터수카운터(33)를 디크리멘트시켜서, 상기 데이터수카운터(33)의 값이 0으로 될 때까지, 즉, 상기 데이터수레지스터(31)에 미리 부여된 상기 데이터수만큼 데이터전송을 행하고, 데이터전송 동작을 종료한다.
호스트콤퓨터측으로부터 버퍼메모리에 대하여 임의의 어드레스로부터 임의의 데이터수의 기록·재생데이터의 기입·독출을 행할 수 있고, 2의 누승(累乘) 또는 그 정수배이외의 데이터수의 데이터전송을 행할 경우에 상기 버퍼메모리에 대한 불필요한 액세스시간을 없애서 전송효율을 높일 수 있다.
[버퍼메모리맵]
버퍼메모리(2)의 1섹터분은 제11도에 나타낸 바와 같이 8K(8192)바이트의 용량을 가지고 있고, 그중 실제는 6K(6144)바이트가 이용에리어이고, 본 발명에 직접 관여하지 않는 사선에 의하여 표시된 에리어는 설명을 생략한다. 128프레임(1섹터)분의 상기 코딩데이터는, 도면중 좌측 절반의 32×128바이트의 영역에 기입된다. 또, 상기 C2패리티 및 C1패리티는, 상기 코딩데이터가 기입되는 영역에 인접하는 각 4×128바이트의 영역에 각각 기입된다. 데이터의 기입시를 나타내는 기입플랙 및 C1패리티에 의한 에러정정복호의 결과에 따른 C1정정플랙은, 도면중 우단의 1×128바이트의 영역에 기입된다. 상기 기입플랙 및 C1정정플랙은 각 프레임에 대하여 세워지는 것이고, 각 프레임에 대한 기입플랙 및 C1정정플랙은 각각 동일 바이트(8비트)내의 영역에 기입된다. 또, 프레임어드레스는, 이 영역에 인접하는 1×128바이트의 영역에 기입된다. 또, 전술한 동일 내용의 서브코드 SC0~SC3는, 상기 프레임어드레스가 기입되는 영역에 인접하는 1×128바이트의 영역에 기입된다. 또, 이 영역에 인접하는 1×128바이트의 영역중 도면중 상부의 4바이트의 영역은, 서브코드의 패리티에 의한 정정플랙을 세우기 위한 영역으로 되어 있고, 하부의 7바이트의 영역은 상기 에러정정프로세서(13)용의 내부레지스터로서 사용되는 영역으로 되어 있다.
여기서, 상기 기입플랙 및 C1정정플랙에 대하여 상세하게 설명한다. 1프레임에 대한 기입플랙 및 C1정정플랙은 제12a도에 확대하여 나타낸 바와 같이, 상기 버퍼메모리(2)내의 1바이트(8비트)의 영역에 기입된다. 즉, D3~D7의 상위 5비트는 기입플랙용의 영역으로 되어 있고, D0~D2의 하위 3비트는 C1정정플랙용의 영역으로 되어 있다. 그리고, 제12b도에 나타낸 바와 같이 데이터의 버퍼메모리(2)에의 기입시에는, 모든 비트가 1로 된다. 또, C1패리티에 의한 에러정정복호시에는, 상위 5비트의 기입플랙의 영역이 모두 0으로 되는 동시에, 하위 3비트의 C1정정플랙의 영역이 정정복호 결과에 따른 값으로 된다. 즉, 에러가 없는 경우에는 0으로 되고, 1에러정정의 경우에는 1로 되고, 2에러정정의 경우에는 11로 되고, 정정불능의 경우에는 111로 되도록 되어 있다. 환언하면, 1에러정정의 경우에는 F0비트에 플랙이 세워지고, 2에러정정의 경우에는 F0비트 및 F1비트에 플랙이 세워지고, 정정불능의 경우에는 F0, F1, F2의 3비트에 플랙이 세워지도록 되어 있다. 그리고, 상기 C1정정플랙은 후술하는 C2패리티에 의한 에러정정을 위한 플랙이다.
이와 같이, 기입플랙용의 메모리영역과 C1정정플랙용의 메모리영역을 동일 바이트내에 배설함으로써, 플랙영역이 1프레임에 대하여 1바이트로 끝나 있다. 또, C1패리티에 의한 에러정정시에, 상위 5비트의 기입플랙의 영역이 모두 0, 즉 자동적으로 리세트되므로, 다음의 섹터의 재생을 위하여 다시 기입플랙을 리세트하는 것은 불필요하게 되어 있다.
이 플랙의 상태는 필요에 따라서 전술한 스테이터스레지스터(22)로 전송된다.
[디스크기록재생장치의 동작]
다음에 전술한 디스크기록재생장치의 동작을 제13a도 및 제13b도의 플로차트에 따라서 설명한다.
먼저, 호스트콤퓨터(1)로부터 상기 코맨드레지스터(23)에 부여되는 코맨드데이터에 의하여, 상기 코맨드레지스터의 D4(Mon)비트, D2(ER)비트, D1(WR)비트 또는 D0(RD)비트의 어느것에 1이 세트되어 있는가 여부의 판정(스텝 101)을 행하고, 그 판정결과가 Yes이면, 스테이터스레지스터(22)의 내용에 따라서 플로피디스크(5)가 장착되어 있는가 여부의 판정(스텝 102)을 행한다. 이 스텝 102의 판정결과가 Yes 즉 플로피디스크(5)가 장착되어 있는 경우에는, 다음의 스텝 103에서 메카데크시스템콘트롤러의 제어용 마이크로콤퓨터(μCOM)(6)가 처리동작중인가 여부의 판정을 행하고, 상기 제어용 마이크로콤퓨터(μCOM)(6)가 처리동작으로부터 해방되면, 상기 코맨드레지스터(23)의 D2(ER)비트, D1(WR)비트 또는 D0(RD)비트의 어느것에 1이 세트되어 있는가 여부의 판정(스텝 104)을 행한다. 그리고, 상기 스텝 104의 판정결과가 Yes 즉 상기 호스트콤퓨터(1)에 의하여 소거(ER), 기입(WR) 또는 독출(RD)의 어떤 동작지령이 이루어져 있으면, 상기 코맨드레지스터(23)의 D7, D6비트에 의한 드라이브지정이 이미 존재하는가 여부의 판정(스텝 105)을 행하고, 새로운 드라이브지정이 이루어져 있는 경우에는, 디스크면번호(SURF#)와 드라이브번호(DR#)와 모터온신호(Mon)를 메카데크시스템콘트롤러(MD)(6)에 부여하고나서(스텝 106), 다음의 스텝 107에서 상기 메카데크시스템콘트롤러의 제어용 마이크로콤퓨터(μCOM)(6)가 처리동작중인가 여부의 판정을 행하고, 상기 제어용 마이크로콤퓨터(μCOM)(6)가 처리동작으로부터 해방되고나서, 파라미터레지스터(24)에 설정되어 있는 트랙번호(TR#)를 상기 메카데크시스템콘트롤러(MD)(6)에 부여한다(스텝 108). 그리고 상기 스텝 105에 있어서의 판정결과가 Yes, 즉 새로운 드라이브지정이 이루어져 있지 않은 경우에는, 즉시 상기 스텝 108으로 옮겨서 파라미터레지스터(24)의 트랙번호(TR#)를 상기 메카데크시스템콘트롤러(MD)(6)에 부여하여, 다음의 스텝 109에서 상기 코맨드레지스터(23)의 D0(RD)비트에 1이 세트되었는가 여부의 판정을 행한다. 그리고, 상기 스텝 109의 판정결과가 No 즉 독출동작의 지정이 이루어져 있지 않은 경우에는, 데이터레지스터(25)에 부여되어 있는 데이터를 상기 버퍼메모리(2)에 전송하고나서(스텝 110), 다음의 스텝 111에서 상기 코맨드레지스터(23)의 D1(WR)비트에 1이 세트되었는가 여부의 판정을 행한다. 상기 스텝 111의 판정결과가 Yes 즉 상기 호스트콤퓨터(1)에 의하여 기입동작의 지정이 이루어져 있는 경우에는, 다음의 스텝 112에서 상기 파라미터레지스터(24)의 1바이트째 즉 섹터레지스터(24a)의 D7, D6비트를 보아 인덱스의 기압지령이 이루어져 있는가 여부의 판정을 행한다. 그리고 상기 인덱스의 기입지령이 이루어져 있지 않은 경우에는, 스텝 113으로 이행하여 상기 버퍼메모리(2)에 기입되어 있는 데이터에 대하여 상기 에러정정프로세서(13)에서 패리티의 엔코드처리(ENC)를 행하고, 다음의 스텝 114에 있어서 상기 코맨드레지스터(23)의 D2(ER)비트에 1이 세트되었는가 여부의 판정을 행한다. 그리고, 상기 스텝 112에 있어서의 판정 경로가 Yes 즉 상기 인덱스의 기입지정이 이루어져 있는 경우에는, 즉시 상기 스텝 114으로 이행하고, 상기 호스트콤퓨터(1)에서 소거동작의 지정이 이루어졌는가 여부의 판정을 행한다. 그리고, 상기 스텝 114의 판정결과가 Yes 즉 소거동작의 지정이 이루어져 있는 경우에는, 소거동작(ER)과 기입동작(WR)을 행하고(스텝 115), 또 상기 소거동작(ER)의 지정이 이루어져 있지 않은 경우에는, 기입동작(WR)만을 행한다(스텝 116). 또한, 상기 스텝 111에 있어서의 판정결과가 No 즉 기록동작의 지정이 이루어져 있지 않은 경우에는, 소거동작(ER)만을 행한다(스텝 117). 그리고, 상기 스텝 115, 스텝 116 또는 스텝 117의 동작을 행하면, 다음의 스텝 118에 있어서 상기 스테이터스레지스터(22)의 D0(Command Busy)플랙을 보아 시퀀스의 상태를 체크하고, 상기 스텝 115, 스텝 116 또는 스텝 117의 동작의 종료를 확인하고나서, 다음의 스텝 119로 이행하여 상기 코맨드레지스터(23)의 D4(Mon)에 1이 세트되어 있는가 여부의 판정을 행한다(스텝 119). 상기 스텝 119의 판정결과가 No인 경우에는, 다음의 스텝 120에서 상기 메카데크시스템콘트롤러의 제어용 마이크로콤퓨터(μCOM)(6)가 처리동작중인가 여부의 판정을 행하고, 상기 제어용 마이크로콤퓨터(μCOM)(6)가 처리동작으로부터 해방되면, 디스크면번호(SURF#)와 드라이브번호(DR#)와 모터오프신호(Moff)를 상기 메카데크시스템콘트롤러(MD)(6)에 부여하고나서(스텝 121), 대기상태(스텝 122)로 된다.
그리고, 상기 스텝 101에 있어서의 판정결과가 No 즉 상기 호스트콤퓨터(1)가 플로피디스크장치의 동작을 지령하고 있지 않은 경우에는, 스텝(123)으로 이행하여 상기 메카데크시스템콘트롤러의 제어용 마이크로콤퓨터(μCOM)(6)가 처리동작중인가 여부의 판정을 행하고, 상기 제어용 마이크로콤퓨터(μCOM)(6)가 처리동작으로부터 해방되면, 디스크면번호(SURF#)와 드라이브번호(DR#)와 모터오프신호(Moff)를 상기 메카데크시스템콘트롤러(MD)(6)에 부여하고나서(스텝 124), 데이터전송을 행하고(스텝 125), 상기 스텝 122의 대기상태로 된다. 또, 상기 스텝 104의 판정결과가 No 즉 상기 호스트콤퓨터(1)에서 스핀들모터(7)의 회전지정(Mon)만이 이루어져 있어서, 소거동작(ER), 기입동작(WR) 및 독출동작(RD)이 지정되어 있지 않은 경우에는, 스텝 126으로 이행하여, 디스크면번호(SURF#)와 드라이브번호(DR#)와 모터오프신호(Moff)를 상기 메카데크시스템콘트롤러(MD)(6)에 부여하고나서(스텝 126), 상기 스텝(125)의 데이터전송을 행한다. 또한, 상기 스텝 102에 있어서의 판정결과가 No 즉 플로피디스크(5)가 장착되어 있지 않은 경우에는, 스텝 127으로 이행하여 드라이브지정의 유무를 판정하여, 동일 드라이버가 지정되어 있을 때에는 즉시 상기 스텝 122의 대기상태로 되고, 또 새로운 별개의 드라이브가 지정되어 있을 때에는 상기 스텝 120으로 이행하도록 되어 있다.
또한, 상기 스텝 109에 있어서의 판정결과가 Yes 즉 상기 호스트콤퓨터(1)에 의하여 독출동작(RD)의 제정이 이루어져 있는 경우에는, 스텝 128으로 이행하여 각종 플랙의 리세트처리를 행하고나서, 상기 플로피디스크(5)로부터 데이터를 상기 버퍼메모리(2)에 독출한다(스텝 129). 그리고, 상기 스텝 129의 데이터독출동작을 행하면, 다음의 스텝 130에서 상기 스테이터스레지스터(22)의 D0(Command Busy)플랙을 보아 시퀀서의 상태를 체크하여 상기 스텝 127의 동작의 종료를 확인하고나서, 다음의 스텝 131으로 이행하여 상기 스테이터스레지스터(22)의 D1비트를 보고, 상기 스텝 129에 있어서 자기헤드(4)가 목표의 트랙에 정확하게 보내져서 정상으로 데이터독출동작이 행해졌는가 여부를 판정하고, 드라이브에러가 없는 경우에는, 상기 에러정정프로세서(13)에서 후술하는 바와 같은 방법 등으로 에러정정처리(DEC)를 행한다(스텝 132). 그리고, 다음의 스텝 132에서는, 상기 스텝 132의 에러정정처리에 의하여 정정할 수 없는 에러의 유무를 판정하고, 에러가 없는 경우에 독출한 데이터의 서브코드데이터(SUB-CODE)에 포함되어 있는 트랙번호(TR#), 섹터번호(SC#) 및 코피보호코드(CPC)를 상기 파라미터레지스터(24)에 전송하고(스텝 134), 상기 서브코드데이터(SUB-CODE)의 에러의 유무를 후술하는 방법 등으로 판정한다(스텝 135). 그리고, 상기 서브코드데이터(SUB-CODE)에 에러가 없는 경우에는, 상기 버퍼메모리(2)에 독출한 데이터를 상기 데이터레지스터를 통하여 호스트콤퓨터(1)에 전송하는 스텝 136의 처리를 행하고나서, 상기 스텝 119으로 이행한다.
그리고, 상기 스텝 131, 스텝 133 및 스텝 135에 있어서의 판정결과가 Yes 즉 에러가 발생하고 있는 경우에는, 즉시 상기 스텝 119으로 이행한다.
이 실시예의 플로피디스크장치에서는, 호스트콤퓨터(1)에 의하여 인터페이스회로(11)의 코맨드레지스터(23)에 부여되는 코맨드데이터(D7,D6,D5,D4,D3,D2,D1,D0)를 마이크로프로그램제어부(12a)가 해석하여, 다음에 나타내는 바와 같은 각종의 일련의 제어동작을 행한다.
[제어동작예 1]
코맨드데이터(D7,D6,D5,D4,D3,D2,D1,D0)
=(0 0 1 0 0 1 1 0)
(1) 스핀들모터온
(2) 자기헤드이송(시크)
(3) 소거동작
(4) 기입동작
(5) 스핀들모터오프
(6) 자기헤드이송(캘리브레이트)
[제어동작예 2]
코맨드데이터(D7,D6,D5,D4,D3,D2,D1,D0)
=(0 0 1 1 1 1 1 0)
(1) 스핀들모터온
(2) 자기헤드이송(시크)
(3) 데이터전송
(4) 소거동작
(5) 기입동작
[제어동작예 3]
코맨드데이터(D7,D6,D5,D4,D3,D2,D1,D0)
=(0 0 1 1 0 1 1 0)
(1) 스핀들모터온
(2) 자기헤드이송(시크)
(3) 소거동작
(4) 기입동작
[제어동작예 4]
코맨드데이터(D7,D6,D5,D4,D3,D2,D1,D0)
=(0 0 1 0 0 0 0 1)
(1)스핀들모터온
(2) 자기헤드이송(시크)
(3) 독출동작
(4) 스핀들모터오프
(5) 자기헤드이송(캘리브레이트)
[제어동작예 5]
코맨드데이터(D7,D6,D5,D4,D3,D2,D1,D0)
=(0 0 1 1 1 0 0 1)
(1) 스핀들모터온
(2) 자기헤드이송(시크)
(3) 독출동작
(4) 데이터전송
여기서, 코맨드데이터(D7,D6,D5,D4,D3,D2,D1,D0)로서 예를 들면[0 0 1 0 1 1 0]인 코맨드데이터가 상기 호스트콤퓨터(1)에 의하여 상기 인터페이스회로(11)의 코맨드레지스터에 부여된 경우의 일련의 제어동작을 상세하게 설명한다.
상기 마이크로프로그램제어부(12a)는, 상기 코맨드데이터[0 0 1 0 1 1 0]를 해석하여, 명령실행부(12b)로부터 스핀들모터(7)의 회전지령신호(Mon)와 트랙번호(TR#)를 시리얼전송으로 메카데크시스템콘트롤러(6)에 부여한다. 그리고, 상기 회전지령신호(Mon)와 트랙번호(TR#)를 받아 상기 메카데크시스템콘트롤러(6)가 스핀들모터(7)를 기동하여 플로피디스크(5)를 회전시키는 동시에, 이송모터(8)에 이하여 자기헤드(4)를 지정된 트랙번호(TR#)의 위치로 이동시키는 동안에, 상기 마이크로프로그램제어부(12a)가 데이터전송을 받아들일 준비완료를 알림으로써, 상기 호스트콤퓨터(1)는, 상기 인터페이스회로(11)의 데이터레지스터(25)를 통하여 버퍼메모리(2)에 데이터를 전송한다. 또, 상기 메카데크시스템콘트롤러(6)가 스핀들모터(7)의 회전이 안정되는 동시에 자기헤드(4)의 이동을 완료하여 기록준비가 완료된 것을 상기 명령실행부(12b)에 알린다. 또한, 에러정정프로세서(13)는 상기 호스트콤퓨터(1)로부터 상기 버퍼메모리(2)로 전송되어온 데이터에 대하여 에러정정용의 패리티를 생성한다. 그리고, 상기 마이크로프로그램제어부(12a)는, 상기 메카데크시스템콘트롤러(6)가 기록준비의 완료를 상기 명령실행부(12b)에 알리는 동시에, 상기 에러정정프로세서(13)에 의한 패리티의 생성이 완료되면, 상기 플로피디스크(5)가 목적한 섹터의 개시위치까지 회전하는 것을 기다려서, 기록회로와 소거회로를 동작시켜서, 선행 이레이즈헤드로 소거하면서 기록재생겸용 헤드로 데이터를 기록시킨다. 또한, 상기 마이크로프로그램제어부(12a)는, 상기 명령실행부(12b)로부터 스핀들모터(7)의 모터오프신호(Moff)를 시리얼전송으로 상기 메카데크시스템콘트롤러(6)에 부여하여, 상기 스핀들모터(7)의 회전을 정지시키는 동시에, 데이터의 기록동작의 완료를 상기 호스트콤퓨터(1)에 알린다.
전술한 실시예의 설명에서 명백한 바와 같이, 본 발명에 관한 데이터처리장치에서는, 내장된 마이크로프로그램제어수단이 호스트콤퓨터로부터 부여되는 단순명령을 해석하여, 일련의 기입/독출제어를 행하므로, 간단한 프로그램으로 외부 제어할 수 있도록 하여, 상기 호스트콤퓨터의 처리효율을 저하시키지 않고, 데이터의 기록/재생을 효율좋게 행할 수 있다.
전술한 예에서는 플로피디스크(5)의 데이터의 독출, 기입을 1섹터단위로 행하고 있으나 버퍼메모리(2)의 용량을 크게 하면, 트랙단위로, 또는 복수의 트랙에 걸쳐서, 복수의 섹터를 계속하여 독출할 수 있다. 이 경우 제14도에 나타낸 바와 같이, 버퍼메모리(2)는 예를 들면 5개의 메모리에리어(2A)~(2E)를 가지고 있다. 각 메모리에리어(2A)~(2E)의 기억용량은, 플로피디스크의 각 섹터로부터 재생된 데이터를 기입하고, 그것에 에러정정처리를 실시하는데 충분한 용량, 즉 6K바이트 이상, 여기서는 6K바이트로 선정된다. 따라서, 버퍼메모리(2)의 총 용량은 30K바이트로 되지만, 여기서는 32K바이트의 메모리를 사용한다.
한편, 파라미터레지스터(24)는, 독출/기입/소거를 물리적 섹터단위 또는 트랙(=4섹터)단위로 행할 때의 트랙/섹터번호, 섹터 및 트랙모드판별데이터, 버퍼메모리(2)의 메모리에리어의 번호, 트랙단위의 소거, 인덱스신호의 기입을 지정하기 위한 파라미터데이터가 부여된다. 이 경우 파라미터레지스터(24)는, 5바이트로 구성되어 있고, 상기 예와 상위한 점이 있다. 즉, 파라미터레지스터(24)의 3바이트째의 레지스터(24c)는, 섹터모드 및 트랙모드판별데이터(0,1)로서의 1비트(D7)와, 버퍼메모리(2)의 메모리에리어(2A)~(2E)의 번호 0,'001,…,100를 나타내는 3비트(D6,D5,D4)와, 하위의 예비의 4비트(D3,D2,D1,D0)로 이루어진다.
또한, 파라미터레지스터(24)의 4바이트째와 5바이트째의 레지스터(24d),(24e)에는, 2바이트의 코피보호코드(CPC : Copy Prtection Code)가 부여된다.
전술한 예와 마찬가지로, 호스트콤퓨터(1)로부터, 인터페이스회로(11)의 파라미터레지스터(24)에, 트랙번호(7비트) 및 섹터번호(2비트)와 함게, 메모리에리어번호(3비트)[메모리에리어(2A),(2B),(2C),(2D),(2E) 각각에 대응한 0, 1, 10,11, 100], 섹터모드 및 트랙모드판별데이터(1비트)가 치수(置數)되는, 이 각 데이터에 따라서, 버퍼메모리(2)는 마이크로프로그램제어부(12a)에 의하여 제어된다.
먼저, 트랙모드(판별데이터가 1일 때)의 경우에 대하여 설명한다. 자기헤드(4)는, 재생해야 할 트랙으로 이동시킨다. 자기헤드(4)에 의하여, 그 트랙의 인덱스신호가 재생된 후, 플로피디스크(5)가 다시 1회전하고나서, 그 트랙으로부터의 4섹터분의 데이터가 재생되고, 그 재생데이터가 데이터복조된 후, 버퍼메모리(2)의 메모리에리어(2A)~(2E)에 기입된다. 그 4섹터분의 데이터는, 에러정정프로세서(13)에 의하여, 섹터마다 에러정정된 후, 인터페이스회로(11)를 통하여 호스트콤퓨터(1)에 전송된다. 플로피디스크5)의 다른 트랙에 대하여도 동일한 동작이 행해지고, 메모리에리어(2B)~(2E)의 내용이 그 트랙의 4섹터의 데이터에 의하여 재기입되고, 마찬가지로 에러정정되어, 호스트콤퓨터(1)에 전송된다. 이 트랙모드에서는, 트랙의 4섹터의 데이터는, 항상 메모리에리어(2B)~(2E)에 기입된다. 호스트콤퓨터(1)측에서는, 메모리에리어(2B)~(2E)에 기억되어 있는 데이터의 트랙번호를 관리하고 있다.
플로피디스크(5)에 트랙단위로 프로그램 등의 데이터가 기록되어 있는 경우, 그 데이터를 트랙단위로 재생하여 버퍼메모리(2)에 기입하고, 에러정정프로세서(13)에 의하여, 섹터마다 에러정정한 후, 인터페이스회로(11)를 통하여 호스트콤퓨터(1)를 전송하므로, 데이터의 처리시간이 단축된다.
다음에, 섹터모드(판별데이터가 0일 때)의 통상 모드의 경우에 대하여 설명한다. 자기헤드(4)는, 재생해야 할 트랙으로 이동시킨다. 자기헤드(4)에 의하여, 원하는 트랙의 인덱스신호가 재생된 후, 플로피디스크(5)가 다시 1회전하고나서, 그 트랙의 원하는 1섹터분의 데이터가 재생되고, 그 재생데이터가 데이터복조된 후, 버퍼메모리(2)의 메모리에리어(2A)에 기입된다. 그 1섹터분의 데이터는, 에러정정프로세서(13)에 의하여 에러정정된 후, 인터페이스회로(11)를 통하여 호스트콤퓨터(1)에 전송된다. 플로피디스크(5)의 다른 섹터에 대하여도 동일한 동작이 행해지고, 메모리에리어(2A)의 내용이 그 섹터의 데이터에 의하여 재기입되어, 마찬가지로 에러정정되고, 호스트콤퓨터(1)에 전송된다. 이 섹터모드의 통상 모드에서는, 그 섹터의 데이터는, 항상 메모리에리어(2A)에 기입된다. 호스트콤퓨터(1)측에서는, 메모리에리어(2A)에 기억되어 있는 데이터의 트랙번호 및 섹터번호를 관리하고 있다.
또한, 섹터모드(판별데이터가 0일 때)의 특수모드의 경우에 대하여 설명한다. 자기헤드(4)는, 재생해야할 트랙으로 이동시킨다. 자기헤드(4)에 의하여, 원하는 트랙의 인덱스신호가 재생된 후, 플로피디스크(5)가 다시 1회전하고나서, 그 트랙의 원하는 1섹터분의 데이터가 재생되고, 그 재생데이터가 데이터복조된 후, 버퍼메모리(2)의 예를 들면 메모리에리어(2A)에 기입된다. 그 1섹터분의 데이터는, 에러정정프로세서(13)에 의하여 에러정정된 후, 인터페이스회로(11)를 통하여 호스트콤퓨터(1)에 전송된다. 다른 섹터로부터의 재생 데이터를 버퍼메모리(2)의 다음의 메모리에리어(2B)에 기입하고, 마찬가지로 별개의 섹터로부터의 재생데이터를, 메모리에리어(2C),(2D),(2E),(2A),…에 순차 순환적으로 기입하고, 각각 에러정정하도록 한다. 이 경우, 호스트콤퓨터(1)에서는, 제14도에 ×로 나타낸 포인터를 배설하고, 예를 들면 메모리에리어(2C)에 데이터를 기입하면, 그 메모리에리어(2C)의 번호에 대응하고 있는 포인터를, 다음의 메모리에리어(2D)의 번호에 대응하도록 이동시킨다. 그리고, 이 포인터는, 메모리에리어(2A),(2B),…,(2E),(2A),…의 각 대응번호로 순차 순환적으로 이동시킨다. 그리고, 호스트콤퓨터(1)에서는, 버퍼메모리(2)의 각 메모리에리어(2A)~(2E)의 번호, 그 메모리에리어에 기억되어 있는 데이터의 트랙번호 및 섹터번호를 헤더로 하여 관리하고 있으며, 메모리에리어에 기억되어 있는 에러정정필의 데이터는, 호스트콤퓨터(1)로부터 메모리에리어의 번호의 데이터가 인터페이스회로(11)를 통하여 마이크로프로그램제어부(12a)에 공급됨으로써, 버퍼메모리(2)에 기억되어 있는 원하는 트랙의 원하는 섹터의 데이터가, 몇번이고 호스트콤퓨터(1)에 전송된다. 이 경우 그 데이터를 재차 에러정정할 필요는 없고, 즉시 전송된다. 이로써, 호스트콤퓨터(1)가, 플로피디스크(5)의 어떤 트랙의 어떤 섹터의 데이터를 반복하여 이용하려고 할 경우에, 그 데이터가 자기헤드(4)에 의하여 재생되고나서 호스트콤퓨터(1)에 기입될 때까지의 대기시간이 대폭으로 단축된다.
그리고, 섹터모드의 통상 모드에 있어서도, 호스트콤퓨터(1)에서, 포인터를 채용할 때는, 그 포인터를 메모리에리어(2A)의 번호에 고정하도록 하면 된다.
이와 같이, 버퍼메모리(2)에 메모리에리어(2A)~(2E)를 배설하고, 플로피디스크(5)로부터, 그 기록데이터를 트랙단위 또는 섹터단위로 재생하고, 복조한 후 버퍼메모리(2)에서 에러정정하므로, 트랙단위의 연속된 긴 데이터의 처리시간을 단축화하고, 또 섹터단위에서의 짧은 데이터는 종래와 마찬가지로 처리할 수 있고, 또한 호스트콤퓨터(1)에 몇번이고 전송되는 데이터는, 그 사용이 끝날 때까지 버퍼메모리(2)에 기억하여 둘 수 있으므로, 그 데이터의 처리시간이 짧아도 된다.
그리고, 버퍼메모리(2)의 메모리에리어의 개수는, 복수 섹터분, 복수 트랙분 등 여러 가지의 변형이 가능하다.
또, 버퍼메모리(2)의 메모리에리어(2A)~(2E)의 번호, 그 메모리에리어(2A)~(2E)에 기억되어 있는 데이터가 속하고 있는 트랙의 번호 및 섹터의 번호를 호스트콤퓨터측에서 관리하므로, 그 관리 및 버퍼메모리(2)의 제어가 용이하게 된다. 더욱이, 이 관리 및 제어를 디스크제어부(10) 특히 그 명령실행부(12b)에서 관리하는 것도 고려되지만, 그렇게 하면 제어부(10)의 부담이 무거워져 버린다. 이 경우는, 버퍼메모리(2)의 메모리에리어(2A)~(2E)의 번호, 그 메모리에리어(2A)~(2E)에 기억되어 있는 데이터가 속하고 있는 트랙의 번호 및 섹터의 번호는, 버퍼메모리(2)의 일부 또는 기타의 메모리에 기억된다.
전술한 본 발명에 의하면, 마이크로콤퓨터가, 디스크 등의 기록매체의 복수의 섹터에 걸치는 재생데이터를 반복하여 이용하는 경우의 대기시간이 단축되는 데이터처리장치를 얻을 수 있다. 또, 전술한 본 발명에 의하면, 디스크 등의 기록매체로부터, 그 데이터를 섹터단위로도 트랙단위로도 재생할 수 있는 동시에, 그 데이터를 트랙단위로 재생하는 경우의 대기시간을 단축할 수 있는 데이터처리장치를 얻을 수 있다.
다음에, 플로피디스크구동장치의 보다 상세한 동작을 설명한다. 호스트콤퓨터(마이크로콤퓨터)(1)는, 플로피디스크(5)의, 최초에 재생해야 할 데이터의 트랙번호 TR(k)를, 인터페이스회로(11)의 파라미터레지스터(24)에 기입하는 동시에, 이 파라미터레지스터(24)에 트랙번호가 기입되어 있는 것을 나타내는 플랙도 동시에 이 파라미터레지스터(24)에 기입한다. 따라서, 호스트콤퓨터(1)가 파라미터레지스터(24)의 플랙이 기입되어 있는 부분을 독출하면, 파라미터레지스터(24)에 트랙번호가 기입되어 있는 것을 알 수 있고, 이 플랙이 검출되었을 때는, 파라미터레지스터(24)에 트랙번호를 기입하는 것은 금지된다.
다음에, 호스트콤퓨터(1)는, 플로피디스크구동장치의 디스크제어부(10)로, 플로피디스크(5)로부터의 데이터의 재생 및 그 데이터의 전송을 나타내는 코맨드를 발생한다. 이렇게 하면, 제15도의 스텝(201) 이하의 동작(프로그램)이 개시(기동)된다.
이 코맨드를 받은 플로피디스크구동장치의 명령실행부(12b)는, 인터페이스회로(11)의 파라미터레지스터(24)에 기입되어 있는 트랙의 번호TR(k)의 정보를, 메카데크시스템콘트롤러(6)에 전달(스텝 201)하는 동시에, 파라미터레지스터(24)에 기입되어 있는 플랙을 클리어한다(스텝 202). 이로써, 호스트콤퓨터(1)는, 이 플랙이 클리어된 것을 검지하여, 다음에 재생해야 할 트랙의 번호 TR(k+1)를, 인터페이스회로(11)의 파라미터레지스터(24)에 기입하는 동시에, 이 파라미터레지스터(24)에 트랙번호가 기입되어 있는 것을 나타내는 플랙도 동시에 이 파라미터레지스터(24)에 기입한다(세트한다).
트랙의 번호 TR(k)의 정보를 받은 메카데크시스템콘트롤러(6)는, 모터(8)를 제어하여, 자기헤드(4)를 그 번호 TR(k)의 트랙으로 이동시킨다(스텝 203). 이 자기헤드(4)의 이동이 완료되고, 이것이 메타데크시스템콘트롤러(6)로부터, 명령실행부(12b)에 전달되면, 플로피디스크(5)의 회전에 의하여, 그 소정의 섹터가 자기헤드(4)의 곳에 왔을 때, 명령실행부(12b)가 기록·재생·소거회로(30)를 제어하여, 자기헤드(4)에 의하여, 그 트랙의 섹터의 데이터를 재생한다(스텝 204).
그 섹터의 데이터의 재생이 종료되면, 명령실행부(12b)는, 파라미터레지스터(24)에 플랙이 세트되어 있는가 여부를 판별하고(스텝 205), No이면, 후술하는 스텝 208으로 진행하지만, Yes이면, 인터페이스회로(11)의 파라미터레지스터(24)에 기입되어 있는 트랙의 번호 TR(k+1)의 정보를, 메카데크시스템콘트롤러(6)에 전달(스텝 206)하는 동시에, 파라미터레지스터(24)에 기입되어 있는 플랙을 클리어한다(스텝 207).
트랙의 번호 TR(k+1)의 정보를 받은 메카데크시스템콘템콘트롤러(6)는, 모터(8)를 제어하여, 자기헤드(4)를 그 번호 TR(k+1)의 트랙으로 이동시키는 동시에, 그 이동중에 병행하여, 번호가 TR(k)의 트랙의 섹터로부터 재생되고, 데이터복조회로(16)를 통하여 버퍼메모리(2)에 기억되어 있는 데이터를, 에러정정프로세서(13)에 의하여, 섹터마다 에러검출 및 에러정정처리를 행하고(스텝 208), 이러한 후 버퍼메모리(2)로부터 독출되어, 인터페이스회로(11)를 통하여, 호스트콤퓨터(1)에 전송된다(스텝 209). 여기서, 넓은 의미의 에러정정처리는, 에러검출도 포함된다. 이 자기헤드(4)의 이동중에, 이 넓은 의미의 에러정정처리만을 행해도 된다.
이 후, 플로피디스크(5)의, 번호 TR(k+2),TR(k+3),…의 트랙을 재생하는 것이면, 이상의 동작이 순차 반복된다.
이리하여, 호스트콤퓨터(1)로부터 수 트랙에 걸치는 데이터의 재생요구가 있고나서, 그 데이터가 호스트콤퓨터(1)에 전송될 때까지 요하는 시간이 단축된다.
그리고, 전술한 예에서는 트랙의 번호가 기입되는, 인터페이스회로(11)의 파라미터레지스터에, 플랙을 세트 및 클리어할 경우에 대하여 설명하였으나, 이것에 한정되는 것은 아니고, 예를 들면 플랙 그것은 호스트콤퓨터(1)로부터 독출되지 않아도, 그 플랙이 클리어된 시점에서, 명령실행부(12b)가 호스트콤퓨터(10)에 인터럽트를 걸도록 하는 것도 가능하다.
[에러정정]
다음에 데이터프레임 및 서브코드의 에러정정방법의 일예에 대하여 설명한다.
[데이터프레임의 에러정정]
먼저 데이터프레임의 에러정정알고리즘을 제16도를 참조하여 설명한다. 스텝 301에 있어서 버퍼메모리(2)로부터 각 프레임의 C1코드에 포함되는 데이터를 순차 독출하고, 에러정정프로세서(13)에 공급한다. 스텝 302에 있어서 에러정정프로세서는 C1패리티를 사용하여 신드롬을 계산한다. 이어서, 신드롬의 상태에 따라서 에러의 수를 판별하는 스텝 303에 있어서 2심벌에러인가 여부를 체크한다. No의 경우, 스텝 304에 있어서, 1심벌에러인가 여부를 체크한다. No의 경우, 스텝 305에 있어서 에러가 없는가, 3심벌 이상의 에러인가를 판단한다. 스텝 304에 있어서, 1심벌에러라고 판단된 경우는, 스텝 306에 있어서 신드롬을 사용하여 에러로케이션을 구하여 에러심벌을 정정한다. 스텝 303에 있어서, 2심벌에러로 판단된 경우는, 스텝 307에 있어서, 신드롬을 사용하여 에러로케이션을 구하고, 에러심벌을 정정하고, 다음의 스텝 308에 있어서, 제11도 및 제12a도에 나타낸 버퍼메모리(2)의 정정플랙에리어의 F0, F1플랙을 제12b도에 나타낸 바와 같이 세트한다. 에러없음 및 1심벌에러정정, 2심벌에러정정을 행한 경우는, 스텝 309에 있어서 그 프레임의 프레임어드레스의 앞의 프레임의 프레임어드레스와의 연속성을 체크한다. 프레임어드레스가 불연속의 경우 또는 스텝 305에서 3심벌 이상의 에러가 있어 정정불능이라고 판단된 경우에는 다음의 스텝 310에 있어서, 제12b도 나타낸 바와 같이, F0,F1,F2의 플랙을 세트한다.
이상의 스텝을 각 프레임에 걸쳐서 반복하여 행하고, 스텝 311에서 전체 프레임의 처리가 종료되었다고 판단되면 다음의 C2계열의 디코드를 행한다. 그리고, 서브프레임의 에러정정처리는 이상의 데이터프레임의 처리에 앞서 동일한 처리가 행해진다.
계열의 에러정정처리에 있어서, 스텝 312에 있어서 버퍼메모리(2)로부터 인터리브된 C2계열의 데이터를 독출하고, 스텝 313에 있어서 신드롬의 계산을 행한다. 이어서, 신드롬의 상태에 따라서 에러의 수를 판별한다. 스텝 314에서 2심벌에러인가 여부를 체크한다. No의 경우 스텝 315에서 1심벌에러인가 여부를 체크한다. No의 경우 스텝 316에서 에러없는가 3심벌 이상의 에러인가를 판별한다. 스텝 315에서 1심벌에러로 판별된 경우에는, 스텝 317에서 신드롬으로부터 에러로케이션을 구하여 에러심벌을 정정한다. 이 경우, 보다 상세하게는 표 2에 나타낸 바와 같이 에러로케이션이 C1정정처리에서 F2플랙이 부여된 심벌의 위치와 일치하지 않은 경우에는 F2플랙의 수에 따라서 정정하는가, 하지 않는가를 판정하고, 정정하지 않을 경우에는 그대로 한다. 그리고, 표 2에 있어서, N1, N2는 에러로케이션과 일치하는 F1플랙, F2플랙이 부여된 심벌의 수, K1, K2는 F1플랙, F2플랙의 수, ―는 관계없다는 것을 의미한다.
N1 : 에러로케이션에 대응하는 플랙의 수
N2 : 에러로케이션에 대응하는 플랙의 수
K1 : F플랙의 수
K2 : F플랙의 수
― : 관계없음
스텝 314에서 2심벌에러라고 판별되었을 때에는, 스텝 318에서 F플랙의 수를 판별하고, 2 이하의 경우에는 스텝 319에서 2심벌에러정정처리를 행하고, 2를 넘을 경우는, 후술하는 이레이즈정정처리를 행한다. 스텝 319에서는 표 2에 나타낸 조건에 따라서 2심벌에러정정을 행하는가, 정정하지 않고 그대로 두는가를 결정한다.
스텝 316에서 3심벌 이상의 에러가 있다고 판정된 경우, 또한 스텝 318에서 F플랙의 수가 2를 넘는다고 판정된 경우는, 스텝 320 및 스텝 321에서 F플랙의 수가 3인가 4인가를 판정하고, 3의 경우는 스텝 322에서 3이레이즈정정을 행하고, 4일 때는 스텝 323에서 4이레이즈정정을 행한다.
스텝 320, 스텝 321에서 F플랙의 수가 3도 4도 아니라고 판정되었을 때에는 스텝 324에서 F플랙, F플랙의 수를 판정하고, F플랙의 수가 5 이상에서 F플랙의 수가 3의 경우에만 스텝 322에서 2이레이즈정정 및 1에러정정을 행한다.
이상의 처리에서 정정되지 않는 것은 에러로서 처리된다.
이상의 스텝을 각 인터리브계열에 대하여 반복하여 행하고, 스텝 325에서 전체계열의 처리가 종료되었다고 판단되면 정정처리는 종료된다.
이 C패리티에 의한 정정시에 있어서, 특히 2심벌 이상의 에러가 존재한다고 판단된 경우에는, 상기 C계열에 포함되는 심벌에 대하여 세워진 상기 F플랙의 수가 2를 넘으면 즉 3 이상이면 소실(이레이즈)정정루틴이 실행되고, 2 이하이면 2에러정정(2중 에러정정)루틴이 실행되도록 되어 있다. 여기서, C패리티에 의한 정정시에 F플랙이 서는 것은, 3심벌 이상의 에러가 존재하는 경우 및 버스트에러가 존재하는 경우이지만, 심벌에러레이트가 10 이하라면, 버스트레어가 존재하는 경우가 대부분이라고 생각된다. 따라서, 버스트에러시에, 불필요한 2에러정정루틴이 실행되지 않고, 또 그것에 의한 정정불능도 피할 수 있고, 버스트에러에 대한 정정능력을 대폭으로 향상시킬 수 있다. 이것은, 특히 버스트에러길이가 8~14프레임일 때에 우수한 효과를 발휘한다.
전술한 실시예의 설명으로부터 명백한 바와 같이, 본 발명에 의하면 C패리티에 의한 정정시에, 에러정정 가능한 심벌수, 예를 들면 2심벌 이상의 에러가 존재한다고 판단된 경우, C계열에 포함되는 심벌에 대하여 세워진 C패리티에 의한 정정불능을 나타내는 플랙의 수가 소정수를 넘으면 소실정정루틴을 실행하고, 소정수 이하이면 2중 에러정정루틴을 실행하도록 함으로써, 버스트에러에 대한 정정능력을 대폭으로 향상시킬 수 있다.
그런데, C패리티에 의하면 2중 에러정정까지 가능하게 되어 있다. C패리티에 의하면 4중 소실정정까지 가능하게 되어 있다. 더 상세하게 설명하면, C패리티는 부호간 최소거리(디스턴스)가 d(d=5)이고,
2m+n≤d-1
을 만족하는 m심벌의 에러정정 및/또는 n심벌의 소실정정이 가능하다. 그리고, 4심벌에러의 경우에는 신드롬 S,S,S,S에 대하여 다음 식이 성립한다.
여기서, ei,ej,ek,el는 에러패턴이고, α는 갈로아체(galois field) GF(2M)(예를 들면 M=8)상의 기약다항식(旣約多項式) F(x)=0을 만족하는 근이고, i,j,k,l은 에러로케이션이다. 그리고, 3심벌에러의 경우에는, e1=0으로 한다. 또, 3중 소실정정에서는 에러로케이션 i,j,k만 이미 아는 것으로 하고, 2중 소실정정+단일 에러정정에서는 에러로케이션 i,j만 이미 아는 것으로 한다.
상기 (1)~(4)식에 의한 연립방정식을 에러패턴 ei,ej,ek,el에 대하여 풀면, 다음과 같은 4중 소실정정의 경우의 연산식이 얻어진다.
또, 3중 소실정정 및 2중 소실정정+단일에러정정의 경우에는, 상기 (1)~(4)식에 의한 연립방정식(e1=0)을 에러패턴 ei,ej,ek에 대하여 풀면, 다음과 같은 연산식이 얻어진다. 단, 2중 소실정정+단일 에러정정에서는, αk즉 에러로케이션 k도 구한다.
이와 같이, 4중 소실정정의 경우와, 3중 소실정정 및 2중 소실정정+단일 에러정정의 경우에서는, 일반적으로는 개개의 연산식에 의한 연산을 행하고 있다. 따라서, 연산을 위한 프로그램량이 상당히 많아지고, 또 연산에 시간이 걸린다.
그래서, 4중 소실정정 및 3중 소실정정(또는 2중 소실정정+단일 에러정정)은, 전술한 4중 에러패턴을 구하는 연산식 ((5)~(8)식)) 및 3중 에러패턴을 구하는 연산식((9)~(12)식)에 의하여 개개로 연산을 행하지 않고, 2조의 연산식의 공통항을 사용하여 행하도록 하고 있다. 즉, 상기 공통항은, 본 실시예에 있어서는, 다음 식에 의하여 나타낸다.
또, 4중 에러패턴을 구하는 연산식((5)~(8))식은, 상기 공통항의 식((13)~(16)식)을 사용하여 다음 식과 같이 나타낼 수 있다.
또, 3중 에러패턴을 구하는 연산식((9)~(12)식)은, 상기 공통항의 식((13)~(16)식)을 사용하여 다음 식과 같이 나타낼 수 있다.
그리고, 상기 공통항을 미리 구하고, 4중 소실정정의 경우에는 상기 (17)~(20)식에 대입하여 에러패턴 ei,ej,ek,el을 구하고, 또 3중 소실정정 및 2중 소실정정+단일 에러정정의 경우에는 상기 (21)~(24)식에 대입하여 에러패턴 ei,ej,ek을 구하도록 하고 있다. 단, αk는 2중 소실정정+단일 에러정정의 경우만 구하도록 하고 있다.
이와 같이, 상이한 심벌수의 에러정정 및/또는 소실정정의 연산을 행함에 있어서, 양자에 공통되는 연산부분을 미리 연산하도록 하고 있으므로, 연산을 위한 프로그램량이 삭감되고, 연산시간의 단축도 도모되어 있다.
다음에, 4중 에러패턴을 구하는 연산식((17)~(20식) 및 3중 에러패턴을 구하는 연산식((21)~(24)식)의 도출방법에 대하여 설명한다. 먼저, 4중 에러패턴을 구하는 연산식의 경우에 대하여 설명한다. (8)식의 분모·분자에 αi+j+k를, 또 (7)식의 분모·분자에 αi+j+k를 각각 곱함으로써 다음 식이 얻어진다.
여기서, 상기 공통항의 식((13)~(16)식)을 도입함으로써, 상기 (25)식 및 (26)식으로부터 (17)식 및 (18)식을 얻을 수 있다. 또, (1)식×αi+(2)식을 구하면, 다음 식이 얻어진다.
여기서, (14)식을 도입함으로써, 상기 (28)식으로부터 (19)식을 얻을 수 있다. 또, (20)식은 (1)식으로부터 얻어진다.
다음에, 3중 에러패턴을 구하는 연산식의 경우에 대하여 설명한다. (21)식 및 (22)식은, (9)식 및 (12)식에 대하여 상기 공통항의 식((13)~(16)식)을 도입함으로써 얻을 수 있다. 또, (28)식에 있어서 el=0으로 하면,
로 되고, (14)식을 도입함으로써, 상기 (29)식으로부터 (23)식을 얻을 수 있다. 또, (24)식은 (1)식에 있어서 el=0으로 한 식으로부터 얻어진다.
전술한 실시예의 설명으로부터 명백한 바와 같이, 본 발명에 관한 에러정정부호 복호방법에 의하면, 상이한 심벌수의 에러정정 및/또는 소실정정의 연산을 행함에 있어서, 양자에 공통되는 연산부분을 미리 연산하도록 함으로써, 연산을 위한 프로그램량을 삭감할 수 있고, 또 연산시간을 단축시킬 수 있다.
[서브코드의 에러정정]
서브코드의 에러정정은 코딩데이터의 에러정정과는 별개로 행해지고, 코딩데이터의 정정에 앞서 또는 그후에, 또는 코딩데이터의 C1정정 후에 행할 수 있으나, 서브코드의 에러정정처리는 제17도에 나타낸 바와 같이, 즉 먼저 재생순서에 있어서는 최후의 서브코드 SC3로부터 디코드처리가 행해진다(스텝 401). 다음에, 이 디코드처리가 가능했는가 여부의 판별이 행해진다(스텝 402). 그리고, 디코드처리가 가능했던 경우에는 상기 서브코드 SC3의 디코드데이터가 호스트콤퓨터(1)에 보내져서 종료로 되지만(스텝 403), 디코드처리가 불가능했던 경우에는 서브코드 SC2에 대한 디코드처리가 행해진다(스텝 404). 여기서, 서브코드의 디코드처리에 있어서의 패리티에 의한 에러정정은,. 전술한 C1정정과 동일하게 행하여, 2중 에러정정까지 가능하고, 에러의 수가 2심벌 이하이면 디코드가능하게 된다.
상기 스텝404이 실행된 경우에는, 계속하여, 이 스텝 404에 있어서의 서브코드 SC2에 대한 디코드처리가 가능했는가 여부의 판별이 행해진다.(스텝 405). 그리고, 데코드처리가 가능했던 경우에는 상기 서브코드 SC2의 디코드데이터가 호스트콤퓨터(1)로 보내져서 종료로 되지만(스텝 406), 디코드처리가 불가능했던 경우에는 서브코드 SC1에 대한 디코드처리가 행해진다.(스텝 407).
상기 스텝 407이 실행된 경우에는, 계속하여, 이 스텝 407에 있어서의 서브코드 SC1에 대한 디코드처리가 가능했는가 여부의 판별이 행해진다(스텝 408). 그리고, 디코드처리가 가능했던 경우에는 상기 서브코드 SC1의 디코드데이터가 호스트콤퓨터(1)에 보내져서 종료로 되지만(스텝 409), 디코드처리가 불가능했던 경우에는 서브코드 SC0에 대한 디코드처리가 행해진다(스텝 410).
상기 스텝 410이 실행된 경우에는, 계속하여, 이 스텝 410에 있어서의 서브코드 SC0에 대한 디코드처리가 가능했는가 여부의 판별이 행해진다(스텝 411). 그리고, 디코드처리가 가능했던 경우에는 상기 서브코드 SC0의 디코드데이터가 호스트콤퓨터(1)로 보내져서 종료로 되고(스텝 412), 디코드처리가 불가능했던 경우에는 모든 서브코드 SC0~SC3가 디코드 불가능했다고 하는 정보가 호스트콤퓨터(1)로 보내져서 종료로 된다(스텝 413).
이와 같이, 본 실시예에 있어서는, 재생순서와는 전혀 역의 순서로, 즉 서브코드 SC3로부터 디코드처리를 행하도록 하고 있다. 상기 서브코드 SC3는, 재생동작의 개시 직후에서 버스트에러의 발생확률이 높은 최초의 서브코드 SC0보다 버스트에러의 발생확률이 낮으므로, 디코드동작의 최초부터 디코드 불가능으로 되는 확률은 낮고, 서브코드의 디코드데이터를 단시간에 얻을 수 있다. 또, 버스트에러의 발생확률이 낮은 상기 서브코드 SC3는 에러정정의 염려가 적고, 신뢰성의 향상을 도모할 수 있다.
그리고, 본 발명은 전술한 실시예에 한정되지 않고, 예를 들면 서브코드 SC1또는 서브코드 SC2로부터 디코드처리를 행하도록 해도 된다.
본 발명에 관한 데이터처리방법에서는, 반복하여 전송되는 엔코드처리가 실시된 복수의 동일 데이터를 가지는 데이터블록을 수신한 경우, 상기 복수의 동일데이터중 최초에 수신한 데이터 이외의 버스트에러의 발생확률이 낮은 데이터로부터 에러정정처리를 포함하는 디코드처리를 행하도록 하고 있다. 따라서, 디코드동작의 최초부터 디코드 블가능으로 되는 확률은 낮고, 디코드데이터를 단시간에 얻을 수 있다. 또, 디코드처리에 있어서의 에러정정의 염려가 적고, 신뢰성의 향상을 도모할 수 있다.
[코피보호코드]
다음에, 코피보호코드의 이용방법에 대하여 설명한다. 호스트콤퓨터(1)는, 디스크(5)로부터 독출되어, 버퍼메모리(2)에 기입되어 있는 코피보호코드 CP1를 읽고, 호스트콤퓨터(1) 자신이 내부 ROM에 가지는 코피보호코드 CP1와 비교한다. 독출된 데이터가 오리지날이 디스크이면, 코피보호코드 CP1는 일치하고, 호스트콤퓨터(1)에 전송되어 있는 소프트웨어에 의하여, 정상으로 실행한다.
그런데, 다른 디스크에 호스트콤퓨터(1)의 소프트웨어를 코피하는 경우, 콘트롤러(12)는 코피보호코드로서 본래의 CP1으로 바꾸어, 호스트콤퓨터(1)내의 더미의 코드, 예를 들면 CP2를 디스크에 입력하도록 동작한다. 이렇게하여 코피된 디스크의 소프트웨어는, 코피보호코드만이 CP2로 된 소프트웨어로 된다. 이 코피디스크를 독출하여 동작시키도록 하면, 버퍼메모리(2)의 코피보호코드는 CP2이고, 호스트콤퓨터(1)가 가지는 코피보호코드 CP1와 다르게 된다. 그래서, 호스트콤퓨터(1)는 코피디스크가 위법으로 코피된 것임을 검지하고, 정상의 동작을 금지할 수 있다.
이상의 구성에 의하면, 코피디시크는 통상의 행위로는 동작시킬 수 없다. 그러나, 미리 오리지날의 디스크를 독출했을 때, 버퍼메모리(2)에 기입된 코피보호코드 CP1를 알아 두고, 다음에 코피의 디시크로부터 데이터를 독출했을 대, 버퍼메모리(2)상의 코피보호코드 CP2를 외부로부터의 조작에 의하여, CP1에 재기입하여 버리면, 디스크가 코피임에도 불구하고, 호스트콤퓨터(1)로부터 코피보호코드를 액세스하면, CP1이 존재하므로, 버퍼메모리(2)의 소프트웨어는 실행가능으로 되어 버린다. 디스크제어부(10)에 대하여, 버퍼메모리(2)는 외부 부착이 있으므로, 이 사이의 버스에 메모리의 내용을 재기입하는 지그를 삽입하는 등 하여, 부분 재기입을 행할 수 있다.
그래서 1칩의 IC인 디스크제어부(10)내에, 레지스터를 배설한다. 이 레지스터는 코피보호데이터가 일시 기억할 수 있는 정도의 비교적 소용량으로 좋다. 콘트롤러(12)는 데이터열 또는 어드레스를 검지하여 두고, 코피보호코드부로 되면, 버퍼메모리(2)에의 데이터출력을 금지하고, 레지스터에의 기입동작을 행한다. 버퍼메모리(2)로부터 호스트콤퓨터(1)에의 데이터전송은 통상과 같이 행해진다. 실행에 있어서는, 호스트콤퓨터(1)가 코피보호코드를 요구하면, 콘트롤러(12)는 레지스터의 코피보호코드를 되돌린다.
이상과 같이, 오리지날의 디스크이면, 종래와 동작상 상이한 것은 없다.
코피의 디스크를 독출한 경우, 버퍼메모리(2)에는 데이터가, 레지스터에는 코피보호코드 CP2가 기입된다. 이 코피보호코드 CP2는 1칩화된 디스크제어부(10)에 있으므로, 외부로부터 재기입조작을 행하는 것은 불가능하다. 호스트콤퓨터(1)와 디스크제어부(10)와의 사이의 버스를 통하여, 코피보호데이터가 도난될 가능성은 있으나, 레지스터의 코피보호코드를 재기입할 수 없으므로, 코피의 디스크를 실행하는 것은 불가능하다.
Claims (1)
- 외부데이터기억매체를 가지는 타입의 데이터처리장치에 있어서, 마이크로프로그램 루틴으로서 실행될 일련의 소정의 명령을 나타내고, 호스트콤퓨터와 기억매체 사이에 데이터전송을 개시시키는 매크로코맨드명령을 발생하는 호스트콤퓨터와, 상기 호스트콤퓨터로부터의 매크로코맨드명령에 따라서, 상기 매크로코맨드명령에 의하여 결정된 각 세트의 마이크로프로그램 명령스텝을 발생하는 마이크로프로그램제어수단과, 상기 호스트콤퓨터로부터의 데이터를 기억하여 상기 기억매체상에 기록하고, 상기 기억매체로부터 재생된 데이터를 기억하여 상기 호스트콤퓨터에 공급하는 메모리수단과, 상기 메모리수단으로부터 공급된 데이터를 상기 기억매체상에 기록하고, 상기 기억매체상에 기억된 데이터를 재생하여 상기 메모리수단에 공급하는 기록재생수단과, 각 세트의 마이크로프로그램 명령스텝에 따라서, 상기 데이터를 상기 메모리수단에 및 이로부터의 공급을 제어하고, 상기 메모리수단내의 개시어드레스 및 전송될 데이터의 원하는 번호를 나타내는 제어데이터를 기억하는 제어데이터기억수단을 포함하는 메모리제어수단과로 이루어지고, 상기 메모리수단에 및 이로부터 전송될 데이터는, 상기 개시어드레스로부터 시작하여 전송될 상기 데이터의 번호에 대응하는 번호를 가지는 상기 메모리수단내의 어드레스에 각각 기억되고, 이로부터 검색되는 것을 특징으로 하는 데이터처리장치.
Applications Claiming Priority (17)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62-139122 | 1987-06-03 | ||
JP62139124A JPS63303421A (ja) | 1987-06-03 | 1987-06-03 | フロッピィ・ディスク装置 |
JP87-139122 | 1987-06-03 | ||
JP87-139124 | 1987-06-03 | ||
JP62-139124 | 1987-06-03 | ||
JP62139122A JPS63302628A (ja) | 1987-06-03 | 1987-06-03 | 誤り訂正方法 |
JP87-152123 | 1987-06-18 | ||
JP62152123A JP2650259B2 (ja) | 1987-06-18 | 1987-06-18 | ディスク駆動装置 |
JP62160530A JPS645120A (en) | 1987-06-27 | 1987-06-27 | Error correction coding/decoding method |
JP87-160530 | 1987-06-27 | ||
JP87-190789 | 1987-07-30 | ||
JP62190789A JP2508740B2 (ja) | 1987-07-30 | 1987-07-30 | ディスク駆動装置 |
JP87-201031 | 1987-08-13 | ||
JP62201031A JP2576523B2 (ja) | 1987-08-13 | 1987-08-13 | 外部記憶装置 |
JP62-201031 | 1987-08-13 | ||
JP87-221782 | 1987-09-04 | ||
JP62221782A JPS6464176A (en) | 1987-09-04 | 1987-09-04 | Data processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR890000974A KR890000974A (ko) | 1989-03-17 |
KR0120823B1 true KR0120823B1 (ko) | 1997-10-29 |
Family
ID=27566062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019880006685A KR0120823B1 (ko) | 1987-06-03 | 1988-06-03 | 데이터처리장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR0120823B1 (ko) |
-
1988
- 1988-06-03 KR KR1019880006685A patent/KR0120823B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR890000974A (ko) | 1989-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5848438A (en) | Memory mapping defect management technique for automatic track processing without ID field | |
JP3663377B2 (ja) | データ記憶装置、読み出しデータの処理装置および読み出しデータの処理方法 | |
US6025966A (en) | Defect management for automatic track processing without ID field | |
US7191382B2 (en) | Methods and apparatus for correcting data and error detection codes on the fly | |
US5740358A (en) | Defect management and split field processing in disk storage systems | |
US5548599A (en) | Method and apparatus for processing information data | |
US6687850B1 (en) | Disk drive for storing sector-reconstruction sectors and for storing a sector-reconstruction status in sectors distributed around a disk | |
US5603002A (en) | Hard disk drive having buffer memory employing directory based cache controller with data replacement scheme | |
US5287468A (en) | Method and apparatus for processing information data | |
US5570242A (en) | System for providing transparent storage of data embedded within predefined recording formats | |
JPH0642302B2 (ja) | デ−タ記憶装置 | |
KR100537577B1 (ko) | 스트리밍 오디오비주얼 데이터를 디스크 드라이브에기록하는 방법 | |
JP2002528839A (ja) | データ記憶装置のための書換え方法及び装置 | |
EP0879466A1 (en) | Defect management for automatic track processing without id field | |
TWI231419B (en) | Algebraic decoder and method for correcting an arbitrary mixture of burst and random errors | |
KR0120823B1 (ko) | 데이터처리장치 | |
CA1325282C (en) | Method and apparatus for processing information data | |
JP2600678B2 (ja) | デジタルデータの再生装置 | |
JP2650259B2 (ja) | ディスク駆動装置 | |
JP2508740B2 (ja) | ディスク駆動装置 | |
JP2650260B2 (ja) | ディスク駆動装置 | |
JPH04351764A (ja) | 磁気ディスク装置 | |
WO1998014939A1 (en) | Headerless formatted disk drive | |
JPS63302628A (ja) | 誤り訂正方法 | |
EP0929942A1 (en) | A method of data protection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20001017 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |