KR19980018215A - Video data processing method and device - Google Patents

Video data processing method and device Download PDF

Info

Publication number
KR19980018215A
KR19980018215A KR1019970034995A KR19970034995A KR19980018215A KR 19980018215 A KR19980018215 A KR 19980018215A KR 1019970034995 A KR1019970034995 A KR 1019970034995A KR 19970034995 A KR19970034995 A KR 19970034995A KR 19980018215 A KR19980018215 A KR 19980018215A
Authority
KR
South Korea
Prior art keywords
data
bit
address
register
arm7
Prior art date
Application number
KR1019970034995A
Other languages
Korean (ko)
Other versions
KR100262453B1 (en
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
Priority claimed from US08/699,382 external-priority patent/US6192073B1/en
Application filed by 윤종용, 삼성전자 주식회사 filed Critical 윤종용
Publication of KR19980018215A publication Critical patent/KR19980018215A/en
Application granted granted Critical
Publication of KR100262453B1 publication Critical patent/KR100262453B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/24Systems for the transmission of television signals using pulse code modulation

Abstract

컴퓨터 시스템은 동시에 동작할 수 있는 3개의 처리기, 즉 스칼라 처리기, 벡터 처리기 및 비트스트림 처리기를 포함한다. 비디오 데이터를 엔코딩 또는 디코딩함에 있어서, 벡터 처리기는 단일 명령 다중 데이터 처리기에 의해 효율적으로 수행될 수 있는 동작, 예를 들어 이산여현변환(DCT)과 움직임 보상을 수행한다.The computer system includes three processors capable of operating simultaneously, namely a scalar processor, a vector processor and a bitstream processor. In encoding or decoding video data, the vector processor performs operations that can be efficiently performed by a single instruction multiple data processor, for example discrete cosine transform (DCT) and motion compensation.

비트스트림 처리기는 허프만 및 RLC 엔코딩 또는 디코딩을 수행한다. 비트스트림 처리기는 컴퓨터 시스템이 여러개의 데이터 스트림을 동시에 처리하도록 문맥들을 절환할 수 있다. 스칼라 처리기 및 벡터 처리기는 단일 산술 또는 불 명령을 실행하도록 프로그램될 수 있다. 비트스트림 처리기는 단일 산술 또는 불 명령을 실행하도록 프로그램될 수는 없으나, 전체적인 비디오 데이터 처리 동작을 수행하기 위해서 프로그램될 수 있다.The bitstream processor performs Huffman and RLC encoding or decoding. The bitstream processor can switch contexts so that the computer system can process multiple data streams simultaneously. Scalar processors and vector processors can be programmed to execute a single arithmetic or boolean instruction. The bitstream processor may not be programmed to execute a single arithmetic or bool instruction, but may be programmed to perform an overall video data processing operation.

Description

비디오 데이터 처리방법 및 장치Video data processing method and device

본 발명은 컴퓨터에 의한 데이터 처리에 관한 것으로서, 특히 컴퓨터에 의한 비디오 데이터 처리에 관한 것이다.The present invention relates to data processing by a computer, and more particularly, to video data processing by a computer.

컴퓨터는 시스템 데이터를 압축하거나 복원하기 위하여 사용되어 왔다. 시스템 데이타에는 정지 및/또는 동화상의 이미지를 포함하는 비디오 데이터가 포함된다. 또한, 시스템 데이터에는 오디오 데이터, 예를 들어 동화상의 사운드 트랙이 포함될 수 있다. 비디오 데이터를 고속 처리할 수 있는 방법 및 회로를 제공하는 것이 바람직하다.Computers have been used to compress or restore system data. System data includes video data including images of still and / or moving images. In addition, the system data may include audio data, for example, a sound track of a moving picture. It is desirable to provide a method and circuit that can process video data at high speed.

따라서 본 발명의 목적은 비디오 데이터를 고속 처리할 수 있는 방법 및 회로를 제공하는 데 있다. 몇가지 실시예에 있어서, 본 발명에 의한 컴퓨터 시스템은 동시에 동작할 수 있는 3개의 처리기, 즉 스칼라 처리기, 벡터 처리기 및 비트 스트림 처리기를 포함한다. 비디오 데이터를 엔코딩 또는 디코딩함에 있어서, 벡터 처리기는 단일 명령 다중 데이터(Single Iinstruction Multiple Data:SIMD) 처리기에 의해 효율적으로 수행되는 동작을 수행한다. 이와 같은 동작으로는, 1) 이산여현변환(Discrete Cosine Transform:DCT)와 같은 선형 데이터 변환, 2) 움직임 보상이 있다. 비트스트림 처리기는 워드 또는 반워드(half-words) 보다 특정 비트상에서의 동작을 포함하는 동작들을 수행한다. 이와 같은 동작으로는 예를 들어 MPEG-1, MPEG-2, H.261 및 H.263에 사용되는 허프만(huffman) 및 RLC 엔코딩과 디코딩이 있다. 스칼라 처리기는 하이 레벨 비디오 처리(예를 들어, 픽쳐 레벨 처리)를 수행하고, 벡터 및 비트스트림 처리기의 동작을 동기화시키고, 외부 장치와의 인터페이스를 제어한다.Accordingly, an object of the present invention is to provide a method and a circuit capable of processing video data at high speed. In some embodiments, the computer system according to the present invention includes three processors capable of operating simultaneously, namely a scalar processor, a vector processor and a bit stream processor. In encoding or decoding video data, the vector processor performs an operation that is efficiently performed by a single instruction multiple data (SIMD) processor. Such operations include 1) linear data transformations such as Discrete Cosine Transform (DCT), and 2) motion compensation. The bitstream processor performs operations including operations on specific bits rather than words or half-words. Such operations include the Huffman and RLC encoding and decoding used for MPEG-1, MPEG-2, H.261 and H.263, for example. The scalar processor performs high level video processing (eg, picture level processing), synchronizes the operations of the vector and bitstream processors, and controls the interface with external devices.

몇가지 실시예에 있어서, 컴퓨터 시스템은 여러개의 데이터 스트림을 동시에 처리할 수 있다. 그 결과, 컴퓨터 시스템의 사용자는 2개 이상의 모임과 영상 회의를 할 수도 있다. 비트스트림 처리기에서는 여러 가지 비트스트림이 실시간적으로 동시에 엔코딩 또는 디코딩되도록 문맥들(contexts)을 절환할 수 있기 때문에 다중 데이터 스트림을 동시에 처리할 수 있다.In some embodiments, the computer system may process multiple data streams simultaneously. As a result, a user of a computer system may be able to video conference with two or more meetings. The bitstream processor can process multiple data streams simultaneously because the contexts can be switched so that different bitstreams can be encoded or decoded simultaneously in real time.

몇가지 실시예에 있어서, 스칼라 및 벡터 처리기는 각각 처리기가 단일 산술 명령 또는 불(boolean) 명령을 수행하도록 프로그램될 수 있다는 점에서 볼 때 프로그램가능하다. 비트스트림 처리기는 단일 산술 명령 또는 불(boolean) 명령을 수행하도록 프로그램될 수 없다는 점에서 볼 때 프로그램가능하지 않다. 오히려, 비트스트림 처리기는 한 세트의 비디오 데이터에 대하여 전체적인 비디오 데이터 처리동작을 수행하도록 프로그램될 수 있다. 비트스트림 처리기가 단일 산술 명령 또는 불 명령을 수행하기 위해 프로그램되지 않도록 함으로써, 비트스트림 처리기가 고속으로 동작할 수 있다. 스칼라 및 벡터 처리기가 프로그램 가능하도록 함으로써, 비디오 데이터 엔코딩 및 디코딩 표준에서 변형된 시스템을 채택하는 것이 용이하다.In some embodiments, scalar and vector processors are each programmable in the sense that the processor can be programmed to perform a single arithmetic or boolean instruction. Bitstream processors are not programmable in the sense that they cannot be programmed to perform a single arithmetic or boolean instruction. Rather, the bitstream processor may be programmed to perform an overall video data processing operation on a set of video data. By not allowing the bitstream processor to be programmed to perform a single arithmetic or Boolean instruction, the bitstream processor can operate at high speed. By making the scalar and vector processor programmable, it is easy to adopt a system modified from the video data encoding and decoding standard.

도 1은 본 발명에 따른 미디어 카드의 블록도.1 is a block diagram of a media card according to the present invention.

도 2는 본 발명에 따른 멀티미디어 처리기의 블록도.2 is a block diagram of a multimedia processor in accordance with the present invention.

도 3은 도 2에 도시된 처리기의 일부인 비트스트림 처리기의 블록도.3 is a block diagram of a bitstream processor that is part of the processor shown in FIG.

도 4 내지 도 6은 본 발명에 따른 컴퓨터 시스템의 블록도.4-6 are block diagrams of computer systems in accordance with the present invention.

도 7은 도 2에 도식된 처리기의 펌웨어 구조를 나타내는 도면.7 is a diagram showing the firmware structure of the processor illustrated in FIG.

도 8 및 도 9는 도 1의 시스템을 위한 어드레스 맵을 보여주는 도면.8 and 9 show address maps for the system of FIG.

도 10은 도 2에 도시된 처리기의 DSP 코아를 나타내는 블록도.FIG. 10 is a block diagram illustrating a DSP core of the processor shown in FIG. 2. FIG.

도 11은 도 2에 도시된 처리기의 일부인 벡터 처리기에 적용된 파이프라인을 나타내는 도면.FIG. 11 illustrates a pipeline applied to a vector processor that is part of the processor shown in FIG.

도 12는 도 11의 벡터 처리기의 기능적인 블록도.12 is a functional block diagram of the vector processor of FIG.

도 13은 도 11의 벡터 처리기에 있어서 실행 데이터 경로를 나타내는 도면.FIG. 13 is a diagram showing an execution data path in the vector processor of FIG. 11; FIG.

도 14는 도 11의 벡터 처리기에 있어서 로드 및 저장 데이터 경로를 나타내는 도면.14 illustrates load and store data paths in the vector processor of FIG.

도 15는 도 2의 처리기의 캐쉬 시스템의 블록도.15 is a block diagram of a cache system of the processor of FIG.

도 16은 도 15의 캐쉬 시스템에 있어서의 명령 데이터 캐쉬를 나타내는 도면.FIG. 16 is a diagram illustrating an instruction data cache in the cache system of FIG. 15. FIG.

도 17은 도 2의 처리기에 있어서 캐쉬 제어 유니트의 데이터 경로 파이프 라인을 나타내는 도면.FIG. 17 illustrates the data path pipeline of the cache control unit in the processor of FIG. 2; FIG.

도 18은 도 2에 도시된 시스템에 있어서 캐쉬 제어 유니트의 어드레스 처리 파이프라인을 위한 데이터 경로를 나타내는 도면.FIG. 18 illustrates a data path for an address processing pipeline of a cache control unit in the system shown in FIG. 2; FIG.

도 19 내지 도 22는 도 2의 처리기에 있어서 스테이트 머쉰을 나타내는 도면.19 to 22 show state machines in the processor of FIG.

도 23은 도 15의 캐쉬 시스템에서 사용된 어드레스 포맷을 나타내는 도면.FIG. 23 illustrates an address format used in the cache system of FIG. 15. FIG.

도 24는 도 2의 처리기에 있어서 버스를 나타내는 도면.FIG. 24 shows a bus in the processor of FIG. 2; FIG.

도 25는 도 2의 처리기에 있어서 중재 제어 유니트를 나타내는 도면.25 illustrates an arbitration control unit in the processor of FIG. 2;

도 26 내지 도 29는 도 2의 처리기에 대한 타임이도.26-29 are time diagrams for the processor of FIG.

도 30 내지 도 32는 도 2의 처리기에 있어서 메모리 리퀘스트 신호를 나타내는 도면.30 to 32 illustrate memory request signals in the processor of FIG.

도 33은 도 2의 처리기에 있어서 버스 중재 제어 유니트를 나타내는 도면.FIG. 33 shows a bus arbitration control unit in the processor of FIG. 2; FIG.

도 34 내지 도 36은 도 2의 처리기에 대한 타이밍도.34-36 are timing diagrams for the processor of FIG.

도 37 및 도 38은 도 2의 처리기에 있어서 버스 인터페이스 회로를 나타내는 도면.37 and 38 show bus interface circuits in the processor of FIG.

도 39 및 도 40은 도 1의 시스템에 대한 가상 프레임 버퍼(VFB)를 나타내는 도면.39 and 40 illustrate a virtual frame buffer (VFB) for the system of FIG.

도 41은 도 1의 시스템에 대한 버스 인터페이스 회로를 나타내는 도면.FIG. 41 illustrates a bus interface circuit for the system of FIG. 1. FIG.

도 42 및 도 43은 도 2의 시스템에 대한 메모리 콘트로러를 나타내는 도면.42 and 43 illustrate a memory controller for the system of FIG.

도 44는 도 2의 시스템에 대한 어드레스 콘트롤러를 나타내는 도면.FIG. 44 illustrates an address controller for the system of FIG.

도 45 및 도 46은 도 1의 시스템에 사용되는 포맷들을 나타내는 도면.45 and 46 illustrate formats used in the system of FIG.

도 47은 도 1의 시스템에 있어서 스테이트 머쉰을 나타내는 도면.FIG. 47 illustrates a state machine in the system of FIG. 1; FIG.

도 48은 도 1의 시스템에 대한 데이터 콘트롤러의 블록도.48 is a block diagram of a data controller for the system of FIG.

도 49 내지 도51은 도 1의 시스템에 대한 타이밍도.49-51 are timing diagrams for the system of FIG.

도 52 및 도 53은 도 2의 처리기에 있어서 장치 인터페이스 회로를 나타내는 도면.52 and 53 illustrate device interface circuits in the processor of FIG. 2;

도 54 내지 도 56은 도 1의 시스템의 각 부에 대한 블록도.54-56 are block diagrams of parts of the system of FIG. 1;

도 57 내지 도 59는 도 1의 시스템에 있어서 레지스터들을 나타내는 도면.57-59 illustrate registers in the system of FIG.

도 60은 도 1의 시스템에 있어서 프레임 버퍼 및 비디오 윈도우를 나타내는 도면.60 illustrates a frame buffer and a video window in the system of FIG.

도 61은 도 1의 시스템에 대한 타이밍도.FIG. 61 is a timing diagram for the system of FIG. 1. FIG.

도 62는 도 1의 시스템에 있어서 레지스터를 나타내는 도면.FIG. 62 illustrates a register in the system of FIG. 1; FIG.

도 63은 도 1의 시스템에 대한 타이밍도.63 is a timing diagram for the system of FIG.

도 64 내지 도 66은 도 1의 시스템에서 사용되는 버퍼들을 나타내는 도면.64-66 illustrate buffers used in the system of FIG.

도 1은 멀티미디어 처리기(110)를 포함하는 미디어 카드(100)를 나타낸 것이다. 실시예에 있어서, 멀티미디어 처리기(110)는 그 사양이 캘리포니아 산호세에 있는 삼성 반도체 주식회사에서 만들어지는 타입 MSP-1EX(상표) 처리기이다. 처리기 MSP-1EX는 아래에 있는 블록 A에 기술되어 있다.1 illustrates a media card 100 that includes a multimedia processor 110. In an embodiment, the multimedia processor 110 is a type MSP-1EX ™ processor whose specifications are made by Samsung Semiconductor, Inc., San Jose, CA. Processor MSP-1EX is described in block A below.

처리기(110)는 로컬 버스(105)를 통해 호스트 컴퓨터 시스템(도시안됨)과 통신한다. 몇가지 실시예에 있어서, 버스(105)는 32비트, 33MHz PCI 버스이다.Processor 110 communicates with a host computer system (not shown) via local bus 105. In some embodiments, bus 105 is a 32-bit, 33 MHz PCI bus.

처리기(110)로부터 출력되는 디지탈 비디오 데이터는 D/A(디지탈/아날로그) 변환기(112)에 결합된다. 비디오 부분 뿐만 아니라, 디지탈 비이오 데이터는 오디오 부분, 예를 들어 영화의 사운드 트랙을 포함할 수 있다. 변환기(112)의 출력은 아날로그 데이터를 처리하는 TV 세트(도시안됨) 또는 다른 시스템에 결합될 수 있다.Digital video data output from the processor 110 is coupled to the D / A (digital / analog) converter 112. In addition to the video portion, the digital video data may comprise an audio portion, for example a sound track of a movie. The output of converter 112 may be coupled to a TV set (not shown) or other system that processes analog data.

몇가지 실시예에 있어서, 처리기(110)는 A/D(아날로그/디지탈) 변환기(도 4 내지 6 참조)로 ㅂ터 출력되는 디지탈 비디오 데이터를 수신하기 위한 입력 포트를 포함한다.In some embodiments, processor 110 includes an input port for receiving digital video data output to an A / D (analog / digital) converter (see FIGS. 4-6).

처리기(110)는 코덱(114)에 연결된다. 코덱(114)은 테이프 레코더(도시안됨) 또는 다른 장치로 부터 아날로그 오디오 데이터를 수신한다. 코덱(114)은 전화선(도시안됨)으로 부터 아날로그 전화 데이터를 수신한다. 코덱(114)은 아날로그 데이터를 디지탈화한 후, 이를 처리기(10)로 전송한다. 코덱(114)은 처리기(110)로 부터 디지탈 데이터를 수신하여, 이들 데이터를 아날로그 형태로 변환하고, 필요에 따라 이 아날로그 데이터를 전송한다.Processor 110 is coupled to codec 114. Codec 114 receives analog audio data from a tape recorder (not shown) or other device. Codec 114 receives analog telephone data from a telephone line (not shown). The codec 114 digitizes the analog data and then transmits it to the processor 10. The codec 114 receives digital data from the processor 110, converts these data into an analog form, and transmits the analog data as necessary.

처리기(110)는 버스(122)에 의해 메모리(120)에 연결된다. 도 1에 있어서, 메모리(120)는 SDRAM(synchronous DRAM)이고, 버스(122)는 64비트, 89MHz 버스이다. 다른 실시예에서는 다른 메모리, 버스 폭, 및 버스 속도가 사용된다. 비동기 메모리 및 버스들이 몇가지 실시예에 사용된다.Processor 110 is connected to memory 120 by bus 122. In FIG. 1, memory 120 is an synchronous DRAM (SDRAM), and bus 122 is a 64-bit, 89 MHz bus. In other embodiments, different memories, bus widths, and bus speeds are used. Asynchronous memory and buses are used in some embodiments.

카드(100)의 몇가지 실시예는 르 누옌을 출원인으로 하여 본출원과 동일자로 출원된 Multiprocessor Operation in a Multimedia Signal Processor라는 발명의 명칭을 갖는 미합중국 특허출원 명세서(변리사 참조번호:M-4364 US)를 기재되어 있으며, 상기 미합중국 특허출원 명세서의 전체적인 내용은 본 발명에서 참조로 인용된다.Some embodiments of the card 100 are described in the United States Patent Application Specification (Mat. The entire contents of these US patent applications are incorporated herein by reference.

도 2는 처리기(110)의 일실시예에 따른 블록도이다. 처리기(110)은 스칼라 처리기(210), 벡터 처리기(VP;220) 및 비트스트림 처리기(BP; 245)를 포함한다. 몇가지 실시예에 있어서, 처리기(210)는 40MHz로 동작하며, 공지된 표준 ARM7 명령어 세트를 지원하는 32비트 RISC 처리기이다. 벡터 처리기(220)는 80MHz로 동작하며, 288 비트 벡터 레지스터들을 구비한 단일 명령 다중 데이터(SIMD) 처리기이다. VP(220)의 일실시예는 송 등을 출원인으로 하여 본출원과 동일자로 출원된 Efficient Context Saving and Restoring in a Multitasking Computing System Environment라는 발명의 명칭을 갖는 미합중국 특허출원 명세서(변리사 참조 번호:M-4365 US)에 기재되어 있으며, 상기 미합중국 특허출원 명세서의 전체적인 내용은 본 발명에서 참조로 인용된다. 처리기(210,220)는 단일 산술 명령 또는 불 명령 또는 이들 명령의 시퀀스를 수행하도록 프로그램될 수 있다.2 is a block diagram of an embodiment of a processor 110. The processor 110 includes a scalar processor 210, a vector processor (VP) 220, and a bitstream processor (BP) 245. In some embodiments, processor 210 is a 32-bit RISC processor that operates at 40 MHz and supports the known standard ARM7 instruction set. Vector processor 220 operates at 80 MHz and is a single instruction multiple data (SIMD) processor with 288 bit vector registers. One embodiment of VP 220 is a United States patent application specification (patent reference: M-) filed with the same applicant as Song, et al. 4365 US), the entire contents of which are incorporated herein by reference. Processors 210 and 220 may be programmed to perform a single arithmetic instruction or bool instruction or a sequence of these instructions.

몇가지 실시예에 있어서, 비디오 데이터를 고속으로 행하기 위해서 비트스트림 처리기(245)는 단일 산출 명령 또는 불 명령을 수행하기 위해 프록램되지 않도록 설계된다. 특히, BP(245)는, ADD, OR, ADD AND ACCUMULATE등과 같은 단일 명령을 수행하도록 프로그램될 수 없다. 오히려, BP(245)는 부록 A의 10장에 기술되어 있는 비디오 데이터 처리 동작을 수행하도록 프로그램된다. 이와 동시에, 스칼라 처리기(210)와 벡터 처리기(20)는 단일 산술 또는 불 명령을 수행하도록 프로그램될 수 있다. 그러므로, 처리기(110)는 비디오 표준에서 변형을 도모할 수 있다.In some embodiments, to perform video data at high speed, the bitstream processor 245 is designed not to be programmed to perform a single compute command or a Boolean command. In particular, the BP 245 cannot be programmed to perform a single command, such as ADD, OR, ADD AND ACCUMULATE. Rather, the BP 245 is programmed to perform the video data processing operations described in Chapter 10 of Appendix A. At the same time, scalar processor 210 and vector processor 20 may be programmed to perform a single arithmetic or boolean instruction. Therefore, processor 110 can make modifications in the video standard.

도 2에 도시된 바와 같이, 스칼라 처리기(210)과 벡터 처리기(220)는 캐쉬 서브시스템(230)에 연결된다. 캐쉬 서브시스템(230)은 버스(IOBUS;240)와 버스(FBUS;250)에 연결된다. 몇가지 실시예에 있어서, IOBUS(240)는 32비트, 40MHz 버스이고, FBUS(250)는 64 비트, 80MHz 버스이다.As shown in FIG. 2, scalar processor 210 and vector processor 220 are coupled to cache subsystem 230. Cache subsystem 230 is coupled to bus (IOBUS) 240 and bus (FBUS) 250. In some embodiments, IOBUS 240 is a 32-bit, 40 MHz bus and FBUS 250 is a 64-bit, 80 MHz bus.

IOBUS(240)는 비트스트림 처리기(245), 인터럽트 콘트롤러(248), 전 2중 통신(full-duplex) UART 유니트(243)과 4개의 타이머(242)에 연결된다. FBUS(250)는 메모리 버스(122; 도 1 참조)에 연결된 메모리 콘트롤러(258)에 연결된다. FBUS(250)는 PCI 버스(105)에 연결된 PCI 버스 인터페이스 회로(255)에 연결된다. 또한, FBUS(250)는 비디오 D/A(112;도 1 참조), 코덱(114)과 경우에 따라 비디오 A/D 변환기(도 4 내지 도 6에 도시된 것과 같음)를 인터페이스하는 회로를 포함하는 장치 인터페이스 회로(252;Customer ASIC으로도 불리워짐)에 연결된다. 또한, 처리기(110)는 메모리 데이터 이동기(290)를 포함한다.IOBUS 240 is coupled to bitstream processor 245, interrupt controller 248, full-duplex UART unit 243, and four timers 242. FBUS 250 is coupled to a memory controller 258 coupled to the memory bus 122 (see FIG. 1). FBUS 250 is coupled to PCI bus interface circuit 255 coupled to PCI bus 105. The FBUS 250 also includes circuitry to interface the video D / A 112 (see FIG. 1), the codec 114, and optionally the video A / D converter (such as shown in FIGS. 4-6). Device interface circuitry (also called Customer ASIC). The processor 110 also includes a memory data mover 290.

처리기(110)는 여러개의 데이터 스트림을 동시에 처리할 수 있다. 예를 들어, 처리기(110)의 사용자가 2개 이상의 모임과 영상 회의를 하는 경우, 처리기(110)는 사용자가 여러 개의 모임에 대해 보고 들을 수 있도록 비디오 및 오디오 처리를 수행한다. 다중 비디오 데이터 스트림을 처리하기 위해서 처리기(110)는 문맥 절환을 지원한다. 이는 BP(245)가 다중 데이터 스트림들 사이를 절환하는 것을 의미한다. 영상 회의에 있어서, 각 데이터 스트림은 멀리 떨어져 있는 별개의 모임으로 부터 올 수 있다. 대안으로, 사용자가 영상 회의에 첨가하여 동시에 영상 회의 또는 영화 상영을 시청할 수 있도록 하기 위하여 부가적인 데이터 스트림이 영화 채널로 부터 올 수 있다. 문백 절환은 부록 A의 10.12절에 기술되어 있다. 문맥이 절환되면, 스칼라 처리기(210)는 현재 문맥들을 저장하고, 다른 문맥을 처리하기 위하여 BP(245)를 초기화시킨다.Processor 110 may process multiple data streams simultaneously. For example, when a user of the processor 110 has a video conference with two or more meetings, the processor 110 performs video and audio processing so that the user can view and hear several meetings. To process multiple video data streams, processor 110 supports context switching. This means that the BP 245 switches between multiple data streams. In video conferencing, each data stream may come from a separate meeting at a distance. Alternatively, additional data streams may come from the movie channel to allow the user to add to the video conference and watch the video conference or movie show at the same time. The grammar switching is described in Annex A, section 10.12. Once the context is switched, the scalar processor 210 stores the current contexts and initializes the BP 245 to process other contexts.

BP(245)는 다음과 같은 비디오 데이터 포맷 즉,The BP 245 is a video data format as follows.

1. ISO/IEC 표준 11172(1992) 에 기술되어 있는 MPEG-1;1. MPEG-1 as described in ISO / IEC Standard 11172 (1992);

2. 문서 ISO/IEC JTC 1/SC 29 N 0981 Rev(1995. 3. 31)에 기술되어 있는 MPEG-2;2. MPEG-2 as described in document ISO / IEC JTC 1 / SC 29 N 0981 Rev (March 31, 1995);

3. IUT-T 권고 H.261(1993. 3)에 기술되어 있는 H.261; 및3. H.261 described in IUT-T Recommendation H.261 (1993. 3); And

4.드래프트 IT-T 권고 H.263(1996. 5. 2)에 기술되어 있는 H.263을 처리할 수 있다.4. Can deal with H.263 as described in draft IT-T Recommendation H.263 (May 2, 1996).

비디오 데이터는 스칼라 처리기(210), 벡터 처리기(220) 및 비트스트림 처리기(245)로 나누어져 처리됨으로써 고속 처리가 실현되도록 한다. 좀더 상세하게는, 벡터 처리기(220)는 선형 변환(DCT 또는 역DCT)과 움직임 보상을 수행한다.The video data is divided into a scalar processor 210, a vector processor 220, and a bitstream processor 245 so as to realize high speed processing. More specifically, the vector processor 220 performs linear transformation (DCT or inverse DCT) and motion compensation.

이들 동작은 벡터 처리기에 적합하다. 왜냐하면, 이들 동작은 때때로 데이터의 여러 부분에 대하여 수행되는 동일한 명령을 필요로 하기 때문이다. 비트스트림 처리기(245)는 허프만 디코딩 및 엔코딩과 지그재그 비트스트림 처리를 수행한다.These operations are suitable for vector processors. This is because these operations sometimes require the same instructions to be performed on different parts of the data. The bitstream processor 245 performs Huffman decoding and encoding and zigzag bitstream processing.

스칼라 처리기(210)는 비디오 및 오디오 역다중화와 동기화 및 I/O 인터페이싱 작업을 수행한다.The scalar processor 210 performs video and audio demultiplexing, synchronization, and I / O interfacing.

엔코딩 및 디코딩 동작의 예는 부록 A의 10.6.1절 및 10.6.2절에 나타나 있다. 엔코딩 동작에 있어서, 압축되지 않은 디지탈 데이터가 버스(105)를 통해 프레임 메모리(120) 또는 호스트 시스템(도시안됨)으로 부터 도착한다. 몇가지 실시예에 있어서, 장치 인터페이스 회로(252)는 비디오 A/D 변환기를 포함하고, 압축되지 않은 데이터가 변환기로 부터 도착한다. 벡터 처리기(220)는 양자화, DCT 및 움직임 보상을 수행한다. 비트스트림 처리기(245)는 VP(220)의 출력을 수신하고, GOB(Group of Blocks)들 및 슬라이스들을 생성한다. 특히, BP(245)는 허프만 및 RLC 엔코딩과 지그재그 비트스트림 처리를 수행한다. 스칼라 처리기(210)는 BP(245)의 출력을 수신하고, 픽쳐 계층 부호화(picture layer coding), GOP(group of pictures) 부호화 및 시퀀스 계층 부호화를 수행한다. 이후, 스칼라 처리기(210)는 오디오 및 비디오 데이터를 다중화하고, 부호화된 데이터를 버스(105 또는 122)를 통해 저장 장치 또는 네트워크로 전송한다. 네트워크로의 전송은 몇가지 실시예에 있는 네트워크에 연결된 장치 인터페이스 회로(252)로의 전송을 포함한다.Examples of encoding and decoding operations are given in Sections 10.6.1 and 10.6.2 of Appendix A. In an encoding operation, uncompressed digital data arrives from the frame memory 120 or host system (not shown) via the bus 105. In some embodiments, device interface circuitry 252 includes a video A / D converter, and uncompressed data arrives from the converter. The vector processor 220 performs quantization, DCT, and motion compensation. Bitstream processor 245 receives the output of VP 220 and generates GOBs (Groups of Blocks) and slices. In particular, BP 245 performs Huffman and RLC encoding and zigzag bitstream processing. The scalar processor 210 receives the output of the BP 245 and performs picture layer coding, group of pictures (GOP) coding, and sequence layer coding. The scalar processor 210 then multiplexes the audio and video data and transmits the encoded data via the bus 105 or 122 to a storage device or network. Transmission to the network includes transmission to device interface circuit 252 connected to the network in some embodiments.

디코딩에 있어서, 처리는 역으로 수행한다. 스칼라 처리기(210)는 시스템 데이터를 비디오 및 오디오 성분으로 역다중화하고, 비디오 데이터의 시퀀스 계층, GOP 및 픽쳐 계층 디코딩을 수행한다. 그 결과 생성되는 GOB들 또는 슬라이스들은 비트스트림 처리기(245)로 공급된다. 처리기(245)는 지그재그 처리와 허프만 및 RLC 디코딩을 수행한다. VP(220)는 BP(245)의 출력을 수신하여 역양자화, IDCT 및 움직임 보상을 수행하다. VP(220)는 필요로 하는 경우(예를 들어, 픽쳐 이미지의 에지를 평탄화하고자 하는 경우) 임의의 전처리를 수행하고, 복원된 디지탈 픽쳐들을 장치 인터페이스 회로(252) 또는 저장 장치로 공급한다. 스칼라 처리기(210), 벡터 처리기(220)와 비트스트림 처리기(245)는 여러 블록의 데이터에 대하여 병렬로 동작할 수 있다.In decoding, the process is performed in reverse. The scalar processor 210 demultiplexes system data into video and audio components, and performs sequence layer, GOP, and picture layer decoding of the video data. The resulting GOBs or slices are fed to bitstream processor 245. Processor 245 performs zigzag processing and Huffman and RLC decoding. VP 220 receives the output of BP 245 to perform dequantization, IDCT, and motion compensation. The VP 220 performs any preprocessing if necessary (eg, to planarize the edges of the picture image) and supplies the reconstructed digital pictures to the device interface circuit 252 or the storage device. The scalar processor 210, the vector processor 220, and the bitstream processor 245 may operate in parallel with data of several blocks.

스칼라 처리기(210)가 픽쳐 계층 및 상위 계층들을 처리함으로써, 처리기 내부의 통신을 감소시킨다. 이는 픽쳐 계층 및 상위 게층들이 제어 및 I/O 기능을 위해 스칼라 처리기(210)에서는 사용되지만, 벡터 처리기(220) 및 비트스트림 처리기(245)에서는 사용되지 않는 정보를 포함하고 있기 때문이다. 이와 같은 정보의 예로는 프레임들을 장치 인터페이스 회로(252)로 전송하기 위해 스칼라 처리기(210)에서 사용되는 프레임 레이트를 들 수 있다.The scalar processor 210 processes the picture layer and higher layers, thereby reducing communication within the processor. This is because the picture layer and higher layers contain information that is used by the scalar processor 210 for control and I / O functionality, but not used by the vector processor 220 and the bitstream processor 245. An example of such information is the frame rate used in the scalar processor 210 to send the frames to the device interface circuit 252.

도 3은 비트스트림 처리기(245)의 일실시예에 따른 블록도이다. 도 3에 도시된 신호들은 브록 A의 10.5절에 기술되어 있다. 이들 신호들은 비트스트림 처리기(245)와 IOBUS(240; 도 2 참조)간의 인터페이스를 제공한다. BP(245)에 있어서, 이들 신호들은 SRAM(320)을 포함하는 IOBUS 인터페이스 유니트(310)에 의해 처리된다. 또한, BP(245)는 VLC FIFO 유니트(330), VLC LUT ROM(340), 제어 스테이트 머쉰(350)과, 레지스터 파일과 SRAM을 포함하는 BP 코아 유니트(360)을 포함한다. 도 3의 블록은 부록 A의 10.4절에 기술되어 있다.3 is a block diagram of an embodiment of the bitstream processor 245. The signals shown in FIG. 3 are described in Section 10.5 of Block A. These signals provide an interface between bitstream processor 245 and IOBUS 240 (see FIG. 2). In the BP 245, these signals are processed by the IOBUS interface unit 310, which includes the SRAM 320. The BP 245 also includes a VLC FIFO unit 330, a VLC LUT ROM 340, a control state machine 350, and a BP core unit 360 including a register file and an SRAM. The block of FIG. 3 is described in section 10.4 of Appendix A. FIG.

ROM(340)은 4가지 표준 즉, MPEG-1, MPEG-2, H.261 및 H.263에 대하여 허프만 엔코딩 및 디코딩시 사용되는 룩업테이블을 포함한다. 테이블에 저장되는 정보의 양이 방대함에도 불구하고, ROM(340)은 768*12 비트의 작은 사이즈를 가진다.ROM 340 includes a lookup table used for Huffman encoding and decoding for four standards, namely MPEG-1, MPEG-2, H.261 and H.263. Despite the vast amount of information stored in the table, ROM 340 has a small size of 768 * 12 bits.

작은 사이즈는 테이블을 공유하고, 부록, A의 4절에 기술되어 있는 다른 기술들에 의해 실현된다.The small size is shared by the table and is realized by the other techniques described in section 4 of the Appendix.

본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 본 발명이 그에 한정되는 것은 아니고 이하의 특허청구의 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 게조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다. 특히, 본 발명은 임의의 회로, 클럭 게이트 또는 이들 실시예의 타이밍에 의해 한정되는 것은 아니다.While the present invention has been illustrated and described with reference to certain preferred embodiments, the invention is not limited thereto, and the invention is not limited to the spirit or field of the invention as set forth in the following claims. Those skilled in the art will readily appreciate that various modifications and variations can be made. In particular, the invention is not limited by any circuit, clock gate, or timing of these embodiments.

상술한 바와 같이 본 발명에 따르면, 비트스트림 처리기에서는 여러 가지 비트스트림이 실시간적으로 동시에 엔코딩 또는 디코딩되도록 문맥을 절환할 수 있기 때문에 다중 데이터 스트림을 동시에 처리할 수 있다. 또한, 비트스트림 처리기가 단일 산술 명령 또는 불 명령을 수행하기 위해 프로그램되지 않도록 함으로써 비트스트림 처리가 고속으로 동작할 수 있다.As described above, according to the present invention, the bitstream processor can process multiple data streams simultaneously because the context can be switched so that various bitstreams can be encoded or decoded simultaneously in real time. In addition, bitstream processing can operate at high speed by not allowing the bitstream processor to be programmed to perform a single arithmetic or bool instruction.

Claims (6)

비디오 데이터를 엔코딩 또는 디코딩하기 위한 시스템에 있어서,A system for encoding or decoding video data, the system comprising: 비디오 데이터에 대하여 선형 변환을 수행하는 벡터 처리기,A vector processor for performing linear transformation on video data, 상기 벡터 처리기의 출력을 압축하거나, 상기 벡터 처리기로 입력하기 위하여 비디오 데이터를 복원하는 비트스트림 처리기, 및A bitstream processor for compressing the output of the vector processor or restoring video data for input to the vector processor, and 상기 벡터 처리기와 상기 비트스트림 처리기의 동작을 동기화시키는 제어 회로를 포함하며;Control circuitry for synchronizing operations of the vector processor and the bitstream processor; 상기 비트스트림 처리기는 하나의 비디오 데이터 스트림에 대한 처리를 중지하고 다른 비디오 데이터 스트림에 대한 처리를 개시하도록 상기 제어 회로에 의해 인터럽트되어, 상기 시스템이 두 개의 비디오 데이터 스트림을 실시간적으로 엔코딩 또는 디코딩할 수 있도록 상기 비트스트림 처리기가 두 개의 비디오 데이터 스트림을 거의 동시에 처리할 수 있음을 특징으로 하는 비디오 데이터 엔코딩 또는 디코딩 시스템.The bitstream processor is interrupted by the control circuitry to stop processing for one video data stream and to start processing for another video data stream so that the system can encode or decode the two video data streams in real time. And the bitstream processor is capable of processing two video data streams at about the same time. 제1항에 있어서,The method of claim 1, 상기 각 비디오 데이터 스트림은 동화상을 나타내는 것을 특징으로 하는 비디오 데이터 엔코딩 또는 디코딩 시스템.And wherein each video data stream represents a moving picture. 비디오 데이터를 엔코딩 도는 디코디하기 위한 시스템에 있어서,A system for encoding or decoding video data, the system comprising: 비디오 데이터에 대하여 선형 변환을 수행하는 벡터 처리기, 및A vector processor for performing linear transformation on video data, and 상기 벡터 처리기의 출력을 압축하거나, 상기 벡터 처리기로 입력하기 위하여 비디오 데이터를 복원하는 비트스트림 처리기를 포함하며;A bitstream processor for compressing the output of the vector processor or for reconstructing video data for input to the vector processor; 상기 벡터 처리기는 단일 산술 또는 불 명령을 실행할 수 있도록 프로그램될 수 있고, 상기 비트스트림 처리기는 단일 산술 또는 불 명령을 실행할 수 있도록 프로그램될 수 없음을 특징으로 하는 비디오 데이터 엔코딩 또는 디코딩 시스템.The vector processor may be programmed to execute a single arithmetic or boolean instruction, and the bitstream processor may not be programmed to execute a single arithmetic or boolean instruction. 비디오 데이터를 엔코딩 또는 디코딩하기 위한 방법에 있어서,A method for encoding or decoding video data, the method comprising: 비디오 데이터에 대하여 선형 변환을 수행하는 벡터 처리기, 및 상기 벡터 처리기의 출력을 압축하거나, 상기 벡터 처리기로 입력하기 위하여 비디오 데이터를 복원하는 비트스트림 처리기를 포함하며;A vector processor for performing linear transformation on the video data, and a bitstream processor for compressing the output of the vector processor or reconstructing the video data for input to the vector processor; 상기 벡터 처리기는 단일 산술 또는 불 명령을 실행할 수 있도록 프로그램될 수 있고, 상기 비트스트림 처리기는 단일 산술 또는 불 명령을 실행할 수 있도록 프로그램될 수 없음을 특징으로 하는 비디오 데이터 엔코딩 또는 디코딩 방법.The vector processor may be programmed to execute a single arithmetic or boolean instruction, and the bitstream processor may not be programmed to execute a single arithmetic or boolean instruction. 제4항에 있어서,The method of claim 4, wherein 상기 각 비디오 데이터 스트림은 동화상을 나타내는 것을 특징으로 하는 비디오 데이터 엔코딩 또는 디코딩방법.Wherein each video data stream represents a moving picture. 비디오 데이터를 엔코딩 또는 디코딩하기 위한 방법에 있어서,A method for encoding or decoding video data, the method comprising: 비디오 데이터에 대하여 선형 변환을 수행하는 벡터 처리기, 및A vector processor for performing linear transformation on video data, and 상기 벡터 처리기의 출력을 압축하거나 상기 벡터 처리기로 입력하기 위하여 비디오 데이터를 복원하는 비트스트림 처리기를 포함하며;A bitstream processor for reconstructing video data for compressing or inputting the output of the vector processor to the vector processor; 상기 벡터 처리기는 단일 산술 또는 불 명령을 실행할 수 있도록 프로그램될 수 있고, 상기 비트스트림 처리기는 단일 산술 또는 불 명령을 실행할 수 있도록 프로그램될 수 없음을 특징으로 하는 비디오 데이터 엔코딩 또는 디코딩 방법.The vector processor may be programmed to execute a single arithmetic or boolean instruction, and the bitstream processor may not be programmed to execute a single arithmetic or boolean instruction. [부록 A]Appendix A MSP-1EX 시스템 사양MSP-1EX System Specifications 제1장 기술적인 개요Chapter 1 Technical Overview 이 장은 하드웨어 및 소프트웨어 설계자가 보여 주는 멀티미디어 신호처리기(MSP-x)의 기술적인 개요를 설명한다.This chapter provides a technical overview of the multimedia signal processor (MSP-x) presented by hardware and software designers. 1.1 기능1.1 Features 멀티미디어 신호처리기(MSP-x)는 퍼스널 컴퓨터 및 주문자 제품 응용을 위한 광범위한 직접된 기능을 제공하기 위하여 일군의 단일 칩 VLSI 장치들을 형성하다.Multimedia Signal Processors (MSP-x) form a group of single-chip VLSI devices to provide a wide range of direct functionality for personal computer and custom product applications. MSP군은 최적의 비용/성능을 위해 계산된 대한 단일 명령 다중 데이타(SIMD) 모델을 적용하는 강력한 벡터 처리기 구조에 근거를 둔 것이다. 그 특성은 다음과 같다.The MSP family is based on a robust vector processor architecture that applies a single instruction multiple data (SIMD) model for computed for optimal cost / performance. Its characteristics are as follows. * 완전한 프로그램 가능성* Full programmability * ARM 명령어 세트 구조에 기초를 둠* Based on the ARM instruction set structure * 직접된 40MHz ARM7 RISC CPU 코아* Directly 40MHz ARM7 RISC CPU Core * 고성능 디지탈 신호 처리를 위한 80MHz 벡터 처리기* 80MHz vector processor for high performance digital signal processing * 9 비트 정수 ALU 동작을 위한 2.56 Gops2.56 Gops for 9-bit integer ALU operation * 16 비트 정수 승산-누적 동작을 위한 2.56 Gops16-bit integer multiplication-2.56 Gops for cumulative operation * 32 비트 IEEE 플로팅 포인트 가산을 위한 640 Mflops* 640 Mflops for 32-bit IEEE floating point addition * 32 비트 IEEE 플로팅 포인트 승산 가산을 위한 1280 Mflops* 1280 Mflops for 32-bit IEEE floating point multiplication * 선택적인 주문형화 또는 그래픽스 기능을 위한 미사용의 10KgatesUnused 10Kgates for optional customization or graphics capabilities * 0.65μm 3.3v/5c CMOS 기술에 기초를 둠* Based on 0.65μm 3.3v / 5c CMOS technology * 128 핀-128 핀 캐키지* 128 pin-128 pin cage MSP는 초기에 4개의 주요 기능을 지원한다.The MSP initially supports four main functions. * 비디오* video * 오디오/사운드* Audio / Sound * 원거리 통신Telecommunication * 2D/3D 그래픽스(선택)* 2D / 3D graphics (optional) 1.1.1 비디오1.1.1 Video * 모든 기능이 펌웨어에서 프로그램가능하다.* All functions are programmable in the firmware. * 실시간 MPEG-1 디코딩 및 엔코딩Real-time MPEG-1 decoding and encoding * 실시간 MPEG-2 디코딩* Real time MPEG-2 decoding * 거의 실시간적인 MPEG-2 엔코딩Near real time MPEG-2 encoding * 실시간 H.324 디코딩 및 엔코딩* Real-time H.324 decoding and encoding * 임의의 스크린 사이즈 또는 해상도에 대한 이미지 스케일링* Image scaling for any screen size or resolution * RGB와 YUV간의 색공간 변환* Color space conversion between RGB and YUV * 픽쳐 윤곽강조 및 잡음 감소를 위한 이미지 필터링Image filtering for picture contour enhancement and noise reduction * 4/3 풀다운 변환4/3 pulldown conversion 1.1.2 오디오/사운드1.1.2 Audio / Sound * 모든 기능이 펌웨어에서 프로그램가능하다.* All functions are programmable in the firmware. * 실시간 MPEG-1 오디오 디코딩 및 엔코딩Real-time MPEG-1 audio decoding and encoding * 실시간 MPEG-2 오디오 디코딩 및 엔코딩Real-time MPEG-2 audio decoding and encoding * 실시간 H.320 및 H.324 오디오 디코딩 및 엔코딩* Real-time H.320 and H.324 audio decoding and encoding * 실시간 G.728 및 G.723 음성 코딩* Real-time G.728 and G.723 voice coding * 실시간 사운드블라스터 에뮬레이션* Realtime Sound Blaster Emulation * 웨이브테이블 합성Wavetable Synthesis * FM 합성* FM synthesis 1.1.3 원거리 통신1.1.3 Telecommunication 1.1.3.1 모뎀1.1.3.1 Modem * 표준 비동기 COM 포트 인터페이스(NS 16550A UART 호환가능)Standard asynchronous COM port interface (NS 16550A UART compatible) * 28.8K로붙 2.4 Kbps까지의 V.34* V.34 up to 2.4 Kbps with 28.8K * 4800, 9600 무부호화 및 9600 bps 트렐리스 부호화에 대한 데이타 레이트를 갖는 CCITT-V.32bisCCITT-V.32bis with data rates for 4800, 9600 unsigned and 9600 bps trellis coding * Hayes AT 명령어 세트 호환성Hayes AT instruction set compatibility * 호출 진행 모니터* Call progress monitor * V.25bis 오토다이얼* V.25bis auto dial * DTMF 및 펄스 다이얼링DTMF and pulse dialing * 비동기 에러 복구 프로토콜* Asynchronous error recovery protocol * V.42 에러 정정* V.42 error correction 1.1.3.2 팩시밀리1.1.3.2 fax * 9600 bps 또는 7200 bps의 V.29* V.29 at 9600 bps or 7200 bps * 4800 bps 또는 2400 bps V.27* 4800 bps or 2400 bps V.27 * 호출 진행 모니터* Call progress monitor * DTMF 및 펄스 다이얼링DTMF and pulse dialing * G3 트랜스퍼들* G3 transfers * T.4/T.30 동작* T.4 / T.30 operation 1.1.3.3. 전화 응답1.1.3.3. Answering a call * 전화기 세트 또는 마이크로폰을 통해 인사말 녹음* Record greetings via phone set or microphone * 수신된 전화에 대해 자동 응답하여 미리 녹음된 메세지 응신* Respond to pre-recorded messages by automatically answering incoming calls * 전화를 건 사람으로 부터 메시지 녹음* Record message from caller * 전화를 건 사람이 남긴 메시지 재생* Play message left by caller 1.1.4 2D/3D 그래피스(선택)1.1.4 2D / 3D graphics (optional) * BITBLT* BITBLT * 2D 라인 폴리곤 드로잉 및 쉐이딩2D line polygon drawing and shading * 3D 포인트, 라인 및 삼각형에 대한 지오메트리 채광 계산* Geometry mining calculations for 3D points, lines, and triangles * 텍스쳐 매핑으로 3D 칼라 계산* 3D color calculation with texture mapping * 블렌딩Blending 1.2 하드웨어 구조1.2 Hardware Structure 1.2.1 개요1.2.1 Overview MSP-1 멀티미디어 코프로세서 군은 집적도 레벨, 비용 및 성능을 포함하는 여러가지 요구사항을 만족시키도록 설계한다. MSP-1 처리기를 포함하는 블록도는 도 4에 나타나 있다.The MSP-1 family of multimedia coprocessors is designed to meet a variety of requirements, including density levels, cost, and performance. A block diagram that includes an MSP-1 processor is shown in FIG. MSP-1 군은 다음과 같은 핀-아웃 옵션을 포함한다.The MSP-1 family includes the following pin-out options. * MSP-1은 외부 SDARM을 사용하지 않고 엔트리-레벨로 사용되도록 설계된다.MSP-1 is designed to be used entry-level without the use of an external SDARM. * MSP-1EX은 외부 SDRAM과 인터페이싱을 위한 32비트 베모리를 포함한다.* MSP-1EX includes 32-bit memory for interfacing with external SDRAM. * MSP-1F는 외부 SDRAM과 인터페이싱을 위한 64비트 메모리를 포함한다.The MSP-1F includes 64-bit memory for interfacing with external SDRAM. * MSP-1G는 집적된 SVGA 콘트롤러, 고속화된 3D 그래피스 가속이 부가된 RAMDAC을 포함한다.MSP-1G includes an integrated SVGA controller, RAMDAC with added 3D graphics acceleration. 도 5는 MSP-1E 처리기를 포함하는 시스템의 블록도이다.5 is a block diagram of a system including an MSP-1E processor. 1.2.2 외부 코덱1.2.2 External Codec 도 6은 외부 코덱과 함께 MPS-1 처리기를 포함하는 시스템의 블록도이다.6 is a block diagram of a system including an MPS-1 processor with an external codec. 1.2.2.1 MPS-1EX의 재료 목록1.2.2.1 MPS-1EX Material List 다음은 MSP-1EX에 대하여 제시된 재료 목록이다.The following is a list of materials presented for MSP-1EX. * MSP-1EX* MSP-1EX * 512K × 32 비트 동기 DRAM* 512K × 32 bit synchronous DRAM * NTSC/PAL 엔코더(삼성의 KS0119)* NTSC / PAL encoder (Samsung KS0119) * 오디오 원거리통신 코덱(아날로그 디바이스사의 AD1843)Audio telecommunication codec (AD1843 from Analog Devices) * 기타(캐패시터들, 저항들, 증폭기들, 콘넥터들, 등)Other (capacitors, resistors, amplifiers, connectors, etc.) * 프린트된 회로기판* Printed circuit board 1.3 마이크로 구조1.3 micro structure 1.3.1 개요1.3.1 Overview 기본적으로 MSP 마이크로 구조는 매우 강력한 DSP 코아와 주문자에 의해 규정된 메모리 I/O 서비시스템으로 구성된다.(도 2 참조) DSP 코아는 다음을 포함한다.Basically, the MSP microstructure consists of a very powerful DSP core and a memory I / O service system defined by the customer (see Figure 2). The DSP core includes the following. * 40MHz로 동작하고 일반적인 처리를 위해 사용되는 32비트 ARM7 RISC CPU32-bit ARM7 RISC CPU operating at 40 MHz and used for general processing * 80MHz 동작하고 신호 처리를 위해 사용되는 벡터 처리기* A vector processor that operates at 80 MHz and is used for signal processing * 80MHz러 동작하고, 2KB 명령 캐쉬, 5KB 데이타 캐쉬 및 16KB ROM 캐쉬를 가지는 공유된 캐쉬 서브시스템. 데이타 캐쉬는 하드웨어 또는 소프트웨어에 의해 제어될 수 있다.A shared cache subsystem that operates at 80 MHz and has 2 KB instruction cache, 5 KB data cache, and 16 KB ROM cache. The data cache can be controlled by hardware or software. * 80MHz로 동작하고 내부의 많은 FBUS 주변기기와 인터페이스하는 고속 64 비트 버스(FBUS)High speed 64-bit bus (FBUS) operating at 80MHz and interfacing with many internal FBUS peripherals * 40MHz로 동작하고 많은 IOBUS 주변기기와 인터페이스하는 저속의 32 비트 버스(IOBUS)Low speed 32-bit bus (IOBUS) operating at 40 MHz and interfacing with many IOBUS peripherals 내부의 FBUS 주변기기는 다음을 포함한다.Internal FBUS peripherals include: * 32 비트 33MHz PCI 버스 인터페이스32-bit 33 MHz PCI bus interface * 64 비트 SDRAM 메모리 콘트롤러* 64-bit SDRAM memory controller * 8채널 DMA 콘트롤러8-channel DMA controller * 주문자 ASIC 로직 블록, 주문자 ASIC 로직 블록은 여러가지 아날로그 코덱에 대한 인터페이스들과 주문자가 규정한 I/O 장치들을 포함하는 총 10Kgates를 제공한다. 인터페이스 로직은 삼성의 KS0119 NTSC 엔코더 및 아날로그 디바이스사의 AD1843 코덱을 지원한다.Custom ASIC Logic Blocks, Custom ASIC Logic Blocks provide a total of 10 Kgates including interfaces to various analog codecs and custom I / O devices. Interface logic supports Samsung's KS0119 NTSC encoder and AD1843 codec from Analog Devices. * 호스트(Pentlure) 메모리로부터 MSP 로컬 SDRAM 메모리까지 데이타를 DMA 하는데 사용되는 메모리 데이타 이동기* Memory data mover used to DMA data from Pentlure memory to MSP local SDRAM memory * 비디오 비트스트림을 처리하는 비트스트림 처리기Bitstream processor that processes video bitstreams * 16450 UART 시리얼 라인* 16450 UART Serial Line * 8254-호환가능한 타이머8254-compatible timer * 8259-호환가능한 인터럽트 콘트롤러8259-compatible interrupt controller 또한, MSP는 소프트웨어로 제어되는 초기화 인터럽트를 위해 사용되는 특수한 레지스터(MPS 제어 레지스터)를 포함한다.The MSP also contains special registers (MPS control registers) used for software controlled initialization interrupts. 1.4 MSP-1EX 핀 설명1.4 MSP-1EX Pin Description 1.4.1 총:256핀1.4.1 total: 256-pin 1.4.2 PCI 버스 인터페이스(53 핀)1.4.2 PCI bus interface (53 pins) CLK클럭 입력 핀CLK clock input pin RSTL입력 핀 리셋, 액티브 로우RSTL Input Pin Reset, Active Low AD[31:0]어드레스 및 데이타 버스 핀AD [31: 0] address and data bus pins C_BE0L콘트롤 바이트 0 인에이블 핀, 액티브 로우C_BE0LControl Byte 0 Enable Pin, Active Low C_BE1L콘트롤 바이트 1 인에이블 핀, 액티브 로우C_BE1LControl Byte 1 Enable Pin, Active Low C_BE2L콘트롤 바이트 2 인에이블 핀, 액티브 로우C_BE2LControl Byte 2 Enable Pin, Active Low C_BE3L콘트롤 바이트 3 인에이블 핀, 액티브 로우C_BE3LControl Byte 3 Enable Pin, Active Low PAR패리티 핀PAR parity pin FRAMEL사이클 프레임 핀, 액티브 로우FRAMEL cycle frame pin, active low IRDYL개시자 준비 핀, 액티브 로우IRDYL initiator ready pin, active low TRDYL타겟 준비 핀, 액티브 로우TRDYL Target Ready Pin, Active Low STOPL정지 처리 핀, 액티브 로우STOPL stop processing pin, active low LOCKL락 처리 핀, 액티브 로우LOCKL-locked pin, active low IDSEL초기화 장치 선택 입력 핀IDSEL initiator select input pin DEVSEL장치 선택 핀, 액티브 로우DEVSEL device selection pin, active low REQL버스 요청 핀, 액티브 로우REQL Bus Request Pin, Active Low GNTL버스 승인 핀, 액티브 로우GNTL Bus Approved Pins, Active Low PERRL패리티 에러 핀, 액티브 로우PERRL parity error pin, active low SERRL시스템 에러 핀, 액티브 로우SERRL System Error Pin, Active Low INTAL인터랍트 핀, 액티브 로우INTAL Interrupt Pin, Active-Low 1.4.3 기타(6핀)1.4.3 Others (6-pin) TCKJTAG 테스트 클럭 입력 핀TCKJTAG test clock input pin TDIJTAG 테스트 데이타 입력 핀TDIJTAG test data input pin TD0JTAG 테스트 데이타 출력 핀TD0JTAG test data output pin TMSJTAG 테스트 모드 선택 입력 핀TMSJTAG test mode select input pin TRSTLJTAG 테스트 리셋 입력 핀TRSTLJTAG test reset input pin CLK클럭 입력, 이는 40MHz 클럭 입력 핀이다.CLK clock input, which is a 40MHz clock input pin. 1.4.4 KS0119 NTSC/PAL 엔코더 인터페이스(24핀)1.4.4 KS0119 NTSC / PAL Encoder Interface (24-pin) SFRS3와이어 호스트 인터페이스를 위하여 KS0119로 출력되는 프레임 동기Frame Synchronization Output to KS0119 for SFRS3 Wire Host Interface SCLKKS0119로 출력되는 시리얼 클럭Serial Clock Output to SCLKKS0119 SDAT시리얼 데이타 I/OSDAT Serial Data I / O BGHSMSP에 입력되는 수평동기신호Horizontal sync signal input to BGHSMSP BGVSMSP에 입력되는 수직동기신호Vertical Synchronization Signal Input to BGVSMSP MSSEL마스터 선택MSSEL Master Selection PD[15:0]KS0119로 출력되는 픽셀 데이타Pixel data output to PD [15: 0] KS0119 BGCLKKS0119로 출력되는 픽셀 클럭Pixel clock output to BGCLKKS0119 PROMCSLBIOS PROM 칩 선택PROMCSLBIOS PROM Chip Selection 1.4.5 AD1843 오디오 원거리통신 코덱 인터페이스(6핀)1.4.5 AD1843 Audio Telecommunication Codec Interface (6-Pin) A43SCLK시리얼 클럭 입/출력. SCLK는 버스 마스터(BM) 핀이 HI로 구동될 경우 클럭을 시리얼 버스에 대한 출력으로 공급하고, BM 핀이 LO로 구동될 경우 클럭을 입력으로 받아들이는 양방향 신호이다.A43SCLK Serial clock input / output. SCLK is a bidirectional signal that feeds the clock as an output to the serial bus when the bus master (BM) pin is driven to HI and accepts the clock as an input when the BM pin is driven to LO. A43SDFS시리얼 데이타 프레임 동기 입/출력. SDFS는 버스 마스터(BM) 핀이 HI로 구동될 경우 프레임 동기신호를 시리얼 버스에 대한 출력으로 공급하고, BM 핀이 LO로 구동될 경우 프레임 동기신호를 입력으로 받아들이는 양방향 신호이다.A43SDFS Serial data frame synchronous input / output. SDFS is a bidirectional signal that feeds the frame sync signal as an output to the serial bus when the bus master (BM) pin is driven to HI, and accepts the frame sync signal as an input when the BM pin is driven to LO. A43SDI MSP로 부터 출력되는, AD1843에 대한 시리얼 데이타 데이타 입력 핀. 모든 제어 및 재생 트랜스퍼들은 16비트 길이 MSB이다.Serial data data input pin to AD1843, output from A43SDI MSP. All control and playback transfers are 16-bit long MSBs. A43SD0AD1843로 부터 출력되는 MSP로 입력되는 시리얼 데이타 출력 핀. 모든 스페이스 제어 레지스터 독출 및 재생 트랜스퍼들은 16비트 길이 MSB 이다.Serial data output pin to MSP output from A43SD0AD1843. All space control register read and play transfers are 16-bit long MSBs. 1.4.6 메모리 버스 인터페이스(87핀)1.4.6 Memory Bus Interface (87-pin) RAS1L출력 핀(액티브 로우). 이는 MA[11:0]으로 부터의 로우 어드레스를 선택된 SDRAM 뱅크의 내부 로우 어드레스 버프로 래치하는 로우 어드레스 스트로브이다.RAS1L output pin (active low). This is a row address strobe that latches the row address from MA [11: 0] into the internal row address buff of the selected SDRAM bank. CAS 1L출력 핀(액티브 로우). 이는 MA[11:0]으로 부터의 칼럼 어드레스를 선택된 SDRAM 뱅크의 내부 칼럼 어드레스 버퍼로 래치하는 로우 어드레스 스트로브이다.CAS 1L output pin (active low). This is a row address strobe that latches the column address from MA [11: 0] into the internal column address buffer of the selected SDRAM bank. MWEL출력 핀(액티브 로우). 이는 SDRAM에 대한 기입 인에이블이다.MWEL output pin (active low). This is a write enable for SDRAM. MAI[11:0]출력 핀. SDRAM에 대하여 다중화된 로우 및 칼럼 어드레스 신호.MAI [11: 0] output pins. Multiplexed row and column address signals for SDRAM. MD[63:0]입/출력 SDRAM 데이타 핀MD [63: 0] in / out SDRAM data pin MA23출력 핀. 메모리 어드레스 비트23MA23 output pin. Memory Address Bits 23 MA24출력 핀. 메모리 어드레스 비트24MA24 output pin. Memory Address Bits 24 DQM출력 핀. 클럭 이후 SDRAM 데이타를 하이 임피던스로 만들고, 출력을 마스크시킨다.(이 핀은 동기 DRAM 인터페이스를 위해서만 사용된다.)DQM output pin. Makes the SDRAM data high impedance after the clock and masks the output (this pin is used only for the synchronous DRAM interface). MCKE 출력 핀. 다음 클럭 사이클에서 부터 동작을 중지시키기 위해 SDRAM의 시스템 클럭을 마스크시킨다.MCKE output pin. Mask the SDRAM's system clock to stop operation from the next clock cycle. MCS0L출력 핀(액티브 로우), 하위 32 비트에 대한 SDRAM 칩 선택MCS0L Output Pin (Active Low), Selecting SDRAM Chip for Lower 32 Bits MCS1L출력 핀(액티브 로우). 상위 32 비트에 대한 SDRAM 칩 선택MCS1L output pin (active low). SDRAM chip selection for the top 32 bits MR. DYH출력 핀. SDRAM 준비 신호.MR. DYH output pin. SDRAM ready signal. MEMCLK출력 핀. 이는 SDRAM에 대한 클럭 출력 핀이다.MEMCLK output pin. This is the clock output pin for SDRAM. 1.4.7 전원1.4.7 Power VDD3.3 볼트 전원 핀VDD3.3V power pin VCC5 볼트 전원 핀VCC5 volt power pin VSS접지 핀VSS Ground Pin [테이블 1][Table 1] MSP-1EX 핀 지정MSP-1EX Pin Assignments 1.5 펌웨어 구조1.5 Firmware Structure 1.5.1 개요1.5.1 Overview MSP는 벡터화된 DSP 펌웨어 라이브러리(벡터 처리기에서 실행됨)들의 매우 최적화된 결합 및 시스템 관리 기능(ARM7에 의해 실행)을 통해 강력하고 개방적인 응용환경을 많이 제공한다.MSP provides a powerful and open application environment through the highly optimized combination of vectorized DSP firmware libraries (running on the vector processor) and system management functions (running by ARM7). MSP는 신호 처리 개발과 호스트 응용 개발을 분리함으로써, 스케일러블 성능, 비용 효과적인 멀티미디오 통신, 사용하기 편리함 및 다루기 쉬움을 제공한다. 또한, 응용 개발과 유지 비용을 감소시킨다.MSP separates signal processing development from host application development, providing scalable performance, cost-effective multimedia communications, ease of use, and ease of handling. It also reduces application development and maintenance costs. 1.5.2 펌웨어 구조1.5.2 Firmware Structure MSP 펌웨어 시스템 구조는 도 7에 도시된 바와 같다. 음영이 진 영역은 MSP 시스템 요소를 나타내고, 나머지 여백은 내재하는 PC 응용 및 동작 시스템을 나타낸다.The MSP firmware system structure is as shown in FIG. The shaded areas represent MSP system elements and the remaining margins represent the underlying PC application and operating system. 1.5.2.1 MOSA(멀티미디어 동작 시스템 구조)1.5.2.1 MOSA (Multimedia Operation System Architecture) MSP의 실시간 동작 시스템 커널은 MOSA라 하며, 이는 마이크로소프트의 실시간 커널 MMOSA의 서브세트이다.The MSP's real-time operating system kernel is called MOSA, which is a subset of Microsoft's real-time kernel MMOSA. MOSA는 실시간적이고, 튼튼하고, 멀티태스킹이 가능하고, 선매권이 있는 동작 시스템으로서, MSP상에서 구현된 멀티미디오 응용을 위해 활용된다. 이는 다음과 같은 주요 기능들을 수행한다.MOSA is a real-time, robust, multitasking, preemptive operating system that is used for multimedia applications implemented on MSP. It performs the following main functions: * 호스트 윈도우 95와 윈도우즈 NT와의 인터테이싱Interfacing Host Windows 95 and Windows NT * 호스트로부터 선택된 응용 펌웨어의 다운 로딩* Downloading of selected application firmware from the host * ARM7 및 벡터처리기에서 수행하기 위해 MSP 태스크의 스케쥴링* Scheduling MSP tasks for execution in ARM7 and vector processors * 메모리 I/O 장치를 포함하는 모든 MSP 시스템 자원의 관리* Management of all MSP system resources, including memory I / O devices * MSP 태스크들간의 통신의 동기화Synchronization of communication between MSP tasks * MSP 관련된 인터럽트, 예외 및 스테이터스 조건들의 리포팅* Reporting of MSP related interrupts, exceptions and status conditions MOSA는 ARM7 상에서 배타적으로 동작한다.MOSA runs exclusively on ARM7. 좀 더 상세한 것은 MMOSA 실시간 커널 사양을 참조하기로 한다.See the MMOSA real-time kernel specification for more details. 1.5.2.2 멀티미디어 라이브러리 모듈1.5.2.2 Multimedia Library Module 멀티미디어 라이브러리 모듈은 데이타 압축, MPEG 비디오 오디오, 음성 코딩 및 합성, 사운드블라스터 호환가능한 오디오 등과 같은 기능을 수행하는 보드범위의 모듈들을 제공한다. 각 모듈은 MSP 환경으로 최적화되고, 멀티태스킹 환경에서 수행하도록 설계된다.The multimedia library module provides board-wide modules that perform functions such as data compression, MPEG video audio, voice coding and synthesis, and Sound Blaster compatible audio. Each module is optimized for an MSP environment and designed to run in a multitasking environment. 1.5.3 텔레콤 라이브러리1.5.3 Telecom Library 1.5.3.1 개요1.5.3.1 Overview 적절한 DSP 펌웨어와 함께, MSP는 인터셉트되는 음성 응용을 지원하고, 걸려오는 전화 호출에 응답하고, 하드디스크 상에 메시지를 저장하도록 사용될 수 있다. 또한, 시스템 스피커는 반 2중(half-duplex) 스피커 폰을 서비스하기 위하여 마이크로폰을 사용할 수 있다. 걸려오는 전화 및 거는 전화의 진행이 감지되어 시스템에서 사용된다. 또한, 전화 진행 톤은 프로그램 제어하에 선택된 전화기의 송수화기, 시스템 스피커, 스테레오 헤드폰 또는 오디오 출력 채널들을 통해 들을 수 있다.With appropriate DSP firmware, the MSP can be used to support intercepted voice applications, to answer incoming phone calls, and to store messages on the hard disk. In addition, the system speaker may use a microphone to service a half-duplex speaker phone. Incoming and outgoing calls are detected and used by the system. In addition, the call progress tone can be heard through the handset, system speaker, stereo headphones or audio output channels of the selected telephone under program control. 1.6 프로그래밍 모델1.6 Programming Model 1.6.1 개요1.6.1 Overview 하드웨어 관점에서 볼 때, MSP는 두 개의 CPU와 많은 집적된 주변장치들을 포함하는 단일 칩 해결안이다. 소프트웨어 관점에서 볼 때, MSP는 PCI 버스상에 존재하는 고성능 디지탈 신호 처리(DSP) 장치이다.From a hardware point of view, MSP is a single-chip solution that includes two CPUs and many integrated peripherals. From a software perspective, the MSP is a high performance digital signal processing (DSP) device that resides on the PCI bus. 호스트 CPU에 의한 MSP의 제어는 다음 중 어느 하나에 의해 실현될 수 있다.Control of the MSP by the host CPU can be realized by any of the following. * PCI 버스를 통해 MSP 제어 스테이터스 레지스터들의 기입 독출, 또는Write-read of MSP control status registers via PCI bus, or * 호스트 시스템 메모리에 존재하는 공유된 데이타 구조Shared data structures present in host system memory * MSP 로컬 메모리에 존재하는 공유된 데이타 구조* Shared data structures in MSP local memory MSP 프로그램 수행은 항상 ARM7 CPU로 시작하며, 이는 순차적으로 벡터 처리기에 있는 제2 종속적인 실행 스트림을 초기화시킬 수 있다. ARM7 CPU와 벡터 처리기 사이의 제어 동기화는 ARM7에 있는 임의의 코프로세서 명령(STARTVP, INTVP, TESTVP)과, 벡터 처리기에서의 특수한 명령(VJOIN, VINT)에 의해 수행된다. ARM7 CPU와 벡터 처리기 사이의 데이타 전송은 ARM7에서 실행되는 데이타 이동 명령에 의해 수행될 수 있다.MSP program execution always starts with an ARM7 CPU, which in turn can initialize a second dependent execution stream in the vector processor. Control synchronization between the ARM7 CPU and the vector processor is performed by arbitrary coprocessor instructions (STARTVP, INTVP, TESTVP) in ARM7 and special instructions (VJOIN, VINT) in the vector processor. Data transfer between the ARM7 CPU and the vector processor can be performed by a data movement instruction executed in ARM7. ARM7 CPU는 일반적으로 대부분의 인터럽트 예외 처리 뿐만 아니라, 호스트 인터페이스, 자원 관리, I/O 장치 처리를 담당한다. 벡터 처리기는 모든 디지탈 신호 처리 및 코프로세서 인터럽트(ARM7에서 벡터 처리기로 발생됨)와 하드웨어 스택 오버플로우(벡터 처리기에서)와 같은 임의의 특수한 인터럽트를 담당한다.The ARM7 CPU is generally responsible for handling most interrupt exceptions, as well as host interface, resource management, and I / O device processing. The vector processor is responsible for all the digital signal processing and any special interrupts such as coprocessor interrupts (which occur in the vector processor in ARM7) and hardware stack overflows (in the vector processor). 또한, MSP는 여러가지 I/O 장치에 대하여 인터페이싱하기 위하여 집적된 주변기기를 많이 포함한다. 모든 주변 장치들의 어드레스는 메모리 맵핑되고, 따라서 표준 메모리 로드 저장 명령(ARM7 CPU 또는 벡터 처리기 중 하나에 의해)으로 억세스 될 수 있다.In addition, MSP includes many integrated peripherals for interfacing to various I / O devices. The addresses of all peripheral devices are memory mapped and thus can be accessed with standard memory load storage instructions (either by the ARM7 CPU or the vector processor). 1.6.2 전원 인가, 리셋 초기화1.6.2 Power On, Reset Reset 전원이 인가된 후, MSP는 기능을 정확히 확인하기 위하여 자동으로 셀프-테스트 시퀀스로 들어간다. 셀프-테스트 시퀀스는 다음을 포함한다.After power is applied, the MSP automatically enters a self-test sequence to verify correct functionality. Self-test sequences include the following. * 모든 내부 MSP 레지스터의 초기화Initialization of all internal MSP registers * MSP의 모든 요소를 확인하기 위하여 반도체 칩의 셀프-테스트 진단 수행Perform self-test diagnostics of semiconductor chips to identify all elements of MSP 그리고, 셀프-테스트 시퀀스는 tds 초 근처까지 지속될 것으로 예상된다. 셀프-테스트 시퀀스의 끝에서, MSP는 다음을 포함하는 MSP 펌웨이를 수행할 준비를 한다.And the self-test sequence is expected to last near tds seconds. At the end of the self-test sequence, the MSP prepares to perform the MSP firmware, which includes: * MSP의 초기화 소프트웨어의 로딩 및 실행* Load and run MSP initialization software * MSP의 실시간 동작 시스템 커널 MMOSA의 로딩 및 실행* Loading and running MSP's real-time operating system kernel MMOSA MSP는 다음의 3가지 종류의 리셋을 지원한다.MSP supports three types of reset: * PCI 버스에 의한 하드웨어 제어 시스템 리셋* Hardware control system reset by PCI bus * MSP 제어 레지스터에 있는 PCI 시스템 리셋 비트에 의한 소프트웨어 제어시스템 리셋* Software control system reset by PCI system reset bit in MSP control register * MSP 제어 레지스터에 있는 벡터 재개시 비트에 의한 소프트웨어 제어 재개시(restart)* Restart software control by the vector resume bit in the MSP control register. 1.6.3 PCI 배열 레지스터들1.6.3 PCI Array Registers PCI 버스에 대한 I/O 장치로서, MSP는 PCI Rev 2.1에 정의되며 테이블 2에 나타나 있는 한 세트의 배치 레지스터를 포함한다.As an I / O device for the PCI bus, the MSP is defined in PCI Rev 2.1 and contains a set of placement registers shown in Table 2. [테이블 2][Table 2] PCI 배열 레지스터들PCI array registers 1.6.3.1 장치 벤더 식별자 레지스터1.6.3.1 Device Vendor Identifier Register 좀 더 상세한 것은 PCI 버스 사양 Rev 2.1 참조.See PCI Bus Specification Rev 2.1 for more details. 1.6.3.2 스테이터스 커맨드 레지스터1.6.3.2 Status Command Register 좀 더 상세한 것은 PCI 버스 사양 Rev 2.1 참조.See PCI Bus Specification Rev 2.1 for more details. 1.6.3.3 클래스 코드 교정 식별자 레지스터1.6.3.3 Class Code Calibration Identifier Register 좀 더 상세한 것은 PCI 버스 사양 Rev 2.1 참조.See PCI Bus Specification Rev 2.1 for more details. MSP-1EX에 대해, 클래스 코드는 03으로 정의되고, 서브 클래스는 0이다.For MSP-1EX, the class code is defined as 03 and the subclass is zero. 1.6.3.4 기타 레지스터1.6.3.4 Other Registers 좀 더 상세한 것은 PCI 버스 사양 Rev 2.1 참조.See PCI Bus Specification Rev 2.1 for more details. 1.6.3.5 MSP 베이스 어드레스 레지스터(MSP BASE)1.6.3.5 MSP Base Address Register (MSP BASE) 이 레지스터는 MSP 장치를 위한 베이스 어드레스를 저장한다. 이 어드레스는 호스트 시스템 소프트웨어(Windows 95/NT)에 의해 기입되고, MSP 하드웨어에서 사용되어 메모리를 어드레싱한다.This register stores the base address for the MSP device. This address is written by the host system software (Windows 95 / NT) and used by the MSP hardware to address the memory. 1.6.3.6 VFB 베이스 어드레스 레지스터1.6.3.6 VFB Base Address Register 이 레지스터는 VGA 가상 프레임 버퍼를 위한 베이스 어드레스를 저장한다. 이 어드레스는 호스트 시스템 소프트웨어(Windows 95/NT)에 의해 기입되고, MSP 하드웨어에서 사용되어 VGA 프레임 버퍼를 에뮬레이션한다.This register stores the base address for the VGA virtual frame buffer. This address is written by the host system software (Windows 95 / NT) and used in MSP hardware to emulate the VGA frame buffer. 1.6.3.7 확장 ROM 베이스 어드레스1.6.3.7 Extended ROM Base Address 좀 더 상세한 것은 PCI 버스 사양 Rev 2.1 참조.See PCI Bus Specification Rev 2.1 for more details. 1.6.3.8 인터럽트 라인 레지스터1.6.3.8 Interrupt Line Register 좀 더 상세한 것은 PCI 버스 사양 Rev 2.1 참조.See PCI Bus Specification Rev 2.1 for more details. 1.6.4 ARM7 CPU1.6.4 ARM7 CPUs ARM7 RISC CPU는 MSP의 마스터 처리기로서, 32비트 데이타 경로를 포함하며 표준 ARM7 명령 세트 구조로 이루어진다. 또한, ARM7은 벡터처리기와 인터페이스하기 위해 특수한 코프로세서 명령을 포함한다.The ARM7 RISC CPU is the master processor of the MSP. It contains a 32-bit data path and consists of a standard ARM7 instruction set structure. ARM7 also includes special coprocessor instructions for interfacing with vector processors. 1.6.5 벡터 처리기1.6.5 Vector Processor 벡터 처리기는 MSP의 DSP 엔진으로서, 288 비트 데이타 경로를 포함하며, ARM7에 대해 코프로세서로 동작한다. 이러한 기능은 벡터 처리기 구조 문서에 기술되어 있다.The vector processor is the DSP engine of MSP, which includes a 288-bit data path and acts as a coprocessor for ARM7. These functions are described in the vector processor architecture document. 벡터 처리기(220)는 80MHz로 동작하며, 6 스테이지의 파이프라인 즉, 페치(fetch), 디코딩(decode), 유출인(issuer), 레지스터 억세스(register access), 실행(execute) 및 기입(write)을 포함한다. 이는 DSP 관련 처리를 위해 최적화된다.The vector processor 220 operates at 80 MHz and operates in six stages of pipeline: fetch, decode, issuer, register access, execute and write. It includes. It is optimized for DSP related processing. 1.6.6 가상 메모리 관리1.6.6 Virtual Memory Management MSP-1EX는 가상 메모리 관리를 지원하지 않는다.The MSP-1EX does not support virtual memory management. 1.6.7 인터럽트 실행 처리1.6.7 Interrupt Execution Processing MSP에서 인터럽트 실행 처리는 대부분 ARM7에 의해 행해진다.Most interrupt execution processing in the MSP is done by ARM7. 내부의 모든 입/출력 장치 인터럽트들은 내부의 8254 인터럽트 콘트롤러로 들어가서, 이들간의 우선순위를 결정하여 가장 높은 우선순위의 인터럽트를 다음 처리를 위해 ARM7로 보낸다.All internal I / O device interrupts enter the internal 8254 interrupt controller, determine the priority between them, and send the highest priority interrupt to ARM7 for further processing. 1.6.8 물리적인 메모리 어드레스 맵1.6.8 Physical Memory Address Map ARM7 및 벡터 처리기 프로그램은 도 8에 나타나 있는 물리적인 메모리에 따라서 메모리 매핑된 모든 MSP 입/출력 장치들을 보여준다.The ARM7 and vector processor programs show all memory mapped MSP input / output devices according to the physical memory shown in FIG. ARM7(또는 벡터 처리기)에 의해 보여지는 MSP 어드레스 맵은 0에서부터 시작하여 4GB까지 확장된다.The MSP address map seen by the ARM7 (or vector processor) extends from 0 to 4GB. 2GB에서 4GB까지의 영역에 있는 어드레스들은 다음의 관계식에 따라서 0에서 2GB까지의 호스트(펜티엄) PCI 어드레스로 매핑된다.Addresses in the 2GB to 4GB range are mapped to 0 to 2GB host (Pentium) PCI addresses according to the following relationship: 호스트 PCI 어드레스 : =ARM7 어드레스 - 8000 0000 (in hex)Host PCI Address: = ARM7 Address-8000 0000 (in hex) 이러한 매핑에 의해 ARM7(또는 벡터 처리기)은 0에서 부터 2GB까지의 호스트 PCI 메모리 어드레스를 억세스하기 위해 2GB에서 부터 4GB까지의 어드레스를 사용할 수 있다. ARM7은 2GB 이상의 호스트 PCI 메모리 어드레스에 대해서는 억세스하지 못한다.This mapping allows the ARM7 (or vector processor) to use addresses from 2 GB to 4 GB to access host PCI memory addresses from 0 to 2 GB. ARM7 cannot access host PCI memory addresses larger than 2GB. 또한, 호스트(펜티엄) 프로그램들은 도 9에 나타나 있는 다소 제한된 물리적인 메모리에 따라서 메모리 매핑된 모든 입/출력장치들을 보여준다.The host (Pentium) programs also show all memory mapped input / output devices according to the somewhat limited physical memory shown in FIG. 호스트(펜티엄)에서 볼 때,From the host (Pentium), * MSP_BASE는 MSP 어드레스 맵의 시작이다.MSP_BASE is the start of the MSP address map. * MSP_BASE + 7DFFFFF는 MSP 어드레스 맵의 끝이다.MSP_BASE + 7DFFFFF is the end of the MSP address map. * MSP 어드레스 맵은 128MB 범위에서만 정의된다.* MSP address map is defined only in the 128MB range. [테이블 3][Table 3] MSP I/O 장치 어드레스 맵MSP I / O Device Address Map 1.6.9 MSP 호스트 제어 레지스터1.6.9 MSP Host Control Register MSP-1EX는 호스트(펜티엄 프로세서)에 의한 초기화 및 인터럽트를 위해 사용되는 특수한 레지스터를 포함한다.The MSP-1EX contains special registers used for initialization and interruption by the host (Pentium processor). [테이블 4][Table 4] MSP 제어 레지스터 정의MSP Control Register Definition bit 0PCI 시스템 리셋.bit 0PCI System Reset. 이 비트는 MSP 관련된 모든 내부/외부 입출력장치들을 포함하는 전체 MSP 시스템 하드웨어를 완전히 리셋시키기 위하여 호스트(펜티엄)에서 사용된다. PCI 시스템을 리셋시킨 후, MSP는 ARM7, 벡터 처리기 및 I/O 장치에 대한 칩상의 모든 셀프-테스트 진단 실행을 포함하는 표준 리셋 시퀀스를 처리할 것이다. 이러한 리셋은 하드웨어 시스템 리셋과 동일한 영향을 미친다.This bit is used by the host (Pentium) to completely reset the entire MSP system hardware, including all MSP related internal and external I / O devices. After resetting the PCI system, the MSP will process a standard reset sequence that includes performing all on-chip self-test diagnostics for ARM7, vector processors and I / O devices. This reset has the same effect as a hardware system reset. bit 1ARM7 벡터 처리기 재개시. 이 비트는 ARM7과 벡터 처리기를 재개시키기 위해 호스트(펜티엄)에서 사용된다. 이 재개시는 MSP가 정상적인 리셋 시퀀스를 전혀 처리하지 않고, 칩상의 셀프-테스트 진단을 전혀 실행하지 않는다는 의미에서, 완전한 PCI 시스템 리셋과 구별된다. 이 비트가 설정되며, ARM7은 어드레스 0에서 실행을 개시하고, 벡터처리기는 아이들 모드(idle mode)로 들어간다. 이 때, 어떠한 내부 혹은 외부 I/O 장치도 영향을 받지 않는다.bit 1 Restarts the ARM7 vector processor. This bit is used by the host (Pentium) to resume the ARM7 and vector processor. This restart is distinguished from a complete PCI system reset in the sense that the MSP does not process any normal reset sequence and does not perform any on-chip self-test diagnostics. This bit is set, ARM7 starts execution at address 0, and the vector processor enters idle mode. At this time, no internal or external I / O devices are affected. bit 2호스트(펜티엄)로부터의 MSP 인터럽트 요청. 이 비트는 MSP를 직접 인터럽트 하기 위해 호스트(펜티엄)에서 사용되고, ARM7을 인터럽트 하기 위해 사용되는 내부 8259 프로그램 가능한 인터럽트 콘트롤러(PIC)의 입력들 중 하나에 연결된다. 이 비트는 호스트(펜티엄)에 의해 설정되고, ARM7에 의해 클리어된다.bit 2 MSP interrupt request from host (Pentium). This bit is used by the host (Pentium) to directly interrupt the MSP and is connected to one of the inputs of an internal 8259 programmable interrupt controller (PIC) used to interrupt ARM7. This bit is set by the host (Pentium) and cleared by ARM7. bit 3PCI 호스트 인터럽트 인지. 이 비트는 MSP가 발생한 PCI 호스트 인터럽트 요청을 인지하기 위해 호스트(펜티엄)에서 사용된다. 이 비트는 호스트(펜티엄)에 의해 설정되고, ARM7에 의해 클리어된다.bit 3PCI Host Interrupt Acknowledgment. This bit is used by the host (Pentium) to acknowledge the PCI host interrupt request that the MSP has issued. This bit is set by the host (Pentium) and cleared by ARM7. bit 31:4 예약bit 31: 4 reservation 1.6.10 MSP ARM7 제어 레지스터1.6.10 MSP ARM7 Control Registers MSP-1EX는 ARM7 프로세서에 의해 호스트를 인터럽트하는데 사용되는 특수한 레지스터를 가진다.The MSP-1EX has a special register used to interrupt the host by the ARM7 processor. [테이블 5][Table 5] MSP ARM7 제어 레지스터 정의MSP ARM7 Control Register Definition bit 0MSP로부터의 PCI 호스트 인터럽트. 이 비트는 PCI 버스상의 PCI INTA# 핀의 액티브 확인을 통해 호스트를 인터럽트하기 위해 MSP에서 사용된다. 이 비트는 ARM7에 의해 설정되고, PCI 버스를 통해 호스트(펜티엄)에 의해 클리어된다.bit 0 PCI host interrupt from MSP. This bit is used by the MSP to interrupt the host through active verification of the PCI INTA # pin on the PCI bus. This bit is set by ARM7 and cleared by the host (Pentium) via the PCI bus. bit 3예약bit 3 Reservation 1.6.11 MSP 내부 μROM1.6.11 MSP internal μROM 내부 ROM은 전체 16 KByte로 되어 있고, 다음을 포함한다.The internal ROM has a total of 16 KBytes and includes the following. * μROM 초기화 소프트웨어μROM initialization software * 셀프-테스트 진단 소프트웨어* Self-test diagnostic software * 다양한 시스템 관리 소프트웨어* Various system management software * 다양한 라이브러리 서브루틴들Various library subroutines * 명령 및 데이타 상수를 위한 캐쉬* Cache for instruction and data constants 어드레스 맵은 다음 테이블 6에 나타난 바와 같다.The address map is shown in Table 6 below. [테이블 6][Table 6] 내부 μROM 어드레스 맵Internal μROM Address Map 1.6.12 MSP 내부 SRAM1.6.12 MSP Internal SRAM 내부의 SRAM은 MSP의 벡터 제어 스테이터스 레지스터(VCSR)에 의해 정해지는 선택사항에 따라서 캐쉬 또는 로컬 메모리의 기능을 수행한다.The internal SRAM performs the function of cache or local memory in accordance with the options determined by the MSP's Vector Control Status Register (VCSR). 로컬 메모리 모드에 있어서, 어드레스 공간은 위치 MCP_BASE:040 0000에서 시작하여 내부 SRAM부로 매핑된다.In local memory mode, the address space is mapped to the internal SRAM portion starting at position MCP_BASE: 040 0000. 1.6.13 MSP 내부의 주변장치1.6.13 Peripherals inside MSP 또한, MSP는 2개의 내부 버스, 즉 64비트, 80MHz로 동작하는 Fbus와 32비트, 40MHz로 동작하는 IObus 상에 존재하는 많은 주변장치를 가진다.The MSP also has many peripherals on two internal buses: Fbus running at 64 bits, 80 MHz and IObus running at 32 bits, 40 MHz. Fbus 상의 장치들은 다음과 같다.The devices on the Fbus are: * 외부의 동기 DRAM을 위한 메모리 콘트롤러Memory controller for external synchronous DRAM * 가상 프레임 버퍼 인터페이스Virtual frame buffer interface * 외부 PCI 버스를 위한 PCI 버스 콘트롤러* PCI bus controller for external PCI bus * 커스터머 ASIC 인터페이스Customer ASIC Interface * 8 채널 DMA 콘트롤러* 8 channel DMA controller * 메모리 데이타 이동기(호스트 메모리와 SDRAM간의 데이타 전달을 위해)Memory data mover (for transferring data between host memory and SDRAM) * KS0122 코덱 시리얼 라인* KS0122 codec serial line * KS0119 코덱 시리얼 라인* KS0119 codec serial line * AD1843 코덱 시리얼 라인* AD1843 codec serial line 한편, IObus상의 장치들은 다음과 같다.On the other hand, the devices on IObus are as follows. * 8254-호환가능한 프로그래머블 인터벌 타이머8254-compatible programmable interval timer * 8259-호환가능한 프로그래머블 인터럽트 콘트롤러(8 레벨)8259-compatible programmable interrupt controller (8 levels) * 16450-호환가능한 UART 시리얼 라인16450-compatible UART serial line * MPEG 비트스트림 디코딩 엔코딩을 위한 비트스트림 처리기Bitstream processor for MPEG bitstream decoding encoding 이러한 주변장치들의 레지스터 어드레스 맵은 테이블 3에 나타난 바와 같다.The register address map of these peripherals is shown in Table 3. [테이블 7][Table 7] 내부 주변장치 레지스터 어드레스 맵Internal Peripheral Register Address Map 1.6.14 IOBUS 주변장치들1.6.14 IOBUS Peripherals 1.6.14.1 8254-호환가능한 프로그래머블 인터벌 타이머1.6.14.1 8254-compatible programmable interval timer MSP는 다음과 같은 기능을 갖는 소프트웨어로 사용하기 위해 표준 8254-호환 가능한 프로그래머블 인터벌 타이머를 포함한다.The MSP includes a standard 8254-compatible programmable interval timer for use with software with the following features: * 3개의 독립적인 16비트 카운터를 가진다.It has three independent 16-bit counters. * 6개의 프로그래머블 카운터 모드를 지원한다.* Supports 6 programmable counter modes. 모든 카운터들은 제어 워드 레지스터에 기입하는 것과 초기 카운트에 의해 프로그램된다.All counters are programmed by writing to the control word register and initial count. * 제어 워드 레지스터Control word register 이 레지스터는 타이머에 대한 다양한 제어정보를 가진다. 이 레지스터의 비트 정의는 테이블 8에 나타난 바와 같다.This register holds various control information for the timer. The bit definitions for this register are shown in Table 8. [테이블 8]Table 8 제어 워드 레지스터Control word register * 스테이터스 레지스터* Status register 이 레지스터는 타이머에 대한 스테이터스 정보를 가진다.This register holds status information for the timer. * 카운터 0,1,2Counter 0,1,2 이 3개의 레지스터는 주로 타이머에 대해 카운팅하는 소자이다. 각 카운터는 16비트 폭을 가지며, 프리셋이 가능하고, BCD 모드의 각 이진수에서 다운 카운트한다. 이 레지스터의 입력, 게이트 및 출력은 제어 워드 레지스터에 저장된 MODES의 선택에 의해 특징지어진다. 이 3개의 카운터는 완전히 독립적이다.These three registers are mainly counted against the timer. Each counter is 16 bits wide, preset, and counts down from each binary in BCD mode. The inputs, gates, and outputs of this register are characterized by the selection of MODES stored in the control word register. These three counters are completely independent. 1.6.14.2 8259-호환가능한 프로그래머블 인터럽트 콘트롤러(PIC)1.6.14.2 8259-Compatible Programmable Interrupt Controller (PIC) MSP 프로그래머블 인터럽트 콘트롤러는 모든 x86-기반 퍼스널 컴퓨터에서 매우 일반적인 표준 8259이며, 그 기능은 다음과 같다.The MSP programmable interrupt controller is a very common standard 8259 for all x86-based personal computers. Its features include: * 8개 레벨의 우선순위를 지원한다.* Supports 8 levels of priority. * 프로그래머블 인터럽트 모드들Programmable Interrupt Modes * 개별적인 요청 마스크 능력Individual request mask capability MSP-1EX에서, 8개 레벨의 인터럽트 입력은 여러가지 I/O 장치에 대해 다음과 같이 할당된다.In the MSP-1EX, eight levels of interrupt inputs are assigned to various I / O devices as follows. * 레벨 0 (가장 높음)는 8254 타이머에 할당된다.* Level 0 (highest) is assigned to the 8254 timer. * 레벨 1은 가상 프레임 버퍼(VFB)에 할당된다.Level 1 is allocated to the virtual frame buffer (VFB). * 레벨 2는 DMA 콘트롤러를 포함하는 커스터머 ASIC 로직 블록에 할당된다.Level 2 is assigned to a customer ASIC logic block containing a DMA controller. * 레벨 3은 비트스트림 처리기에 할당된다.Level 3 is assigned to the bitstream processor. * 레벨 4는 PCI 버스 인터페이스에 할당된다.Level 4 is assigned to the PCI bus interface. * 레벨 5는 tbd에 할당된다.Level 5 is assigned to tbd. * 레벨 6은 tbd에 할당된다.Level 6 is assigned to tbd. * 레벨 7은 16550 UART에 할당된다.* Level 7 is assigned to 16550 UART. 인터럽트 콘트롤러의 출력은 ARM7 RISC CPU의 인터럽트 요청 라인(nFIQ)에 결합된다.The output of the interrupt controller is coupled to the interrupt request line (nFIQ) of the ARM7 RISC CPU. * 레지스터 설명* Register description 여기에는 다음과 같은 PIC의 동작을 초기화하는데 사용되는 3개의 8비트 레지스터가 있다.There are three 8-bit registers used to initiate the operation of the PIC: * 초기화 커맨드 워드 1 (ICW1)Initialization command word 1 (ICW1) * 초기화 커맨드 워드 2 (ICW2) : MSP-1EX에는 사용하지 않음.Initialization command word 2 (ICW2): Not used for MSP-1EX. * 초기화 커맨드 워드 3 (ICW3) : MSP-1EX에는 사용하지 않음.Initialization command word 3 (ICW3): Not used for MSP-1EX. * 초기화 커맨드 워드 4 (ICW4)Initialization command word 4 (ICW4) 또한, 다음과 같은 PIC의 동작을 제어하는데 사용되는 3개의 8비트 레지스터가 있다.In addition, there are three 8-bit registers used to control the operation of the PIC: * 동작 제어 워드 1 (OCW1)* Motion Control Word 1 (OCW1) * 동작 제어 워드 2 (OCW2)* Action Control Word 2 (OCW2) * 동작 제어 워드 3 (OCW3)* Motion Control Word 3 (OCW3) 이들 모든 레지스터들은 어드레스 부분(bit0)과 데이타 부분 모두에 특수하게 엔코딩된다. 좀 더 상세한 것은 표준 8259 사양을 참조하기로 한다.All these registers are specially encoded in both the address part (bit0) and the data part. Refer to the standard 8259 specification for more details. [테이블 9]Table 9 8259 레지스터 설명8259 Register Description 1.6.14.3 16450-호환가능한 UART 시리얼 라인1.6.14.3 16450-Compatible UART Serial Line MSP는 외부 시리얼 I/O 장치들과의 인터페이스로 사용되는 16450-호환가능한 UART 시리얼 라인을 포함한다. 좀 더 상세한 것을 표준 16450 사양을 참조하기로 한다.The MSP includes a 16450-compatible UART serial line that is used as an interface with external serial I / O devices. Refer to the standard 16450 specification for more details. 1.6.14.4 비트스트림 처리기1.6.14.4 Bitstream Processor 비트스트림 처리기는 비디오 비트스트림 데이타를 처리하는 특수화된 로직블록으로서, 그 기능은 다음과 같다.A bitstream processor is a specialized logic block that processes video bitstream data. Its functions are as follows. * 가변길이 허프만 디코딩 및 엔코딩Variable length Huffman decoding and encoding * 지그재그 저장 포맷인 비디오 데이타의 언팩킹 및 팩킹* Unpacking and Packing of Video Data in Zigzag Storage Format * 다양한 비트-레벨 처리Various bit-level processing 비트스트림 처리기는 동시적인 처리 유니트로 동작하고, 벡터 처리기 또는 ARM7에 의해 소프트웨어로 제어된다. 좀 더 상세한 것은 비트스트림 처리기 부분을 참조하기로 한다.The bitstream processor operates as a concurrent processing unit and is software controlled by the vector processor or ARM7. See the Bitstream Processor section for more details. 1.6.15 FBUS 주변장치들1.6.15 FBUS Peripherals FBUS 주변장치들은 다음과 같다.FBUS peripherals include: * 커스터머 ASIC 로직 인터페이스Customer ASIC Logic Interface * 8개 채널 DMA 콘트롤러8 channel DMA controller * 삼성의 KS0119에 대한 비디오 엔코더 시리얼 라인 인터페이스* Video encoder serial line interface for Samsung's KS0119 * 아날로그 디바이스사의 AD1843에 대한 오디오 텔레콤 시리얼 라인 인터페이스Audio Telecom Serial Line Interface to Analog Devices AD1843 1.6.16.1 ASIC 인터페이스 로직 인터페이스1.6.16.1 ASIC Interface Logic Interface 이 절은 외부의 모든 코덱들과 커스터머가 규정한 ASIC 로직 블록둘에 대한 인터페이스 로직을 포함한다. 이 블록은 모두 하드웨어로 구현되고, 프로그램-비저블(program-visible) 레지스터는 구비하지 않는다. 좀 더 상세한 것은 ASIC 인터페이스 부분을 참조하기로 한다.This section contains the interface logic for all external codecs and both custom ASIC logic blocks. These blocks are all implemented in hardware and do not have program-visible registers. See the ASIC interface section for more details. 1.6.16.2 DMA 콘트롤러1.6.16.2 DMA controller MSP-1EX는 다음과 같은 기능을 가진 칩상의 DMA 콘트롤러를 구비한다.The MSP-1EX has an on-chip DMA controller with the following features: * 8개의 독립적인 DMA 채널* 8 independent DMA channels * 개별적인 DMA 채널에 대한 인에이블/디스에이블 제어Enable / Disable Control for Individual DMA Channels * 메모리 트랜스퍼 또는 역트랜스퍼에 대한 IO 장치* IO device for memory transfer or reverse transfer * 어드레스 증가 및 감소Address increment and decrement 좀 더 상세한 것을 ASIC 인터페이스 부분을 참조하기로 한다.See the ASIC Interface section for more details. 1.6.15.3 메모리 데이타 이동기1.6.15.3 Memory Data Mover 또한, MSP-1EX는 특수한 메모리 데이타 이동기를 구비한다. 이 메모리 데이타 이동기는 호스트(펜티엄) 메모리와 MSP 로컬 SDRAM 메모리 사이에서 데이타를 이동시키기 위해 사용된다. 메모리 데이타 이동기는 기본적으로 다음과 같은 레지스터들을 포함하는 특수한 DMA 콘트롤러이다.The MSP-1EX also has a special memory data mover. This memory data mover is used to move data between host (Pentium) memory and MSP local SDRAM memory. The memory data mover is basically a special DMA controller that contains the following registers. * MSP 현재 어드레스 레지스터 : 이 32비트 레지스터는 메모리 데이타 트랜스퍼의 초기에 SDRAM 메모리 어드레스를 정의한다. 이 레지스터는 ARM7에 의해 기입 또는 독출될 수 있고, 초기값은 ARM7에 의해 로드되어야 한다. 어드레스는 데이타 트랜스퍼 사이즈를 근거로 하여 증가된다.MSP Current Address Register: This 32-bit register defines the SDRAM memory address at the beginning of the memory data transfer. This register can be written or read by ARM7 and the initial value must be loaded by ARM7. The address is incremented based on the data transfer size. * 호스트 현재 어드레스 레지스터 : 이 32비트 레지스터는 메모리 데이타 트랜스퍼의 초기에 호스트 메모리 어드레스를 정의한다. 이 레지스터는 ARM7에 의해 기입 또는 독출될 수 있고, 초기값은 ARM7에 의해 로드되어야 한다. 어드레스는 데이타 트랜스퍼 사이즈를 근거로 하여 증가된다.Host Current Address Register: This 32-bit register defines the host memory address at the beginning of the memory data transfer. This register can be written or read by ARM7 and the initial value must be loaded by ARM7. The address is incremented based on the data transfer size. * MSP 정지 어드레스 레지스터 : 이 32비트 레지스터는 메모리 데이타 트랜스퍼의 마지막에 SDRAM 메모리 어드레스를 정의한다. 이 레지스터는 ARM7에 의해 기입 또는 독출될 수 있고, MSP 현재 어드레스 레지스터와 비교하여 사용된다. 만약, 이들이 매칭되면, 메모리 데이타 이동기는 MSP의 End-Of-Process 신호를 발생한다.MSP Stop Address Register: This 32-bit register defines the SDRAM memory address at the end of the memory data transfer. This register can be written or read by the ARM7 and used in comparison to the MSP current address register. If they match, the memory data mover generates an MSP End-Of-Process signal. * 호스트 정지 어드레스 레지스터 : 이 32비트 레지스터는 메모리 데이타 트랜스퍼의 마지막에 호스트 메모리 어드레스를 정의한다. 이 레지스터는 ARM7에 의해 기입 또는 독출될 수 있고, 호스트 현재 어드레스 레지스터와 비교하여 사용된다. 만약, 이들이 매칭되면, 메모리 데이타 이동기는 호스트의 End-Of-Process 신호를 발생한다.Host Stop Address Register: This 32-bit register defines the host memory address at the end of the memory data transfer. This register can be written or read by the ARM7 and used in comparison to the host current address register. If they match, the memory data mover generates an end-of-process signal from the host. * 스테이터스 레지스터 : 이 레지스터는 메모리 데이타 이동기와 관련된 스테이터스 정보를 포함한다. 비트 엔코딩은 다음과 같다.Status register: This register contains status information related to the memory data mover. Bit encoding is as follows. 0 : MSP EOP. 이 비트는 메모리 데이타 이동기가 MSP의 정지 어드레스에 도달하였는지 여부를 정한다. 만약, ARM7이 소오스 현재 어드레스 레지스터를 초기화한다면, ARM7은 0080 0000 (hex)로 리셋된다. 이 비트는 ARM7에 의해서 독출만 행해지고, 기입은 행해지지 않아야 한다.0: MSP EOP. This bit determines whether the memory data mover has reached the stop address of the MSP. If ARM7 initializes the source current address register, ARM7 is reset to 0080 0000 (hex). This bit is only read by ARM7 and not written. 1 : HOST EOP. 이 비트는 메모리 데이타 이동기가 호스트의 정지 어드레스에 도달하였는지 여부를 정한다. 만약, ARM7이 호스트 현재 어드레스 레지스터를 초기화한다면, ARM7은 8000 000 (hex)로 리셋된다. 이 비트는 ARM7에 의해서 독출만 행해지고, 기입은 행해지지 않아야 한다.1: HOST EOP. This bit determines whether the memory data mover has reached the host's stop address. If ARM7 initializes the host current address register, ARM7 is reset to 8000 000 (hex). This bit is only read by ARM7 and not written. * 제어 레지스터 : 이 레지스터는 메모리 데이타 이동기와 관련된 정보를 포함한다. 이 비트 엔코딩은 다음과 같다.Control register: This register contains information related to the memory data mover. This bit encoding is as follows. 0 : 방향. 이 비트는 데이타 트랜스퍼의 방향을 결정한다. 이 비트가 0 (디폴트)인 경우 데이타 트랜스퍼의 방향은 호스트(펜티엄) 메모리로부터 MSP SDRAM 메모리이고, 이 비트가 1인 경우 데이타 트랜스퍼의 방향은 SDRAM으로부터 호스트 메모리이다. 이 비트는 ARM7에 의해 기입되어야 한다.0: direction. This bit determines the direction of the data transfer. If this bit is 0 (default), the direction of data transfer is from the host (Pentium) memory to MSP SDRAM memory, and if this bit is 1, the direction of data transfer is from SDRAM to host memory. This bit must be written by ARM7. 1 : 인터럽트 인에이블. 이 비트는 메모리 데이타 이동기가 데이타 트랜스퍼의 마지막에 ARM7을 인터럽트하는지 여부를 결정한다. 이 비트는 ARM7에 의해 기입되어야 한다.1: Interrupt Enable. This bit determines whether the memory data mover interrupts ARM7 at the end of the data transfer. This bit must be written by ARM7. 2 : DMA 인에이블. 이 비트는 메모리 데이타 이동기가 동작하도록 인에이블시킨다. 이 비트는 ARM7에 의해 기입되어야 한다.2: DMA enable. This bit enables the memory data mover to operate. This bit must be written by ARM7. 3 : 데이타 트랜스퍼 사이즈. 이 비트가 0(디폴트)인 경우 각 메모리의 데이타 트랜스퍼 사이즈는 32바이트이고, 1인 경우 64바이트이다. 이 비트는 ARM7에 의해 기입되어야 한다.3: data transfer size. If this bit is 0 (the default), the data transfer size of each memory is 32 bytes; if it is 1, it is 64 bytes. This bit must be written by ARM7. 1.6.15.4 KS0119 비디오 엔코더 시리얼 라인 인터페이스1.6.15.4 KS0119 Video Encoder Serial Line Interface KS0119 비디오 엔코더 시리얼 라인 인터페이스는 다음을 포함한다.The KS0119 video encoder serial line interface includes: * 코덱으로부터의 독출 데이타를 포함하는 더블-버퍼 수신 데이타 버퍼 레지스터Double-buffered receive data buffer register containing read data from the codec * 코덱으로의 기입 데이타를 포함하는 더블-버퍼 전송 데이타 버퍼 레지스터Double buffer data buffer register containing write data to the codec * 시리얼 라인에 대한 여러가지 제어 스테이터스 정보를 포함하는 제어 스테이터스 레지스터A control status register containing various control status information for the serial line. [테이블 10]Table 10 KS0119 비디오 엔코더 시리얼 라인 인터페이스 레지스터들KS0119 Video Encoder Serial Line Interface Registers 제어 스테이터스 레지스터의 비트 엔코딩은 다음과 같다.The bit encoding of the control status register is as follows. bit 0 : 수신 데이타가 꽉 찬 상태이다. 이 비트는 시리얼 라인이 KS0119 코덱으로부터 8비트의 데이타를 수신한 경우 설정된다. 만약 인터럽트 인에이블(bit 7)이 설정되면 인터럽트 요청 또한 ARM7로 발생할 것이다.bit 0: Receive data is full. This bit is set when the serial line receives 8 bits of data from the KS0119 codec. If interrupt enable (bit 7) is set, the interrupt request will also be issued to ARM7. bit 1 : 전송 데이타 버퍼가 비어 있는 상태이다. 이 비트는 시리얼 라인이 KS0119로 데이타를 보낼 준비가 되어 있는 경우 설정된다. 만약 인터럽트 인에이블(bit 7)이 설정되면 인터럽트 요청 또한 ARM7로 발생할 것이다.bit 1: The transmission data buffer is empty. This bit is set when the serial line is ready to send data to the KS0119. If interrupt enable (bit 7) is set, the interrupt request will also be issued to ARM7. bit 7 : 인터럽트 인에이블. 이 비트는 ARM7로 인터럽트 요청을 인에이블시키기 위해 사용한다.bit 7: Interrupt Enable. This bit is used by ARM7 to enable interrupt requests. 1.6.15.5 AD1843 오디오 텔레콤 시리얼 라인 인터페이스1.6.15.5 AD1843 Audio Telecom Serial Line Interface AD1843 시리얼 라인 인터페이스는 다음을 포함한다.The AD1843 serial line interface includes: * 코덱으로부터 독출된 데이타를 포함하는 한 세트의 더블-버퍼링된 레지스터* A set of double-buffered registers containing data read from the codec * 코덱으로 기입하고자 하는 데이타를 포함하는 한 세트의 더블-버퍼링된 레지스터* A set of double-buffered registers containing data to be written by the codec * 시리얼 라인에 대한 여러가지 제어 스테이터스 정보를 포함하는 제어 스테이터스 레지스터A control status register containing various control status information for the serial line. 좀 더 상세한 것은 AD1843 코덱 인터페이스 부분을 참조하기로 한다.See the AD1843 codec interface section for more details. 1.6.16 명령 성능1.6.16 Command Performance 테이블 11은 매 사이클이 12.5ns인 벡터 처리기 사이클 카운트에서의 명령성능을 나타낸다. 외부 메모리 버스 폭은 64비트로, 40MHz의 페이지 모드 클록을 가지는 것으로 가정한다. 모든 명령 성능은 32바이트 벡터 모드로 주어진다. 규칙은 다음과 같다.Table 11 shows the instruction performance at the vector processor cycle count where every cycle is 12.5 ns. The external memory bus width is 64 bits and assumes a page mode clock of 40 MHz. All instruction performance is given in 32 byte vector mode. The rules are as follows: * 라스(ras) : 외부 메모리가 첫번째 억세스를 하는데 요구되는 사이클의 수. 일반적으로 75ns 또는 6개의 사이클을 필요로 한다.Ras: Number of cycles required for external memory to make first access. Typically 75 ns or 6 cycles are required. * 레이턴시(latency) : 첫번째 명령을 실행하기 위한 사이클의 수Latency: The number of cycles to execute the first instruction. * 레이트(rate) : 유사한 연속적인 명령 실행 사이에 존재하는 사이클의 수 레이턴시가 레이트와 동일할 경우, 하나의 숫자만 사용된다.Rate: The number of cycles existing between similar consecutive instruction executions. If the latency is equal to the rate, only one number is used. [테이블 11]Table 11 명령 실행 성능Command execution performance 제2장 DSP 코아Chapter 2 DSP Core 이 장은 하드웨어 및 소프트웨어 디자이너에서 보여주는 DSP 코아의 사양에 대하여 기술한 것이다.This chapter describes the specification of DSP cores as seen by hardware and software designers. 2.1 개요2.1 Overview DSP 코아는 MSP에서 기초적인 요소로서, 모든 연산에 대해서만 책임진다. 이 DSP 코아는 다음과 같이 구성된다.DSP cores are fundamental to MSP and are only responsible for all operations. This DSP core consists of: * 40MHz로 동작하며, 실시간 OS, 인터럽트 및 예외 처리, 입출력 장치 관리등과 같은 범용 데이타 처리용으로 사용되는 32비트 ARM7 RISC CPU.* A 32-bit ARM7 RISC CPU that operates at 40 MHz and is used for general purpose data processing such as real-time OS, interrupt and exception handling, and I / O device management. * 80MHz로 동작하며, 이산여현변환, FIR 필터링, 콘벌루션, 비디오 움직임 추정 등과 같은 디지탈 신호 처리용으로 사용되는 벡터 처리기. 이 벡터 처리기는 ARM7에 의해 초기화되며, ARM7과 동시적으로 동작가능하고, 특수한 제어명령에 의해 ARM7과 동기된다.* A vector processor that operates at 80 MHz and is used for digital signal processing, such as discrete cosine transform, FIR filtering, convolution, video motion estimation, and so on. This vector processor is initialized by ARM7, can run concurrently with ARM7, and is synchronized with ARM7 by special control instructions. * 80MHz로 동작하며, ARM7을 위한 1KB의 명령 캐쉬와 1KB의 데이타 캐쉬, 벡터 처리기를 위한 을 위한 1KB의 명령 캐쉬와 4KB의 데이타 캐쉬, ARM7 및 벡터 처리기를 위한 공유된 16KB의 집적된 명령 데이타 캐쉬 ROM으로 구성되는 캐쉬 서브시스템. 벡터 처리기용 데이타 캐쉬는 하드웨어 또는 소프트웨어로 제어될 수 있다. 캐쉬 서브시스템은 32비트 데이타 버스를 통해 ARM7과 인터페이스하고, 128비트 데이타 버스를 통해 벡터 처리기와 인터페이스한다.Operating at 80 MHz, 1 KB instruction cache for ARM7 and 1 KB data cache, 1 KB instruction cache for vector processor and 4 KB data cache for shared 16 KB integrated instruction data cache for ARM7 and vector processor Cache subsystem consisting of ROM. The data cache for the vector processor can be controlled by hardware or software. The cache subsystem interfaces with ARM7 over a 32-bit data bus and with a vector processor over a 128-bit data bus. * 비트스트림 처리기, 인터럽트 콘트롤러, 타이머 및 UART와 같은 여러가지 내부 주변기기들과 인터페이스하는 32비트, 40MHz 입력 출력 버스(IOBUS).32-bit, 40-MHz input-output bus (IOBUS) that interfaces with various internal peripherals such as bitstream processors, interrupt controllers, timers, and UARTs. * PCI 버스 콘트롤러, 메모리 콘트롤러, DMA 콘트롤러 및 커스터머 ASIC 로직 블록과 인터페이스하는 64비트, 80MHz 고속 입/출력 버스(FBUS).* 64-bit, 80MHz high-speed input / output bus (FBUS) that interfaces with PCI bus controllers, memory controllers, DMA controllers, and customer ASIC logic blocks. DSP 코아의 블록도는 도 10에 도시된 바와 같다.The block diagram of the DSP core is as shown in FIG. 2.2 ARM7 RISC CPU2.2 ARM7 RISC CPU 2.2.1 개요2.2.1 Overview ARM7 RISC CPU는 범용의 32비트 RISC 프로세서 코아이다. 이 ARM7 RISC CPU는 표준 코프로세서 인터페이스를 통해 벡터 처리기와 인터페이스하고, 실시간 OS, IO 장치 인터럽트 처리 및 호스트 CPU와의 통신과 같이 대부분의 비연산적인 집중기능들을 처리하는데 사용된다.The ARM7 RISC CPU is a general purpose 32-bit RISC processor core. The ARM7 RISC CPU interfaces with the vector processor through a standard coprocessor interface and is used to handle most of the non-operational concentrations, such as real-time OS, IO device interrupt handling, and communication with the host CPU. ARM7 CPU는 다음과 같은 특징이 있다.The ARM7 CPU has the following features: * 전력 민감성 응용에 이상적인 매우 정적인 동작.* Very static operation, ideal for power sensitive applications. * 저전력 소비:0.6mA/MHZ @ 3V 제작.* Low power consumption: 0.6mA / MHZ @ 3V. * 고성능:25MIPs @ 40MHz(40MIPs 피크) @ 3V.* High Performance: 25MIPs @ 40MHz (40MIPs Peak) @ 3V. * 크고 작은 동작 모드들.* Large and small operating modes. * 실시간 응용을 위한 고속 인터럽트 응답(40MHZ에서 22클록 사이클)Fast interrupt response for real-time applications (22 clock cycles at 40 MHz) * 간단하나 강력한 명령 세트.* Simple but powerful command set. * 약 6mm2의 매우 컴팩트한 레이아웃.* Very compact layout of about 6mm 2 . 2.2.2. 레지스터들2.2.2. Registers ARM7은 31개의 범용 레지스터와 6개의 스테이터스 레지스터, 즉 총 37개의 레지스터를 가진다. 프로그래머에게는 16개의 범용 레지스터와 한 두개의 스테이터스 레지스터가 제공된다. 유저, 슈퍼바이저, IRQ, FIQ, Abort 및 Undefined과 같은 모든 프로세서 모드에서, R0와 R15는 직접적으로 억세스가능하다.ARM7 has 31 general purpose registers and 6 status registers, a total of 37 registers. The programmer is provided with 16 general purpose registers and one or two status registers. In all processor modes such as User, Supervisor, IRQ, FIQ, Abort, and Undefined, R0 and R15 are directly accessible. R15를 제외한 모든 레지스터들은 범용으로 사용되며, 데이타 또는 어드레스값을 유지시키는데 사용된다. R15는 프로그램 카운터(PC)를 유지한다. 스테이터스 레지스터인 CPSR-현재 프로그램 스테이터스 레지스터는 ALU 플래그와 현재 모드 비트들을 가지고 있다.All registers except R15 are general purpose and used to hold data or address values. R15 holds the program counter PC. The CPSR-Current Program Status Register, which is a status register, contains the ALU flag and current mode bits. R14는 서브루틴 링크 레지스터로 사용되고, 브랜치 및 링크 명령이 수행되었을때 한 벌의 R15 데이타를 수신한다. 다른 경우에는 R14는 범용 레지스터로도 사용될 수 있다.R14 is used as a subroutine link register and receives a set of R15 data when a branch and link instruction is performed. In other cases, R14 can also be used as a general purpose register. [테이블 12]Table 12 범용 레지스터들 및 프로그램 카운터General purpose registers and program counter [테이블 13]Table 13 프로그램 스테이터스 레지스터들Program status registers 2.2.3 예외2.2.3 Exceptions 예외는 명령 처리 중에 발생하는 비정상적인 조건을 말하며, 이는 제어 흐름의 변경을 초래한다. ARM7 예외 동작의 7가지 타입에 대하여 상위 우선순위에서 하위 우선순위로 나열하면 다음과 같다.An exception is an abnormal condition that occurs during instruction processing, which results in a change of control flow. The seven types of ARM7 exception behavior, listed from upper priority to lower priority, are: * 리셋(reset)(최상위 우선순위)Reset (highest priority) * 취소(abort)(데이타)Abort (data) * FIQ* FIQ * IRQ* IRQ * 취소(abort)(프리페치)Abort (prefetch) * 정의되지 않은 명령 트랩, 소프트웨어 인터럽트(최하위 우선순위)* Undefined command traps, software interrupts (lowest priority) [테이블 14]Table 14 예외 벡터 테이블Exception vector table 2.2.4 명령 세트2.2.4 Instruction Set 모든 ARM7 명령은 조건부로 실행되는데, 이는 ARM7 명령이 CPSR 레지스터에 있는 N, Z, C, V 플래그의 값에 의존하여 실행되거나 실행되지 않을 수 있음을 의미한다.All ARM7 instructions are executed conditionally, which means that ARM7 instructions may or may not be executed depending on the values of the N, Z, C, and V flags in the CPSR register. ARM7 명령은 다음과 같이 여러 가지의 카테고리들로 나누어질 수 있다.ARM7 instructions can be divided into several categories: * 브랜치 및 링크된 브랜치(B, BL)* Branches and linked branches (B, BL) * 데이타 프로세싱(AND, EOR, SUB, RSB, ADD, ADC, SBC, RSC, TST, TEQ, CMP, CMN, ORR, MOV, BIC, MVN)* Data Processing (AND, EOR, SUB, RSB, ADD, ADC, SBC, RSC, TST, TEQ, CMP, CMN, ORR, MOV, BIC, MVN) * PSR 트랜스퍼(MRS, MSR)* PSR Transfer (MRS, MSR) * 승산 및 승산-누적(MUL, MLA)* Odds and Odds-cumulative (MUL, MLA) * 싱글 데이타 트랜스퍼(LDR, STR)* Single Data Transfer (LDR, STR) * 블록 데이타 트랜스퍼(LDM, STM)* Block Data Transfer (LDM, STM) * 싱글 데이타 스왑(SWP)* Single Data Swap (SWP) * 소프트웨어 인터럽트(SWI)* Software Interrupt (SWI) * 코프로세서 데이타 동작(CDP)(이는 한 그룹의 명령이다.)Coprocessor Data Operation (CDP) (this is a group of instructions) * 코프로세서 데이타 트랜스퍼(LDC, STC)Coprocessor Data Transfer (LDC, STC) * 코프로세서 레지스터 트랜스퍼(MRC, MCR)Coprocessor Register Transfer (MRC, MCR) 2.3 벡터 처리기2.3 Vector Processor 2.3.1 개요2.3.1 Overview 벡터 처리기는 최대 성능을 위해 단일 명령 다중 데이타(SIMD) 구조를 이용하는 강력한 디지탈 신호 처리기로서, 가장 뛰어난 성능을 실현시키기 위하여 다중 데이타 요소 상에서 병렬로 동작하는 파이프라인된 RISC 엔진으로 구성된다. 다중 데이타 요소는 576비트 벡터로 패킹되고, 이는 다음과 같은 레이트로 계산될 수 있다.The vector processor is a powerful digital signal processor that uses a single instruction multiple data (SIMD) structure for maximum performance. It consists of a pipelined RISC engine operating in parallel on multiple data elements to achieve the best performance. Multiple data elements are packed into 576-bit vectors, which can be calculated at the following rates. * 매 12.5ns-사이클 마다 32개의 8/9비트 고정 소수점 산술 연산 또는* 32 8/9 bit fixed-point arithmetic operations every 12.5 ns-cycle, or * 매 12.5ns-사이클 마다 16개의 16비트 고정 소수점 산술 연산 또는* 16 16-bit fixed-point arithmetic operations every 12.5 ns-cycle or * 매 12.5ns-사이클 마다 8개의 32비트 고정 소수점 또는 부동 소수점 산술 연산* 8 32-bit fixed or floating point arithmetic operations every 12.5 ns-cycle 2.3.2 실행 파이프라인들2.3.2 Execution Pipelines 벡터 처리기는 명령을 실행시키기 위해 도 11에 도시된 바와 같이 6단계의 파이프라인을 이용한다. 대부분의 32비트 스칼라 연산이 사이클당 하나의 명령비율로 파이프라인되는 반면, 대부분의 576비트 벡터 연산은 매 2개의 사이클마다 하나의 명령 비율로 파이프라인된다. 모든 로드 저장(Loads Stores)는 산술 연산과 겹쳐지고, 별도로 로드 저장 하드웨어에 의해 독립적으로 실행된다.The vector processor uses a six stage pipeline as shown in FIG. 11 to execute the instruction. Most 32-bit scalar operations are pipelined at one instruction rate per cycle, while most 576-bit vector operations are pipelined at one instruction rate every two cycles. All Loads Stores overlap with arithmetic operations and are executed independently by separate load store hardware. 설계의 복잡도와 성능을 조화시키기 위해, 벡터 처리기는 자원 및 데이타 종속성 체킹을 위한 하드웨어 인터록을 순서없이 사용하여, 명령들을 발생하거나 실행할 수 있다. 이 특징은 로드 및 저장으로 인하여 데이타 캐쉬가 분실되는 기간의 성능을 특히 대폭적으로 개선시킨다.To balance the complexity and performance of the design, the vector processor can generate and execute instructions using out of order hardware interlocks for resource and data dependency checking. This feature significantly improves performance especially during periods when data cache is lost due to load and store. 2.3.3 하드웨어 마이크로구조2.3.3 Hardware Microstructure 벡터 처리기는 도 12에 설명된 바와 같이 4개의 주 기능 블록으로 구성된다.The vector processor consists of four main functional blocks as described in FIG. * 명령어 페치 유니트(IFU)Instruction Fetch Unit (IFU) * 명령어 디코더 발행기Instruction decoder issuer * 명령어 실행 데이타 경로* Command execution data path * 로드 저장 유니트(LSU)* Load Storage Unit (LSU) 명령어 페치 유니트는 명령어의 프리페칭 및 브랜치와 점프와 같은 명령어들의 서브루틴에 대한 흐름을 제어하는 프로세싱을 담당한다. IFU는 현재 실행 스트림에 대하여 프리페치된 명령어로 된 16개의 엔트리 큐와, 브랜치 타겟 스트림에 대하여 프리페치된 명령어로 된 8개의 엔트리 큐를 가진다. IFU는 매 사이클마다 명령어 캐쉬로 부터 8개의 명령어를 수신할 수 있다.The instruction fetch unit is responsible for prefetching instructions and processing to control the flow of instructions to subroutines such as branches and jumps. The IFU has 16 entry queues of instructions prefetched for the current execution stream and eight entry queues of instructions prefetched for the branch target stream. The IFU can receive eight instructions from the instruction cache every cycle. 명령어 디코더 발행기는 모든 명령어에 대한 디코딩 및 스케쥴링을 담당한다. 비록 발행기는 실행 자원과 오퍼랜드 데이터 유효성에 따라서 비순차적인 ㄷ부분의 명령어를 스케쥴할 수 있지만, 디코더는 사이클당 하나의 명령어를 처리할 수 있고, 항상 IFU로부터 순차적으로 도착하는 명령어를 처리할 수 있다.The instruction decoder issuer is responsible for decoding and scheduling all instructions. Although the issuer can schedule out-of-order instructions according to the execution resource and operand data validity, the decoder can process one instruction per cycle and always process instructions that arrive sequentially from the IFU. . 벡터 처리기는 12.5ns/cycle로 동작하는 여러개의 288비트 데이터 경로(도 13 참조)를 통해 그 성능의 대부분을 실현하며, 이때 다음을 포함한다.The vector processor realizes most of its performance through several 288-bit data paths (see Figure 13) operating at 12.5 ns / cycle, including: * 사이클당 2개의 독출 및 2개의 기입을 지원할 수 있는 4개 포트를 가진 레지스터 파일* Register file with four ports that can support two reads and two writes per cycle * 8번의 32비트 승산(정수 또는 부동 소수점 포맷), 16번의 16비트 승산 및 32번의 8비트 승산 중 어느 하나의 연산시마다 12.5ns를 생성하는 8개의 32*32 병렬 승산기* 8 32 * 32 parallel multipliers that generate 12.5 ns for each operation of 8 32-bit multiplication (integer or floating-point format), 16 16-bit multiplication, and 32 8-bit multiplication. * 8번의 36비트 ALU 연산(정수 또는 부동 소수점 포맷), 16번의 16비트 ALU 연산 또는 32번의 8비트 ALU 연산 중 어느 하나의 연산시마다 12.5ns를 생성하는 8개의 36비트 ALUEight 36-bit ALUs that generate 12.5 ns for each of eight 36-bit ALU operations (integer or floating-point format), 16 16-bit ALU operations, or 32 8-bit ALU operations 로드 저장 유니트는 각각 도 14에 설명된 바와 같이 288비트 폭을 갖는 별개의 독출 기입 데이터 버스들을 통하여 데이터 캐쉬와 인터페이스하기 위해 설계된 것이다.The load storage unit is designed to interface with the data cache through separate read write data buses, each 288 bits wide, as described in FIG. 2.3.4 인터럽트 예외2.3.4 Interrupt exception 벡터 처리기는 다음의 2가지 특수 조건만을 인식한다.The vector processor recognizes only two special conditions: * ARM7 프로그램에 의해 실행되는 CPINT(코프로세서 인터럽트) 명령어* A coprocessor interrupt (CPINT) instruction executed by an ARM7 program. * 벡터 처리기 프로그램에 의해 실행되는 서브루틴 명령어로의 내포형 점프(nested jump) 승산의 결과인 하드웨어 스택 오버플로우* Hardware stack overflow as a result of nested jump multiplication to subroutine instructions executed by the vector processor program 벡터 처리기가 이들 2가지 특수 조건을 처리하는 좀 더 상세한 방법에 대해서는 벡터 처리기 구조 문서를 참조할 것.See the vector processor architecture document for more details on how the vector processor handles these two special conditions. MCP에서 발생되는 그외 다른 인터럽트 및 예외 조건들은 오로지 ARM7에 의해서 처리된다.All other interrupt and exception conditions generated by the MCP are handled by ARM7. 2.4 캐쉬 서브시스템2.4 Cache Subsystem 2.4.1 개요2.4.1 Overview 캐쉬 제어 유니트(CCU)는 ARM7 코아, 벡터 실행 유니트(LSU, IFU), 메모리(MCU, PCI, DMA, CODEC) 및 IO 디바이스들(BP, UART, 타이머, 인터럽트 콘트롤러)와 인터페이스한다. CCU는 고속(80MHz)의 FBUS와 저속(20MHz)의 IOBUS와 인터페이스한다. CCU는 사실상 모든 내부 CPU 코아 유니트와 주변 IO 디바이스들 사이의 중앙 데이터 전송 유니트이다. MSP 칩에서 CCU의 상세한 설명에 대해서는 MSP-1E 시스템 스펙에 있는 블록도(pp. 1-10)를 참조할 것.The cache control unit (CCU) interfaces with ARM7 cores, vector execution units (LSU, IFU), memory (MCU, PCI, DMA, CODEC) and IO devices (BP, UART, timers, interrupt controllers). The CCU interfaces with high speed (80MHz) FBUS and low speed (20MHz) IOBUS. The CCU is the central data transfer unit between virtually all internal CPU core units and peripheral IO devices. Refer to the block diagram (pp. 1-10) in the MSP-1E system specification for a detailed description of the CCU on the MSP chip. 매우 고성능의 캐쉬 시스템을 지원하기 위해서, CCU 설계는 모든 독출 및 기입 동작을 지원하는 프로토콜에 근거한 트랜잭션(transaction)을 사용한다. 메모리를 억세스할 필요가 있는 임의의 유니트는 CCU 제어 유니트로 리퀘스트(request)를 발생시킬 수 있다. 제어 유니트에 있는 아비터(arbiter)는 고정된 우선순위에 근거하여 리퀘스트를 승인하고, 리퀘스터(requestor)로 'transaction_id'를 회신한다. 리퀘스터는 이 'transaction_id'를 저장하여, 데이터가 실제 도착하였을 때 회신된 데이터를 인식할 수 있도록 한다. CCU 제어가 하나의 유니트(캐쉬 미스(cashe miss)가 발생한 경우 많은 사이클을 필요로 할 수 있음)로부터 온 리퀘스트를 처리하는 동안, 다른 유니트로부터 새로운 리퀘스트가 다른 'transaction_id'와 함께 다음 사이클에서 승인될 수 있다. 리퀘스트를 펜딩(pending)시키는 이러한 방법에서는 다른 유니트로부터의 연속적인 리퀘스트를 차단시키는 일이 일어나지 않으므로 고성능을 실현할 수 있다. 현재, CCU는 하나의 사이클에서 하나의 독출 리퀘스트와 하나의 기입 리퀘스트를 동시에 억셉트하여 승인할 수 있다.To support a very high performance cache system, the CCU design uses a transaction based on a protocol that supports all read and write operations. Any unit that needs to access the memory can make a request to the CCU control unit. The arbiter in the control unit accepts the request based on a fixed priority and returns a 'transaction_id' to the requester. The requester stores this 'transaction_id' so that it can recognize the data returned when the data actually arrived. While the CCU control is processing requests from one unit (which may require many cycles if a cache miss occurs), new requests from another unit will be accepted in the next cycle along with another 'transaction_id'. Can be. In this method of pending a request, high performance can be realized since blocking of successive requests from other units does not occur. Currently, the CCU can accept and accept one read request and one write request simultaneously in one cycle. 메모리에 대한 인터페이스 유니트(FBUS)는 4개 엔트리의 어드레스 큐와 1개 엔트리의 라이트-백(write-back) 래치로 이루어진다. 최선의 상태에서, FBUS는 ARM 명령어 캐쉬로부터 오는 하나의 펜딩 리필(독출) 리퀘스트, VEC 명령어 캐쉬로부터 오는 하나의 펜딩 리필(독출) 리퀘스트, VEC 데이터 캐쉬로부터 오는 하나의 기입 리퀘스트와, 더티(dirty) 캐쉬 라인으로 인해 VEC 데이터 캐쉬로부터 오는 하나의 라이트-백 리퀘스트를 지원할 수 있다.The interface unit (FBUS) to the memory consists of an address queue of four entries and a write-back latch of one entry. In the best case, the FBUS can contain one pending refill (read) request from the ARM instruction cache, one pending refill (read) request from the VEC instruction cache, one write request from the VEC data cache, and dirty. The cache line can support one write-back request coming from the VEC data cache. 또한, 캐쉬 메모리 자체는 고성능을 위해 최적화된다. MSP 캐쉬 시스템은 칩상(on-chip)의 캐쉬 SRAM과 캐쉬 ROM를 가진다. 캐쉬 SRAM은 ARM CPU와 벡터 코아 또는 명령어와 데이터 사이의 데이터 스래싱(thrashing)을 방지하기 위하여 4개의 서로 다른 뱅크로 나누어진다. 캐쉬 ROM은 ARM7과 벡터 코아를 위해서 고속 및 고밀도의 데이터 저장 영역을 제공한다. 비록 태크(tag)가 캐쉬 ROM에 대하여 변경되지는 않지만, 유효 비트를 사용할 수 없게 되어 데이터가 외부 메모리로부터 반송된다. 요약하면, 칩상의 캐쉬 메모리는 다음과 같은 블록들을 포함한다.In addition, the cache memory itself is optimized for high performance. The MSP cache system has on-chip cache SRAM and cache ROM. Cache SRAM is divided into four different banks to prevent data thrashing between the ARM CPU and vector cores or between instructions and data. Cache ROM provides high-speed and high-density data storage for ARM7 and vector cores. Although the tag is not changed for the cache ROM, valid bits are not available and data is returned from external memory. In summary, the on-chip cache memory contains the following blocks. * 1KB의 직접 매핑된 명령어 캐쉬와, 1kB의 직접 매핑되며 ARM7에 대한 32비트 데이터 버스 인터페이스를 가지는 라이트-백 데이터 캐쉬* Write-back data cache with 1KB direct mapped instruction cache and 1kB direct mapped, 32-bit data bus interface to ARM7 * 1KB의 직접 매핑되며 벡터 명령어 페치 유니트에 대한 256비트 버스 인터페이스를 가지는 명령어 캐쉬* Directly mapped 1KB, instruction cache with 256-bit bus interface to vector instruction fetch unit * 4KB의 직접 매핑되며 벡터 실행 유니트에 대한 256비트 버스 인터페이스를 가지는 라이트-백 데이터 캐쉬. 데이터 캐쉬는 듀얼 포트로 되어 있으며, 80MHz의 매 사이클마다 256비트의 독출 데이터를 제공하고 256비트의 기입 데이터를 지원할 수 있다.Write-back data cache with 4KB direct mapped and 256-bit bus interface to vector execution units. The data cache is dual-ported and can provide 256 bits of read data and support 256 bits of write data every 80 MHz cycle. * 4KB VEC 데이터 캐쉬는 소프트웨어 제어하에 스크래치-패드(scaratch-pad) 연산으로 형성될 수 있다.* 4KB VEC data cache can be formed by scratch-pad operation under software control. * ARM7 및 벡터 처리기에서 사용하기 위해 공유 및 집적된 명령어 데이터 ROM 캐쉬. ARM7에 대한 인터페이스는 그의 명령어 캐쉬와 동일한 32비트 버스를 통하여, 벡터 처리기에 대한 인터페이스는 그의 명령어 캐쉬와 동일한 256비트를 통해 이루어진다.Instruction data ROM cache shared and integrated for use in ARM7 and vector processors. The interface to ARM7 is through the same 32-bit bus as its instruction cache, and the interface to the vector processor is through the same 256 bits as its instruction cache. * 5개의 포트:* 5 ports: - ARM7을 위한 독출/기입 포트Read / write port for ARM7 - 벡터 처리기의 명령어 페치 유니트를 위한 독출 포트Read port for instruction fetch unit of vector processor - 벡터 처리기의 로드/저장 유니트를 위한 독출/기입 포트Read / write port for load / storage unit of vector processor - 벡터 처리기의 IOBUS를 위한 독출/기입 포트Read / write port for IOBUS on vector processor - FBUS를 위한 독출/기입 포트Read / write port for FBUS * ARM7 CPU 명령어 캐쉬를 위한 32*256비트 SRAM(∼1KB)32 * 256 bit SRAM (~ 1KB) for caching ARM7 CPU instructions * ARM7 CPU 데이타 캐쉬를 위한 32*256비트 SRAM(∼1KB)32 * 256 bit SRAM (~ 1KB) for ARM7 CPU data cache * 벡터 처리기 데이타 캐쉬를 위한 128*256비트 SRAM(∼4KB)128 * 256 bit SRAM (~ 4KB) for vector processor data cache * 벡터 처리기 명령어 캐쉬를 위한 32*256비트 SRAM(∼1KB)32 * 256-bit SRAM (~ 1KB) for vector processor instruction cache * 데이타 명령어 캐쉬를 위한 512*256비트 SRAM(∼16KB)* 512 * 256 bit SRAM (~ 16KB) for data instruction cache 벡터 데이터 캐쉬의 제어는 하드웨어 제어 또는 소프트웨어 제어에 의해 수행된다.Control of the vector data cache is performed by hardware control or software control. 2.4.2 캐쉬 서브시스템 구조2.4.2 Cache Subsystem Structure 도 15는 MSP 캐쉬 시스템의 블록도로서, 다음 블록들:IDC(Instruction Data Cashe), 캐쉬 ROM, CCU_DATA_DP, CCU_ADR_DP, CCU_CTL 및 CCU_SM으로 구성된다. 각각의 서브 블록은 다음에 좀 더 상세히 설명되어 된다.FIG. 15 is a block diagram of an MSP cache system, and is composed of the following blocks: Instruction Data Cashe (IDC), Cache ROM, CCU_DATA_DP, CCU_ADR_DP, CCU_CTL, and CCU_SM. Each subblock is described in more detail below. 2.4.2.2. IDC2.4.2.2. IDC 명령어 및 데이터 캐쉬(IDC; 도 16 참조)는 칩상의 SRAM 메모리로서, 명령어 및 데이터 캐쉬 억세스를 제공하기 위해 사용된다. 이 캐쉬는 하나의 어레이에 대해 4개의 뱅크:ARM_IC(1KB), ARM_DC(1KB), VEC_IC(1KB) 및 VEC_DC(4KB)로 구성된다. 임의의 사이클에서, 이 캐쉬는 하나의 독출 리퀘스트와 하나의 기입 리퀘스트를 억셉트한다. 태크 RAM은 두 개의 독출 포트를 가진다. 독출 포트 어드레스와 기입 포트 어드레스는 히트 또는 미스 조건에 대하여 내부 캐쉬 태그와 비교된다. 데이터 RAM은 독출 포트 어드레스에 의해 억세스되는 하나의 독출 포트만을 가진다. 또한, 태그 RAM과 데이터 RAM은 서로 다른 세트의 기입 어드레스를 사용하여 기입되어진다. 그러므로, 캐쉬 어레이를 억세스하기 위해서는 4세트의 캐쉬 뱅크 선택신호와 3세트의 라인 인덱스를 필요로 한다.Instruction and data cache (IDC; see FIG. 16) is an on-chip SRAM memory, used to provide instruction and data cache access. This cache consists of four banks: ARM_IC (1 KB), ARM_DC (1 KB), VEC_IC (1 KB) and VEC_DC (4 KB) for one array. In any cycle, this cache accepts one read request and one write request. Tagged RAM has two read ports. The read port address and the write port address are compared with the internal cache tag for hit or miss conditions. The data RAM has only one read port that is accessed by the read port address. In addition, the tag RAM and the data RAM are written using different sets of write addresses. Therefore, in order to access the cache array, four sets of cache bank selection signals and three sets of line indexes are required. IDC는 다음과 같은 특징을 가진다.IDC has the following characteristics: * 라이트-백 규칙으로 직접 매핑된다.* Maps directly to the write-back rule. * 캐쉬 라인 사이즈는 64B이지만 데이터 폭은 32B이며, 이는 MSP 칩의 벡터 데이터 폭 사이즈에 해당한다.The cache line size is 64B, but the data width is 32B, which corresponds to the vector data width size of the MSP chip. * 각 라인은 두 개의 유효 비트를 가지는데, 하나는 하이 벡터를 위한 것이고, 다른 하나는 로우 벡터를 위한 것이다. 또한, 데이터 캐쉬는 각각의 벡터에 대하여 하나씩 즉, 두 개의 더티 비트를 가진다.Each line has two valid bits, one for the high vector and one for the low vector. The data cache also has two dirty bits, one for each vector. * ARM_IC, ARM_DC 및 VEC_IC를 위한 태그 사이즈는 22비트(어드레스 비트 10-비트 31)이고, VEC_DC를 위한 태그 사이즈는 20비트(어드레스 비트 12-비트 31)이다.The tag size for ARM_IC, ARM_DC and VEC_IC is 22 bits (address bits 10-bit 31), and the tag size for VEC_DC is 20 bits (address bits 12-bit 31). * ARM_IC, ARM_DC 및 VEC_IC를 위한 라인 인덱스 비트는 5비트(어드레스 비트 5-비트 9)이고, VEC_DC를 위한 라인 인덱스 비트는 7비트(어드레스 비트 5-비트 11)이다.The line index bits for ARM_IC, ARM_DC and VEC_IC are 5 bits (address bits 5-bit 9) and the line index bits for VEC_DC are 7 bits (address bits 5-bit 11). * VEC_DC(4KB)는 소프트웨어 제어하에 스크래치-패드로 재형성될 수 있다.* VEC_DC (4KB) can be reformed into a scratch-pad under software control. * V_CLEAR 신호는 캐쉬 라인 유효 비트 모두를 한번에 전체적으로 리셋시키는데 사용된다. 차후에 V_CLEAR는 개별적인 뱅크만 선택적으로 리셋시킬 수 있을 것이다.The V_CLEAR signal is used to reset all of the cache line valid bits at once. In the future V_CLEAR will be able to selectively reset only individual banks. 2.4.2.3 데이터 경로 파이프라인2.4.2.3 Data Path Pipeline 도 17 참조.See FIG. 17. 2.4.2.4 어드레스 경로 파이프라인2.4.2.4 Address Path Pipeline 어드레스 처리 파이프라인에 대한 데이터 경로는 도 18에 도시된 바와 같다.The data path for the address processing pipeline is as shown in FIG. CCU ADDRESS DPCCU ADDRESS DP 2.4.3 인터페이스2.4.3 Interface 2.4.3.1 데이터 타입2.4.3.1 Data Type CCU는 테이블 15에 설명되는 여러개의 리퀘스팅 유니트로부터 오는 서로 다른 데이터 타입을 처리한다.The CCU handles different data types from the various requesting units described in Table 15. [테이블 15]Table 15 서로 다른 데이터 타입을 처리할 경우의 CCU 동작CCU behavior when handling different data types 2.4.3.2 ARM 인터페이스2.4.3.2 ARM interface ARM7 CPU 코아가 MSP 칩의 주파수의 1/2(40MHz)로 동작하는 반면, CCU는 MSP 칩의 주파수(80MHz)로 동작한다. 이들 두 개 클럭간의 동기화는 설계시 중요하다. 일반적으로, 클럭 발생기 유니트는 CLK1의 상승에지에서 MCLK를 절환한다. 또한, ARM7에 연결된 전체적인 리셋 신호는 CLK1와 MCLK가 로우인 경우 해제(de-assert)된다. 이러한 방법으로 두 개의 유니트는 적절히 동기화된다.The ARM7 CPU core runs at half the frequency of the MSP chip (40MHz), while the CCU runs at the MSP chip's frequency of 80MHz. Synchronization between these two clocks is important in design. In general, the clock generator unit switches MCLK on the rising edge of CLK1. In addition, the global reset signal connected to ARM7 is de-asserted when CLK1 and MCLK are low. In this way the two units are properly synchronized. ARM7은 명령어와 데이터용으로 하나의 입력 버스(ARM_DATA31:0)만을 가지지만 MSP 칩은 전용의 명령어 캐쉬(ARM_IC, 1KB)와 데이터 캐쉬(ARM_DC, 1KB)를 구비한다. CCU는 ARM_NOPC를 사용하여 이들 두 종류의 리퀘스트를 구별할 수 있다.ARM7 has only one input bus (ARM_DATA31: 0) for instructions and data, but the MSP chip has a dedicated instruction cache (ARM_IC, 1KB) and data cache (ARM_DC, 1KB). The CCU can use ARM_NOPC to distinguish between these two kinds of requests. 성능을 좀 더 향상시키기 위하여, CCU는 메인 캐쉬와 ARM7 코아 사이에 위치하는 마이크로 명령어 캐쉬(UI_CACHE, 32B)와 마이크로 데이타 캐쉬(UD_CACHE, 32B)를 부가한다. 이들 캐쉬는 각각 연속적인 코드와 데이터로 되어 있는 8워드를 가진다. 이들 마이크로 캐쉬는 그 자신의 태그(27비트), 태그 비교기와 유효 비트를 가진다. 유효 비트들은 시스템 리셋기간 동안 모두 클리어된다.To further improve performance, the CCU adds a micro instruction cache (UI_CACHE, 32B) and a micro data cache (UD_CACHE, 32B) located between the main cache and the ARM7 core. Each of these caches has eight words of contiguous code and data. These micro caches have their own tags (27 bits), tag comparators and valid bits. Valid bits are all cleared during the system reset period. ARM7 마이크로 캐쉬들은 실제의 캐쉬보다는 오히려 프리-페치 버퍼의 역할을 수행한다. ARM7 독출 기간동안, 어드레스(ARM_A31:0)는 항상 태그와 비교된다. 히트는 ARM_DATA31:0를 통해 명령어 또는 데이터를 리드 백(read back)한다. 이후 하나의 마이크로 캐쉬는 어드레스, 데이터 타입 및 다른 제어정보와 함께 리퀘스트를 CCU로 보낸다. CCU의 아비터 로직은 모든 유니트로부터 온 리퀘스가 독출 리퀘스를 만드는 것을 승인한다. 현재, 승인을 얻음에 있어서 ARM7은 다른 블록들에 대하여 최상위 우선순위를 가진다. 그 이유는 ARM7의 마이크로 캐쉬가 미스를 가지지 않는 한, ARM7이 리퀘스트를 만드는 경우가 드물기 때문이다. 그러나, CCU는 여러개의 사이클 리퀘스트 또는 어드레스 큐 충만 조건을 제공하기 위해 내부의 홀드 사이클을 가질 수 있다. 이 기간동안, 외부의 리퀘스트는 전혀 승인되지 않는다.The ARM7 micro caches act as pre-fetch buffers rather than the actual cache. During the ARM7 read period, the address (ARM_A31: 0) is always compared with the tag. The hit reads back the instruction or data via ARM_DATA31: 0. One micro cache then sends a request to the CCU along with the address, data type and other control information. The arbiter logic in the CCU authorizes requests from all units to make read requests. Currently, in obtaining approval, ARM7 has the highest priority over other blocks. The reason is that ARM7 rarely makes a request unless the ARM7 micro cache has a miss. However, the CCU may have internal hold cycles to provide multiple cycle requests or address queue full conditions. During this time, no external requests will be accepted. ARM7로부터의 기입은 어드레스가 UD_TAG을 히트할 경우 항상 UD_CACHE를 무효화시킨다. 라이트-쓰루(write-through) 또는 라이트-백(write-back) 캐쉬로서 UD_CACHE를 설계함에 있어 어떤 시도도 행해지지 않았다. UD_CACHE 기입 히트시 무효화시킴에 의해, ARM_CD와 UD_CACHE 사이의 데이터를 일치시킬 수 있다.Writing from ARM7 always invalidates UD_CACHE when the address hits UD_TAG. No attempt has been made to design UD_CACHE as a write-through or write-back cache. By invalidating UD_CACHE write hits, data between ARM_CD and UD_CACHE can be matched. CCU는 ARM_IC 또는 ARM_DC로 독출 또는 기입 리퀘스트를 보내는 동안 arm_nwait를 제어한다. 일반적으로, CCU는 기입 기간동안에는 arm_nwait을 홀드시키지 않는다. 일단 기입 리퀘스트가 ccu_write_hold2를 보지 않고 승인되면, ARM7은 그저 다음 사이클에서 ARM_DATA31:0에 있는 데이터를 가지고 온다. CCU는 데이터를 저장하기 위하여 내부의 기입 버퍼를 가진다. ARM7은 명령어 행을 계속 할 수 있다. 그러나, CCU는 비록 데이터가 메인 캐쉬에 있더라도 항상 하나의 사이클에 대해 arm_nwait을 홀드시킨다. 만약 독출 리퀘스트가 메인 캐쉬를 미스한 경우, 데이터가 외부의 메인 메모리로부터 반송될 때까지 더 많은 사이클이 홀드된다. 도 19에 도시된 ARM_CCU 인터페이스 상태 머쉰은 CCU가 arm_nwait을 제어하는 조건을 설명한다.The CCU controls arm_nwait while sending read or write requests to ARM_IC or ARM_DC. In general, the CCU does not hold arm_nwait during the write period. Once the write request is granted without looking at ccu_write_hold2, ARM7 simply gets the data in ARM_DATA31: 0 in the next cycle. The CCU has an internal write buffer to store data. ARM7 can continue the instruction line. However, the CCU always holds arm_nwait for one cycle, even if the data is in the main cache. If the read request misses the main cache, more cycles are held until data is returned from the external main memory. The ARM_CCU interface state machine illustrated in FIG. 19 describes a condition under which the CCU controls arm_nwait. 도 19에 있어서:In Figure 19: START:리퀘스트가 없거나, 독출 데이터가 반송되거나, 홀드없이 기입 리퀘스트가 발생된 경우 상태 머쉰을 위한 스타트 상태START: Start state for state machine if no request, read data is returned, or write request is issued without hold HOLD:CCU는 독출 또는 기입을 위한 ARM7 리퀘스트를 승인하고, 홀드 신호로 승인을 취소한다.HOLD: The CPU grants an ARM7 request for reading or writing, and cancels the authorization with a hold signal. TAG:CCU는 독출 어드레스로 태그를 체킹한다.TAG: The CPU checks the tag with a read address. MISS:독출 어드레스는 하나의 미스를 가지고, ccu는 리필 리퀘스트를 외부의 dram으로 보낸다.MISS: The read address has a miss, and ccu sends a refill request to the external dram. DATA:독출 데이터가 반송되고, CCU는 반송된 데이터를 마이크로 데이터 캐쉬로 보낸다.DATA: Read data is returned, and the CCU sends the returned data to the micro data cache. 2.4.3.3. FBUS 인터페이스2.4.3.3. FBUS interface CCU_FBUS 인터페이스 상태 머쉰(F_SM)는 도 20에 도시된 바와 같다. 도 20에 있어서:The CCU_FBUS interface state machine F_SM is as shown in FIG. 20. In FIG. 20: IDLE:아이들 상태IDLE: Kids Status REQ:독출 또는 기입 리퀘스트를 FBUS 아비터로 보낸다.REQ: Sends a read or write request to the FBUS arbiter. GRT1:승인 사이즈가 8B보다 크다.GRT1: Approval size is larger than 8B. GRT2:승인 사이즈가 16B보다 크다.GRT2: Approved size is larger than 16B. GRT3:승인 사이즈가 24B보다 크다.GRT3: Approved size is larger than 24B. GRT4:맨 마지막 사이클에 대한 구동 데이타GRT4: Drive data for last cycle 데이터 수신 상태 머쉰(D_SM)은 도 21에 도시된 바와 같다. 도 21에 있어서:The data reception state machine D_SM is shown in FIG. 21. In Figure 21: IDLE:아이들 상태IDLE: Kids Status ONE:Fdata63:0으로부터 첫번째 8B 데이터를 수신한다.Receive the first 8B data from ONE: Fdata63: 0. TWO:Fdata63:0으로부터 두번째 8B 데이터를 수신한다.Receive second 8B data from TWO: Fdata63: 0. THREE:Fdata63:0으로부터 세번째 8B 데이터를 수신한다.Receives the third 8B data from THREE: Fdata63: 0. FOUR:Fdata63:0으로부터 네번째 8B 데이터를 수신한다.Receive the fourth 8B data from FOUR: Fdata63: 0. REFILL:데이터를 리퀘스터로 반송하기 전에 IDC를 리필한다.REFILL: Refills IDC before returning data to the requester. RDY:데이터를 리퀘스터를 반송할 준비를 한다.RDY: Prepares to return the requester to the data. 2.4.4 독출 및 기입 동작2.4.4 Read and Write Operations 독출 및 기입 상태 머시인은 도 22에 도시된 바와 같다.The read and write state machines are as shown in FIG. 2.4.4.1 독출 동작2.4.4.1 Read Behavior MSP에서 IDC(Instruction and Data Cache)는 3단의 파이프라인 사이클:리퀘스트 사이클, 태그 사이클 및 데이터 사이클로 동작한다. 캐쉬 히트 상황에서, IDC는 매 사이클에서 명령어 또는 데이터를 반송할 수 있다.Instruction and Data Cache (IDC) in the MSP operates in three pipeline cycles: request cycle, tag cycle, and data cycle. In a cache hit situation, the IDC may carry instructions or data in every cycle. 캐쉬 콘트롤러 유니트(CCU)는 캐쉬 SRAM 억세스를 위해 ARM7, 벡터 처리기 유니트, FBUS와 IOBUS 사이의 중재를 담당한다. CCU는 이들 4개의 마스터로부터의 버스 리퀘스트를 감시하여 특정의 ID 번호를 가진 승자에게 버스를 승인한다. CCU는 또한 캐쉬를 억세스하고 태그를 비교하기 위해 캐쉬 어드레스 버스와 독출/기입 제어신호를 발생한다.The Cache Controller Unit (CCU) is responsible for arbitration between ARM7, the vector processor unit, FBUS and IOBUS for cache SRAM access. The CCU monitors the bus requests from these four masters and approves the bus to the winner with a specific ID number. The CCU also generates a cache address bus and read / write control signals to access the cache and compare tags. 캐쉬 히트가 있는 경우, 중재에서 이긴 버스 마스터는 독출/기입 동작을 위해 캐쉬를 억세스할 수 있다. 캐쉬 미스가 있는 경우, CCU는 메인 메모리로부터 반송되는 분실 데이터를 기다리지 않고 리퀘스트를 발생시킨 다음 버스 마스터를 도와준다. 그래서, 캐쉬 미스를 갖는 버스 마스터는 ID 번호를 유지해야만 한다. 이후, 리퀘스트된 데이터가 캐쉬에 있으면, CCU는 GRANT 신호를 동일한 ID 번호를 가진 데이터를 분실한 버스 마스터로 보낸다. 이 버스 마스터는 데이터를 억셉트하거나 무시한다.If there is a cache hit, the bus master winning the arbitration can access the cache for read / write operations. If there is a cache miss, the CCU issues a request and then assists the bus master without waiting for lost data returned from main memory. So, a bus master with a cache miss must keep an ID number. Then, if the requested data is in the cache, the CCU sends a GRANT signal to the lost bus master with the same ID number. This bus master accepts or ignores data. 캐쉬 미스가 발생한 경우, 메인 메모리로부터 데이터를 받기 위하여 라인 페치가 수행된다. 라인 사이즈는 64바이트로 정의되고, 따라서 CCU는 메인 메모리로부터 캐쉬로 데이터를 공급하기 위하여 8번의 연속적인 메모리 억세스(매회 64비트)를 실행한다.When a cache miss occurs, a line fetch is performed to receive data from main memory. The line size is defined as 64 bytes, so the CCU executes eight consecutive memory accesses (64 bits each time) to feed data from main memory to the cache. * 리퀘스트 사이클:Request cycle: CCU는 CLK1에서 여러개의 유니트(ARM, IFU, LSU, IO)로부터 독출 리퀘스트를 억셉트한다. 리퀘스터는 CLK1의 초기에 리퀘스트 신호(lsu_req)와 독출/기입 신호(lsu_rw)를 표시한다. CLK1의 끝에서 CCU는 ccu_grant_id[9:0]를 구동함으로써, 이들 독출 리퀘스트중 하나를 승인한다. ccu_grant_id[9:6]가 리퀘스터의 unit_id와 정합되면, 리퀘스트가 승인된다. 리퀘스터는 ccu_grant_id[5:0]가 리퀘스트와 관련된 transaction_id이기 때문에 ccu_grant_id[5:0]를 래치해야 한다.The CCU accepts read requests from several units (ARM, IFU, LSU, IO) in CLK1. The requester displays the request signal lsu_req and the read / write signal lsu_rw at the beginning of CLK1. At the end of CLK1, the CCU accepts one of these read requests by running ccu_grant_id [9: 0]. If ccu_grant_id [9: 6] matches the request's unit_id, the request is granted. The requester must latch ccu_grant_id [5: 0] because ccu_grant_id [5: 0] is the transaction_id associated with the request. 리퀘스트가 승인되면, 리퀘스터는 어드레스(lsu_adr[31:0])와 CLK2에서 캐쉬 오프 동작(lsu_ccu_off) 및 데이터 타입(lsu_vec_type[1:0], lsu_data_type[2:0])과 같은 다른 제어 정보를 CCU로 보낸다.If the request is granted, the requester sends other control information, such as the address (lsu_adr [31: 0]) and the cache off operation (lsu_ccu_off) and data type (lsu_vec_type [1: 0], lsu_data_type [2: 0]) at CLK2. Send to CCU CLK2의 끝에서 ccu_rd_hold_2가 표시되지 않으면, 리퀘스트는 완전히 CCU로 넘어가고 리퀘스트된 데이터는 얼마 후 반송된다. 그러나, ccu_rd_hold_2가 표시되면, CLK1에서 승인된 리퀘스트는 취소하면서 리퀘스터는 계속 어드레스와 제어정보를 보낸다. 이전의 모든 grant_id 정보가 여전히 유효하기 때문에 다음 사이클에서는 동일한 독출 리퀘스트를 다시 발생시킬 필요가 없다. ccu_rd_hold_2는 CLK2에서 CCU에 의해 해제될 때까지 CLK1에서 일정하게 유지된다.If ccu_rd_hold_2 is not displayed at the end of CLK2, the request passes completely to the CCU and the requested data is returned after some time. However, if ccu_rd_hold_2 is displayed, the requester continues to send the address and control information while canceling the request approved by CLK1. Since all previous grant_id information is still valid, the next cycle does not need to issue the same read request again. ccu_rd_hold_2 remains constant in CLK1 until released by the CCU in CLK2. ccu_rd_hold_2는 타이밍 임계신호로서, 리퀘스터로 CCU가 현재 사이클에서 다른 일을 처리하느라고 바빠서, 승인된 리퀘스트는 아직 처리되지 않았음을 알려주는데 사용된다.ccu_rd_hold_2 is a timing threshold signal used to inform the requester that the CCU is busy processing other things in the current cycle, so that an approved request has not yet been processed. * 태그 사이클* Tag cycle 리퀘스트가 승인되고, 나중에 리퀘스트 사이클에서 취소되지 않은 경우, 리퀘스트는 캐쉬 억세스의 태그 비교 단계로 들어간다. CCU는 태그 독출을 위한 라인을 선택하기 위하여 어드레스(lsu_adr[11:5])와 뱅크 선택신호(리퀘스터)를 사용한다. 태그 히트 신호(ccu_lsu_hit_2)는 CLK2의 끝에서 알려진다. 데이터는 히트 상황을 위해 다음 사이클에서 반송된다. 독출 포트 태그가 출력되어 CLK에 의해 래치된다.If the request is approved and not later canceled in the request cycle, the request enters the tag comparison phase of cache access. The CCU uses an address lsu_adr [11: 5] and a bank select signal (requester) to select a line for tag reading. The tag hit signal ccu_lsu_hit_2 is known at the end of CLK2. The data is returned in the next cycle for a hit situation. The read port tag is output and latched by CLK. 또한, 어드레스 큐 스테이터스는 이 사이클에서 평가된다. 태그 미스와 'almost_full_address_queue'는 'ccu_rd_hold_2' 신호를 표시한다. CCU 상태 머쉰은 어떤 새로운 독출 리퀘스트도 처리하지 않지만, 중지된 태그 비교를 재시도한다.In addition, the address queue status is evaluated in this cycle. The tag miss and the 'almost_full_address_queue' indicate the 'ccu_rd_hold_2' signal. The CCU state machine does not process any new read requests, but retries a stopped tag comparison. 각각의 캐쉬 라인(64B)는 두 개의 벡터를 포함하기 때문에, 태그 히트를 얻기 위하여 억세스된 벡터의 유효 비트가 유효해야 할 것이다. 두배의 벡터(64B) 데이터 독출을 위해서는, 태크 히트를 얻기 위해 두 개의 유효 비트가 유효해야만 한다. cc_off 동작은 항상 태그 미스를 유발시키고, 리퀘스트는 어드레스 큐에 게시된다.Since each cache line 64B contains two vectors, the significant bits of the accessed vector must be valid to obtain a tag hit. For a double vector 64B data read, two valid bits must be valid to obtain a tack hit. The cc_off operation always causes a tag miss, and the request is posted to the address queue. * 데이터 사이클Data cycle 이는 CCU가 데이터를 리퀘스터로 반송하는 사이클이다. 데이터는 CLK1에서 구동되는 하위 16B와 CLK2에서 구동되는 상위 16B와 함께 ccu-dout[127:0] 상에 올려진다. 64B 데이터 리퀘스트인 경우, 전송을 종결시키기 위하여 하나의 부가적인 사이클이 사용된다.This is a cycle in which the CCU returns data to the requester. Data is loaded on ccu-dout [127: 0] with the lower 16B driven by CLK1 and the upper 16B driven by CLK2. In the case of a 64B data request, one additional cycle is used to terminate the transmission. CCU는 데이터가 다음 CLK1에서 반송될 것이라는 것을 리퀘스터로 알려주기 위하여 항상 ccu_data_id[9:0]을 CLK2의 초기의 1/2 사이클에서 구동한다. 리퀘스터는 적절한 반송 데이터를 위하여 항상 ccu_data_id[9:0]을 비교한다. 또한, 반송 데이터의 지시자로서 태그 히트가 사용된다.The CCU always runs ccu_data_id [9: 0] in the initial half cycle of CLK2 to inform the requester that data will be returned in the next CLK1. The requester always compares ccu_data_id [9: 0] for proper return data. In addition, a tag hit is used as an indicator of conveyance data. 만약 태그 사이클에서 태그 미스가 있고, 어드레스 큐가 충만해 있지 않으면, CCU는 CLK1에서 분실된 어드레스, id 정보 및 다른 제어정보를 4개 엔트리 어드레스 큐로 게시하면서 캐쉬 라인 페치를 시작한다. 현재, 각각의 어드레스 큐는 대략 69비트의 정보를 포함한다. CLK2에서 메모리 어드레스 래치가 로드되어, FBUS 리퀘스트가 다음 CLK1에서 발생된다.If there is a tag miss in the tag cycle and the address queue is not full, the CCU starts a cache line fetch by posting the missing address, id information and other control information in the CLK1 to the four entry address queue. Currently, each address queue contains approximately 69 bits of information. The memory address latch is loaded at CLK2, and an FBUS request is generated at the next CLK1. 2.4.4.2 기입 동작2.4.4.2 Write operation IDC에서 기입 동작은 3단의 파이프라인 사이클:리퀘스트 사이클, 태그 사이클 및 데이터 기입 사이클로 동작한다. 기입 어드레스 히트 상황에서, IDC는 매 사이클에서 캐쉬 데이터 어레이로 데이터를 기입할 수 있다.The write operation in IDC operates in three pipeline cycles: request cycle, tag cycle, and data write cycle. In a write address hit situation, the IDC may write data to the cache data array in every cycle. * 리퀘스트 사이클:Request cycle: CCU는 CLK1에서 여러개의 유니트(ARM, LSU, IO)로부터 기입 리퀘스트를 억셉트한다. 리퀘스터는 CLK1의 초기에 리퀘스트 신호(lsu_req), 독출/기입 신호(lsu_rw)와 벡터 타입(lsu_vec_type[1:0])를 표시한다. CLK1의 끝에서 CCU는 이들 기입 리퀘스트중 하나를 승인한다. 서로 다른 유니트에 대한 기입 승인은 승인 신호(ccu_lsu_wr_grant)를 직접 리퀘스팅 유니트로 표시하는 것에 의해 실현된다. 반송되는 데이터가 전혀 없으므로 리퀘스트 유니트가 CCU로부터 transaction_id를 수신할 필요는 없다. CLK2에서, 리퀘스터는 어드레스(lsu_adr[31:0]), cc_off 신호(lsu_ccu_off) 및 데이터 타입(lsu_data_type[2:0])을 공급해야 한다.The CCU accepts write requests from several units (ARM, LSU, IO) in CLK1. The requester displays the request signal lsu_req, the read / write signal lsu_rw and the vector type lsu_vec_type [1: 0] at the beginning of CLK1. At the end of CLK1, the CCU approves one of these write requests. Write approval for different units is realized by marking the grant signal ccu_lsu_wr_grant directly as the requesting unit. Since no data is returned, the request unit does not need to receive a transaction_id from the CCU. In CLK2, the requester must supply the address lsu_adr [31: 0], the cc_off signal lsu_ccu_off and the data type lsu_data_type [2: 0]. 독출 경우에 마찬가지로, 비록 리퀘스트가 승인은 되었지만 현재 사이클에서 처리되지 않았음을 리퀘스트로 알려주기 위해서 CCU는 CLK2의 끝에서 ccu_wr_hold_2를 표시한다. 리퀘스터는 ccu_wr_hold_2가 해제될 때까지 어드레스, cc_off 신호와 데이터 타입 정보를 계속 구동한다. 이후, 다음 사이클에서 리퀘스터는 기입 데이터를 ccu_dout[127:0]로 공급한다.Similarly, in the read case, the CCU displays ccu_wr_hold_2 at the end of CLK2 to inform the request that the request has been approved but has not been processed in the current cycle. The requester continues to drive the address, cc_off signal, and data type information until ccu_wr_hold_2 is released. Then, in the next cycle, the requester supplies the write data to ccu_dout [127: 0]. * 태그 사이클* Tag cycle 리퀘스트가 승인되고, 나중에 리퀘스트 사이클에서 취소되지 않은 경우, 리퀘스트는 캐쉬 억세스의 태그 비교 단계로 들어간다. 이 사이클은 기입 포트 어드레스 태그를 비교한다. CCU는 캐쉬용 라인을 선택하기 위하여 어드레스(lsu_adr[11:5])와 뱅크 선택신호(리퀘스터)를 사용한다. 태그 히트 신호(ccu_lsu_hit_2)는 CLK2의 끝에서 알려진다. cc_off 기입은 항상 태그 미스를 유발시키고, 기입 데이터는 외부의 기입을 위해 FBUS상에 올려진다.If the request is approved and not later canceled in the request cycle, the request enters the tag comparison phase of cache access. This cycle compares write port address tags. The CCU uses an address lsu_adr [11: 5] and a bank select signal (requester) to select a cache line. The tag hit signal ccu_lsu_hit_2 is known at the end of CLK2. cc_off writes always cause tag misses, and write data is loaded on the FBUS for external writes. 리퀘스터는 CLK1에서 하위 16B와 CLK2에서 상위 16B와 같이 ccu_din[143:0]로 데이터를 구동하는 것을 시작한다. 64B 데이터 전송인 경우, 데이터를 구동하기 위하여 리퀘스터는 하나의 부가적인 사이클을 취한다. CCU는 이 데이터를 홀드하기 위하여 내부의 기입 데이터 래치를 가진다. 이 기입이 캐쉬를 히트시키거나(실제 데이터를 캐쉬에 기입하기 위하여 하나 또는 두 개의 사이클이 사용됨), 캐쉬를 미스시킬 경우(데이타를 기입하기 위해 매우 적은 사이클이 사용됨), 리퀘스터는 기입이 완료된 것으로 간주한다.The requester starts driving data to ccu_din [143: 0], as in lower 16B in CLK1 and upper 16B in CLK2. In the case of a 64B data transfer, the requester takes one additional cycle to drive the data. The CCU has an internal write data latch to hold this data. If this write hits the cache (one or two cycles are used to write the actual data to the cache), or if the cache misses (very few cycles are used to write the data), the requester must complete the write. To be considered. * 데이터 기입 사이클Data write cycle 이 사이클은 캐쉬 히트 상황을 위해 CCU가 실제 데이터를 캐쉬에 기입하는 사이클이다. 태그 사이클에서 태그 미스가 있는 경우, CCI는 이를 데이터 타입에 따라 서로 다르게 처리한다.This cycle is the cycle by which the CCU writes the actual data to the cache for the cache hit situation. If there are tag misses in the tag cycle, the CCI handles them differently depending on the data type. 데이터 타입이 32B이고 라인이 클린(clean)인 경우(두개의 벡터도 클린임), CCU는 그저 현재의 라인을 새로운 타그와 새로운 데이터를 오버라이트한다. 또한, 억세스중인 벡터를 유효 및 더티한 것으로 표시하는 반면, 동일한 라인의 다른 벡터는 무효한 것으로 둔다.If the data type is 32B and the line is clean (two vectors are also clean), the CCU just overwrites the current line with the new tag and the new data. It also marks the vector being accessed as valid and dirty while leaving other vectors in the same line invalid. 데이터 타입이 32B보다 적은 경우, 이 사이클은 부분적으로 데이터 기입이 행해진다. 이 부분 데이터는 일시적인 레지스터에 저장된다. CCU는 분실된 반 라인(32B)를 메모리로부터 페치한 후 로드하여 캐쉬로 반송한다. 이후, 부분 데이터는 적절한 바이트 인에이블 신호와 함께 캐쉬 라인으로 기입된다.If the data type is less than 32B, this cycle is partially written data. This partial data is stored in a temporary register. The CCU fetches the lost half line 32B from the memory, loads it, and returns it to the cache. The partial data is then written to the cache line with the appropriate byte enable signal. 더티 캐쉬 라인을 갖는 모든 기입 미스에 대하여, CCU는 먼저 더티 라인을 복사한다. 더티 데이터가 아직 사용되지 않았기 때문에, CCU는 승인 로직으로 홀드를 표시하여 새로운 독출 또는 기입 리퀘스트가 승인되지 않도록 한다. 이후, 더티 캐쉬 라인 데이터를 페치하기 위하여 더티 라인을 사용하여 내부의 독출이 시작된다. 결국, 라이트 백 어드레스 및 데이터는 메모리로 공급된다.For every write miss with dirty cache lines, the CCU first copies the dirty lines. Since dirty data has not yet been used, the CCU marks the hold with grant logic so that no new read or write requests are accepted. Thereafter, internal readout is started using the dirty line to fetch the dirty cache line data. As a result, the write back address and data are supplied to the memory. 2.4.5 프로그래밍 모델2.4.5 Programming Model 캐쉬 서브시스템은 모두 로드 저장 명령어를 사용한 하드웨어로 제어되므로, 소프트웨어-비저블(software-visible) 레지스터를 필요로 하지 않는다.The cache subsystem is all hardware controlled using load and store instructions, eliminating the need for software-visible registers. 2.4.5 IDC 및 ROM 어드레스 포맷은 도 23에 도시된 바와 같다.2.4.5 The IDC and ROM address formats are as shown in FIG. 제3장 IOBUS 설명Chapter 3 IOBUS Description 이 장은 하드웨어 디자이너에서 보여주는 IOBUS의 사양에 대하여 기술한 것이다.This chapter describes the specification of IOBUS as presented by the hardware designer. 3.1 개요3.1 Overview IOBUS는 시스템에서 사용되는 저속의 표준적인 주변 장치들을 위해 설계된 것이다. 이 버스는 MSP 캐쉬 제어 유니트(CCU), 비트스트림 처리기(BSP)와 타이머/인터럽트 콘트롤러와 UART와 같은 모든 다른 IO 주변 장치들간의 메인 인터페이스 역할을 수행한다. 버스의 포맷은 인텔사의 IO 버스와 매우 유사하다. 버스 아비터 제어 로직은 리퀘스트에 대해 버스를 항상 감시하고, 라운드-로빈(round-robin) 체계를 사용하여 적절한 리퀘스트-승인을 발생시킨다. 잠재적인 버스 마스터는 항상 버스-리퀘스트를 표시하고, 버스를 점유하기 전에 버스-승인이 표시되기를 기다린다. 버스 마스터는 항상 프로토콜에 따른 기간 동안 어드레스와 제어 라인을 구동한다.IOBUS is designed for the low speed standard peripherals used in the system. The bus serves as the main interface between the MSP Cache Control Unit (CCU), Bitstream Processor (BSP) and Timer / Interrupt Controller and all other IO peripherals such as UARTs. The format of the bus is very similar to Intel's IO bus. The bus arbiter control logic always monitors the bus for requests and uses the round-robin scheme to generate appropriate request-approval. The potential bus master always displays the bus-request and waits for the bus-approval to be displayed before occupying the bus. The bus master always drives the address and control lines for the duration of the protocol. IOBUS는 전체적으로 40MHz로 동작하는 동기 버스이다. MSP IOBUS상에서 모든 승인은 리퀘스트가 액티브로 샘플링된 후 첫번째 사이클에서 발생한다. 이 버스는 4개 사이클(4개의 버스트)에 대하여 16바이트 전송까지 처리가능하다. 이는 버스 마스터에 의해 리퀘스트된 전송 사이즈를 버스 아비터로 알려주는 두 개의 사이즈 비트를 사용함으로써 실현된다.IOBUS is a synchronous bus that operates at 40MHz overall. All acknowledgments on MSP IOBUS occur in the first cycle after the request is sampled as active. The bus can handle up to 16 byte transfers for four cycles (four bursts). This is accomplished by using two size bits that inform the bus arbiter of the transfer size requested by the bus master. IOBUS는 32비트 어드레스와 데이터 멀티플렉서를 가진다. 어드레스는 항상 데이터 이전에 먼저 나타난다. IOB_ALE(어드레스 래치 인에이블) 신호는 어드레스를 래치하기 위해 수신중인 디바이스가 사용한다. 비록 8비트 디바이스가 버스에 연결되더라도 모든 버스 억세싱은 32비트 전송을 가정한다. 정상적인 규칙에 의하면, 8비트 디바이스는 버스의 하위 8비트[7:0]를 사용하고, 16비트 디바이스는 버스의 하위 16비트[15:0]를 사용한다. 만약 16비트 디바이스가 8비트 디바이스와의 통신을 원한다면, 8비트 디바이스가 데이터를 찾아서 래치할 수 있도록 버스의 하위 8비트에 정확한 데이터를 올려 놓아야 한다. 동일한 기간에 여러개의 리퀘스트가 있는 경우, 승인되지 않은 리퀘스터는 IOBUS 아비터가 승인할 때까지 항상 그들의 리퀘스트를 홀드시켜야 한다. 이러한 체계로 허용된 리퀘스트에 대해 많은 버스-억세싱 사이클 즉, 4*32비트 전송(최대 16바이트)가 있다. 블록 전송은 항상 각각 여러개의 32비트 전송으로 나뉘어진다.IOBUS has a 32-bit address and data multiplexer. The address always appears first before the data. The IOB_ALE (Address Latch Enable) signal is used by the receiving device to latch the address. Even if an 8-bit device is connected to the bus, all bus accessing assumes 32-bit transmission. By convention, 8-bit devices use the lower 8 bits [7: 0] of the bus, and 16-bit devices use the lower 16 bits [15: 0] of the bus. If a 16-bit device wants to communicate with an 8-bit device, it must put the correct data on the lower 8 bits of the bus so that the 8-bit device can find and latch the data. If there are multiple requests in the same period, unauthorized requesters should always hold their requests until approved by the IOBUS arbiter. There are many bus-accessing cycles, or 4 * 32-bit transfers (up to 16 bytes), for the requests allowed by this scheme. Block transfers are always divided into several 32-bit transmissions. 모든 버스 승인은 IOBUS 아비터에 의해 발생된다. 그러나, 항상 어드레스(유효시)를 감시하고, 목적지로 적절한 칩 선택(다음 클럭 사이클에 대하여)을 발생시키는 병렬 디코딩 로직이 있다. 칩 선택은 항상 단 하나의 사이클에 대해 유효하고, 이후 어드레스가 모든 독출 및 기입 리퀘스트를 위해 표시된다. 각각의 IOBUS 노드는 입력으로 전용의 칩 선택을 가진다. 핀 설명 및 타이밍도를 참조할 것.All bus acknowledgments are generated by IOBUS arbiters. However, there is parallel decoding logic that always monitors the address (if valid) and generates the appropriate chip selection (for the next clock cycle) as the destination. Chip selection is always valid for only one cycle, after which the address is marked for all read and write requests. Each IOBUS node has a dedicated chip selection as input. See pin descriptions and timing diagrams. 2비트 사이즈 정보는 버스 아비터로부터 승인된 다음 마스터에 의해 발생되고, 이후 2개의 버스 사이클에 대하여 유효하다. CS가 버스 전송 사이클을 결정하기 위하여 표시되면, 선택된 슬레이브는 사이즈 정보를 획득해야 한다. 또한, 독출 또는 기입시, IOBUS 아비터는 새로운 리퀘스트를 찾기 시작하기 전에, 버스 사이클이 종료되는 것을 판단하기 위한 전송 사이즈의 트랙을 유지한다. 버스트-버스 전송시(독출 또는 기입시) 데이터간에는 차이가 전혀 없다.The 2-bit size information is generated by the next master, approved by the bus arbiter, and then valid for two bus cycles. If CS is indicated to determine the bus transfer cycle, the selected slave must obtain size information. In addition, upon reading or writing, the IOBUS arbiter keeps track of the transfer size to determine that the bus cycle is over, before starting to find a new request. There is no difference between the data during burst-to-bus transmissions (read or write). 데이터 독출 전송에 있어서, 데이터가 유효한 시점을 리퀘스터로 알려 주며, 이 데이타 래치를 시작하기 위하여 READY 신호가 사용된다. 이 READY 신호는 버스 마스터와 슬레이브에 의해 발생된다.In a data read transfer, the requester tells the requester when the data is valid, and a READY signal is used to initiate this data latch. This READY signal is generated by the bus master and slave. 이 프로토콜을 만족시키기 위해서는, 모든 IOBUS 노드들은 리퀘스트를 처리하기 전에 IOBUS 인터페이스를 설계하는 것이 필요하다. 이 인터페이스는 다음 스펙을 만족시켜야 한다.To satisfy this protocol, all IOBUS nodes need to design an IOBUS interface before processing the request. This interface must meet the following specifications: 3.2 핀 설명3.2 Pin Description 이하, 버스 마스터측에서 본 시스템 IOBUS를 위한 어드레스, 데이터 및 제어 신호 정의를 설명하기로 한다. IOBUS 구조 정의를 보여주는 도 24를 참조할 것. 전술한 바와 같이, IOBUS는 다중화된 어드레스/데이타 버스이다.Hereinafter, the address, data and control signal definitions for the system IOBUS on the bus master side will be described. See FIG. 24 showing the IOBUS structure definition. As mentioned above, IOBUS is a multiplexed address / data bus. xxx는 리퀘스터 명칭(ccu, bsp, urt, tmr, int)을 나타내는 3개의 문자 코드이다.xxx is a three character code representing the requester name (ccu, bsp, urt, tmr, int). * 시스템 IOBUS 신호 정의* System IOBUS Signal Definitions 3.3 로직 정의3.3 Logic Definition IOBUS 중재 제어 유니트는 도 25에 도시된 바와 같다.The IOBUS arbitration control unit is as shown in FIG. 3.4 IOBUS 타이밍3.4 IOBUS Timing IOBUS 독출 타이밍(전송 사이즈=1 워드(4 바이트))은 도 26에 도시된 바와 같고, IOBUS 기입 타이밍(전송 사이즈=1 워드(4 바이트))은 도 27에 도시된 바와 같고, IOBUS 독출 타이밍 전송 사이즈=4 워드(16 바이트))은 도 28에 도시된 바와 같고, IOBUS 기입 타이밍(전송 사이즈=4 워드(16 바이트))은 도 29에 도시된 바와 같다.IOBUS read timing (transfer size = 1 word (4 bytes)) is as shown in FIG. 26, IOBUS write timing (transfer size = 1 word (4 bytes)) is as shown in FIG. 27, and IOBUS read timing transfer Size = 4 words (16 bytes)) are as shown in FIG. 28, and IOBUS write timing (transfer size = 4 words (16 bytes)) is as shown in FIG. 제4장 FBUS 설명Chapter 4 FBUS Description 이 장은 하드웨어 디자이너 측면에서 FBUS의 스펙을 기술한 것이다.This chapter describes the specification of FBUS from the hardware designer's point of view. 4.1 개요4.1 Overview 메모리 콘트롤러, PCI, 커스터머 주문형반도체 및 캐쉬 서브시스템은 비다중화된 어드레스 및 데이터 버스 라인을 통해 시스템 버스 FBUS와 인터페이스 한다.Memory controllers, PCI, customer-customized semiconductors, and cache subsystems interface with the system bus FBUS through non-multiplexed address and data bus lines. 하나의 중앙 FBUS 중재 제어 로직을 리퀘스트를 감시하고, 우선순위 체계를 사용하여 승인을 발생한다. 버스 마스터(어드레스 및 데이터 소스)는 항상 버스 리퀘스트를 표시하고, 승인을 기다린다. 정상상태에서, 승인은 버스를 펜딩하는 리퀘스트가 또 다른 마스터/슬레이브에 의해 사용되지 않은 동일한 사이클에서 발생한다(모든 승인은 결합적으로 발생된다). 일단 모터가 버스 승인을 수신하면, 어드레스/데이타/제어 라인은 다음 사이클로 보내진다. 데이타 준비 신호는 항상 다음 사이클 래치를 시작하였음을 수신기로 알려주기 위하여 실질적인 데이터를 처리한다.One central FBUS arbitration control logic monitors the request and issues an acknowledgment using a priority scheme. The bus master (address and data source) always displays the bus request and waits for approval. In steady state, the acknowledgment occurs in the same cycle where the request for pending the bus was not used by another master / slave (all acknowledgments are generated in combination). Once the motor receives the bus acknowledgment, the address / data / control line is sent to the next cycle. The data ready signal always processes the actual data to inform the receiver that the next cycle latch has begun. 버스 대역폭을 최대로 사용하기 위하여, 4개의 연속적인 리퀘스트는 파이프 라인 백 투 백(back to back) 방식으로 수신/전송되고, 4개의 리퀘스트를 제공하기 위하여 리퀘스트 FIFO를 필요로 한다. 메모리 콘트롤러는 4개의 딥(deep) 리퀘스트 FIFO와 2개의 딥 데이터 FIFO를 가진다. 이러한 프로토콜 특성으로 인하여, AF_FULL과 DF_FULL 신호를 필요로 한다. 이들은 각각 어드레스 FIFO 풀과 데이터 FIFO 풀을 나타낸다. FBUS는 승인 카운터 및 리퀘스트 사이즈 버스를 사용하여 8, 16 및 32 바이트의 데이터 전송을 지원한다.In order to make the most of the bus bandwidth, four consecutive requests are received / transmitted in a pipeline back to back manner and require a request FIFO to provide four requests. The memory controller has four deep request FIFOs and two deep data FIFOs. Due to this protocol characteristic, AF_FULL and DF_FULL signals are required. These represent the address FIFO pool and the data FIFO pool, respectively. FBUS supports 8, 16 and 32 byte data transfers using an acknowledgment counter and request size bus. 각각의 FBUS 유니트는 버스를 리퀘스트하기 위한 제어 로직을 가진다. 이 로직은 응용(메모리/PCI/캐쉬 등)에 따라서 유니트마다 다르다. 그러나, 실제의 버스 중재 유니트는 각 유니트에 대해 동일하고, 모든 서브모듈에서 중복된다. 이 유니트는 외부 버스 마스터/슬레이브와 내부 유니트 로직 사이의 매체로서 작용한다. 예를들면, 메모리 콘트롤러의 경우, 일단 CAS가 액티브되면, 메모리 콘트롤러는 FBUS를 사용할 필요가 있음을 나타내는 내부 신호를 통해 내부 리퀘스트를 FBUS 중재 로직으로 표시한다. 이 리퀘스트에 응신하여, FBUS 콘트롤러는 메모리 콘트롤러에 대해 외부인 시스템으로 리퀘스트를 표시하고, 승인을 기다린다. 일단 승인이 수신되면, 어드레스/데이타/제어는 응신의 첫번째 엔트리와 메모리 콘트롤러에 있는 데이터 FIFO로부터 전송된다.Each FBUS unit has control logic to request a bus. This logic varies from unit to unit depending on the application (memory / PCI / cache, etc.). However, the actual bus arbitration unit is the same for each unit and is redundant in all submodules. This unit acts as a medium between the external bus master / slave and the internal unit logic. For example, for a memory controller, once CAS is active, the memory controller indicates internal requests to the FBUS arbitration logic via internal signals indicating that FBUS needs to be used. In response to this request, the FBUS controller displays the request to the system external to the memory controller and waits for approval. Once the acknowledgment is received, the address / data / control is sent from the first entry of the response and from the data FIFO in the memory controller. 메모리 콘트롤러에 대한 시스템 리퀘스트 사이즈는 1 바이트에서부터 최대 32비트 사이즈까지가 될 수 있다. 32 바이트 이상의 리퀘스트 사이즈인 경우, 소스/리퀘스터는 FBUS 사이즈 비트를 사용하여 여러개의 리퀘스트를 초기화한다. 이는 SDARM 메모리 버스(1 또는 2개의 SAMSUNG SDRAM 1M*16)의 한계로 인한 것이다.The system request size for the memory controller can range from 1 byte up to a 32-bit size. For request sizes of 32 bytes or more, the source / requester uses the FBUS size bits to initialize several requests. This is due to the limitations of the SDARM memory bus (1 or 2 SAMSUNG SDRAM 1M * 16). SDRAM은 나머지 시스템에 의해 요구되는 완전한 32 바이트를 실현하기 위하여 8개의 랩(wrap) 길이에 대해 프로그램된다. 32 바이트 이하의 리퀘스트인 경우, 32바이트 모두가 SDRAM으로부터 페치되지만, 원하는 수의 바이트만 목적지로 전송된다.The SDRAM is programmed for eight wrap lengths to realize the full 32 bytes required by the rest of the system. For requests of 32 bytes or less, all 32 bytes are fetched from the SDRAM, but only the desired number of bytes are sent to the destination. 또한, 10개의 비트 리퀘스터 ID 버스는 칩 선택 신호(어드레스/데이타와 동일한 사이클)로 유효화된다.In addition, the ten bit requester ID buses are validated with chip select signals (same cycles as address / data). 모든 FBUS 노드는 3 비트의 목적지 ID를 FBUS 아비터로 발생한다. 이들 3 비트는 리퀘스트와 함께 유효화되고, 리퀘스트의 목적지를 나타낸다. 목적지 ID비트[1:0]는 다음과 같이 입력되는 리퀘스터 ID로부터 디코딩된다.Every FBUS node generates a 3-bit destination ID into the FBUS arbiter. These three bits are validated with the request and indicate the destination of the request. The destination ID bits [1: 0] are decoded from the requester ID input as follows. 리퀘스터 ID[9:6]소스목적지 ID[1:0]Requester ID [9: 6] Source Destination ID [1: 0] 0예약N/A0 Reservation N / A 1ARM7N/A1ARM7N / A 10FUN/A10 FUN / A 11LSUN/A11LSUN / A 100CCU0100CCU0 101ASIC11101ASIC11 110MEM1110MEM1 111PCI10111PCI10 1XXX예약1XXX Reservation 목적지 ID 비트[2]는 독출/기입 리퀘스트 스테이터스를 나타내는데 사용된다. 이는 FBUS가 어드레스 리퀘스트(독출)와 어드레스/데이타 리퀘스트(기입) 사이를 구별하는 것을 도와준다.The destination ID bit [2] is used to indicate read / write request status. This helps FBUS to distinguish between address requests (reads) and address / data requests (writes). 정상상태에서, 승인 카운터 비트 grCNT[1:0]는 리퀘스터가 버스를 필요로 하는 FBUS 사이클의 수를 나타낸다. 백 투 백 리퀘스트에 대하여, 리퀘스트는 버스 마스터로 리퀘스트의 길이를 알려준다. FBUS 마스터 콘트롤러는 두 개의 승인 카운터 비트에 따라서 승인을 표시한다.In steady state, the acknowledgment counter bits grCNT [1: 0] indicate the number of FBUS cycles the requester needs the bus. For back to back requests, the request informs the bus master of the length of the request. The FBUS master controller marks the acknowledgment according to the two acknowledgment counter bits. FBUS는 포스트된 독출을 지원하는 스플릿 트랜잭션 버스이다. 이는 리퀘스터가 버스를 리퀘스트하며, 일단 승인되면 이 FBUS는 어드레스를 구동하고 트랜잭션을 종료한다. 잠시 후, 슬레이브/데이타 소스는 목적지 ID를 사용하고, 동일한 리퀘스트를 리퀘스터를 반송하면서 데이터를 반송한다. 이러한 특성은 버스 대역폭을 대폭 향상시키고, 다른 마스터가 FBUS를 더 빨리 사용하는 것을 허용한다.FBUS is a split transaction bus that supports posted reads. It requests the bus to request the bus, and once approved, the FBUS drives the address and terminates the transaction. After a while, the slave / data source uses the destination ID and returns data while returning the request for the same request. This feature greatly improves bus bandwidth and allows other masters to use FBUS faster. 좀더 상세한 것은 타이밍도를 참조할 것.See the timing chart for more details. 4.2 핀 설명4.2 Pin Description 이하, 시스템 FBUS의 어드레스, 데이터 및 제어 신호를 설명하기로 한다.Hereinafter, the address, data, and control signal of the system FBUS will be described. 전술한 바와 같이, FBUS는 비다중화된 어드레스/데이타 버스이다.As mentioned above, FBUS is a non-multiplexed address / data bus. xxx는 리퀘스터 명칭(mem, pci, asc, ccu)을 나타내는 3개의 문자 코드이다.xxx is a three character code representing the requester name (mem, pci, asc, ccu). [테이블 16]Table 16 시스템 FBUS 신호 정의System FBUS Signal Definitions 도 30은 메모리 독출 리퀘스트 FBUS 플로우를 나타낸 것이고, 도 31은 메모리 기입 리퀘스트 FBUS 플로우를 나타낸 것이고, 도 32는 마스터/슬레이브 비메모리 리퀘스트 FBUS 플로우를 나타낸 것이고, 도 33은 중앙의 FBUS 중재 제어 유니트를 나타낸 것이다.FIG. 30 shows a memory read request FBUS flow, FIG. 31 shows a memory write request FBUS flow, FIG. 32 shows a master / slave non-memory request FBUS flow, and FIG. 33 shows a central FBUS arbitration control unit. will be. 도 34 내지 36은 FBUS 타이밍도로서 도 34는 메모리 리퀘스트 FBUS 타이밍을 나타낸다(8 바이트 데이터 전송을 보여 주며, 16/32/64/128 바이트의 복수개의 데이터 사이클이 사용된다). 도 35는 메모리 독출 리퀘스트 FBUS 타이밍을 나타내고(전송 사이즈=8 바이트), 도 36은 메모리 백 투 백 기입 리퀘스트(전송 사이즈=32 바이트)를 나타낸 것이다.34 through 36 are FBUS timing diagrams, and FIG. 34 shows memory request FBUS timing (shows 8 byte data transfers and multiple data cycles of 16/32/64/128 bytes are used). Fig. 35 shows the memory read request FBUS timing (transfer size = 8 bytes), and Fig. 36 shows the memory back to back write request (transfer size = 32 bytes). 제5장 PCI 버스Chapter 5 PCI Bus 이 장은 PCI 코아와, 내부 FBUS와 인터페이스하는 PCI 글루(glue) 로직의 스펙을 설명한 것이다.This chapter describes the specification of PCI core and PCI glue logic that interfaces with internal FBUS. 5.1 개요5.1 Overview MSP_1E PCI 콘트롤러는 PCI 버스 스펙 개정판 2.1을 만족시키기 위해 설계된 것이다. 좀 더 상세한 것은 이 표준 스펙을 참조할 것.The MSP_1E PCI controller is designed to meet PCI bus specification revision 2.1. See this standard specification for more details. PCI 유니트는 두개의 메인 섹션:PCI 코아와 FBUS '굴루' 로직을 포한한다.The PCI unit contains two main sections: PCI core and FBUS 'gulu' logic. PCI 코아는 주로 33MHz의 PCI 버스 속도로 동작하는 외부의 PCI 디바이스와 인터페이스한다. FBUS '글루' 로직은 80MHz로 동작하는 삼성 FBUS와 인터페이스한다. 이 '글루'로직은 PCI 코아와 FBUS 사이를 인터페이스 한다. 속도 동기화는 서브블록들의 두개의 엔드에서 FIFO를 사용하여 실현될 수 있다.PCI cores interface with external PCI devices primarily operating at a PCI bus speed of 33MHz. FBUS 'glue' logic interfaces with Samsung FBUS operating at 80MHz. This 'glue' logic interfaces between PCI cores and FBUS. Rate synchronization can be realized using FIFO at the two ends of the subblocks. 삼성의 PCI 코아는 또한 가상적인 프레임 버퍼 로직과, FBUS를 통해 ARM7과 인터페이스하는데 필요한 모든 VFB 레지스터를 포함한다.Samsung's PCI Core also includes virtual frame buffer logic and all the VFB registers needed to interface with ARM7 via FBUS. 이 PCI 유니트에 대하여 유일한 특징은 호스트 CPU MSP 칩과 MSP 칩으로부터 호스트 CPU로의 인터럽트 처리이다. 이에 대하여 좀 더 상세히 설명하기로 한다.The only feature for this PCI unit is the host CPU MSP chip and interrupt handling from the MSP chip to the host CPU. This will be described in more detail. 5.1.1 삼성 PCI 코아 블록도는 도 37에 도시된 바와 같다.5.1.1 Samsung PCI core block diagram is as shown in FIG. 5.2 PCI FBUS 인터페이스 로직(도 38 참조)5.2 PCI FBUS Interface Logic (see Figure 38) PCI 코아의 서브블록은 MSP 내부 FBU와 SAND 마이크로의 PCI 코아와 인터페이스한다. 어드레스와 데이터는 두 개의 엔드에서 FIFO에 저장된다. 이 서브 블록은 또한 PCI 신호와 FBUS 클럭을 동기화시키는 역활을 한다.The subblocks of the PCI core interface with the PCI core of the SAND micros and the MSP internal FBU. Address and data are stored in the FIFO at two ends. This subblock also serves to synchronize the PCI signal and the FBUS clock. PCI 코아 로직은 FBUS 마스터 및 슬레이브 디바이스일 수 있다. 대부분의 억세스는 64 비트 FBUS를 통해 로컬 SDRAM 메모리로 향한다. FBUS 프로토콜의 설명을 위해서는 FBUS 장을 참조할 것.PCI core logic may be FBUS master and slave devices. Most access is directed to local SDRAM memory via a 64-bit FBUS. See the FBUS chapter for a description of the FBUS protocol. PCI FBUS 제어 로직은 또한 가상 프레임 버퍼 레지스터와 제어를 포함한다. 이 레지스터는 FBUS를 통해 ARM 에 의해 프로그램 된다. 블록도 참조할 것.PCI FBUS control logic also includes virtual frame buffer registers and controls. This register is programmed by ARM via FBUS. See also block. 5.3 PCI VFB 로직5.3 PCI VFB Logic 도 39는 VFB 블록도이고, 도 40은 VFB 레지스터이다.39 is a VFB block diagram and FIG. 40 is a VFB register. 5.3 PCI 코아 로직5.3 PCI Core Logic MSP PCI 코아는 PCI 2.1 스펙을 완전히 만족한다. 추가된 사항은 인터럽트와 소프트웨어 MSP 리셋을 위해 부가된 레지스터의 수이다.MSP PCI Core fully satisfies the PCI 2.1 specification. Added is the number of registers added for interrupts and software MSP reset. ARM7에 있는 소스트웨어는 MSP 제어 레지스터의 MSP(bit3)으로부터 PCI 호스트 인터럽트 리퀘스트를 세팅함으로써 호스트 CPU를 인터럽트할 수 있다. 이는 PCI 버스(INTA#)에 있는 인터럽트 핀을 세팅함으로써 PCI 코아 로직이 호스트 CPU를 인터럽트하도록 한다. 이후, 호스트 CPU는 MSP 제어 레지스터에 있는 PCI 호스트 인터럽트 인지(bit4)를 통해 인터럽트를 인지한다. 이는 인터럽트 라인이 인액티브 상태가 되도록 한다.The software in ARM7 can interrupt the host CPU by setting a PCI host interrupt request from the MSP (bit3) in the MSP control register. This allows PCI core logic to interrupt the host CPU by setting an interrupt pin on the PCI bus (INTA #). The host CPU then acknowledges the interrupt via PCI host interrupt acknowledgment (bit4) in the MSP control register. This causes the interrupt line to be inactive. MSP PCI 코아는 또한 기본적으로 ARM7에 대한 인터럽트인 호스트 CPU로부터의 인터럽트를 억셉트할 수 있다. PCI 스펙이 임의의 인터럽트 입력 핀을 지원하지 않으므로, MSP 제어 레지스터에 있는 호스트로부터의 MSP 인터럽트 리퀘스트(bit2)가 이 기능을 제공하는데 사용된다. 호스트 CPU는 ARM7에 대한 인터럽트를 나타내기 위하여 이 비트를 설정할 수 있다. 다음, 일단 호스트 인터럽트를 인지하면, ARM7은 이 레지스터를 클리어시킨다. 도 41에 있는 블록도를 참조할 것.The MSP PCI core can also accept interrupts from the host CPU, which are basically interrupts to ARM7. Since the PCI specification does not support any interrupt input pins, an MSP interrupt request (bit2) from the host in the MSP control register is used to provide this functionality. The host CPU can set this bit to indicate an interrupt to ARM7. Next, once the host interrupt is acknowledged, ARM7 clears this register. See the block diagram in FIG. 41. 도 41에 대하여, PCI 공간이 아닌 MSP 영역으로 매핑된 3개의 레지스터가 필요하다.For FIG. 41, three registers are required that are mapped to the MSP region rather than the PCI space. 실질적인 PCI 코아에 대한 세부적인 정보를 위해서는 PCI 2.1 스펙을 참조할 것.Refer to the PCI 2.1 specification for more details on the actual PCI cores. 제6장 메모리 콘트롤러Chapter 6 Memory Controller 6.16.1 이 장은 하드웨어와 소프트웨어 디자이너 측면에서 메모리 콘트롤러의 스펙을 설명한 것이다.This chapter describes the specifications of the memory controller in terms of hardware and software designers. 6.2 개요6.2 Overview MSP 메모리 콘트롤러는 여러 가지 특징을 가지며, 비용과 성능에 대한 트레이드-오프를 위한 프로그램 가능성 레벨을 가진다. 메모리 콘트롤러는 80MHz로 동작하는 메인 시스템 버스 FBUS와 DRAM 칩과 인터페이스한다. 80MHz 클럭 주파수를 실현하기 위하여, 초기의 설계 단계에서 동기 DRAM이 사용된다.The MSP memory controller has several features and has a programmability level for trade-offs in cost and performance. The memory controller interfaces with the main system bus FBUS and DRAM chips operating at 80MHz. In order to realize an 80 MHz clock frequency, synchronous DRAM is used in the early design phase. 결국, 메모리 서브시스템은 표준 고속 페이지 DRAM, 확장된 데이터 출력(EDO) DRAM 과 동기 DRAM을 지원한다. 메모리 뱅크 사이즈는 인터리빙 가능한 2개의 외부 뱅크로 제한된다.As a result, the memory subsystem supports standard high-speed page DRAM, extended data output (EDO) DRAM, and synchronous DRAM. The memory bank size is limited to two external banks that can be interleaved. 초기의 동기 DRAM 메모리 콘트폴러는 DRAM을 동작시키는데 필요한 최소한의 특징을 가진다. 다음은 기본적인 제1패스 메모리 콘트롤러 특징을 나타낸다.Early synchronous DRAM memory controllers have the minimum features needed to operate DRAM. The following shows the basic first pass memory controller features. * 삼성의 동기 DRAM 지원Samsung's synchronous DRAM support * 두개의 SDRAM 칩을 사용한 하나의 메모리 뱅크(1M*16)One memory bank using two SDRAM chips (1M * 16) * Cas-Before-Ras(CBR) 리프레쉬 지원* Cas-Before-Ras (CBR) refresh support * 독출-수정-기입(Read-Modify_Write) 동작을 초기화하는 부분적인 기입 지원Partial write support to initiate read-modify_write operations * 내부의 뱅크 인터리브 지원(MA[11]을 통한 핑퐁)Internal bank interleave support (ping pong via MA [11]) * 80MHz 메로리와 프로세서 버스(1:1) 주파수 매치80MHz memory and processor bus (1: 1) frequency matching * 프로그래머블 리프레쉬율Programmable Refresh Rate * 시스템 버스를 효율적으로 사용하기 위한 어드레스와 데이터 큐잉Address and data queuing for efficient use of the system bus * 매뉴얼 두개 뱅크 프리챠지 지원Manual two bank precharge support MSP 메모리 콘트롤러는 두개의 메인 서브 구성요소:데이터 콘트롤러와 어드레스 콘트롤러를 가진다. 데이터 콘트롤러는 DRAM으로부터 독출된 데이터를 저장하고, 프로세서 버스로부터 데이터를 기입하기 위한 독출 및 기입 데이터 큐를 가진다. 데이터 콘트롤러는 또한 바이트 기입을 위한 RMW 로직을 포함한다. 데이터 콘트롤러에 대한 모든 제어는 어드레스 콘트롤러로부터 발생한다.The MSP memory controller has two main subcomponents: a data controller and an address controller. The data controller has read and write data queues for storing data read from the DRAM and for writing data from the processor bus. The data controller also includes RMW logic for writing bytes. All control over the data controller comes from the address controller. 어드레스 콘트롤러는 리퀘스트 큐, 응신 ID 큐, 메모리 억세스 디코딩 로직, 레이지 비교기 로직, RAS/CAS 상테 머쉰, 리프레쉬 상태 머쉰과, 데이터 콘트롤러에 의해 사용되는 필요한 모든 제어신호들을 가진다.The address controller has a request queue, response ID queue, memory access decoding logic, lazy comparator logic, RAS / CAS state machine, refresh state machine, and all necessary control signals used by the data controller. SDRAM 메모리 클럭은 시스템 클럭과 동일하다. SDRAM은 상기 한벌의 각 제어신호를 수신한다.The SDRAM memory clock is the same as the system clock. The SDRAM receives each set of control signals. 6.2.1 메모리 콘트롤러 블록도는 도 42에 도시된 바와 같다.6.2.1 The memory controller block diagram is as shown in FIG. 6.2.2 메모리 콘트롤러 플로우는 도 43에 도시된 바와 같다.6.2.2 The memory controller flow is as shown in FIG. 6.3 어드레스 콘트롤러(AC)6.3 Address Controller (AC) 메모리 콘트롤러에서 어드레스 콘트롤러 섹션은 데이터 콘트롤러를 관리하는 것 뿐만 아니라 모든 DRAM 제어를 발생시키는 역할을 한다. MSP 메모리 콘트롤러의 이 섹션은 또한 FBUS 인터페이스의 어드레스와 제어 경로를 담당한다. 다음의 블록도는 어드레스 콘트롤러 유니트의 여러개의 서브-섹션을 나타낸다.In the memory controller, the address controller section not only manages the data controller but also generates all DRAM control. This section of the MSP memory controller also handles the address and control path of the FBUS interface. The following block diagram shows several sub-sections of the address controller unit. 6.3.1 어드레스 콘트롤러 블록도는 도 44에 도시된 바와 같다.6.3.1 An address controller block diagram is shown in FIG. 44. 6.3.2 메모리 콘트롤러 리퀘스트 FIFO6.3.2 Memory Controller Request FIFO MSP 메모리 콘트롤러는 실질적인 메모리 콘트롤러 상태 머쉰으로의 디스패치(dispatch)를 위한 FBUS 어드레스와 제어 정보를 저장하는 4개의 딥 리퀘스트 FIFO를 가진다. 리퀘스트 FIFO의 각각의 엔트리는 특정 엔트리의 유효함을 나타내는 유효 비트를 가진다. 메모리 콘트롤러 상태 머쉰은 항상 ENTRY_0인 FIFO에 있는 최하위 엔트리를 지원한다. 일단 리퀘스트가 제공되고, 열 어드레스 스트로브(CAS)가 액티브되면 메모리 콘트롤러는 이 엔트리를 클리어시키기 위해 클리어 신호를 표시한다. FIFO FULL/EMPTY 스테이터스에 다라서, 배럴 쉬프트가 유효한 내용을 엔트리 0으로 쉬프트시키기 위핸 초기화된다.The MSP memory controller has four deep request FIFOs that store FBUS addresses and control information for dispatching to the actual memory controller state machine. Each entry in the request FIFO has a valid bit indicating that the particular entry is valid. The memory controller state machine always supports the lowest entry in the FIFO, which is ENTRY_0. Once a request is provided and the column address strobe (CAS) is active, the memory controller displays a clear signal to clear this entry. Depending on the FIFO FULL / EMPTY status, the barrel shift is initialized to shift the valid content to entry zero. MSP 메모리 콘트롤러 리퀘스트 FIFO 포맷은 도 45에 도시된 바와 같다.The MSP memory controller request FIFO format is as shown in FIG. 6.3.3 메모리 콘트롤러 어드레스 디코드/맵6.3.3 Memory Controller Address Decode / Map 어드레스 디코딩 로직은 주로 11 비트의 SDRAM 행 어드레스 MA[10:0]와 8 비트의 열 어드레스 MA[7:0]을 발생시키는 역할을 한다. 이들 어드레스 라인은 SDRAM 어드레스 입력[11:0]으로 직접 구동된다. 메모리 어드레스 비트[11]은 성능을 위해 내부 SDRAM 뱅크와 개선된 메모리 버스 사용 사이를 토클하는데 사용된다.The address decoding logic mainly serves to generate 11-bit SDRAM row address MA [10: 0] and 8-bit column address MA [7: 0]. These address lines are directly driven to SDRAM address inputs [11: 0]. The memory address bit [11] is used to toggle between the internal SDRAM bank and improved memory bus usage for performance. 이 메모리 어드레스는 다음을 나타내는 레지스터를 통해 주어지는 프로그래머블 멀티플렉서를 사용하여 발생된다.This memory address is generated using a programmable multiplexer given through a register indicating - 현재 시스템 캐쉬 라인 사이즈Current system cache line size - 내부 뱅크의 수-Number of internal banks - 내부 뱅크 인터리빙Internal bank interleaving 시스템 캐쉬 라인 오프셋은 32 바이트 캐쉬 라인에 대하여 5 비트이다. 도 46은 16 MB DRAM을 위한 FBUS 시스템 어드레스로부터 발생되는 제안된 메모리 어드레스 포맷을 보여준다.The system cache line offset is 5 bits for a 32 byte cache line. 46 shows a proposed memory address format resulting from the FBUS system address for 16 MB DRAM. 이 다중화된 메모리 어드레스는 메모리 콘트롤러 상태 머쉰에 의해 지시되는 RAS와 CAS 스트로브를 가진 하나의 사이클에 대하여 유효하다.This multiplexed memory address is valid for one cycle with the RAS and CAS strobes indicated by the memory controller state machine. MCU는 독출-수정-지입 동작을 지시함이 벗이 8바이트 기입을 수행할 수 있다. 그러나, FBUS 어드레스의 bit[2]는 항상 어드레스만을 스타팅하기 위하여 제로이다. 이 비트는 다음과 같이 스타팅 어드레스를 나타내는 3개 비트 중 하나인 SDRAM 어드레스의 bit[0]으로 매핑된다.The MCU may perform 8 byte writes instructing read-modify-write operations. However, bit [2] of the FBUS address is always zero to start only the address. This bit is mapped to bit [0] of the SDRAM address, which is one of three bits representing the starting address as follows. Faddr[4:2]기입 시퀀스(WRAP=8)Faddr [4: 2] write sequence (WRAP = 8) 00-1-2-3-4-5-6-700-1-2-3-4-5-6-7 102-3-4-5-6-7-0-1102-3-4-5-6-7-0-1 1004-5-6-7-0-1-2-31004-5-6-7-0-1-2-3 1106-7-0-1-2-3-4-51106-7-0-1-2-3-4-5 이들은 모두 우수의 스타팅 어드레스이며, MCU에 의해 지원되는 시퀀스이다.These are all excellent starting addresses and sequences supported by the MCU. 모든 독출 동작은 32 바이트를 가정하고, 스타팅 어드레스는 (000)=rna[2:0]=Faddr[4:2]이다.All read operations assume 32 bytes, and the starting address is (000) = rna [2: 0] = Faddr [4: 2]. 6.3.4 메모리 콘트롤러 상태 머쉰6.3.4 Memory Controller Status Machine MSP 메모리 콘트롤러는 하나의 마스터 콘트롤러 상태 머쉰을 가진다. 이 상태 머쉰은 SDRAM 제어신호를 위한 모든 타이밍(RAS/CAS/WE/CS/DQM)을 발생시키는 역할을 한다. 상태 머쉰은 항상 엔트리 0에 있는 유효 엔트리를 위해 리퀘스트 FIFO를 모니터한다. 일단 유효 비트가 검출되면, 상태 머쉰은 SDRAM 시퀀스 개시를 시작한다. 또한, RAS 프리챠지가 필요한지를 판단하기 위하여 페이지 비교기로부터 페이지_히트 신호를 모니터한다.The MSP memory controller has one master controller state machine. This state machine is responsible for generating all timings (RAS / CAS / WE / CS / DQM) for SDRAM control signals. The state machine always monitors the request FIFO for valid entries in entry zero. Once the valid bit is detected, the state machine begins the SDRAM sequence initiation. In addition, the page_hit signal is monitored from the page comparator to determine if RAS precharge is required. RAS 프리챠지는 현재의 액티브/개방 뱅크상에서 수행된다. 매뉴얼 프리챠지 시퀀스는 제로인 상태를 액티브시키기 위하여 CS, RAS, WE와 MA[10]을 표시하는 것을 포함한다. 내부 뱅크 선택 비트 MA[11]는 프리챠지하기 위한 뱅크를 선택하는데 사용된다. 독출의 경우:프리챠지 커맨드는 데이터 충돌을 피하기 위하여 데이터 SDRAM으로부터 수신된 이후 표시된다. 기입의 경우, 프리챠지는 마지막 비트의 데이터가 메모리에 기입된 이후 발행된다. 일단 프리챠지 커맨드가 완료되면, 특정 뱅크는 다음의 메모리 동작을 위해 아이들(idle) 상태가 된다. SDRAM 스펙에 따르면, 프리챠지 커맨드는 tRAS(min)(여기서는 60ns)이 만족된 후 언제든지 발생될 수 있다. 그러나, 현재 4인 랩(wrap) 길이로 인하여 메모리 콘트롤러 상태 머쉰은 데이터가 메모리에 독출/기입된 후 프리챠지 커멘드를 발생시킨다.RAS precharge is performed on the current active / open bank. The manual precharge sequence includes indicating CS, RAS, WE and MA [10] to activate the zero state. The inner bank select bit MA [11] is used to select the bank for precharging. For Read: The precharge command is displayed after it has been received from the data SDRAM to avoid data conflicts. In the case of writing, a precharge is issued after the last bit of data has been written to the memory. Once the precharge command is complete, the particular bank is idle for the next memory operation. According to the SDRAM specification, the precharge command can be generated at any time after tRAS (min) (here 60ns) is satisfied. However, due to the wrap length, which is currently 4, the memory controller state machine generates a precharge command after data is read / written to the memory. 다음은 MSP 메모리 콘트롤러와 같이 사용되는 SDRAM 파라미터를 나타낸다.The following shows the SDRAM parameters used with the MSP memory controller. [테이블 17]Table 17 SDRAM 파라미터SDRAM Parameters * tRAS는 동기 DRAM의 60ns 열 억세스 타임을 실현시키기 위해 5 사이클로 사용될 수 있다. 메모리 콘트롤러 타이밍도를 참조할 것.tRAS can be used in 5 cycles to achieve 60ns thermal access time for synchronous DRAM. See the memory controller timing chart. 6.3.4.1 상태 머쉰 다이아그램6.3.4.1 State machine diagram 도 47은 SDRAM 메모리 콘트롤러 RAS/CAS 상태 머쉰 다이아그램을 나타낸다.47 shows the SDRAM memory controller RAS / CAS state machine diagram. 6.4 메모리 콘트럴러 리프레쉬6.4 Refresh Memory Controller 동기 DRAM은 각각의 저장 셀에 있는 데이터를 유지하기 위하여 매 32ms(15.6ns)마다 리프레쉬될 필요가 있다. 동기 DRAM은 또한 두개 모드의 리프레쉬:자동 리프레쉬와 셀프 리프레쉬를 지원한다.The synchronous DRAM needs to be refreshed every 32 ms (15.6 ns) to hold the data in each storage cell. Synchronous DRAM also supports two modes of refresh: automatic refresh and self refresh. 6.4.1 SDRAM 자동 리프레쉬6.4.1 SDRAM Auto Refresh 표준의 자동 리프레쉬를 사용하며, 두 개의 내부 뱅크가 내부 카운터에 의해 교번적으로 리프레쉬된다. 행(row)의 수가 4096이기 때문에 자동 리프레쉬는 DRAM 전체를 리프레쉬하기 위하여 2048 자동 리프레쉬 사이클을 필요로 한다.Using standard automatic refresh, two internal banks are alternately refreshed by an internal counter. Since the number of rows is 4096, automatic refresh requires a 2048 automatic refresh cycle to refresh the entire DRAM. 자동 리프레쉬 커맨드는 CKE와 WE가 하이이고, CS, RAS CAS가 로우임을 표시하는 것에 의해 발생된다. 이 커맨드는 두개의 뱅크가 아이들 상태에 있을 경우에만 표시된다.The auto refresh command is generated by indicating that CKE and WE are high and CS and RAS CAS are low. This command is displayed only when two banks are in the idle state. 자동 리프레쉬를 종료하는데 필요한 시간은The time required to end automatic refresh is tRC(min)/사이클 시간=100ns(spec)/12.5ns=8사이클(80MHz)tRC (min) / cycle time = 100ns (spec) /12.5ns=8cycles (80MHz) 6.4.21 SDRAM 셀프 리프레쉬6.4.21 SDRAM Self Refresh 셀프 리프레쉬는 삼성의 SDRAM에 사용되는 또 다른 모드이다. 이는 일반적으로 데이터 유지 및 저전력 동작을 위해 바람직한 리프레쉬 모드이다. 여기서, SDRAM은 내부 클럭과 CKE를 제외한 모든 입력 버퍼를 디스에이블시킨다.Self refresh is another mode used in Samsung's SDRAM. This is generally the preferred refresh mode for data retention and low power operation. Here, SDRAM disables all input buffers except the internal clock and CKE. CS, RAS, CAS와 CKE가 로우이고, WE가 하이인 경우 셀프 리프레쉬 모드로 들어간다. 셀프 리프레쉬 모드는 SDRAM 클럭의 슈팅과 CKE 신호를 사용한 재시도를 요구하기 때문에 MSP 메모리 콘트롤러는 이 리프레쉬 모드를 사용하지 않는다.If CS, RAS, CAS and CKE are low and WE is high, the self refresh mode is entered. Self-refresh mode does not require the MSP memory controller because it requires shooting the SDRAM clock and retrying with the CKE signal. 6.4.3 매뉴얼 리프레쉬6.4.3 Manual Refresh 이 리프레쉬 모드는 상태 머쉰/카운터 설계를 요구한다. 카운터는 매 15.6us 마다 타임아웃되고, 메모리 콘트롤러 로직으로 리프레쉬 스트로브를 표시한다.This refresh mode requires a state machine / counter design. The counter times out every 15.6us and displays the refresh strobe with memory controller logic. 다음, 메모리 콘트롤러는 현재의 리프레쉬를 종료하고, 즉시 SDRAM 리프레쉬 사이클을 초기화한다. 이 사이클은 아이들 상태에서의 제한을 가지지 않는다면 정확히 자동 리프레쉬 사이클과 유사하다.The memory controller then terminates the current refresh and immediately initiates the SDRAM refresh cycle. This cycle is exactly like the automatic refresh cycle unless it has a limit in the idle state. 6.5 데이터 콘트롤러(DC)6.5 Data Controller 메모리 코트롤러에서 데이터 콘트롤러 섹션은 주로 프로세서로부터 데이터를 기입하거나, SDRAM으로부터 데이터를 독출하기 위한 데이터 큐로 제공된다. 이 콘트롤러는 또한 모든 부분적인 기입시(바이크 기입)를 위한 기입 병합 로직을 가진다. 부분적인 기입은 먼저 DRAM 독출을 시작한 다음, 데이터를 병합하고, 마지막으로 완전히 수정된 워드를 메모리로 다시 기입한다. 그러므로, 부분적인 기입 시퀀스 다음의 임의의 리프레쉬는 성능 히트를 취해야만 한다.The data controller section in the memory roller is primarily provided as a data queue for writing data from the processor or reading data from the SDRAM. This controller also has write merge logic for every partial write (bike write). Partial writes first start DRAM reads, then merge the data, and finally write the fully modified word back into memory. Therefore, any refresh following the partial write sequence must take a performance hit. 6.5.1 데이터 콘트롤러 블록도는 도 48에 도시된 바와 같다.6.5.1 The data controller block diagram is as shown in FIG. 6.6 핀 서명6.6 Pin Signature 이 콘트롤러는 다음의 팩키지 핀들을 제공한다.This controller provides the following package pins: * RAS_I:출력 핀(액티브 로우). 이는 MA[11:0]으로부터의 행 어드레스를 선택된 DRAM 뱅크의 내부 행 어드레스 버퍼로 래치하기 위한 행 어드레스 스트로브 이다.* RAS_I: Output pin (active low). This is a row address strobe for latching the row address from MA [11: 0] into the internal row address buffer of the selected DRAM bank. * CAS_I:출력 핀(액티브 로우). 이는 MA[11:0]으로부터의 열 어드레스를 선택된 DRAM 뱅크의 내부 열 어드레스 버퍼로 래치하기 위한 열 어드레스 스트로브이다.CAS_I: Output pin (active low). This is a column address strobe for latching the column address from MA [11: 0] into the internal column address buffer of the selected DRAM bank. * WE_I:출력 핀(기입시 액티브 로우). DRAM의 기입 인에이블 입력 핀을 구동하기 위한 것이다.WE_I: Output pin (active-low at write). This is for driving the write enable input pin of the DRAM. * MA[11:0]:출력 핀들. DRAM에 대한 다중화된 행 및 열어드레스 신호.MA [11: 0]: output pins. Multiplexed row and opendress signals for DRAM. * DQM:출력 핀. 클럭 이후 SDRAM 출력을 하이 임피던스로 두고, 출력을 마스크하라.(이 핀은 동기 DRAM 인터페이스에 대해서만 사용한다.)* DQM: Output pin. After the clock, leave the SDRAM output high impedance and mask the output (this pin is only used for synchronous DRAM interfaces). * CS_I:출력 핀(액티브 로우). 선택된 SDRAM 동작을 위해 디스에이블 또는 인에이블된다.(이 핀은 동기 DRAM 인터페이스에 대해서만 사용한다.)CS_I: Output pin (active low). Disabled or Enabled for Selected SDRAM Operation (This pin is only used for synchronous DRAM interfaces.) * CLK:출력 핀. 이는 동기 DRAM에 대한 클럭 출력 핀으로서, SDRAM에서만 사용되고 MSP의 시스템 클럭과 동일한 위상을 가진다.CLK: Output pin. This is the clock output pin for synchronous DRAM and is only used in SDRAM and has the same phase as the system clock of the MSP. 6.7 메모리 콘트롤러 타이밍도는 도 49 내지 51에 도시된 바와 같다. 도 49에 관련된 사항은 다음과 같다.6.7 The memory controller timing diagram is as shown in FIGS. 49 to 51. Matters related to FIG. 49 are as follows. - 삼성의 SDRAM으로 가정.Assume Samsung's SDRAM. - 80MHz로 동작하는 메모리와 시스템.-Memory and system operating at 80 MHz. - 하나 또는 두개의 외부 SDRAM(1M*16).One or two external SDRAMs (1M * 16). - 메모리로부터 라인을 페치하기 위한 4/8 프로그래머블 랩 길이.4/8 programmable lap length to fetch lines from memory. - tRCD=3.tRCD = 3. - tCAS=3.tCAS = 3. - 내부 딜레이=2 클럭.Internal delay = 2 clocks. - 메모리 레이턴시=8사이클(8*12.5=100ns).Memory latency = 8 cycles (8 * 12.5 = 100ns). - 메모리로부터의 시스템 데이터는 중재(독출 데이타)를 위해 2개 사이클 만큼 지연된다.System data from memory is delayed by two cycles for arbitration (read data). 6.8 프로그래머블 모델6.8 Programmable Model 프로그래머 측면에 메모리 콘트롤러에 관련된 제어 레지스터는 다음과 같다.On the programmer's side, the control registers associated with the memory controller are: 6.8.1 SDRAM 리셋 레지스터(R/W)6.8.1 SDRAM Reset Register (R / W) 이 레지스터는 각각의 시스템 리셋 이후 리셋된다. 이는 SDRAM 파워 온 시퀀스를 시작하는 reset_sdram 신호를 전달하는 1 비트 레지스터이다. 시스템 리세시 이 레지스터는 1로 설정된다. SDRAM을 동작시키기 위해 소프트웨어에 의해 이 레지스터를 클리어시켜야 한다.This register is reset after each system reset. This is a 1-bit register that carries a reset_sdram signal that starts the SDRAM power-on sequence. System Resistor This register is set to one. This register must be cleared by software to operate the SDRAM. bit 0은 시스템 리셋으로 설정되고, SDRAM을 동작시키기 위해 클리어된다.bit 0 is set to system reset and cleared to operate the SDRAM. 프로그래밍 어드레스:Programming address: Faddr[31:20]=12'h010Faddr [31:20] = 12'h010 Faddr[3:0]=4'b1011Faddr [3: 0] = 4'b1011 6.8.2 SDARM 버스트 타입 레지스터(R./W)6.8.2 SDARM Burst Type Register (R./W) 이 레지스터는 SDRAM 버스트 타입을 프로그램한다. 이는 순차적인 버스트 타입에 대해 제로로 프로그램되는 1 비트 레지스터이다.This register programs the SDRAM burst type. This is a 1-bit register that is programmed to zero for sequential burst types. 프로그래밍 어드레스:Programming address: Faddr[31:20]=12'h010Faddr [31:20] = 12'h010 Faddr[3:0]=4'b1010Faddr [3: 0] = 4'b1010 bit 0은 시스템 리셋으로 설정되고, SDRAM을 동작시키기 위해 클리어된다.bit 0 is set to system reset and cleared to operate the SDRAM. 6.8.3 SDRAM 리프레쉬 레지스터(R/W)6.8.3 SDRAM Refresh Register (R / W) 이 레지스터는 SDRAM 리프레쉬 값을 프로그램한다. 이는 FBUS를 통해 프로그램되는 12 비트 레지스터이다.This register programs the SDRAM refresh value. This is a 12-bit register programmed via FBUS. 프로그래밍 어드레스:Programming address: Faddr[31:20]=12'h010Faddr [31:20] = 12'h010 Faddr[3:0]=4'b1001Faddr [3: 0] = 4'b1001 bit 11-0은 시스템 리셋으로 설정되고, 4E0으로 리프레쉬 값으로 프로그램된다.bit 11-0 is set to a system reset and programmed as a refresh value to 4E0. 6.8.4 SDRAM RAS 프리퍄지(tRP) 레지스터(R/W)6.8.4 SDRAM RAS Prefetch (tRP) Registers (R / W) 이 레지스터는 SDRAM RAS 프리챠지 값을 프로그램한다. 이는 FBUS를 통해 프로그램되는 3 비트 레지스터이다.This register programs the SDRAM RAS precharge value. This is a 3-bit register programmed via FBUS. 프로그래밍 어드레스:Programming address: Faddr[31:20]=12'h010Faddr [31:20] = 12'h010 Faddr[3:0]=4'b1000Faddr [3: 0] = 4'b1000 bit 2-0은 시스템 리셋으로 설정되고, 1 또는 2 또는 3으로 프로그램된다.bit 2-0 is set to system reset and programmed as 1 or 2 or 3. 6.8.5 SDRAM CAS 레이턴시(tCAC) 레지스터(R/W)6.8.5 SDRAM CAS Latency (tCAC) Register (R / W) 이 레지스터는 SDRAM CAS 레이턴시를 프로그램한다. 이는 FBUS를 통해 프로르램되는 3 비트 레지스터이다.This register programs the SDRAM CAS latency. This is a 3-bit register programmed via FBUS. 프로그래밍 어드레스:Programming address: Faddr[31:20]=12'h010Faddr [31:20] = 12'h010 Faddr[3:0]=4'b0011Faddr [3: 0] = 4'b0011 bit 2-0은 시스템 리셋으로 설정되고, 1 또는 2 또는 3으로 프로그램된다.bit 2-0 is set to system reset and programmed as 1 or 2 or 3. 6.8.6 SDRAM RAS CAS 레이턴시(tRCD) 레지스터(R/W)6.8.6 SDRAM RAS CAS Latency (tRCD) Registers (R / W) 이 레지스터는 SDRAM RCD 레이턴시를 프로그램한다. 이는 FBUS를 통해 프로그램되는 3 비트 레지스터이다.This register programs the SDRAM RCD latency. This is a 3-bit register programmed via FBUS. 프로그래밍 어드레스:Programming address: Faddr[31:20]=12'h010Faddr [31:20] = 12'h010 Faddr[3:0]=4'b0010Faddr [3: 0] = 4'b0010 bit 2-0은 시스템 리셋으로 설정되고, 1 또는 2 또는 3으로 프로그램된다.bit 2-0 is set to system reset and programmed as 1 or 2 or 3. 6.8.7 SDRAM WRAP LENGTH 레지스터(R/W)6.8.7 SDRAM WRAP LENGTH Register (R / W) 이 레지스터는 데이터에 대한 SDRAM의 랩 길이를 프로그램한다. 이는 FBUS를 통해 프로그램되는 3 비트 레지스터이다.This register programs the lap length of the SDRAM for data. This is a 3-bit register programmed via FBUS. 프로그래밍 어드레스:Programming address: Faddr[31:20]=12'h010Faddr [31:20] = 12'h010 Faddr[3:0]=4'b0001Faddr [3: 0] = 4'b0001 bit 2-0은 시스템 리셋으로 설정되고, 1 또는 2 또는 4 또는 8로 프로그램된다.bit 2-0 is set to system reset and programmed as 1 or 2 or 4 or 8. 6.8.8 SDRAM NOP TIME 레지스터(R/W)6.8.8 SDRAM NOP TIME Register (R / W) 이 레지스터는 파워 온 시퀀스를 위한 SDRAM의 NOP 시간을 프로그램한다. 이는 FBUS를 통해 프로그램되는 16 비트 레지스터이다.This register programs the NOP time of the SDRAM for the power-on sequence. This is a 16-bit register programmed via FBUS. 프로그래밍 어드레스:Programming address: Faddr[31:20]=12'h010Faddr [31:20] = 12'h010 Faddr[3:0]=4'b0000Faddr [3: 0] = 4'b0000 bit 15-0은 시스템 리셋으로 설정되고, 클럭 주파수에 따라서 200us로 프로그램된다.bit 15-0 is set to system reset and programmed to 200us depending on the clock frequency. 제7장 ASIC 인터페이스Chapter 7 ASIC Interface 이 장은 ASIC 인터페이스 유니트의 스펙을 설명한 것이다.This chapter describes the specifications of the ASIC interface unit. 7.1 개요7.1 Overview ASIC 인터페이스 유니트(도 52 참조)는 하나의 프로그래머블 32 비트 DMA,ASIC interface unit (see FIG. 52) is one programmable 32-bit DMA, 여러개의 FIFO와 제어 블록을 가진다. ASIC 인터페이스 블록은 80MHz로 동작하는 메인 시스템 버스(FBUS)와, MSP, AD1843(오디오, 전화), KS0122(비디오 캡쳐), KS0119와 VGA를 인터페이스하는 CODEC 인터페이스 블럭을 인터페이스한다. 현재의 가정은 임의의 동기화 문제를 피하기 위하여 모든 CODEC 인터페이스와 DMA 콘트롤러를 완전한 FBUS 속도로 동작시키는 거이다.It has several FIFOs and control blocks. The ASIC interface block interfaces the main system bus (FBUS) operating at 80 MHz and the CODEC interface block that interfaces the MSP, AD1843 (audio and telephone), KS0122 (video capture), KS0119 and VGA. The current assumption is that all CODEC interfaces and DMA controllers operate at full FBUS speed to avoid any synchronization problem. 커스터머 ASIC 블록은 3개의 주요 섹션:FBUS 마스터/슬레이브 인터페이스, MSP 8-채널 DMA 콘트롤러와 실제의 CODEC을 가진다. 데이터는 FBUS로부터 CODEC으로 전달되거나, CODEC으로부터 FBUS로 전달된다. 그러나, 어드레스는 오로지 DMA 콘트롤러로부터 발생된다. 그러면, 이 어드레스는 FBUS 인터페이스 유니트로 매핑된 FBUS 일 수 있다. 다른 FBUS 노드로부터의 모든 기입은 오로지 CODEC 섹션에 있는 레지스터만 프로그램한다. 다른 모든 트래픽에서는 사이즈 및 ID 정보를 가진 응신을 독출해야 한다. FBUS 스펙을 참조할 것.The customer ASIC block has three main sections: the FBUS master / slave interface, the MSP 8-channel DMA controller and the actual CODEC. Data is passed from FBUS to CODEC or from CODEC to FBUS. However, the address is only generated from the DMA controller. This address may then be an FBUS mapped to the FBUS interface unit. All writes from other FBUS nodes only program the registers in the CODEC section. All other traffic must read an acknowledgment with size and ID information. See the FBUS specification. 다음은 ASIC 인터페이스 유니트에 대한 특징이다.The following are the features of the ASIC interface unit. * 32 비트 기본 DMA 기능을 지원(8개의 채널--각 CODEC에 대하여 하나씩).* Supports 32-bit native DMA features (8 channels--one for each CODEC). * 2개의 4딥 * 64 비트 데이터 FIFO.Two 4 dips 64-bit data FIFO. * 1개의 1딥 * 52 비트 리퀘스트 FIFO.1 1 dip 52 bit request FIFO. * 1개의 2딥 * 52 비트 응신 FIFO.* 1 2 dips * 52 bit reply FIFO. * FBUS와 CODEC 인터페이스 블록을 위한 마스터/슬레이브를 지원.* Master / slave support for FBUS and CODEC interface blocks. * 동작 주파수:80MHz까지.* Operating frequency: up to 80MHz. * 메모리에 대한 IO, IO에 대한 메모리 간의 억세스 지원.* Support for IO to Memory and Memory to IO Access. * KS0119용으로 사용되는 채널 0을 위한 최상위 우선순위 지원.* Highest priority support for channel 0 used for KS0119. * KS0119에 대하여 고성능을 실현하기 위해 특수 어드레스 버스 지원.* Special address bus support for high performance with KS0119. 이 커스터머 인터페이스 로직은 3개의 서로 다른 CODEC을 지원한다.This customer interface logic supports three different CODECs. * 오디오 및 전화 CODEC(AD18/43). 이 CODEC은 DMA 콘트롤러와 통신하는 양방향 64 비트 데이터 버스를 가진다. (채널 4→DAC1, 채널 5→DAC2, 채널 6→ADC 레프트, 채널 7→ADC 라이트)* Audio and Phone CODECs (AD18 / 43). This CODEC has a bidirectional 64-bit data bus that communicates with the DMA controller. (Channel 4 → DAC1, Channel 5 → DAC2, Channel 6 → ADC Left, Channel 7 → ADC Light) * 비디오 캡쳐 CODEC(KS0122). 이 CODEC은 양방향 64 비트 데이터 버스를 가지며, DMA(채널 2)에 대하여 M→IO, IO→M 리퀘스트를 초기화할 수 있다.* Video capture CODEC (KS0122). This CODEC has a bidirectional 64-bit data bus and can initiate M → IO, IO → M requests for DMA (channel 2). * 비디오 벡엔드(backend) CODEC(KS0119). 이 CODEC은 메모리 콘트롤러로부터 데이터를 직접 수신한다.(채널 0)* Video backend CODEC (KS0119). This codec receives data directly from the memory controller (channel 0). ASIC 인터페이스 블록ASIC Interface Block 7.2 직접 메모리 억세스(DMA) 콘트롤러7.2 Direct Memory Access (DMA) Controller DMA 콘트롤러는 어드레스 발생 및 해석을 위해 사용되는 레지스터들을 가진다. 이 DMA 콘트롤러는 8개의 독립적인 채널을 가진다. 각 채널은 현재 어드레스 레지스터와 정지 어드레스 레지스터를 가진다. 시작 및 정지 어드레스 레지스터는 배치 블록을 통해 미리 프로그램된다. 현재 어드레스 레지스터는 8개의 CODEC 중 하나로부터 DMA 리퀘스트가 발생할 때마다 로드된다. 일단 FBUS가 억세스를 승인하면, 이 DMA 어드레스는 현재 어드레스가 정지 어드레스 레지스터와 매치될때까지 매 사이클마다 증가한다. 그 시점에서 DMA 콘트롤러가 신호 EOP(End Of Process)를 발생한다. 이 신호는 프로세스로 인터럽트를 유발한다. 8개의 모든 DMA 채널은 멀티플렉서와 어레스 비교 블록을 제어하는 공통의 중재 유니트를 가진다.The DMA controller has registers used for address generation and interpretation. This DMA controller has eight independent channels. Each channel has a current address register and a stop address register. The start and stop address registers are preprogrammed via the batch block. The current address register is loaded each time a DMA request occurs from one of eight CODECs. Once the FBUS grants access, this DMA address is incremented every cycle until the current address matches the stop address register. At that point, the DMA controller generates a signal end of process (EOP). This signal causes an interrupt to the process. All eight DMA channels have a common arbitration unit that controls the multiplexer and address comparison block. 이 DMA 콘트롤러는 IO와 메모리, 메모리와 IO, 메모리와 메모리 사이의 억세스를 지원한다. CODEC이 DMA와 통신하고자 할때마다 CODEC은 DMA_REQ 신호를 표시하고, DMA로부터 DMA 인지신호인 DACK를 기다린다. 일단 인지되면, CODEC은 M-IO 신호와 데이터를 구동한다. DMA 콘트롤러는 승인된 DACK에 따라서 적절한 채널을 선택한다. 블록도 참조할 것.This DMA controller supports access between IO and memory, memory and IO, and memory and memory. Whenever the codec wants to communicate with the DMA, the codec displays a DMA_REQ signal and waits for a DACK, which is a DMA acknowledge signal, from the DMA. Once recognized, the CODEC drives the M-IO signals and data. The DMA controller selects the appropriate channel according to the approved DACK. See also block. 7.3 DMA 레지스터 설명7.3 DMA register description 7.3.1 현재 어드레스 레지스터7.3.1 Current Address Register 각 채널은 모든 어드레스가 8 바이트로 배열될 것을 요구하는 29 비트 현재 어드레스 레지스터(bits31:3)를 가진다. 사실상, 이 레지스터는 29 비트 카운터이다. 이 레지스터는 ARM7에 의해 독출되며, 초기값은 FBUS를 통해 ARM7로부터 로드된다. 이 어드레스는 데이터 전송 사이즈에 근거하여 증가된다. 현재 어드레스 레지스터에 있는 어드레스는 멀티플렉서를 통해 FBUS상의 어드레스를 로드하기 위하여 어드레스 발생 블록으로 전송된다. 현재 어드레스 레지스터는 아이들 상태에서는 어드레스 값을 홀드시킨다.Each channel has a 29 bit current address register (bits31: 3) which requires all addresses to be arranged in 8 bytes. In fact, this register is a 29-bit counter. This register is read by ARM7 and the initial value is loaded from ARM7 via FBUS. This address is increased based on the data transfer size. The address currently in the address register is transferred to the address generation block to load the address on the FBUS through the multiplexer. The current address register holds the address value in the idle state. 7.3.2 정지 어드레스 레지스터7.3.2 Stop Address Register 각 채널은 모든 어드레스가 8 바이트로 배열될 것을 요구하는 29 비트 정지 어드레스 레지스터(bits31:3)를 가진다. 이 레지스터에는 FBUS를 통해 ARM7에 의해 기입된다. 이 값들은 비교 블록에서 현재 어드레스와 비교하는데 사용된다.Each channel has a 29 bit stop address register (bits31: 3) which requires all addresses to be arranged in 8 bytes. This register is written by ARM7 via FBUS. These values are used to compare with the current address in the compare block. 만약 현재 어드레스가 정지 어드레스와 일치하면, DMA 콘트롤러는 각 채널에 대해 EOP 신호를 발생시킨다.If the current address matches the stop address, the DMA controller generates an EOP signal for each channel. 7.3.3 스테이터스 레지스터7.3.3 Status register 이 레지스터는 각 채널이 정지 어드레스에 도달하였는지 여부를 나타내는 정보를 저장한다. Bits7:0은 어느 채널이 정지 어드레스에 도달하였는지를 규정하고, ARM7이 CCU를 통해 현재 어드레스 레지스터를 초기화하였을때 리셋된다.This register stores information indicating whether each channel has reached a stop address. Bits7: 0 specifies which channel has reached the stop address and is reset when ARM7 initializes the current address register via the CCU. 이 레지스터는 ARM7에 의해 독출되며, ARM7은 이 레지스터를 기입할 수 없다.This register is read by ARM7 and ARM7 cannot write this register. 7.3.4 제어 레지스터7.3.4 Control register 이 레지스터는 DMA 콘트폴러의 동작에 대한 정보를 저장한다. Bits7:0는 어느 DMA 채널이 동작을 위해 인에이블되었는지를 규정한다. 이 비트들은 해당하는 채널이 정지 어드레스에 도달할때마다 리셋되고, ARM7은 동작을 재개시하기 위해서 이 비트들을 설정한다. 임의의 채널 인에이블 비트가 0인 경우, DMA는 비록 CODEC이 DMA로 DMA로 DMA_REQ를 보내더라도 해당 CODEC으로 DMA_ACK를 보내지 않는다. Bits19:16은 DMA 채널 중 어느 쌍이 더블-버퍼로서 동작하기 위하여 같이 연결되어 있는지를 규정한다. 예를들어, 채널 0과 채널 1이 더블-버퍼로 연결되어 있는 경우, 채널 0의 현재 어드레스가 정지 어드레스에 도달한 경우 DMA 콘트롤러는 자동적으로 채널 1을 절환하고, 채널 1의 현재 어드레스가 정지 어드레스에 도달한 경우 DMA 콘트롤러는 자동적으로 채널 0을 절환한다. Bit28:21은 각 채널의 독출/기입 모드에 관련된 정보를 저장한다. 만약 이들 비트 중 임의의 비트가 ARM7에 의해 1로 설정되면, 해당 채널은 독출 동작을 위해 사용되고, 나머지 채널들은 기입 동작을 위해 사용된다. Bir31은 DMA가 EOP 신호를 인터럽트 콘트롤러로 보내었는지 여부를 규정한다. 만약 이 비트가 0이면, DMA는 임의의 채널이 정지 어드레스에 도달하더라도 EOP를 보내지 않는다.This register stores information about the operation of the DMA controller. Bits7: 0 specifies which DMA channels are enabled for operation. These bits are reset whenever the corresponding channel reaches a stop address, and ARM7 sets these bits to resume operation. If any channel enable bit is zero, the DMA does not send a DMA_ACK to that CODEC even if the codec sends DMA_REQ to the DMA. Bits 19:16 specify which pair of DMA channels are connected together to operate as a double-buffer. For example, if channel 0 and channel 1 are connected in a double buffer, the DMA controller automatically switches channel 1 when the current address of channel 0 reaches the stop address, and the current address of channel 1 is the stop address. The DMA controller automatically switches channel 0 when it reaches. Bit28: 21 stores information related to the read / write mode of each channel. If any of these bits is set to 1 by ARM7, then that channel is used for read operations and the remaining channels are used for write operations. Bir31 specifies whether DMA sent an EOP signal to an interrupt controller. If this bit is zero, the DMA does not send an EOP even if any channel reaches the stop address. 7.3.5 마스크 레지스터7.3.5 Mask Register 제어 레지스터에 있는 각 비트는 마스크 레지스터에 있는 마스트 비트와 연결되어 있다. 마스트 비트가 0이면, 제어 레지스터에 있는 해당 비트가 업데이트되는 것을 방지한다. 초기에는 이 레지스터31:0은 FFFFFFFF(hex)로 설정된다.Each bit in the control register is associated with a mast bit in the mask register. If the mast bit is zero, it prevents the corresponding bit in the control register from being updated. Initially this register 31: 0 is set to FFFFFFFF (hex). 7.3.6 프로그래밍7.3.6 Programming 시작 및 정지 어드레스는 FBUS를 통해 ARM7에 의해 프로그램된다.Start and stop addresses are programmed by ARM7 via FBUS. FBUS 매핑값은 다음과 같다.The FBUS mapping values are as follows. CCU → 0040_0000-007F_FFFF,CCU → 0040_0000-007F_FFFF, MCU → 0080_0000-047F_FFFF,MCU → 0080_0000-047F_FFFF, PCI → 0840_0000-FFFF_FFFF.PCI → 0840_0000-FFFF_FFFF. 어드레스 프로그래밍에 있어서, Address[26:0]은 테이블 18에 근거하여 설정된다.In address programming, Address [26: 0] is set based on Table 18. [테이블 18]Table 18 DMA 레지스터 어드레스 맵DMA register address map [테이블 19]Table 19 스테이터스 레지스터의 엔코딩Encoding of Status Registers [테이블 20]Table 20 제어 레지스터의 엔코딩Encoding of Control Registers 7.4 CODEC 초기화7.4 CODEC initialization 커스터머 ASIC 유니트는 각 CODEC의 초기화를 지원한다. 실질적으로는, ARM7이 커스터머 ASIC 유니트를 통한 CODEC 초기화를 담당한다.The customer ASIC unit supports the initialization of each codec. In effect, ARM7 is responsible for CODEC initialization through the customer ASIC unit. 커스터머 ASIC 유니트의 각 CODEC에 대한 리퀘스트 신호를 발생시키기 위한 어드레스 디코더를 가지고 있다. 커스터머 ASIC 유니트는 임의의 CODEC과 통신하고자 할때마다, CODEC으로 리퀘스트 신호를 보내고 CODEC으로부터 인지신호를 기다린다. 인지 신호를 수신한 후, 커스터머 ASIC 유니트는 데이터와 어드레스를 CODEC으로 보낸다.It has an address decoder for generating a request signal for each CODEC of the customer ASIC unit. Whenever a customer ASIC unit wishes to communicate with an arbitrary CODEC, it sends a request signal to the CODEC and waits for an acknowledgment signal from the CODEC. After receiving the acknowledgment signal, the customer ASIC unit sends data and address to the CODEC. ARM7이 CCU를 통해 임의의 CODEC에 있는 배치 데이터를 읽고자 하는 경우, 커스터머 ASIC 유니트는 어드레스를 CODEC으로 보낸다. 커스터머 ASIC 유니트는 CODEC으로부터 데이터를 수신하면 트랜잭션 Ⅸ)를 CCU를 반송한다. 이 시점에서, 배치 데이터가 CCU를 통해 ARM7로 전송된다.If the ARM7 wants to read batch data in any CODEC via the CCU, the customer ASIC unit sends the address to the CODEC. The customer ASIC unit sends the CCU a transaction v) upon receiving data from the CODEC. At this point, batch data is sent to the ARM7 via the CCU. (테이블 21)Table 21 CODEC 배치 레지스터 FBUS 어드레스 맵CODEC Batch Register FBUS Address Map 도 53은 커스터머 ASIC 회로망을 나타낸 것이다.53 shows a customer ASIC network. 4. I/O 핀 정의4. I / O Pin Definitions (테이블 22)(Table 22) 커스터머 ASIC 유니트에 대한 I/O 핀 정의I / O Pin Definitions for Customer ASIC Units 제 8 장 AD1843 CODEC 인터페이스Chapter 8 AD1843 CODEC Interface 8.18.1 이 장은 AD1843 CODEC 인터페이스에 대하여 설명한 것이다.This chapter describes the AD1843 CODEC interface. 8.2 개요8.2 Overview AD1843 CODEC 인터페이스 블록은 AD8143 시리얼 버스와 MSP DMA 모듈 사이의 인터페이스를 위한 것이다. AD1843은 시리얼 포트를 통하여 데이터 및 제어/스테이터스 정보를 송신 및 수신한다. AD1843은 시리얼 인터페이스를 담당하는 4개의 핀 : SDI, SDO, SCLK, SDFS를 가진다. SDI 핀은 AD1843에 대한 시리얼 데이터 입력을 위한 것이고, SDO 핀은 AD1843로부터의 시리얼 데이터 출력을 위한 것이다. SCLK 핀은 시리얼 인터페이스 클럭을 위한 것이다.The AD1843 CODEC interface block is for the interface between the AD8143 serial bus and the MSP DMA module. The AD1843 sends and receives data and control / status information through the serial port. The AD1843 has four pins responsible for the serial interface: SDI, SDO, SCLK, and SDFS. The SDI pin is for serial data input to the AD1843, and the SDO pin is for serial data output from the AD1843. The SCLK pin is for the serial interface clock. AD1843 내부와 외부의 통신에서 데이터 비트는 SCLK의 상승에지 이후 전송되고, SCLK의 하강 에지에서 샘플링될 것을 요구한다. SDFS 핀은 시리얼 인터페이스 프레임 동기를 위한 것이다. AD1843 CODEC 인터페이스는 마스터 모드에 기초한 것으로서, 이는 SCLK와 SDFS 신호가 AD1843에 의해 발생되어짐을 의미한다. 디폴트 SCLK 주파수는 12.288MHz이고, 하나의 프레임 사이클은 48KHz이다.In internal and external communication, the AD1843 requires that data bits be sent after the rising edge of SCLK and sampled on the falling edge of SCLK. The SDFS pin is for serial interface frame synchronization. The AD1843 CODEC interface is based on master mode, which means that the SCLK and SDFS signals are generated by the AD1843. The default SCLK frequency is 12.288 MHz and one frame cycle is 48 KHz. CODEC 인터페이스의 기본 구조는 DMA에 기초를 둔 것이다. AD1843 인터페이스는 4개의 서로 다른 DMA 채널 : DAC1에 대한 채널 4, DAC2에 대한 채널 5, ADC 레프트에 대한 채널 6, ADC 라이트에 대한 채널 7을 지정한다. DMA로부터 또는 DMA로의 채널 전송의 사이즈는 1회에 64비트이다. 그러므로, DMA 채널 4와 채널 5는 2개의 서로 다른 32비트 데이터(레프트를 위한 16비트와 라이트를 위한 16비트)를 전송한다. 한편, DMA 채널 6과 채널 7은 1회에 4개의 서로 다른 16비트 데이터를 CODEC 인터페이스로부터 SDRAM으로 보낸다.The basic structure of the CODEC interface is based on DMA. The AD1843 interface specifies four different DMA channels: channel 4 for DAC1, channel 5 for DAC2, channel 6 for ADC left, and channel 7 for ADC write. The size of the channel transfer from or to DMA is 64 bits at a time. Therefore, DMA channels 4 and 5 carry two different 32-bit data (16 bits for left and 16 bits for write). DMA channels 6 and 7, on the other hand, send four different 16-bit data from the CODEC interface to the SDRAM at one time. DAC1과 DAC2 인터페이스는 각 채널의 플래그 비트가 설정되었을 때 데이터가 유효하다는 것을 인식한다. DAC1과 DAC2 인터페이스는 플래그 비트를 체킹한 다음 DMA를 요청한다. 플래그 비트가 리셋되면, DAC1과 DAC2 인터페이스 DMA 리퀘스트를 발생시키지 않는다. 플래그 비트의 실제 동작은 DMA 클럭에 의해 제어된다. DMA 블록은 플래그 비트가 리셋되면 DMA 인지신호를 발생시키지 않는다. ADC 레프트 및 라이트의 FIFO가 차 있지 않으면, DMA 리퀘스트는 발생되지 않는다. 소프트웨어는 ADC 플래그 레지스터를 체크하여, 데이터 버스를 통해 남아있는 데이터를 독출해야 한다. 데이터 버스를 통해 이들 데이터를 독출한 다음, FIFO는 비게 되고, FIFO가 차게 되면 DMA 리퀘스트를 발생시킨다.The DAC1 and DAC2 interfaces recognize that data is valid when the flag bit of each channel is set. The DAC1 and DAC2 interfaces check the flag bits and then request DMA. When the flag bit is reset, no DAC1 and DAC2 interface DMA requests are issued. The actual operation of the flag bit is controlled by the DMA clock. The DMA block does not generate a DMA acknowledge signal when the flag bit is reset. If the ADC left and write FIFOs are not full, no DMA request is generated. The software must check the ADC flag register to read the remaining data over the data bus. After reading this data over the data bus, the FIFO becomes empty and issues a DMA request when the FIFO becomes full. AD1843 제어 레지스터는 제어 워드 입력에 있는 제어 레지스터 어드레스와 함께 독출/기입 리퀘스트를 전송함으로써 독출 및 기입된다. 독출이 요청되면, 어드레싱된 제어 레지스터의 내용은 다음 프레임 동안 전송되고, 기입이 요청되면, 기입되어질 데이터는 AD1843 슬롯 1로 전송되어야 한다. MSP의 성능을 향상시키기 위하여, 프로그래머는 CODEC에 있는 제어 레지스터를 독출 또는 기입하기 이전에 제어 플래그 레지스터를 체크해야 한다. 제어 플래그 레지스터의 플래그 비트가 설정되면, CODEC 레지스터의 독출 및 기입 동작이 가능하다.The AD1843 control register is read and written by sending a read / write request with the control register address at the control word input. If a read is requested, the contents of the addressed control register are transmitted for the next frame, and if a write is requested, the data to be written must be sent to AD1843 slot 1. To improve the performance of the MSP, the programmer must check the control flag register before reading or writing the control register in the CODEC. When the flag bit of the control flag register is set, read and write operations of the CODEC register are possible. 8.3 DMA 채널 지정8.3 DMA channel assignment DMA 채널 4 DAC1 레프트, 라이트DMA Channel 4 DAC1 Left, Write DMA 채널 5 DAC2 레프트, 라이트DMA Channel 5 DAC2 Left, Write DMA 채널 6 DAC 레프트DMA Channel 6 DAC Left DMA 채널 7 DAC 레프트DMA Channel 7 DAC Left 8.4 DMA에 대한 데이터 포맷8.4 Data Format for DMA 데이터 사이즈는 64비트이며, 다음과 같이 구성된다.The data size is 64 bits and is configured as follows. 8.5 기본 어드레스8.5 Base Address 04CO_4000 DAC1 BASE04CO_4000 DAC1 BASE 04CO_5000 DAC2 BASE04CO_5000 DAC2 BASE 04CO_6000 ADCL BASE (레프트 채널)04CO_6000 ADCL BASE (Left Channel) 04CO_7000 ADCR BASE (라이트 채널)04CO_7000 ADCR BASE (Light Channel) 8.6 레지스터 맵8.6 register map 8.7 레지스터 정의8.7 Register Definition 8.7.1 제어 레지스터 기입 데이터 입력8.7.1 Control register write data input 최상위비트(MSB)는 전송되어진 최초 데이터 입력 비트이다.The most significant bit (MSB) is the first data input bit transmitted. 8.7.2 제어 워드 입력8.7.2 Control word input r/w 독출/기입 리퀘스트. 제어 레지스터로부터의 독출 또는 제어 레지스터로의 기입이 매 프레임마다 발생한다. 1로 설정한 것은 제어 레지스터 독출을 나타내는 반면, 이 비트를 0으로 리셋시키는 것은 제어 레지스터 기입을 나타낸다.r / w Read / write request. Reading from or writing to the control register occurs every frame. Setting to 1 indicates control register read, while resetting this bit to 0 indicates control register write. ia4:0독출 또는 기입을 위한 제어 어드레스 레지스터ia4: 0 control address register for reading or writing 8.7.3 제어 레지스터 데이터 출력8.7.3 Control register data output 이전 프레임에서 어드레싱된 제어 레지스터의 내용The contents of the control register addressed in the previous frame 8.7.4 ADC 플래그 레지스터8.7.4 ADC Flag Register r4v-rlv 유효 ADC 라이트 데이터가 버퍼에 있다. 버퍼에 있는 어느 데이터가 유효한지를 지시한다.r4v-rlv Valid ADC write data is in buffer. Indicates which data in the buffer is valid. r4v-1lv 유효 ADC 레프트 데이터가 버퍼에 있다. 버퍼에 있는 어느 데이터가 유효한지를 지시한다.r4v-1lv Valid ADC left data is in the buffer. Indicates which data in the buffer is valid. 8.7.5 ADC 레프트 첫 번째 데이터8.7.5 ADC Left First Data 버퍼에 있는 ADC 레프트 첫 번째 데이터ADC Left First Data in Buffer 8.7.6 ADC 레프트 두 번째 데이터8.7.6 ADC Left Second Data 버퍼에 있는 ADC 레프트 두 번째 데이터ADC Left Second Data in Buffer 8.7.7 ADC 레프트 세 번째 데이터8.7.7 ADC Left Third Data 버퍼에 있는 ADC 레프트 세 번째 데이터ADC Left Third Data in Buffer 8.7.8 ADC 레프트 네 번째 데이터8.7.8 ADC Left Fourth Data 버퍼에 있는 ADC 레프트 네 번째 데이터ADC Left Fourth Data in Buffer 8.7.9 제어 플래그 레지스터8.7.9 Control Flag Register wfl 제어 레지스터 기입 플래그. 설정되면 CODEC은 제어 레지스터 데이터를 수신할 준비를 한다.wfl Control register write flag. When set, the CODEC prepares to receive control register data. rfl 제어 레지스터 독출 플래그. 설정되면 CODEC은 제어 레지스터 데이터를 전송할 준비를 한다.rfl Control register read flag. When set, the CODEC prepares to transfer control register data. 제 9 장 비디오 코덱Chapter 9 Video Codecs 9.1 개요9.1 Overview 비디오 코덱 로직은 평가(evaluation) 보드 상의 KS0119와 KS0122 칩에 대해 인터페이스하고, MSP 칩에 있는 DMA 모듈에 대해 인터페이스한다. KS0119 코덱은 또한 스크린 리프레쉬 동작을 제공한다. 이 동작을 위해 MCU 모듈에 대한 직접적인 데이터 경로가 도 54와 같이 구현된다.The video codec logic interfaces to the KS0119 and KS0122 chips on the evaluation board and to the DMA module on the MSP chip. The KS0119 codec also provides screen refresh operation. For this operation a direct data path to the MCU module is implemented as shown in FIG. 9.2 상위 모듈 정의9.2 Parent Module Definition 상위 모듈은 도 55에서와 같은 3개의 서브 모듈을 가진다.The upper module has three sub modules as shown in FIG. - KS0119 스크린 리프레쉬 모듈-KS0119 Screen Refresh Module - KS0122 비디오 데이터 캡쳐 모듈-KS0122 Video Data Capture Module - KS0119 및 KS0122 칩 배치 레지스터를 억세스하는 3-와이어 시리얼 호스트 인터페이스 모듈3-Wire Serial Host Interface Module Accesses KS0119 and KS0122 Chip Placement Registers 9.3 DMA 채널 지정9.3 DMA Channel Assignment DMA CH0KS0119 코덱DMA CH0KS0119 codec DMA CH1예약DMA CH1 reservation DMA CH2KS0122 코덱DMA CH2KS0122 codec DMA CH3예약DMA CH3 reservation DMA CH4AD1843 오디오 코덱DMA CH4AD1843 audio codec DMA CH5AD1843 오디오 코덱DMA CH5AD1843 audio codec DMA CH6AD1843 오디오 코덱DMA CH6AD1843 audio codec DMA CH7AD1843 오디오 코덱DMA CH7AD1843 audio codec DMA CH8예약DMA CH8 reservation DMA CH9예약DMA CH9 reservation 9.4 3-와이어 호스트 인터페이스 모듈9.4 3-Wire Host Interface Module 이 모듈은 칩 내부의 모든 레지스터가 시리얼 인터페이스를 통해 억세스되는 KS0119와 KS0122 칩에 대하여 인터페이스한다. 3 와이어 시리얼 인터페이스 모듈은 이 칩들에 통신 프로토콜의 기능을 지원하며, KS0119와 KS0122 인터페이스 로직을 위한 레지스터를 포함한다. 도 3을 참조할 것.This module interfaces to the KS0119 and KS0122 chips, where all registers within the chip are accessed through the serial interface. The three-wire serial interface module supports the functionality of the communications protocol on these chips and includes registers for the KS0119 and KS0122 interface logic. See FIG. 3. 9.5 EPROM 인터페이스9.5 EPROM Interface KS0119 IO 핀들은 시스템이 리셋된 후 바로 프로그램 데이터를 로드하는데 사용되며 MSP-1EX 부트 초기화의 일부인 외부 EPROM에 대한 인터페이스로 사용된다. 좀 더 상세한 것은 핀 지정을 참조할 것.The KS0119 IO pins are used to load program data immediately after a system reset and as an interface to an external EPROM that is part of the MSP-1EX boot initialization. See pin assignments for more details. EPROM은 C0 000H에서 DF FFFH까지의 어드레스로 매핑된 메모리이다.The EPROM is memory mapped to addresses from C0 000H to DF FFFH. 9.6 KS0119 레지스터 설명9.6 KS0119 Register Description KS019는 04B0 0000과 동일한 기본 어드레스 CODEC_REQO를 가지며, 이는 04DBF FFFF까지 확장된다.KS019 has the same base address CODEC_REQO as 04B0 0000, which extends to 04DBF FFFF. 9.6.1 KS0119 레지스터 어드레스 맵9.6.1 KS0119 Register Address Map KS0119 레지스터 어드레스 맵KS0119 register address map 9.6.2 프레임 사이즈 레지스터9.6.2 Frame Size Register 이 레지스터는 도 57에 도시된 바와 같이, CODEC 칩으로 전송되는 프레임 사이즈를 제어하며, 최소 프레임 길이는 3바이트이다.This register controls the frame size transmitted to the CODEC chip, as shown in FIG. 57, and the minimum frame length is 3 bytes. 9.6.3 칩 ID 레지스터9.6.3 Chip ID Register 이 레지스터는 CODEC 칩 ID 값을 저장하는데, KS0119 기입에 대해서는 03H, KS0119 독출을 위해서는 83H를 저장한다.This register stores the CODEC chip ID value, which stores 03H for KS0119 writes and 83H for KS0119 reads. 9.6.4 제어/데이타 레지스터9.6.4 Control / Data Register 이 레지스터는 다음번 전송되는 바이트가 레지스터 인덱스 또는 데이터 바이타라는 사실을 CODEC 칩 KS0119에 전해준다. KS0119에 대하여, 08H는 다음번 바이트가 인덱스임을, 09H는 다음번 바이트가 데이터임을 나타낸다.This register tells CODEC chip KS0119 that the next byte transferred is a register index or data bit. For KS0119, 08H indicates that the next byte is an index and 09H indicates that the next byte is data. 9.6.5 인덱스/데이타 0 레지스터9.6.5 Index / Data 0 Register 이 레지스터는 이전 바이트로 전송된 값에 따라서, CODEC 칩 배치 레지스터에 대한 인덱스 값 또는 데이타 0 바이트를 저장한다. 프로그래밍 참조부의 통신 프로토콜 참조할 것.This register stores an index value or 0 bytes of data for the CODEC chip placement register, depending on the value transferred in the previous byte. See communication protocol in the Programming Reference. 9.6.6 데이터 1 레지스터9.6.6 Data 1 register 이 레지스터는 CODEC 레지스터 Index+1에 기입되는 데이터를 저장한다.This register stores data written to the CODEC register Index + 1. 9.6.7 데이터 2 레지스터9.6.7 Data 2 Register 이 레지스터는 CODEC 레지스터 Index+2에 기입되는 데이터를 저장한다.This register stores data written to the CODEC register Index + 2. 9.6.8 데이터 3 레지스터9.6.8 Data 3 Register 이 레지스터는 CODEC 레지스터 Index+3에 기입되는 데이터를 저장한다.This register stores data written to the CODEC register Index + 3. 9.6.9 KS0119 로직 제어 레지스터9.6.9 KS0119 Logic Control Register KS0119 제어 레지스터에 대한 비트 지정은 도 58에 도시된 바와 같다.Bit designation for the KS0119 control register is as shown in FIG. 9.6.10 HS 및 VS 극성9.6.10 HS and VS Polarity 이 레지스터는 수평 동기와 수직 동기신호의 극성을 정의한다. 0 값은 액티브 로우로 정의되는 반면, 1 값은 액티브 하이로 정의된다. 비트 지정은 다음과 같다.This register defines the polarity of the horizontal and vertical sync signals. A value of 0 is defined as active low, while a value of 1 is defined as active high. The bit designation is as follows. Bit 0 : VS 극성Bit 0: VS Polarity Bit 1 : HS 극성Bit 1: HS Polarity 9.6.11 HS 오프셋9.6.11 HS offset 액티브 신호는 이 오프셋 값 이후 발생되며, 이 오프셋 값은 00H로 정의된다.The active signal is generated after this offset value, which is defined as 00H. 9.6.12 VS 오프셋9.6.12 VS Offset 액티브 신호는 이 오프셋 값 이후 발생되며, 이 오프셋 값은 00H로 정의된다.The active signal is generated after this offset value, which is defined as 00H. 9.6.13 스테이터스 레지스터는 도 59에 도시된 바와 같다.9.6.13 The status register is as shown in FIG. 9.6.14 독출 데이터 시리얼 인터페이스 레지스터9.6.14 Read Data Serial Interface Register 이 레지스터는 독출 플래그가 비지(busy) 상태에서 준비(reasdy) 상태로 천이를 나타낸 다음, 시리얼 포트로부터의 유효 데이터를 저장한다.This register indicates that the read flag transitions from busy to ready, and then stores valid data from the serial port. 9.6.15 독출 PROM 데이터 레지스터9.6.15 Read PROM Data Register 이 레지스터는 PROM 플래그가 준비 상태인 경우 유효 데이터를 저장한다.This register stores valid data when the PROM flag is ready. 9.6.16 프로그래밍 레퍼런스9.6.16 Programming Reference 9.6.16.1 배치 및 초기화9.6.16.1 Deployment and initialization 비디오 디스플레이 하드웨어는 두 가지 모드 즉, VGA 오버레이 모드와 VGA 에뮬레이션 모드로 동작하도록 제어된다.The video display hardware is controlled to operate in two modes: VGA overlay mode and VGA emulation mode. 이 모드 동작은 로직 제어 레지스터에 있는 비트를 설정하는 것에 의해 제어된다.This mode of operation is controlled by setting a bit in the logic control register. MSSEL : VGA 오버레이 모드인 경우 0,MSSEL: 0 for VGA overlay mode VGA 에뮬레이션 모드인 경우 1.In VGA emulation mode 1. VGA 오버레이 모드에서는 PC 시스템상에 VGA 카드가 존재할 것이 요구된다.VGA overlay mode requires the presence of a VGA card on the PC system. - 모니터 케이블은 MSP 카드에 연결된다.The monitor cable is connected to the MSP card. - 지원되는 VGA 해상도는 800 * 600 까지이다.Supported VGA resolution is up to 800 * 600 디스플레이 버퍼는 VGA 세팅에서와 같은 사이즈일 것이 요구된다.The display buffer is required to be the same size as in the VGA setting. 소프트웨어에 의해 VGA 프레임 버퍼에서 칼라 키 사각 영역이 채워지는 비디오 윈도우를 설정하기 위하여, 비디오 데이터는 MSP SDRAM에서 VGA 프레임 버퍼에 있는 사각영역과 동일한 사이즈와 위치의 사각 영역에 기입되어져야 한다. 도 60 참조할 것.In order to set the video window by which software fills the color key blind spots in the VGA frame buffer, the video data must be written in the blind spots of the same size and position as the blind spots in the VGA frame buffer in the MSP SDRAM. See FIG. 60. KS0119 칩은 칼라 키를 인식하고, VGA 입력 포트를 비디오 입력 포트로 절환한다. 소프트웨어에 의해 DMA 채널 0 시작 어드레스를 SDRAM 비디오 출력 버퍼의 상위 왼쪽에 설정하고, DMA 레코드 길이는 VGA 카드에 설정된 해상도와 비디오 데이터에서 사용된 화소당 비트(4:2:2=화소당 16비트)에 따라 설정된다.The KS0119 chip recognizes color keys and switches the VGA input port to a video input port. The software sets the DMA channel 0 start address to the upper left of the SDRAM video output buffer, and the DMA record length is the bits per pixel used in the video data and the resolution set on the VGA card (4: 2: 2 = 16 bits per pixel). Is set according to. 9.6.16.2 KS0119에 대한 시리얼 프로토콜 3-와이어 인터페이스9.6.16.2 Serial protocol 3-wire interface to KS0119 KS0119 칩에 있는 배치 레지스터를 설정할 경우, 프로토콜은 다음과 같다.When setting the batch register in the KS0119 chip, the protocol is as follows. - 주변 칩으로 전송되기 위해서는 최소 두 개의 프레임이 필요하다.At least two frames are required to be sent to the peripheral chip. - 첫 번째 프레임은 배치 레지스터의 인덱스를 설정하기 위한 것이다.The first frame is for setting the index of the batch register. - 두 번째 프레임은 데이터(레지스터의 내용)의 독출 또는 기입을 위한 것이다.The second frame is for reading or writing data (contents of register). 소프트웨어에 의해 프레임 사이즈 레지스터를 적절한 길이로 설정하고, 시리얼 억세스 비트를 1로 설정한다. 그러면, 프레임 사이즈 레지스터를 변경하기 전에 프레임에 필요한 모든 바이트를 소프트웨어에 의해 로드하고, CODEC 인터페이스 로직은 프레임의 시리얼화가 개시되기 전에 모든 바이트가 로드될 때까지 기다린다.The software sets the frame size register to the appropriate length and sets the serial access bit to one. The software then loads all the bytes needed for the frame before changing the frame size register, and the CODEC interface logic waits until all bytes are loaded before the serialization of the frame begins. 첫 번째 전송되는 프레임은 인덱스를 설정하기 위한 것이고, 프레임 사이즈는 3이다. 도 61을 참조할 것.The first transmitted frame is for setting an index, and the frame size is three. See FIG. 61. 두 번째 프레임은 레지스터를 설정하기 위한 것이고, 프레임 사이즈는 3이다.The second frame is for setting registers, and the frame size is three. 각 데이터 바이트 이후, 칩은 인덱스를 1씩 자동으로 증가시키고, 이는 복수 바이트의 데이터를 4개 데이터 바이트까지 지원하는 CODEC 인터페이스 로직으로 전송함으로써 연속적인 레지스터들을 설정하는 것을 가능하도록 한다.After each data byte, the chip automatically increments the index by one, which makes it possible to set consecutive registers by sending multiple bytes of data to the CODEC interface logic supporting up to four data bytes. 독출 또는 기입 동작이 수행된 경우, 소프트웨어에 의해 독출 동작시 유효 데이터를 위한 스테이터스 레지스터의 독출 및 기이 플래그를 체크하거나, 다음 프레임을 전송하기 전에 기입 플래그=준비(ready) 인지를 체크한다.When a read or write operation is performed, the software checks the read and the odd flags of the status register for valid data during the read operation, or checks whether the write flag = ready before sending the next frame. 다음 예는 KS0119 데이터 쉬트를 설정하는 단계를 보여준다.The following example shows the steps to set up a KS0119 data sheet. 두 개의 레지스터가 연속적인 인덱스를 가지기 때문에, 이 두 바이트는 단일 프레임으로 로드될 수 있다. 우선, 인덱스는 다음과 같이 설정되어야 한다.Since two registers have consecutive indices, these two bytes can be loaded in a single frame. First, the index should be set as follows. - 83H 값(프레임 사이즈=3, 시리얼 억세스 비트 설정)을 가지는 로드 프레임 사이즈 레지스터(Address=04B0_0000H)A load frame size register (Address = 04B0_0000H) with an 83H value (frame size = 3, serial access bit set) -03H 값을 가지는 로드 ID 레지스터 (Address=04B0_0001H)Load ID register with value -03H (Address = 04B0_0001H) - 로드 데이터/제어 바이트 : KS0119로 다음번 바이트가 인덱스임을 알려주는 08H 값(Address=04B0_0002H)-Load data / control byte: 08H value indicating address of next byte to KS0119 (Address = 04B0_0002H) - 6AH 값을 가지는 로드 인덱스 레지스터(Address=04B0_0003H)-Load index register with address 6AH (Address = 04B0_0003H) 시리얼 인터페이스는 프레임 사이즈 레지스터에 있는 내용의 일치 여부를 검출하여 프레임 전송을 개시하고, 스테이터스 레지스터에 있는 기입 플래그는 비지(busy) 상태로 설정된다. 다음번 프레임을 전송하기 전에 소프트웨어에 의해 스테이터스 레지스터에 있는 플래그를 체크한다. 플래그가 준비상태에 있으며, 소프트웨어에 의해 다음번 프레임을 위한 값을 로드할 수 있다.The serial interface detects whether or not the contents in the frame size register match and starts frame transfer, and the write flag in the status register is set to a busy state. The software checks the flags in the status register before sending the next frame. The flag is ready and the software can load the value for the next frame. 9.7 KS0122 레지스터 설명9.7 KS0122 Register Description KS0122는 04C0 2000에 해당하는 기본 어드레스를 가지며, 이는 0420 2FFF까지 확장된다.The KS0122 has a base address corresponding to 04C0 2000, which extends to 0420 2FFF. 9.7.1 KS0122 레지스터 어드레스 맵9.7.1 KS0122 Register Address Map 9.7.2 프레임 사이즈 레지스터9.7.2 Frame Size Register 이 레지스터는 도 62에 정의한 바와 같이, CODEC 칩으로 전송되는 프레임 사이즈를 제어하며, 최소 프레임 길이는 3바이트이다.This register controls the frame size transmitted to the CODEC chip, as defined in FIG. 62, and the minimum frame length is 3 bytes. 9.7.3 칩 ID 레지스터9.7.3 Chip ID Register 이 레지스터는 CODEC 칩 ID 값을 저장하는데, KS0122 기입에 대해서는 04H, KS0122 독출을 위해서는 84H를 저장한다.This register stores the CODEC chip ID value, 04H for KS0122 writes and 84H for KS0122 reads. 9.7.4 제어/데이타 레지스터9.7.4 Control / Data Register 이 레지스터는 다음번 전송되는 바이트가 레지스터 인덱스 또는 데이터 바이타라는 사실을 CODEC 칩 KS0122로 전해준다. KS0122에 대하여, 00H는 다음번 바이트가 인덱스임을, 01H는 다음번 바이트가 데이터임을 나타낸다.This register tells the CODEC chip KS0122 that the next byte sent is a register index or data bit. For KS0122, 00H indicates that the next byte is an index and 01H indicates that the next byte is data. 9.7.5 인덱스/데이타 0 레지스터9.7.5 Index / Data 0 Register 이 레지스터는 이전 바이트로 전송된 값에 따라서, CODEC 칩 배치 레지스터에 대한 인덱스 값 또는 데이타 0 바이트를 저장한다. 프로그래밍 참조부의 통신프로토콜 참조할 것.This register stores an index value or 0 bytes of data for the CODEC chip placement register, depending on the value transferred in the previous byte. See communication protocol in the Programming Reference. 9.7.6 데이터 1 레지스터9.7.6 Data 1 Register 이 레지스터는 CODEC 레지스터 Index+1에 기입되는 데이터를 저장한다.This register stores data written to the CODEC register Index + 1. 9.7.7 데이터 2 레지스터9.7.7 Data 2 Register 이 레지스터는 CODEC 레지스터 Index+2에 기입되는 데이터를 저장한다.This register stores data written to the CODEC register Index + 2. 9.7.8 데이터 3 레지스터9.7.8 Data 3 Register 이 레지스터는 CODEC 레지스터 Index+3에 기입되는 데이터를 저장한다.This register stores data written to the CODEC register Index + 3. 9.7.9 KS0122 로직 제어 레지스터9.7.9 KS0122 Logic Control Register KS0122 제어 레지스터에 대한 비트 지정은 다음과 같다.The bit designation for the KS0122 control register is as follows. bits 1:0bits 1: 0 04:2:2 포맷04: 2: 2 format 14:1:1 포맷14: 1: 1 format 10CCIR656 포맷10CCIR656 format 9.7.10 스테이터스 레지스터9.7.10 Status register bits 1 : 필드 스테이터스bits 1: field status 0 : 우수 필드0: storm field 1 : 기수 필드1: radix field bits 0 : VS 스테이터스bits 0: VS Status 0 : 1에서 0까지의 VS0: VS from 1 to 0 1 : 0에서 1까지의 VS1: VS from 0 to 1 9.7.11 독출 데이터 시리얼 인터페이스 레지스터9.7.11 Read Data Serial Interface Register 이 레지스터는 독출 플래그가 비지(busy) 상태에서 준비(reasdy) 상태로 천이를 나타낸 다음, 시리얼 포트로 부터의 유효 데이터를 저장한다.This register indicates that the read flag transitions from busy to ready, and then stores valid data from the serial port. 9.7.12 KS0122에 대한 시리얼 프로토콜 3-와이어 인터페이스9.7.12 Serial Protocol 3-Wire Interface to KS0122 KS0122 칩에 대한 배치 레지스터를 설정할 경우, 프로토콜은 다음과 같다.When setting the batch register for the KS0122 chip, the protocol is as follows. - 주변 칩으로 전송되기 위해서는 최소 두 개의 프레임이 필요하다.At least two frames are required to be transmitted to the peripheral chip. - 첫 번째 프레임은 배치 레지스터의 인덱스를 설정하기 위한 것이다.The first frame is for setting the index of the batch register. - 두 번째 프레임은 데이터(레지스터의 내용)의 독출 또는 기입을 위한 것이다.The second frame is for reading or writing data (contents of register). 소프트웨어에 의해 프레임 사이즈 레지스터를 적절한 길이로 설정하고, 시리얼 억세스 비트를 1로 설정한다. 그러면, 프레임 사이즈 레지스터를 변경하기 전에 프레임에 필요한 모든 바이트를 소프트웨어에 의해 로드하고, CODEC 인터페이스 로직은 프레임의 시리얼화가 개시되기 전에 모든 바이트가 로드될 때까지 기다린다.The software sets the frame size register to the appropriate length and sets the serial access bit to one. The software then loads all the bytes needed for the frame before changing the frame size register, and the CODEC interface logic waits until all bytes are loaded before the serialization of the frame begins. 첫 번째 전송되는 프레임은 인덱스를 설정하기 위한 것이고, 프레임 사이즈는 3이다. 도 63을 참조할 것.The first transmitted frame is for setting an index, and the frame size is three. See FIG. 63. 두 번째 프레임은 레지스터를 설정하기 위한 것이고, 프레임 사이즈는 3이다.The second frame is for setting registers, and the frame size is three. 각 데이터 바이트 이후, 칩은 인덱스를 1씩 자동으로 증가시키고, 이는 복수 바이트의 데이터를 4개 데이터 바이트까지 지원하는 CODEC 인터페이스 로직으로 전송함으로써 연속적인 레지스터들을 설정하는 것을 가능하도록 한다.After each data byte, the chip automatically increments the index by one, which makes it possible to set consecutive registers by sending multiple bytes of data to the CODEC interface logic supporting up to four data bytes. 독출 또는 기입 동작이 수행된 경우, 소프트웨어에 의해 독출 동작시 유효 데이터를 위한 스테이터스 레지스터의 독출 및 기입 플래그를 체크하거나, 다음 프레임을 전송하기 전에 기입 플래그=준비(ready) 인지를 체크한다.When a read or write operation is performed, the software checks the read and write flags of the status register for valid data during the read operation, or checks whether the write flag = ready before sending the next frame. 다음 예는 KS0122 데이터 쉬트를 설정하는 단계를 보여준다.The following example shows the steps to set up a KS0122 data sheet. 크로마 키 바이트 0와 바이트 1에 대한 값을 설정하기 위하여, 이 레지스터를 위한 인덱스는 바이트 0에 대해 6AH, 바이트 1에 대해 6BH이다. KS0122 데이터 쉬트 참조할 것.To set the values for chroma key byte 0 and byte 1, the index for this register is 6AH for byte 0 and 6BH for byte 1. See the KS0122 data sheet. 두 개의 레지스터가 연속적인 인덱스를 가지기 때문에, 이 두 바이트는 단일 프레임으로 로드될 수 있다. 우선, 인덱스는 다음과 같이 설정되어야 한다.Since two registers have consecutive indices, these two bytes can be loaded in a single frame. First, the index should be set as follows. - 83H 값(프레임 사이즈=3, 시리얼 억세스 비트 설정)을 가지는 로드 프레임 사이즈 레지스터(Address = 04B0_0000H)-Load frame size register with address 83H (frame size = 3, serial access bit set) (Address = 04B0_0000H) - 03H 값을 가지는 로드 ID 레지스터(Address=04B0_0001H)-Load ID register with value 03H (Address = 04B0_0001H) - 로드 데이터/제어 바이트 : KS0122로 다음번 바이트가 인덱스임을 알려주는 08H 값(Address=04B0_0002H)-Load data / control byte: 08H value indicating address of next byte to KS0122 (Address = 04B0_0002H) - 6AH 값을 가는 로드 인덱스 레지스터 (Address=04B0_0003H)-Load index register with a value of 6AH (Address = 04B0_0003H) 시리얼 인터페이스는 프레임 사이즈 레지스터에 있는 내용의 일치 여부를 검출하여 프레임 전송을 개시하고, 스테이터스 레지스터에 있는 기입 플래그는 비지(busy) 상태로 설정된다. 다음번 프레임을 전송하기 전에 소프트웨어에 의해 스테이터스 레지스터에 있는 플래그를 체크한다. 플래그가 준비상태에 있으면, 소프트웨어에 의해 다음번 프레임을 위한 값을 로드할 수 있다.The serial interface detects whether or not the contents in the frame size register match and starts frame transfer, and the write flag in the status register is set to a busy state. The software checks the flags in the status register before sending the next frame. If the flag is ready, the software can load the value for the next frame. 제 10 장비트스트림 처리기10th Equipment Stream Processor 10.110.1 이 장은 비디오 데이터 압축 및 신장 응용을 위한 주요 MSP 처리 엔진 중의 하나인 비트스트림 처리기(BP)를 설계하기 위한 기능적인 요구조건을 설명한다.This chapter describes the functional requirements for designing a bitstream processor (BP), one of the major MSP processing engines for video data compression and decompression applications. 10.2 약어10.2 Abbreviations A/V오디오 및 비디오A / V Audio and Video BP비트스트림 처리기(MSP 블록)BP Bitstream Processor (MSP Block) CCU캐쉬 제어 유니트(MSP 블록)CCU Cache Control Unit (MSP Block) CIF29.97Hz에서 352 * 288의 휘도 샘플 해상도를 갖는 공통 중간 포맷Common intermediate format with luminance sample resolution of 352 * 288 at CIF29.97Hz DCT이산 여현 변환DCT Discrete Cosine Transform DMA직접 메모리 엑세스DMA direct memory access DSM디지탈 저장 미디아DSM Digital Storage Media FBUS빠른 버스(MSP 내부 데이타 버스)FBUS Fast Bus (MSP Internal Data Bus) GOB블록 그룹GOB Block Group GSTN일반 스위치 텔레폰 네트워크(이미 공지된 PSTN)GSTN General Switched Telephone Network (already known as PSTN) HDD하드 디스크 드라이버HDD Hard Disk Driver I/F인터페이스I / F interface IOBUS입출력 버스(MSP 내부 주변 버스)IOBUS I / O Bus (MSP Internal Peripheral Bus) ITU-T-60129.97Hz에서 720x480과 25Hz에서 720x576 각각의 샘플 해상도를 가지는 칼라 텔레비젼 신호의 디지탈 코딩용 테이블준(이전에는 CCIR 601 이라 함.)도 그러나, 디스플레이 해상도는 720X480 또는 704X480이 될 수 있다.ITU-T-601 Tables for digital coding of color television signals with sample resolution of 720x480 at 29.97 Hz and 720x576 at 25 Hz, respectively (previously referred to as CCIR 601), however, the display resolution can be 720x480 or 704x480. LSB최소 비트LSB min bit LUT룩-업 테이블LUT Look-up Table MPEG움직임 영상 익스퍼트 그룹MPEG Motion Picture Expert Group MSB최대 시그니피선트 비트MSB Max Significant Bits MSP삼성 멀티미디어 신호 처리기MSP Samsung Multimedia Signal Processor QCIF29.97Hz에서(176x144의 휘도 해상도를 갖는 Quarter_CIFQuarter_CIF with luminance resolution of 176x144 at QCIF29.97Hz RLC런_길이 레벨 코드RLC run_length level code SDRAM동기 다이나믹 랜덤 엑세스 메모리SDRAM Synchronous Dynamic Random Access Memory SIFNTSC용 29.97Hz에서 352x240 및 PAL 용 25Hz에서 352x288의 휘도해상도를 갖는 MPEG-1 비디오 테이블준용 정보 입력 및 포멧MPEG-1 video table compliant information input and format with luminance resolution of 352x240 at 29.97Hz for SIFNTSC and 352x288 at 25Hz for PAL TSD정의될 것임TSD will be defined VLC가변길이 코드VLC Variable Length Code VP벡터 프로세서(MSP블록)VP vector processor (MSP block) 10.3 주요 특징10.3 Key Features MPEG-1, MPEG-2, H.261 및 H.263의 엔코딩 및 디코딩 응용과 슬라이스(또는 GOB)층을 이루고 해석하는 신텍스를 지원함.Supports encoding and decoding applications of MPEG-1, MPEG-2, H.261 and H.263, and syntax to form and interpret slice (or GOB) layers. * 실시간으로 RLC처리를 수행* Perform RLC processing in real time * MPEG-1, MPEG-2, H.261 및 H.263 비디오 표준에 있는 모든 호프만 테이블을 이용하여 실시간으로 호프만 코드 처리를 수행.* Hoffman code processing in real time using all Hoffman tables in the MPEG-1, MPEG-2, H.261 and H.263 video standards. * 2개의 순방향/역방향 지그-재그 스캔 변환 법칙을 지원* Supports two forward / reverse zig-zag scan conversion laws * 731.4Mbits/sec(32-bit @ 40MHz)의 최대전송 레이트로 인터페이스 하는 IOBUSIOBUS interfaces at a maximum transfer rate of 731.4 Mbits / sec (32-bit @ 40 MHz) * 최대 동작 클럭 주파수는 40MHzMaximum operating clock frequency is 40MHz * 호프만 코텍 룩-업 테이블을 위한 9.2Kbit ROM을 포함* Includes 9.2 Kbit ROM for Hoffman Cotec Look-Up Table * 320 byte내부 SRAM을 포함* Contains 320 byte internal SRAM * 선점 및 협력문맥 스위칭 모드를 지원* Preemption and cooperative context switching modes * 제어 경로를 위한 목적게이트 계산은 6Kgates 더하기 RAM 및 ROM* The destination gate calculation for the control path is 6Kgates plus RAM and ROM 10.4 개요10.4 Overview 비트 스트림 처리기(BP)는 4개의 MSP 내부 주변 장치중 하나이다. 이것은 비디오 압축 및 복원 상태의 여러 비트 스트림을 지원하기 위해 하드웨어 조직 블록이다.The bit stream processor (BP) is one of four MSP internal peripherals. This is a hardware organization block to support multiple bit streams in video compression and decompression status. 이런 장치는 특히, MSP 내부의 VP 및 ARM7이 이러한 비트 조작에 맞게 충분한 구조를 가지고 있지 않기 때문에 비트_레젤 처리를 위해서 설계되었다.These devices are specifically designed for bit_rezel processing because the VP and ARM7 inside the MSP do not have enough structure for this bit manipulation. 이러한 BP는 731.4Mbits/sec의 최대 전송 속도를 갖는 IOBUS라고 불리는 32비트 버스를 통해서 데이타를 송수신한다.These BPs send and receive data over a 32-bit bus called IOBUS with a maximum transfer rate of 731.4 Mbits / sec. 그리고 BP는 독립적인 처리장치로서 동작하고, ARM7 또는 VP의 소프트웨어에 의해 제어된다.The BP operates as an independent processor and is controlled by the software of ARM7 or VP. 더욱 특히, BP는 슬라이드 또는 GOB 및 그 이하에 포함되어 있는 모든 정보를 엔코딩 및 디코딩하고, 그리고 CCU로부터/로 데이타를 송수신한다. 상기 BP는 또한, 순방향 및 역방향 지그_재그 변환을 수행하고, 차분 DC계수를 엔코딩 및 디코딩한다.More particularly, the BP encodes and decodes all information contained in the slide or GOB and below, and sends and receives data to and from the CCU. The BP also performs forward and reverse zig-zag conversion and encodes and decodes the differential DC coefficients. 더욱이, 이러한 BP는 디코딩에서 차분 움직임 벡터를 사용하여 움직임 벡터를 복원하고, 2개의 특수한 모든 즉, MPEG-2 엔코딩에서 듀얼_프라임 모드와 H.263 엔코딩 및 디코딩에서 예측모드를 제외하고 엔코딩에서는 반대동작을 수행한다.Moreover, these BPs reconstruct the motion vectors using differential motion vectors in decoding, and opposite in encoding except for the two specialities: dual_prime mode in MPEG-2 encoding and prediction mode in H.263 encoding and decoding. Perform the action. 만약, BP가 단순한 모드에서 동작한다고 가정하면, BP는 일단 슬라이드 또는 GOB를 처리하면서 시작하고, BP는 슬라이스 또는 GOB 처리가 완료된 후에 인터럽트 된다. 이러한 동작은 전이중 모드가 슬라이스 또는 GOB를 인터리브에 의해 엔코딩 및 디코딩 함으로써 이루어진다.If the BP is assumed to operate in simple mode, the BP will start processing the slide or GOB once, and the BP will be interrupted after the slice or GOB processing is complete. This operation is achieved by the full duplex mode encoding and decoding the slice or GOB by interleaving. 만약 ARM7이 BP를 다른 작업으로 순간적으로 스위칭 시키길 원한다면, BP는 현재의 슬라이스 또는 GOB가 완료되기 전에 BP과정을 완료하는 선점 컨텍트 스위칭 모드를 지지하게 될 것이다.If the ARM7 wants to switch the BP to another task momentarily, the BP will support a preemptive contact switching mode that completes the BP process before the current slice or GOB completes. 도 3은 BP의 블럭 다이어그램을 도시한 것이다.3 shows a block diagram of a BP. 도 3에 도시된 바와 같이, BP는 다섯개의 블럭 IOBUS인터페이스 장치, VLC FIFO 장치, VLC LUT ROM, 제어상태머신 및 BP코어장치를 포함한다. 입출력 데이타는 16x32비트 램을 포함하는 IOBUS 인터페이스 장치에 의해 동작된다. 이것은 모든 데이타 이동 및 인터럽 요구를 지원한다. VLC FIFO 장치는 데이터 디코딩 동작을 위해 다음 데이타 워드를 준비하고, 그리고 데이타 엔코딩 동작을 위해 출력 데이타 패킹을 수행한다.As shown in Fig. 3, the BP includes a five block IOBUS interface device, a VLC FIFO device, a VLC LUT ROM, a control state machine and a BP core device. The input and output data is operated by an IOBUS interface device containing 16x32 bit RAM. It supports all data movement and interrupt requests. The VLC FIFO device prepares the next data word for the data decoding operation, and performs output data packing for the data encoding operation. VLC 룩업 테이블 롬은 모든 호프만 코드 처리를 위해 모든 필요한 정보를 저장하는 764x12bit 크기를 가진다. 제어상태 머신을 설계시 모든 엔코딩 및 디코딩을 제어한다. BP 코어장치는 가산기, 비교기, 배럴시프터, 레지스터 파일 및 128x16비트 RAM을 포함하는 작은 프로세서이다. 비트조작은 상기 코어에 유용하다.The VLC lookup table ROM has a 764x12bit size that stores all the necessary information for all Hoffman code processing. The control state machine controls all encoding and decoding. The BP core device is a small processor that includes an adder, a comparator, a barrel shifter, a register file and 128x16 bit RAM. Bit manipulation is useful for the core. 10.5 신호 정의10.5 Signal Definition BP 외부 인터페이스에 요구되는 신호는 테이블 23에 나타나 있다.The signals required for the BP external interface are shown in Table 23. 문자 1의 끝에 있는 신호는 엑티브_로우를 나타낸다.The signal at the end of character 1 represents the active_row. 테이블1의 방향 컬럼에서, B, I 및 O는 양방향 신호로서 입력신호 및 출력신호를 각각 의미한다.In the directional column of Table 1, B, I, and O are bidirectional signals, meaning input signals and output signals, respectively. (테이블 23)Table 23 BP 신호 정의BP signal definition 10.6 엔코딩/디코딩용 데이타 흐름도10.6 Data Flow for Encoding / Decoding 여기서 예를 들면, 대표적인 비디오 엔코딩 및 디코딩 응용의 데이타 흐름을 포함한다. 여기서는 오디오 데이타 흐름에 대해서는 상세하게 기술하지 않는다.This includes, for example, the data flow of representative video encoding and decoding applications. The audio data flow is not described in detail here. 10.6.1 엔코딩 경우10.6.1 Encoding Case 단계E1 : 로(RAW/ A/V 데이타 입력)Step E1: Raw (RAW / A / V Data Entry) 보통 입력 비디오 및 오디오 신호가 샘플링 되고, 외부 코덱에 위해 디지탈화 되고 그리고 사용자 ASIC에 공급된다. 그러나 멀티미디어 PC환경에서, 어떤 VGA 제어 보드는 또한 프레임(grabber)와 사운드 캡쳐를 포함한다. 그러므로, 로(RAW)A/V 데이타는 사용자 ASIC 또는 PCI 버스 인터페이스 중 어느 하나로 부터 전달된다. 커스텀 ASIC 또는 PCI 버스는 32BYTES의 적은 버퍼를 포함한다. 이 버퍼에 있는 데이타는 DMA조작을 이용한 FBUS를 통해서 외부 SDRAM에 전달된다. 이러한 데이타의 이동은 전원이 리셋된 후 ARM7에 의해 초기화 된다.Typically the input video and audio signals are sampled, digitalized for external codecs and supplied to the user ASIC. In multimedia PC environments, however, some VGA control boards also include frame and sound capture. Therefore, raw A / V data is delivered from either the user ASIC or the PCI bus interface. Custom ASIC or PCI buses contain a small buffer of 32BYTES. The data in this buffer is transferred to external SDRAM via FBUS using DMA operation. This movement of data is initiated by the ARM7 after the power is reset. 단계E2 : VP에 의한 프리 필터링Step E2: Pre Filtering by VP 먼저, VP는 VP데이타 개시(일반적으로 스크라치 패드 영역)의 SDRAM에 저장된 이미지 데이타를 페치한다. 그리고, VP는 이러한 화소를 일시적으로 필터링하고 공간을 스케일링한다. 프리 필터링을 한 후, 영상의 해상도는 정상적으로 ITU_T_601사이즈에서 CIF로 또는 QCIF사이즈로 변환된다. 이 VP는 외부 SDRAM에 대한 프리 필터된 결과를 기록한다.First, the VP fetches image data stored in the SDRAM of the VP data start (typically the scratch pad area). The VP then temporarily filters these pixels and scales the space. After pre-filtering, the resolution of the image is normally converted from ITU_T_601 size to CIF or QCIF size. This VP records the prefiltered results for external SDRAM. 단계E3 : VP에 의한 데이타 압축Step E3: Data Compression by VP VP는 이에 대응되는 표준에 제시된 법칙에 따라 압축이 수행되도록 다시 VP 데이타 캐쉬 안으로 SDRAM의 프리 필터된 데이타를 페치한다. 정상적으로, VP는 순방향 DCT/순방향 적응 양자화, 움직임예측, 매크로블록 타입 결정 등을 수행한다.The VP fetches the pre-filtered data of the SDRAM back into the VP data cache so that compression is performed according to the rules given in the corresponding standard. Normally, the VP performs forward DCT / forward adaptive quantization, motion prediction, macroblock type determination, and the like. 이러한 과정을 수행한 후, VP는 다시 VP데이타 캐시안으로 적당한 헤드정보를 갖는 결과를 기록해야 한다. 실제적으로, 이 VP데이타 캐시 영역은 BP입력버퍼로서 이용된다. 버퍼 상태를 검사하기 위해, 플래그 신호가 이용된다.After performing this procedure, the VP must record the result with the appropriate head information back into the VP data cache. In practice, this VP data cache area is used as a BP input buffer. To check the buffer status, a flag signal is used. 단계E4 : ARM7에 의한 BP 초기화Step E4: Initialize BP by ARM7 실제적으로 BP가 동작되기 전에, ARM7은 BP의 초기 레지스터를 초기화 해야 한다.In practice, before the BP can operate, ARM7 must initialize the BP's initial register. 이러한 초기화는 파워온 리셋신호가 인가된 후 128 사이클 동안에는 수행되지 않는다. 특히, ARM7은 입출력 버퍼 어드레스 및 BP명령 레지스터를 초기화 시켜야 되고, 슬라이스 또는 GOB 내에서 부호화된 매크로 블록의 수를 지정해야 한다.This initialization is not performed for 128 cycles after the power-on reset signal is applied. In particular, ARM7 must initialize the I / O buffer address and BP instruction registers and specify the number of macroblocks encoded within the slice or GOB. 이러한 레지스터를 초기화 한 후, ARM7은 BP과정을 수행하도록 BP인에이블 플레그를 세트해야 된다.After initializing these registers, ARM7 must set the BP enable flag to perform the BP process. 단계E5 : BP에 의한 비트스트림 과정Step E5: Bitstream Process by BP 만약 입력 2개의 버퍼중 어느 1개가 풀(full)인 경우, BP는 IOE JS를 통해서 데이타의 읽기를 시작한다. 즉 BP는 버퍼가 풀인 경우에만 데이타를 읽을 수 있다. 그리고, BP는 지그_재그 포맷에서 8x8블록 데이타를 변환시킨다. 그리고 그 결과는 직접적으로 RLC 및 호프만 부호화 된다.If any one of the two input buffers is full, BP starts reading data through IOE JS. That is, the BP can read data only when the buffer is full. Then, BP converts 8x8 block data in the zigzag format. The result is directly encoded with RLC and Hoff. 이러한 호프만 부호화된 결과는 ARM7데이타 캐쉬 또는 SDRAM 중의 어느 하나로 전송될 수 있다. BP는 상기 버퍼가 오버플로우 되지 않도록 비워있는 경우에만 출력 버퍼에 라이트 해야 한다. 이 과정의 마지막 예를 들면, 처리된 매크로블록의 수가 ARM7에 의해 지정된 매크로블록의 수와 같은 경우, BP는 마지막 데이타의 바이트 및 위치에서 ARM7과 인터럽트 하게 되고 현재 슬라이스 또는 GOB 과정을 종료한다.The Huffman coded result may be transferred to either the ARM7 data cache or the SDRAM. The BP should only write to the output buffer if it is empty so that the buffer does not overflow. As a last example of this process, if the number of macroblocks processed equals the number of macroblocks specified by ARM7, the BP will interrupt the ARM7 at the byte and position of the last data and terminate the current slice or GOB process. 단계E6 : ARM7에 의해 비트스트림 형성과 A/V 멀티플렉싱Step E6: Bitstream Formation and A / V Multiplexing by ARM7 ARM7은 호프만 부호화된 데이터 및 신텍스 변수를 결합하여 마지막 비트 스트림을 만들고, 그 과정을 반복한다.ARM7 combines Hoffman-coded data and syntax variables to produce the last bit stream, and repeats the process. 그리고 ARM7은 또한 슬라이스 또는 GOB 멀티플렉스 오디오 및 비디오 비트 스트림의 상부층과 조작할 수 있다. 이 결과는 ARM7에 의해 SDRAM에 쓰여진다.And ARM7 can also manipulate with the top layer of slice or GOB multiplex audio and video bitstreams. This result is written to SDRAM by ARM7. 단계E7 : VP에 의한 네트워크 인터페이스(비디오 회의용 선택)Step E7: Network Interface by VP (Selection for Video Conferencing) 비디오 전화 또는 비디오 화상회의 응용을 위해서 상기 단계6까지는 VP가 H.324 GSTN 비디오 전화용 V.34 모뎀 또는 H.320 ISDN 비디오 회의단말용 1400 계열 인터페이스와 같은, 네트워크 인터페이스가 기능을 수행하였다.For video telephony or video conferencing applications, up to step 6 above, the VP functions as a network interface, such as a V.34 modem for H.324 GSTN video telephony or a 1400 series interface for H.320 ISDN video conferencing. 단계E8 : 마지막 비트 스트림 출력Step E8: Output the Last Bit Stream SDRAM에 저장된 마지막 비트스트림은 커스팀 ASIC 또는 PCI 버스중 어느 하나에 전송된다. 정상적으로 사용자 ASIC 블록은 네트워크 인터페이스에 사용되고, 그리고 PCI 버스 인터페이스는 기록장치(예를들면, HDD) 데이타 저장을 위해 이용된다.The last bitstream stored in the SDRAM is sent to either the custom ASIC or the PCI bus. Normally the user ASIC block is used for the network interface, and the PCI bus interface is used for recording (eg HDD) data storage. 이 데이타가 이동시에는 ARM7에 의해 초기화된 DMA 데이타 전송을 이용한다.When this data is moved, the DMA data transfer initialized by ARM7 is used. 10.6.2 디코딩 경우10.6.2 Decoding Case 단계 D1 : 비트스트림 페치Step D1: Bitstream Fetch 멀티미디어 환경에서, 압축된 비트스트림은 CD-ROM 드라이버, HDD 및 네트워크 인터페이스 중 어느 하나로부터 공급된다.In a multimedia environment, the compressed bitstream is supplied from one of a CD-ROM driver, an HDD and a network interface. 그러므로, 이 비트스트림은 커스텀 ASIC 또는 PCI 버스중 어느 하나가 된다. 커스텀 ASIC 또는 PCI 버스의 32byte 버퍼에 저장된 데이타는 DMA를 이용한 SDRAM에 전송된다.Therefore, this bitstream can be either a custom ASIC or a PCI bus. Data stored in a 32-byte buffer on a custom ASIC or PCI bus is transferred to SDRAM using DMA. 단계 D2 : VP에 의한 네트워크 인터페이스(비디오 회의용 선택)Step D2: Network Interface by VP (Selection for Video Conferencing) 비디오 회의에서, 데이타는 먼저, VP에 의해 V.34 또는 1400계열 네트워크 인터페이스 루틴이 수행된다. VP는 SDRAM에 대한 결과를 라이트한다.In video conferencing, the data is first performed by a V.34 or 1400 series network interface routine by the VP. VP writes the result to SDRAM. 단계 D3 : ARM7에 의해 A/V 디멀티플렉싱 및 헤더 분석Step D3: A / V Demultiplexing and Header Analysis by ARM7 ARM7은 SDRAM 내에서 있는 데이타를 ARM7 데이타 캐시로 이동시키고, A/V 비트스트림 디멀티플렉싱을 수행한다. 비디오 비트스트림을 위해, ARM7은 또한, 모든 시작코드를 검색하고 그리고 슬라이스 GOB가 검출될 때까지 헤더를 분석한다. ARM7은 복호화된 비트스트림 신텍스 변수를 ARM7에 의해 SDRAM의 특별영역에 저장시킨다. 디멀티플렉싱된 오디오 및 비디오 비트스트림은 SDRAM에 있는 레이트 버퍼 각각에 전송된다. 각 동작을 위해 레이트 버퍼의 사이즈를 다르게 해도 된다. 예를들면, 비디오 속도 버퍼 사이즈를 위해 MPEG-1은 370Kbits로 MPEG-2 SMS 1.835Mbits로 권고한다.ARM7 moves data in SDRAM to the ARM7 data cache and performs A / V bitstream demultiplexing. For the video bitstream, ARM7 also retrieves all start codes and parses the header until slice GOB is detected. ARM7 stores the decoded bitstream syntax variables in the special area of SDRAM by ARM7. The demultiplexed audio and video bitstreams are sent to each of the rate buffers in the SDRAM. The size of the rate buffer may be different for each operation. For example, for video rate buffer size, MPEG-1 recommends 370 Kbits and MPEG-2 SMS 1.835 Mbits. 단계 D4 : ARM7에 의한 BP 초기화Step D4: BP Initialization by ARM7 이 단계의 수행은 단지, 부호화된 매크로 블록의 수에 대해 레지스터를 초기화하도록 요구하지 않는 것을 제외하고는, 이전의 서브섹션에 있는 단계 E4와 같다. 다시 말해, 초기화는 파워온 리셋 신호가 인가된 후 128 사이클 동안 수행되어서는 안된다.Performing this step is the same as step E4 in the previous subsection except that it does not require to initialize the register for the number of coded macroblocks. In other words, the initialization should not be performed for 128 cycles after the power-on reset signal is applied. 단계 D5 : BP에 의한 비트스트림 과정Step D5: Bitstream Process by BP 특별한 슬라이스 또는 GOB를 위해 BP를 초기화 시킨 후, 복원된 데이타는 2개의 버퍼에 전송한다.After initializing the BP for a particular slice or GOB, the recovered data is sent to two buffers. BP는 풀 플러그의 상태를 검사하는 IOBUS를 통해서 데이타를 읽는다. BP는 만약, 입력 데이타가 헤드워드를 포함하고 있다. 신텍스 변수를 분석한다.The BP reads data through IOBUS, which checks the status of the pull plug. In BP, if the input data contains a headword. Analyze syntax variables. 만약 BP가 계속되는 다음 비트를 호프만 코드로 인식하면, 각 호프만 코드용 최상 4사이클 이내에 호프만 디코딩을 수행한다. 만약, 호프만 디코드가 DCT AC 계수이면, 호프만 디코드된 결과는 64 화소 성분을 나타내는 디코드된 RLC가 된다.If the BP continues to recognize the next bit as a Hoffman code, Huffman decoding is performed within the top four cycles for each Hoffman code. If Hoffman decode is a DCT AC coefficient, the Hoffman decoded result is a decoded RLC representing a 64 pixel component. 재현 화소는 이와 반대로, 지그_재그로 변환되고, 그리고 마지막으로 VP가 순방향 양자화를 수행하도록 2개의 출력버퍼에 전송된다. BP는 슬라이스 또는 GOB가 아닌 초기코드를 검출한 후 이러한 과정을 계속 수행한다. 만약, 이것이 검출되지 않는다면, BP는 마지막에 사용된 데이타에 대해 바이트 및 비트 위치정보를 갖는 ARM7을 인터럽트 시킨다. 그러면, ARM7은 다음 슬라이스 또는 GOB시작 코드를 검색하고 이러한 과정을 반복한다.The reproduction pixel is in turn converted to zig-zag, and finally transferred to two output buffers so that VP performs forward quantization. The BP continues this process after detecting an initial code other than a slice or GOB. If this is not detected, BP interrupts ARM7 with byte and bit position information for the last used data. ARM7 then searches for the next slice or GOB start code and repeats this process. 단계 D6 : VP의 데이타 복원Step D6: Restore Data of VP 단계 D5의 결과를 사용하여, VP는 역양자화, 역 DCT 및 움직임 버퍼를 이용한 영상재현을 수행한다. 부호화 과정을 완료한 후, VP는 SDRAM 안에 그 결과를 저장한다.Using the result of step D5, the VP performs image reproducibility using inverse quantization, inverse DCT and motion buffer. After completing the encoding process, the VP stores the result in SDRAM. 단계 D7 : VP의 이후 과정Step D7: Post Process of VP 비디오 및 오디오 데이타가 디지털/아날로그 변환기로 전송되기 전에, 화소는 VP가 바람직한 출력 해상도 및 이미지를 얻도록 위의 과정을 수행한다.Before the video and audio data is transferred to the digital / analog converter, the pixel performs the above process so that VP obtains the desired output resolution and image. 이러한 결과는 다시, SDRAM에 저장될 것이다.This result will again be stored in SDRAM. 단계 D8 : (RAW)A/V 데이타 출력Step D8: (RAW) A / V Data Output 마지막으로, SDRAM 내부의 재현오디오 및 비디오 데이타는 DMA를 이용해 출력된다. 다시, 이러한 데이타의 이동은 ARM7에 의해 초기화 된다. 현재의 비디오 오버레이 기술은 PCI버스가 비디오 소스에 데이타를 전송할 수 있게 하고, 마지막으로 데이타는 커스텀 ASIC 또는 PCI 버스중 어느 하나에 전송될 것이다.Finally, the reproduced audio and video data in the SDRAM are output using DMA. Again, this movement of data is initiated by ARM7. Current video overlay technology allows the PCI bus to send data to the video source, and finally the data will be sent to either a custom ASIC or PCI bus. 10.7 프로그래밍 모델10.7 Programming Model 10.7.1 BP베이스 장치 어드레스10.7.1 BP base device address BP는 다음의 32비트 기본 장치 어드레스를 가지고 있다.The BP has the following 32-bit base device addresses. MSP_BASE BP_BASE Address_OffsetMSP_BASE BP_BASE Address_Offset 여기서, MSP_BASE는 MSP 베이스 PCI 장치 어드레스에 의해 규정된 5비트이고, BP_BASE는 7'b 1111100과 같은 7비트이며, Address_Offset은 BP내부 레지스터에 할당된 20비트이다.Here, MSP_BASE is 5 bits defined by the MSP base PCI device address, BP_BASE is 7 bits such as 7'b 1111100, and Address_Offset is 20 bits allocated to the BP internal register. 그러므로, 전체 MSP I/O 장치 어드레스 맵에서 BP에 할당된 어드레스 범위는 27'h 7C0_0000에서 27'h 7CF_FFFF이다.Therefore, the address range assigned to the BP in the entire MSP I / O device address map is 27'h 7C0_0000 to 27'h 7CF_FFFF. 10.7.2 내부레지스터 사양10.7.2 Internal Register Specifications 내부레지스터 세트는 테이블 24에 나타나 있으며, 테이블 2에 나타난 모든 레지스터는 ARM7 또는 VP에 의해 쓰여지거나 읽혀질 수 있다.The internal register set is shown in Table 24. All registers shown in Table 2 can be written or read by ARM7 or VP. (테이블 24)(Table 24) BP 내부 레지스터BP internal register * BP-MODE[31:0](리드온리, 디폴트값 없음)-이 레지스터는 비디오 표준 타입과 다양한 화상레벨 정보를 정의하고, 상세한 것은 서브섹션 10.8.1에서 볼 수 있다.BP-MODE [31: 0] (lead-only, no default)-This register defines the video standard type and various picture level information, details of which can be found in subsection 10.8.1. * BP_CONTROL[31:0](리드/라이트, 디폴트 값은 32 'h 0000_0000)-이 레지스터는 BP 동작을 위해 다양한 제어 변수를 포함한다. ARM7 또는 VP는 이 레지스터에 있는 각 플레그를 세트할 것이고, 어떤 플레그는 BP에 의해 리셋된다. 비트사양은 서브섹션 10.8.2에서 볼 수 있다.BP_CONTROL [31: 0] (Lead / Write, default value is 32 'h 0000_0000)-This register contains various control variables for BP operation. The ARM7 or VP will set each flag in this register and some flags will be reset by the BP. Bit specifications can be found in subsection 10.8.2. * IBUF0_START[31:0](리드/라이트, 디폴트값 없음)-이 레지스터는 BP입력 양방향 버퍼의 입력 버퍼 0이 되도록 초기 어드레스를 ARM7에 의해 정의하여 초기화 한다. IBUF0_START용 초기화값은 항상 IBUFO_END 보다 작으며, IBUFO_START[3:0] 4'b0000과 같다.* IBUF0_START [31: 0] (read / write, no default)-This register initializes the initial address defined by ARM7 to be input buffer 0 of the BP input bidirectional buffer. The initialization value for IBUF0_START is always less than IBUFO_END and is equal to IBUFO_START [3: 0] 4'b0000. * IBUF0_END[31:0](리드온리, 디폴트값 없음)-이 레지스터는 BP 입력 양방향 버퍼의 입력버퍼 0으로 마지막 어드레스를 정의하고 있으며, 이런 내용은 섹션 10.11에 기술되어 있다.IBUF0_END [31: 0] (lead-only, no default)-This register defines the last address as input buffer 0 of the BP input bidirectional buffer, as described in section 10.11. * IBUF1_START[31:0](리드/라이트, 디폴트값 없음)-이 레지스터는 BP입력 더블버퍼의 입력버퍼가 1이 되도록 ARM7의 시작어드레스를 초기화시킨다.IBUF1_START [31: 0] (read / write, no default)-This register initializes the ARM7 start address so that the input buffer of the BP input double buffer is one. * IBUF1_START의 초기화 값은 항상 IBUF1_END 보다 작으며, IBUF1_START[3:0]은 4'b0000과 같게 된다. 이런 내용은 섹션 10.11에 기술되어 있다.* The initialization value of IBUF1_START is always smaller than IBUF1_END, and IBUF1_START [3: 0] is equal to 4'b0000. This is described in Section 10.11. IBUF1_END[31:0](리드온리, 디폴트값 없음)-이 레지스터는 BP입력더블버퍼의 입력버퍼가 1이 되도록 마지막 어드레스를 정의한다. 이런 내용은 섹션 10.11에 기술되어 있다.IBUF1_END [31: 0] (Lead Only, No Default)-This register defines the last address so that the input buffer of the BP input double buffer is one. This is described in Section 10.11. * OBUF0_START[31:0](리드/라이트, 디폴트값 없음)-이 레지스터는 BP 출력 더블버퍼의 출력버퍼가 0이 되도록 ARM7의 시작 어드레스를 초기화 시킨다.OBUF0_START [31: 0] (read / write, no default)-This register initializes the start address of ARM7 so that the output buffer of the BP output double buffer is zero. OBUF0_START의 초기화 값은 OBUFO_END 보다 항상 작으며 OBUFO_START[3:0]은 4'b0000과 같다. 이런 내용은 섹션 10.11에 기술되어 있다.The initialization value of OBUF0_START is always smaller than OBUFO_END and OBUFO_START [3: 0] is equal to 4'b0000. This is described in Section 10.11. * OBUF0_END[31:0](리드온리, 디폴트값 없음)-이 레지스터 BP출력더블버퍼의 출력버퍼가 0이 되도록 마지막 어드레스를 정의한다. 이런 내용은 섹션 10.11에 기술되어 있다.OBUF0_END [31: 0] (lead-only, no default)-Defines the last address so that the output buffer of this register BP output double buffer is zero. This is described in Section 10.11. * OBUF1_START[31:0](리드/라이트, 디폴트값 없음)-이 레지스터는 ARM7에 의해 BP출력더블버퍼의 출력버퍼 1이 되도록 ARM7의 시작어드레스를 초기화한다.OBUF1_START [31: 0] (read / write, no default)-This register initializes the start address of ARM7 to be output buffer 1 of the BP output double buffer by ARM7. OBUF1_START의 초기화 값은 OBUF1_END 보다 항상 작고, OBUF1_START[3:0]은 4'b0000과 같다. 이런 내용은 섹션 10.11에 기술되어 있다.The initialization value of OBUF1_START is always smaller than OBUF1_END, and OBUF1_START [3: 0] is equal to 4'b0000. This is described in Section 10.11. * OBUF1_END[31:0](리드온리, 디폴트값 없음)-이 레지스터는 BP출력더블 버퍼의 출력버퍼 1이 되도록 마지막 어드레스를 정의한다. 이런 내용은 섹션 10.11에 기술되어 있다.OBUF1_END [31: 0] (lead-only, no default)-This register defines the last address to be output buffer 1 of the BP output double buffer. This is described in Section 10.11. *SAVE_ADR[31:0](리드온리, 디폴트값 없음)-이 레지스터는 선점 컨텍트 스위칭모드가 요구될 경우, BP내부 컨텍트를 저정하도록 SDRAM의 초기 어드레스로 정의한다. 관련자료는 서브섹션 10.12.1을 참조바람.* SAVE_ADR [31: 0] (lead-only, no default)-This register defines the initial address of the SDRAM to store the BP internal contact when preemptive contact switching mode is required. See subsection 10.12.1 for further information. * VALID_BYTE_ADR[31:0](리드/라이트, 디폴트값 없음)-이 레지스터는 디코딩에서 입력더블버퍼 또는 엔코딩에서 출력더블버퍼의 마지막 유효 데이타 바이트 위치를 나타낸다. 이 레지스터의 목적은 ARM7 및 BP 사이에서 핸드 세이킹 하기 위한 것이다. 일반적으로, 유효바이트 데이타의 유효비트 위치를 위해 추가적인 정보가 또한, 요구되는데, 이런 것은 BP_CONTROL[31:0] 레지스터내에 포함되어 있다. 상세 내용은 섹션 10.13에 있음.VALID_BYTE_ADR [31: 0] (lead / write, no default)-This register indicates the position of the last valid data byte of the input double buffer in decoding or the output double buffer in encoding. The purpose of this register is to handshaking between ARM7 and BP. In general, additional information is also required for valid bit positions of valid byte data, which is contained in the BP_CONTROL [31: 0] register. Details are given in section 10.13. * BP_STATUS[31:0](리드/라이트, 디폴트값은 32 'h0000_0000)- 이 레지스터는 BP의 다양한 내부의 상태를 나타낸다. 최하 2바이트(예를들면, BP_STATUS[15:0])의 모든 비트 위치는 ARM7_IRQ를 1로 세트할 수 있는 인터럽트 조건이다. 이 레지스터는 두가지 방법으로 접근될 수 있다. ARM7 또는 VP는 어드레스 27'h7CO_0050을 사용하는 풀 32-비트 레지스터를 리드 또는 라이트 할 수 있다. 일반적으로 그러나, ARM7 및 VP는 비트 단위로 BP_STATUS 레지스터의 내용을 라이트(또는 리세트)하는 것이 바람직하다. BP는 또한, BP_STATUS의 각 비트당 27'h7CO_0030에서 27'h7CO_004F 범위의 어드레스를 할당함으로써 특징적인 내용을 지원한다. 이러한 비트 내용은 서브섹션 10.8.3에 기술되어 있다.BP_STATUS [31: 0] (Lead / Write, default value is 32 'h0000_0000')-This register indicates the various internal states of the BP. Every bit position of at least two bytes (eg, BP_STATUS [15: 0]) is an interrupt condition that can set ARM7_IRQ to one. This register can be accessed in two ways. The ARM7 or VP can read or write a full 32-bit register using address 27'h7CO_0050. In general, however, ARM7 and VP preferably write (or reset) the contents of the BP_STATUS register in bits. The BP also supports characteristic content by assigning addresses in the range 27'h7CO_0030 to 27'h7CO_004F for each bit of BP_STATUS. These bit contents are described in subsection 10.8.3. *BP_INT_MASK[15:0](리드온리, 디폴트값은 16hFFFF)이 레지스터의 각 비트는 상기 BP_STATUS[15:0]에 의한 인터럽트 조건에 대응되고, BP_STATUS[15:0] 내부에서 코딩되기 전의 조건을 갖는 논리적인(and-ed)이다. 만약 하나의 마스크 비트가 0으로 세트되면, 대응 인터럽트 조건은 무조건적으로 0(예를들면, 디스에이블 됨)으로 세트한다. 이러한 인터럽트에 대한 한세한 내용은 섹션 10.9에 기술되어 있다.* BP_INT_MASK [15: 0] (Lead Only, default value is 16hFFFF) Each bit of this register corresponds to the interrupt condition by BP_STATUS [15: 0] and indicates the condition before coding inside BP_STATUS [15: 0]. And-ed. If one mask bit is set to zero, the corresponding interrupt condition is unconditionally set to zero (eg, disabled). Details about these interrupts are described in section 10.9. *V_MB_SIZE[7:0](리드온리, 디폴트값 없음)-이 레지스터는 부호화 또는 복호화되는 화상의 수직사이즈를 나타낸다. 여기서 이 값은 매크로블록의 수를 의미한다. 예를들면, 만약 수직사이즈가 288펠이면, V_MB_SIZE[7:0]=288/16=8이 된다. ARM7은 BP 엔코딩 및 디코딩 동작을 매번 시작 되기전에 설정해야 한다.* V_MB_SIZE [7: 0] (Lead Only, No Default)-This register indicates the vertical size of the picture to be encoded or decoded. This value here means the number of macroblocks. For example, if the vertical size is 288, then V_MB_SIZE [7: 0] = 288/16 = 8. ARM7 must configure the BP encoding and decoding operations before starting each time. *H_MB_SIZE[7:0](리드온리, 디폴트값 없음)-이 레지스터는 부호화 또는 복호화되는 화상의 수평사이즈를 나타낸다. 여기서 이 값은 매크로블록의 수를 의미한다. 예를 들면, 만약 수직사이즈가 352펠이면, H_MB_SIZE[7:0]=352/16=2된다. ARM7은 BP 엔코딩 및 디코딩 동작을 매번 시작 되기전에 설정해야 한다.* H_MB_SIZE [7: 0] (lead-only, no default value)-This register indicates the horizontal size of the picture to be encoded or decoded. This value here means the number of macroblocks. For example, if the vertical size is 352 pels, then H_MB_SIZE [7: 0] = 352/16 = 2. ARM7 must configure the BP encoding and decoding operations before starting each time. *ARM7_IRQ[0](라이트온리, 디폴트값은 0)-이 레지스터는 ARM7에 인터럽트를 요구하기 위한 1비트 플레그이고, ARM7_IRQ 출력포트에 직접 연결되어 있다. 이 플레그는 만약 BP_STATUS[15:0]의 임의 비트가 1로 세트되면, 세트된다. 그리고 ARM7은 이 플레그를 리세트 시킨다.ARM7_IRQ [0] (write-only, default is 0)-This register is a 1-bit flag for requesting an interrupt from ARM7 and is directly connected to the ARM7_IRQ output port. This flag is set if any bits of BP_STATUS [15: 0] are set to one. ARM7 resets this flag. 10.8 BP I/0 데이타워드 포맷10.8 BP I / 0 Dataword Format 이 섹션에서는 BP 입출력용 명령어 데이타 및 매크로블록 데이타 워드포멧을 포함한다.This section contains instruction data and macroblock data word formats for BP I / O. 10.8.1 BP_MODE 레지스터 포멧10.8.1 BP_MODE register format 27'h7C0_0000 어드레스의 32비트 BP_MODE 레지스터는 테이블 25에 주어진 다음의 포멧을 가지고 있다. 즉, BP_MODE[31]=PARAM_SET2[7]과 BP_MODE[0]=SF[0]을 나타낸다.The 32-bit BP_MODE register at address 27'h7C0_0000 has the following format given in Table 25. That is, BP_MODE [31] = PARAM_SET2 [7] and BP_MODE [0] = SF [0]. [테이블 25]Table 25 BP_MODE 레지스터 포멧BP_MODE register format *standard_format[SF]_사용되는 비디오 표준은 테이블 26에 정의되어 있다. 상기 SF는 항상 BP가 모든 비디오 엔코딩 및 디코딩 응용에 인에이블 되기전에 ARM7에 의해 정의 되어야 한다.* standard_format [SF] _ The video standard used is defined in Table 26. The SF must always be defined by ARM7 before the BP is enabled for all video encoding and decoding applications. [테이블 26]Table 26 SF의 정의Definition of SF *picture_type(PT)-영상 코딩 타입은 테이블 27에 정의되어 있다.* picture_type (PT)-picture coding type is defined in Table 27. PT용 값 00은 MPEG-1, MPEG-2 및 H 263 응용을 위한 특수한 경우이다. 특히, D_영상은 비록 MPEG-2에 사용되지 않더라도 MPEG-2용 영상타입으로 할당된다. 왜냐하면 MPEG-1 비트스트림이 MPEG-2 비트스트림의 서브세트이기 때문이다.The value 00 for PT is a special case for MPEG-1, MPEG-2 and H 263 applications. In particular, the D_picture is assigned as the picture type for MPEG-2 even though it is not used for MPEG-2. This is because the MPEG-1 bitstream is a subset of the MPEG-2 bitstream. [테이블 27]Table 27 PT의 정의Definition of PT *picture_structure(PS)-영상구조 정보는 테이블 28에 정의되어 있다. 다시, PS용 값 00은 비논리적이어서 에러를 가져온다.picture_structure (PS) -Picture structure information is defined in Table 28. Again, the value 00 for PS is illogical and results in an error. [테이블 28]Table 28 PS의 정의Definition of PS *parameter_set 0,1 및 2(PARAM_SET 0, PARAM_SET 1, PARAM_SET 2)-이러한 3바이트는 MPEG-1, MPEG-2 및 H.263에 사용되는 다양한 변수로 정의된다. 각 변수 세트용 정의는 테이블 29 및 30에 기술되어 있다.parameter_set 0,1 and 2 (PARAM_SET 0, PARAM_SET 1, PARAM_SET 2)-These three bytes are defined by various variables used in MPEG-1, MPEG-2 and H.263. Definitions for each variable set are described in Tables 29 and 30. [테이블 29]Table 29 PARAM_SET0의 정의Definition of PARAM_SET0 *intra_dc_precision(IDP)-MPEG-2에 정의된 2비트 인트라 dc Precision변수는 MPEG-1 응용에서 00으로 세트되어야 한다.The 2-bit intra dc Precision variable defined in * intra_dc_precision (IDP) -MPEG-2 should be set to 00 in MPEG-1 applications. *top_field_first(TFF)-움직임 벡터 엔코딩 및 디코딩에 사용되는 MPEG-2용 플레그이다.top_field_first (TFF) -flag for MPEG-2 used for motion vector encoding and decoding. *frame_pred_frame_dct(FPFD)-MPEG-2용 플레그는 프레임_DCT 및 플레임 예측이 사용되는 것을 나타낸다.The frame for frame_pred_frame_dct (FPFD) -MPEG-2 indicates that frame_DCT and frame prediction are used. *cancealment _ motion _ vectors(CMV) 또는 advamced _ prediction _ mode(AP)-MPEG-2에서, 이 플레그는 움직임 벡터가 영상간 매크로블록에 사용되는 것을 나타낸다. H.263에서, 이 플레그는 만약, 어드밴드이드 예측모드가 ON이면, 1로 세트된다. 그렇지 않은 경우에는 0으로 세트된다. 다른 표준을 위해서 이 플레그는 0으로 세트되어야 한다.In motion_motion_vectors (CMV) or advamced_prediction_mode (AP) -MPEG-2, this flag indicates that motion vectors are used for inter-image macroblocks. In H.263, this flag is set to 1 if the advanced prediction mode is ON. Otherwise it is set to zero. For other standards this flag should be set to zero. *intra_vlc_format(IVF)-MPEG-2용 플레그는 영상간 매크로블록을 위한 VLC 테이블 형태를 결정한다.The flag for intra_vlc_format (IVF) -MPEG-2 determines the VLC table format for macroblocks between images. *altermate-scan(AS)-MPEG-2용 플레그는 부호화 및 복호화되는 계수의 차수를 결정한다.The flag for alter-scan (AS) -MPEG-2 determines the order of the coefficients to be encoded and decoded. *vertical_size_flag(VSF) 또는 continuous_presence_multipoint(CPM)-MPEG-1 및 MPEG-2에서, 이 플레그의 영상의 수직크기가 2800 라인을 넘으면 1로 세트되고, 그렇지 않으면 0으로 세트되어야 한다. H.263에서, 이 플레그는 연속적으로 현재 멀티포인트 모드가 사용되면 1로 세트되고 그렇지 않으면 0으로 세트된다.In vertical_size_flag (VSF) or continuous_presence_multipoint (CPM) -MPEG-1 and MPEG-2, it should be set to 1 if the vertical size of the image of this flag exceeds 2800 lines, otherwise it should be set to 0. In H.263, this flag is continuously set to 1 if the current multipoint mode is used and to 0 otherwise. [테이블 30]Table 30 PARAM_SET1 및 PARAM_SET2의 정의Definition of PARAM_SET1 and PARAM_SET2 10.8.2 BP_CONTROL 레지스터 포멧10.8.2 BP_CONTROL Register Format BP_CONTROL[31:0] 레지스터(어드레스 27'h7C0_0004)를 위한 비트 사양은 테이블 31에 나타나 있다.The bit specifications for the BP_CONTROL [31: 0] register (address 27'h7C0_0004) are shown in Table 31. [테이블 31]Table 31 BP_CONTROL 레지스터 포멧BP_CONTROL register format *BP_enable(BP-EN)-이 플레그가 ARM7 또는 VP에 의해 1로 세트될때, BP는 과정을 수행한다. 그러므로, 모든 다른 레지스터 구조는 이 플레그가 세트되기 전에 완료된다. 만약 BP가 과정을 마쳤다면, 이 플러그는 BP에 의해 클리어된다.* BP_enable (BP-EN)-When this flag is set to 1 by ARM7 or VP, BP performs the process. Therefore, all other register structures are completed before this flag is set. If the BP has completed the process, this plug is cleared by the BP. *software_reset(SOFT_RESET)-플레그가 ARM7 또는 VP에 의해 세트될 때, BP는 현재의 과정을 중단하여 디폴트 상태에서 모든 초기 레지스터로 리턴하여, 아이들 상태가 된다. ARM7은 BP-EN 플레그를 세팅하여 BP 과정을 다시 시작할 수 있다. BP 하드웨어 리세트 신호는 엑티브로우이다.software_reset (SOFT_RESET)-When the flag is set by ARM7 or VP, the BP stops the current process and returns to the initial register in all default registers, becoming idle. ARM7 can restart the BP process by setting the BP-EN flag. The BP hardware reset signal is active low. *pause(PAUSE)-플레그가 ARM7 또는 VP에 의해 1로 세트될때, BP는 현재의 과정동작을 중지한다. 사용자는 BP_EN 플레그를 설정함으로서 중지 동작이 실행된다.* pause (PAUSE)-When the flag is set to 1 by ARM7 or VP, BP stops the current process operation. The user executes the stop operation by setting the BP_EN flag. *detect_start_code(DETECT_START_CODE)-플레그가 ARM7 또는 VP에 의해 1로 세트시, BP는 IBUFO에 있는 데이타 가운데서 다음 시작코드를 찾는다. 그러므로, 사용자가 IBUFO_START 및 IBUFO_END를 위한 바람직한 어드레스를 세트해야한다. 이러한 명령어는, 만약 BP가 아이들 상태이면, 적절하게 동작할 것이다. 그러므로, ARM7은 만약 BP가 아이들이 아닌 경우 이 명령을 외부로 보내기 전에 소프트웨어 리세트 명령은 우선적으로 BP로 보내야 한다.* detect_start_code (DETECT_START_CODE)-When the flag is set to 1 by ARM7 or VP, the BP finds the next start code in the data in the IBUFO. Therefore, the user must set the preferred addresses for IBUFO_START and IBUFO_END. This command will work properly if the BP is idle. Therefore, ARM7 must first send a software reset instruction to BP before sending it out if BP is not idle. *seep(STEP)-이 플레그가 ARM7 또는 VP에 의해 1로 세트되면, BP는 현재 동작과정의 한 상태를 수행한다. 이것은 디버깅하는데 매우 필요한 특징이다. ARM7은 이 단계동작이 인에이블하도록 중지 명령을 우선적으로 보내야 한다.* seep (STEP)-When this flag is set to 1 by ARM7 or VP, the BP performs one state of the current operation. This is a very necessary feature for debugging. ARM7 must first send a stop instruction to enable this step. *context_switching_mode(CTX_MODE)-플레그가 1로 CTX_SWITCH를 세팅하여 ARM7 또는 VP에 의해 1로 세트시, BP는 선점 스위칭모드를 수행한다. 만약 이것은 CTX_SWITCH가 1로 세팅됨에 따라 0으로 세트되면, BP는 협력 컨텍트 스위칭 모드를 수행한다. 1로 CTX_SWITCH를 세팅하지 않고, CTX_MODE를 세팅하는 것은 BP과정에 영향을 미치지 않는다. 컨텍트 스위칭의 상세한 내용은 섹션 10.2를 참조.context_switching_mode (CTX_MODE)-When the flag sets CTX_SWITCH to 1 and sets it to 1 by ARM7 or VP, the BP performs preemptive switching mode. If this is set to 0 as CTX_SWITCH is set to 1, the BP performs cooperative contact switching mode. Setting CTX_MODE without setting CTX_SWITCH to 1 does not affect the BP process. See section 10.2 for details on contact switching. *context_reload_request(CTX_RELOAD)-플레그가 ARM7 또는 VP에 의해 1로 세트시, BP는 SDRAM에 이미 저장된 컨텍트를 다시 로드한다. 그러면 BP는 어드레스 SAVE_ADR[31:0]로부터 저장된 컨텍트를 읽는다. 컨텍트 스위칭에 대한 상세한 내용은 섹션 10.12를 참조.context_reload_request (CTX_RELOAD)-When the flag is set to 1 by ARM7 or VP, the BP reloads the contacts already stored in the SDRAM. The BP then reads the stored contact from address SAVE_ADR [31: 0]. See section 10.12 for details on contact switching. *error_handle_mode(ERR_HANDLE_MODE)-이 플레그는 전송된 압축비트 스트림에서 에라가 발생시 BP에 에러복구 과정을 수행하는데 이용된다.error_handle_mode (ERR_HANDLE_MODE)-This flag is used to perform error recovery to the BP when an error occurs in the transmitted compressed bit stream. 입력비트 스트림이 무효 데이타일 경우, BP는 ARM7을 인터럽트시키고 이 플레그의 내용을 체크한다. 이 플레그가 1로 세트시, BP는 자동적으로 다음 시작 코드를 찾는다. 만약, 시작코드가 슬라이스 또는 GOB라면, BP는 이 과정을 다시 수행한다. 이 플레그가 0으로 세트시, BP는 다음 시작코드를 찾지않고 아이들 상태로 동작한다. BP와 ARM7 사이의 핸드세이킹은 섹션 10.13에 기술되어 있따.If the input bit stream is invalid data, the BP interrupts ARM7 and checks the contents of this flag. When this flag is set to 1, the BP automatically finds the next start code. If the start code is slice or GOB, BP repeats this process. When this flag is set to 0, the BP will run idle without looking for the next start code. Handshaking between BP and ARM7 is described in section 10.13. *number_of_macroblocks_to_be_encoded(NO_MBS[15:0])-이 레지스터는 슬라이스 또는 GOB에서 부호화된 메크로 블록의 수를 나타내는 16비트를 포함한다. 이러한 65535까지의 비트 분해능을 사용하여, 메크로블록은 슬라이스 또는 GOB에서 엔코딩된다. 여기서, 0의 값은 메크로블록의 수로서 허용되지 않는다.number_of_macroblocks_to_be_encoded (NO_MBS [15: 0])-This register contains 16 bits representing the number of macroblocks encoded in a slice or GOB. Using this bit resolution up to 65535, the macroblocks are encoded in slices or GOBs. Here, a value of 0 is not allowed as the number of macroblocks. 10.8.3 BP_STATUS 레지스터 포맷10.8.3 BP_STATUS Register Format BP_STATUS[31:0] 레지스터(어드레스 27'h 7CO_0050)은 테이블 32에 나타나 있다.The BP_STATUS [31: 0] register (address 27'h 7CO_0050) is shown in Table 32. [테이블 32]Table 32 BP_STATUS 레지스트 포멧BP_STATUS Resist Format *input_buffer_0_done(IBUF0_DONE)-플레그는 입력버퍼 0에 있는 데이타를 상기 BP에 의해 모두 사용된다. 이 플레그는 BP에 의해 세트되고, ARM7 또는 BP에 의해 클리어된다. 이러한 플레그는 인터럽트 상태를 나타낸다.The input_buffer_0_done (IBUF0_DONE) -flag uses all the data in input buffer 0 by the BP. This flag is set by the BP and cleared by ARM7 or BP. This flag indicates an interrupt status. *input_buffer_1_done(IBUF1_DONE)-이 플레그는 입력버퍼 1에 있는 데이타가 상기 BP에 의해 모두 사용된 것을 나타낸다. 이 플레그는 BP에 의해 세트되고, ARM7 또는 VP에 의해 클리어된다. 이러한 플레그는 인터럽트 상태를 나타낸다.input_buffer_1_done (IBUF1_DONE)-This flag indicates that the data in input buffer 1 has been exhausted by the BP. This flag is set by the BP and cleared by ARM7 or VP. This flag indicates an interrupt status. *output_buffer_0_full(OBUF0_FULL)-이 플레그는 BP에 의해 출력 버퍼 0이 채워진 다는 것을 나타낸다. 상기 플레그는 BP에 의해 세트되고 그리고 ARM7 또는 VP에 의해 클리어된다. 이러한 플레그는 인터럽트 상태를 나타낸다.output_buffer_0_full (OBUF0_FULL)-This flag indicates that output buffer 0 is filled by the BP. The flag is set by the BP and cleared by ARM7 or VP. This flag indicates an interrupt status. *output_buffer_1_full(OBUF1_FULL)-이 플레그는 BP에 의해서 출력 버퍼 1이 채워진다는 것을 나타낸다. 상기 플레그는 BP에 의해 세트되고 그리고 ARM7 또는 VP에 의해 클리어된다. 이러한 플레그는 인터럽트 상태를 나타낸다.output_buffer_1_full (OBUF1_FULL)-This flag indicates that output buffer 1 is filled by the BP. The flag is set by the BP and cleared by ARM7 or VP. This flag indicates an interrupt status. *BP_processing_done(BP_DONE)-이 플레그는 상기 BP가 슬라이스 또는 GOB를 엔코딩하거나 또는 디코딩시 슬라이스 또는 GOB가 아닌 시작 모드를 검출한 것을 나타낸다. 이 플레그는 BP에 의해 세트되고 그리고 ARM7 또는 VP에 의해 클리어된다. 이러한 플레그는 인터럽트 상태를 나타낸다.BP_processing_done (BP_DONE)-This flag indicates that the BP has encoded a slice or GOB or detected a start mode other than a slice or GOB upon decoding. This flag is set by the BP and cleared by ARM7 or VP. This flag indicates an interrupt status. *context_switching-done(CTX_SW_DONE)-이 플레그는 BP가 컨텍트 스위칭 모드에서 다른 작업으로 전환될려고 하는 것을 나타낸다. 이 플레그는 BP에 의해 세트되고 그리고 ARM7 또는 VP에 의해 클리어된다. 이러한 플레그는 인터럽트 상태를 나타낸다.context_switching-done (CTX_SW_DONE)-This flag indicates that the BP is about to switch from contact switching mode to another task. This flag is set by the BP and cleared by ARM7 or VP. This flag indicates an interrupt status. *context_reload_done(CTX_RELOAD_DONE)-이 플레그는 BP가 어드레스 SAVE_ADR[31:0]로부터 저장된 컨텍트를 위해 재로드 동작이 완료되었다는 것을 나타낸다. 이 플레그는 BP에 의해 세트되고 그리고 ARM7 또는 VP에 의해 클리어된다. 이러한 플레그는 인터럽트 상태를 나타낸다.context_reload_done (CTX_RELOAD_DONE)-This flag indicates that the BP has completed the reload operation for the contact stored from address SAVE_ADR [31: 0]. This flag is set by the BP and cleared by ARM7 or VP. This flag indicates an interrupt status. *BP_error_flag(BP_ERR)-이 플레그는 에러가 데이타를 처리하는 동안에 BP에서 일어난다는 것을 나타낸다. 이 플레그는 BP_ERR_CODE[7:]0(=BP_ STATUS) [31:24]이 제로가 아닐 경우 세트된다. 상세한 내용은 서브세트 10.9.2에서 찾을 수 있다.BP_error_flag (BP_ERR)-This flag indicates that an error occurs at the BP while processing the data. This flag is set when BP_ERR_CODE [7:] 0 (= BP_STATUS) [31:24] is not zero. Details can be found in subset 10.9.2. *input_buffer-0_full(IBUF0_FULL)-이 플레그는 입력버퍼 0에 있는 데이타가 ARM7 또는 VP에 의해 채워진다는 것을 나타낸다. 이 플레그는 ARM7 또는 VP에 의해 세트되고, BP에 의해 클리어된다.input_buffer-0_full (IBUF0_FULL)-This flag indicates that the data in input buffer 0 is filled in by ARM7 or VP. This flag is set by ARM7 or VP and cleared by BP. *input_buffer-1_full(IBUF1_FULL)-이 플레그는 입력버퍼 1에 있는 데이타가 ARM7 또는 VP에 의해 채워진다는 것을 나타낸다. 이 플레그는 ARM7 또는 VP에 의해 세트되고 BP에 의해 클리어된다.input_buffer-1_full (IBUF1_FULL)-This flag indicates that the data in input buffer 1 is filled in by ARM7 or VP. This flag is set by ARM7 or VP and cleared by BP. *output_buffer-0_done(OBUF0-DONE)-이 플레그는 출력버퍼 0에 있는 데이타가 ARM7 또는 VP에 의해 모두 사용되었다는 것을 나타낸다. 이 플레그는 ARM7 또는 VP에 의해 세트되고 BP에 의해 클리어된다.output_buffer-0_done (OBUF0-DONE)-This flag indicates that the data in output buffer 0 has been exhausted by ARM7 or VP. This flag is set by ARM7 or VP and cleared by BP. *output_buffer-1_done(OBUF1_DONE)-이 플레그는 출력버퍼 1에 있는 데이타가 ARM7 또는 VP에 의해 모두 사용되었다는 것을 나타낸다. 이 플레그는 ARM7 또는 VP에 의해 세트되고 BP에 의해 클리어된다.output_buffer-1_done (OBUF1_DONE)-This flag indicates that the data in output buffer 1 has been exhausted by ARM7 or VP. This flag is set by ARM7 or VP and cleared by BP. *valid_bit_position(VALID_BIT_POS[2:0])-다음과정을 위해 VALID_BYTE_ADR[31:0]에 저장되어 있는 3비티 정보는 데이타 바이트 가운데 유효한 비트 위치를 나타낸다. 비디오 엔코딩에서, BP는 값을 설정해야 되고, ARM7은 이 비트 위치로부터 다음 과정을 수행해야 한다. 비디오 디코딩에서, ARM7은 값을 설정해야하고, BP는 이러한 비트 위치로부터 과정을 수행해야 한다.* valid_bit_position (VALID_BIT_POS [2: 0])-The 3-bit information stored in VALID_BYTE_ADR [31: 0] for the next procedure indicates the valid bit position of the data byte. In video encoding, BP must set a value, and ARM7 must do the following from this bit position: In video decoding, ARM7 must set a value and BP must perform the process from these bit positions. *BP_error_code(BP-ERR_CODE[7:0])-8비트 정보는 BP에서 어떤 에러가 발생하였는지를 나타낸다. 제로 값은 어떤 에러도 발생하지 않았음을 나타낸다. 상세한 내용은 서브섹션 10.9.2에 있다.* BP_error_code (BP-ERR_CODE [7: 0]) The 8-bit information indicates what error occurred in the BP. A zero value indicates that no error occurred. Details are given in subsection 10.9.2. 10.8.4 디코딩하기 위한 입력데이타 포멧과 엔코딩하기 위한 출력데이타 포멧10.8.4 Input Data Format for Decoding and Output Data Format for Encoding 이러한 경우에, 데이타는 실질적으로 압축된 비트 스트링으로 되어 있다. 이러한 데이타는 초기 코드, 헤더 변수 및 이에 대응되는 표준에 따라 압축된 데이타를 포함해야 한다. 이러한 비트 스트림은 바이트 단위별로 패킷되지만, 그러나 어떤 동작에서는 바이트를 할당할 필요가 없다. 이러한 비트 스트림은 여러가지의 슬라이스 또는 GOB를 위한 데이타를 포함한다.In this case, the data is essentially a compressed bit string. Such data should include data compressed according to initial code, header variables, and corresponding standards. This bit stream is packetized byte by byte, but in some operations it is not necessary to allocate bytes. This bit stream contains data for various slices or GOBs. 10.8.5 엔코딩하기 위한 입력 데이타 포멧과 디코딩을 위한 출력 데이타 포멧10.8.5 Input data format for encoding and output data format for decoding 이런 경우에, 데이타는 실질적으로 메크로블록 헤더 정보, 움직임 데이타 및 화소 계수 데이타로 이루어져 있다. 이러한 종류의 데이타용 포멧은 다음에 정의된다.In this case, the data substantially consists of macroblock header information, motion data and pixel coefficient data. This kind of data format is defined below. 10.8.5.1 매크로블록 헤더 워드10.8.5.1 Macroblock Header Word 매크로블록 헤더는 항상 6바이트로 이루어져 있으며, 테이블 33에 주어진 다음의 데이타 포멧을 가지고 있다.The macroblock header always consists of 6 bytes and has the following data format given in table 33. [테이블 33]Table 33 매크로블록 헤드 워드 포멧Macroblock Head Word Format 여기서, 상기 테이블에 나타난 변수는 다음에 정의된다.Here, the variables shown in the table are defined next. *vertical_macroblock_address(VMA) 또는 group_number(GRN0)-이러한 바이트는 1에서 255까지의 값을 갖는 수직 매크로블록의 위치를 나타낸다. 제1수직 위치는 0이 아닌, 1로 기재되어 있다. 예외적인 경우, H.261 엔코딩시, 이러한 필드는 블록 그룹의 위치를 나타내는 groupf_number 정보를 나타내는 것이다.vertical_macroblock_address (VMA) or group_number (GRN0) —These bytes indicate the position of a vertical macroblock with a value from 1 to 255. The first vertical position is described as 1, not 0. In exceptional cases, in H.261 encoding, this field indicates groupf_number information indicating the position of the block group. *horizontal_macroblock_address(HMA) 또는 macroblock_position(MBPS)-이러한 필드는 1에서 255까지의 값을 갖는 수평 매크로블록의 위치를 나타낸다. 제1수평 위치는 0이 아닌, 1로서 기재되어 있다. 예외적인 경우, H.261 엔코딩시, 이러한 필드는 GOB중에서 매크로블록의 33 가능성있는 위치중에서 어느하나를 나타낸다.horizontal_macroblock_address (HMA) or macroblock_position (MBPS) —This field indicates the position of a horizontal macroblock with a value from 1 to 255. The first horizontal position is described as 1, not 0. In exceptional cases, in H.261 encoding, this field indicates any of the 33 possible positions of the macroblock in the GOB. *macroblock_intra(I)-만약, 현재의 매크로블록이 영상간 부호화되면, 1로 세트되고, 그렇지 않은 경우는 0으로 세트된다.macroblock_intra (I)-If the current macroblock is inter-image encoded, it is set to 1, otherwise it is set to 0. *macroblock_patterm(P)-만약, 현재의 매크로블록이 부호화된 블록을 포함하면, 1로 세트되고, 그렇지 않은 경우는 0으로 세트된다.macroblock_patterm (P)-If the current macroblock contains a coded block, it is set to 1, otherwise it is set to 0. *macroblock_quant(Q)-만약, 현재의 매크로블록이 새로운 양자 척도 변수를 가지고 있으면, 1로 세트되고, 그렇지 않은 경우는 0으로 세트된다.macroblock_quant (Q)-If the current macroblock has a new quantum scale variable, it is set to 1, otherwise it is set to 0. *macroblock_motion_forward(MF)-만약, 현재의 매크로블록이 순방향 예측이라면, 1로 세트되고, 그렇지 않은 경우는 0으로 세트된다.macroblock_motion_forward (MF)-If the current macroblock is forward prediction, it is set to 1, otherwise it is set to 0. *macroblock_motion_backward(MB)-만약, 현재의 매크로블록이 역방향 예측 또는 H.263에서 B-blocks을 포함한다면, 1로 세트되고, 그렇지 안은 경우는 0으로 세트된다.macroblock_motion_backward (MB)-If the current macroblock contains backward prediction or B-blocks in H.263, it is set to 1, otherwise it is set to 0. *dct_type(DT), loop_filter(LF) 또는 advanced_prediction(M4)-바이트2의 비트[5]는 각각의 동작에서 다른 의미를 가진다. MPEG-1에서는 이것이 사용되지 않는다. MPEG-2에서는 dct_type을 의미한다. 만약, 매크로블록이 필드 DCT 코딩되었다면, 이 플레그는 1로 세트된다. 만약, 프레임 DCT 코딩되었다면, 0으로 세트되어야 한다. H.261에서, 이 플레그는 만약, 루프 필터가 현재의 매크로블록에서 사용되었다면 세트된다. 그렇지 않는다면, 0으로 세트된다. H.263에서, 만약 현재의 매크로블록이 어드밴스 예측 모드를 사용하였다면, 1로 세트되고, 그렇지 않다면 0으로 세트된다.Bits [5] of dct_type (DT), loop_filter (LF), or advanced_prediction (M4) -byte 2 have different meanings in their respective operations. This is not used in MPEG-1. In MPEG-2, it means dct_type. If the macroblock is field DCT coded, this flag is set to one. If frame DCT coded, it should be set to zero. In H.261, this flag is set if the loop filter is used in the current macroblock. Otherwise, it is set to zero. In H.263, if the current macroblock used the advanced prediction mode, it is set to one, otherwise it is set to zero. *motion_type(MT)-2비트 필드는 테이블 34 및 35에서 의미하는 MPEG-2에서 사용된 frame_motion_type 또는 fieldmotion_type을 나타낸다.The * motion_type (MT) -2 bit field indicates a frame_motion_type or fieldmotion_type used in MPEG-2, which is represented in Tables 34 and 35. [테이블 34]Table 34 frame_motion_type의 의미meaning of frame_motion_type [테이블 35]Table 35 field_motion_type의 의미meaning of field_motion_type *quantizer_scale(Q_SCALE)-DCT 계수 레벨의 재현 레벨을 스케일링하도록 범위 1에서 31까지 표시되지 않은 정수이다. 모든 매크로블록 헤더는, 비록 그 값이 이전 매크로블록(즉, macroblocks_quant는 제로이다)의 값과 같다고 하더라도, 이러한 변수에 맞는 적정한 값을 포함해야 한다. 엔코딩에서, 사용자는 이러한 필드에 적당한 값을 라이트시킬 책임이 있다. 디코딩시에, BP는 이 필드에 호프만 디코드된 quantizer scale값을 라이트해야 한다. 만약, 현재의 매크로블록이 이 필드에 호프만 코드를 포함하지 않는다. BP는 이전 매크로블록의 스케일 값을 써야한다.* quantizer_scale (Q_SCALE) -An integer not represented in the range 1 to 31 to scale the reproduction level of the DCT coefficient level. All macroblock headers must contain appropriate values for these variables, even if their value is the same as the value of the previous macroblock (ie macroblocks_quant is zero). In encoding, the user is responsible for writing the appropriate values in these fields. At decoding time, the BP should write the Hoffman decoded quantizer scale value in this field. If the current macroblock does not contain Hoffman code in this field. The BP should use the scale value of the previous macroblock. *coded_block_pattern_0(CBP_0)-6비트 코드는 현재의 매크로블록에서 부호화된 블록을 나타낸다.coded_block_pattern_0 (CBP_0) -6-bit code indicates a block encoded in the current macroblock. 여기서,here, CBP_0[5] ⇒ 휘도(Y) 0블록CBP_0 [5] ⇒ Luminance (Y) 0 blocks CBP_0[4] ⇒ 휘도(Y) 1블록CBP_0 [4] ⇒ 1 block of luminance (Y) CBP_0[3] ⇒ 휘도(Y) 2블록CBP_0 [3] ⇒ 2 blocks of luminance (Y) CBP_0[2] ⇒ 휘도(Y) 3블록CBP_0 [2] ⇒ 3 blocks of luminance (Y) CBP_0[1] ⇒ 색상 블루(Cb)블록CBP_0 [1] ⇒ Color Blue (Cb) Block CBP_0[0] ⇒ 색상 레드(Cr) 블록CBP_0 [0] ⇒ Color Red (Cr) Block *coded_block_pattern_1(CBP_1)-H.263에서 BP 프레임의 B-blocks을 위한 추가적인 coded_blocks_pattern이다. 여기서,coded_block_pattern_1 (CBP_1) -Additional coded_blocks_pattern for B-blocks of BP frames in H.263. here, CBP_1[5] ⇒ 휘도(Y) 0블록CBP_1 [5] ⇒ 0 blocks of luminance (Y) CBP_1[4] ⇒ 휘도(Y) 1블록CBP_1 [4] ⇒ 1 block of luminance (Y) CBP_1[3] ⇒ 휘도(Y) 2블록CBP_1 [3] ⇒ 2 blocks of luminance (Y) CBP_1[2] ⇒ 휘도(Y) 3블록CBP_1 [2] ⇒ 3 blocks of luminance (Y) CBP_1[1] ⇒ 색상 블루(Cb)블록CBP_1 [1] ⇒ Color Blue (Cb) Block CBP_1[0] ⇒ 색상 레드(Cr) 블록CBP_1 [0] ⇒ Color Red (Cr) Block *logical_channerl_indicator(LCI)-GOB 논리적 채널을 위한 2비트 정보는 단지 H.263에서 연속적인 현재 멀티 포인트에서만 사용된다.logical_channerl_indicator (LCI)-The 2-bit information for the GOB logical channel is used only at the current multipoint in succession in H.263. *frame_id(FID)-H.263용 GOB 프레임 ID의 2비트 정보* frame_id (FID)-2-bit information of the GOB frame ID for H.263 *macroblock_address_indicator(MBA_INC)-현재의 매크로블록 어드레스가 증가하는 값을 나타내기 위해 2바이트 정보를 나타낸다. 이 정보는 항상 추가적인 정보로서 BP에 의해 제공되며, 사용자는 입력 포멧에 설정할 필요가 없다. 그리고 입력 매크로블록 헤더 워드에서 규정한 어떤 값을 BP에 의해 무시될 것이다.macroblock_address_indicator (MBA_INC) -Represents two-byte information to indicate an increasing value of the current macroblock address. This information is always provided by the BP as additional information and the user does not need to set it in the input format. And any value specified in the input macroblock header word will be ignored by the BP. *previous_dc_luminance(PRE_DC_Y)-이전 매크로블록에서 휘도 블록의 dc값을 위한 2바이트정보이다. 만약, 매크로블록이 스킵되면, 리세트값이 전송된다. 이 정보는 항상 추가적인 정보로서 BP에 의해 제공됨으로서, 사용자는 입력 포멧에 설정할 필요가 없다. 그리고 입력 매크로블록 헤더 워드에서 규정한 어떤 값은 BP에 의해 무시될 것이다.* previous_dc_luminance (PRE_DC_Y)-Two-byte information for the dc value of the luminance block in the previous macroblock. If the macroblock is skipped, the reset value is transmitted. This information is always provided by the BP as additional information, so the user does not need to set it in the input format. And any value specified in the input macroblock header word will be ignored by the BP. *previous_dc_chrominance_blue(PRE_DC_Cb)-이전 매크로블록에서 블루 색채블록의 dc값을 위한 2바이트정보이다. 만약 매크로블록이 스킵되면, 리세트 값이 전송된다. 이 정보는 항상 추가적인 정보로서 BP에 의해 제공됨으로써, 사용자는 입력 포멧을 설정할 필요가 없다. 그리고 입력 매크로블록 헤더 워드에서 규정한 어떤 값은 BP에 의해 무시될 것이다.* previous_dc_chrominance_blue (PRE_DC_Cb)-This is 2-byte information for the dc value of the blue color block in the previous macroblock. If the macroblock is skipped, the reset value is transmitted. This information is always provided by the BP as additional information, so that the user does not need to set the input format. And any value specified in the input macroblock header word will be ignored by the BP. *previous_dc_chrominance_red(PRE_DC-Cr)-이전 매크로블록에서 레드 색채블록의 dc값을 위한 2바이트정보이다. 만약 매크로블록이 스킵되면, 리세트값이 전송된다. 이 정보는 항상 추가적인 정보로서 BP에 의해 제공됨으로서, 사용자는 입력 포켓을 설정할 필요가 없다. 그리고 입력 매크로블록 헤더 워드에서 규정한 어떤 값은 BP에 의해 무시될 것이다.* previous_dc_chrominance_red (PRE_DC-Cr)-This is 2 bytes of information for the dc value of the red color block in the previous macroblock. If the macroblock is skipped, the reset value is transmitted. This information is always provided by the BP as additional information, so the user does not need to set up an input pocket. And any value specified in the input macroblock header word will be ignored by the BP. 10.8.5.2 motion 데이타 워드10.8.5.2 motion data words 각 매크로블록 헤더는 만약, 매크로블록이 motion 벡터를 포함한다면, 추가적인 헤더 워드를 가져야 하면, 먼저 MPEG-1 및 MPEG-2의 경우를 고려한다. 이러한 표준은 다음 과정중에서 어느 하나가 일어날 때, motion 벡터를 위해 테이블 36에 도시된 추가적인 헤더 워드 포멧을 가지게 될 것이다.Each macroblock header first considers the case of MPEG-1 and MPEG-2 if the macroblock contains additional motion words, if the macroblock contains a motion vector. This standard will have the additional header word format shown in Table 36 for motion vectors when either of the following occurs. 조건 1) MF=1 또는 (I=1 및 CMV=1)일때,Condition 1) When MF = 1 or (I = 1 and CMV = 1) 조건 2) MB=1일 때Condition 2) When MB = 1 [테이블 36]Table 36 MPEG-1 및 MPEG-2를 위한 일반적인 motion 벡터 데이타 포맷Common motion vector data formats for MPEG-1 and MPEG-2 테이블 36에서, 모든 요소의 값을 헬프-펠 정밀도가 된다. 상기 FS0, FS1, FS2 및 FS3은 각 motion 벡터에서 필드선택을 확인하기 위한 1비트 플레그이다. 만약, 어떤 필드도 선택되지 않는다면, 상기 플레그는 0으로 세트되야 한다. 왜냐하면 MPEG-1은 필드 선택 정보를 사용하지 않기 때문인데, 그러므로 이러한 플레그는 0으로 세트된다.In Table 36, the values of all elements are help-pel precisions. The FS0, FS1, FS2 and FS3 are 1-bit flags for confirming field selection in each motion vector. If no field is selected, the flag should be set to zero. This is because MPEG-1 does not use field selection information, so this flag is set to zero. 하나의 예외적인 경우가 듀얼 프라임 motion 벡터의 MPEG-2 엔코딩에서 발생한다. 이러한 경우, 순방향 motion 벡터는 16바이트(실질적으로, 8바이트가 사용됨)로 구성되고, 포멧은 테이블 37에서와 같이 된다. 정상적으로, BP는 비디오 엔코딩 응용에서 움직임 벡터값을 차분값으로 변환할 것이다. 그러나, 테이블 37에 움직임 벡터성분은 호프만 엔코더에서 바로 그 입력이 되는 차분 값이다. 듀얼프라임움직임 벡터는 MPEG-2 디코딩 응용의 경우 BP에 의해 동작된다.One exceptional case occurs in MPEG-2 encoding of dual prime motion vectors. In this case, the forward motion vector consists of 16 bytes (substantially 8 bytes are used), and the format is as in Table 37. Normally, the BP will convert motion vector values to differential values in video encoding applications. However, the motion vector component in Table 37 is the difference value that is directly input from the Hoffman encoder. The dual prime motion vector is operated by BP for MPEG-2 decoding applications. [테이블 37]Table 37 MPEG-2 엔코딩용 듀얼 프라임 모드에서 움직임 벡터 데이타 포멧Motion vector data format in dual prime mode for MPEG-2 encoding 상기 H.261 및 H.263은 다소의 다른 움직임 벡터 데이타 포멧을 가진다. 대부분의 경우에, 한 바이트로 어떤 움직임 벡터 성분값을 충분히 나타낼 수 있다. MF 및 M4 플레그의 내용에 따라서, 대응되는 움직임 보상 매크로블록은 적어도 2개이며, 그리고 많은 경우 10개의 motion 벡터 성분을 가질 것이다. 상기 움직임 벡터 데이타의 데이타 포멧은 테이블 38에 나타나 있다.H.261 and H.263 have some other motion vector data formats. In most cases, one byte can represent a certain value of a motion vector component. Depending on the contents of the MF and M4 flags, there are at least two corresponding motion compensation macroblocks, and in many cases will have ten motion vector components. The data format of the motion vector data is shown in Table 38. [테이블 38]Table 38 H.261 및 H.263을 위한 motion 벡터 데이타 포멧Motion vector data format for H.261 and H.263 10.8.5.3 픽셀 계수 데이타 워드10.8.5.3 Pixel Count Data Word 4개의 비디오 압축 표준은 양자화 레벨을 위해 서로 다른 최대 픽셀비트 길이를 가진다. 이러한 비교는 테이블 39에 나타나 있다.Four video compression standards have different maximum pixel bit lengths for quantization levels. This comparison is shown in Table 39. [테이블 39]Table 39 입출력 픽셀 비트 분해능I / O pixel bit resolution 그러므로, MPEG 및 비디오 화상회의 표준용 픽셀 데이타 포멧은 테이블 40에서 볼수있는 것과 같이, 차이가 있다.Therefore, the pixel data formats for MPEG and video conferencing standards differ, as can be seen in Table 40. [테이블 40]Table 40 픽셀 계수 데이타 포멧Pixel Count Data Format 10.9 인터럽트 조건10.9 Interrupt Condition BP는 만약에, 이 섹션에서 기술된 인터럽트 조건에서 적합하면, ARM7_IRQ 플레그를 확인하여 ARM7을 인터럽트한다. 상기 BP는 2개의 인터럽트 조건의 세트 즉, 디폴트 및 에러 조건을 가지고 있다. 이러한 조건들은 BP_STATUS[15:0]에 저장되어 있다. 만약, 어느 하나의 비트가 BP에 의해 세트되면, ARM7_IRQ 신호를 엑티브시킬 것이다. 이러한 조건들은 BP_INT_MASK[15:0]레지스터의 대응되는 비트를 세팅시킴으로써 모두 마스크할 수 있다.The BP interrupts ARM7 by checking the ARM7_IRQ flag if it meets the interrupt conditions described in this section. The BP has two sets of interrupt conditions, namely default and error conditions. These conditions are stored in BP_STATUS [15: 0]. If either bit is set by the BP, it will activate the ARM7_IRQ signal. These conditions can all be masked by setting the corresponding bits in the BP_INT_MASK [15: 0] register. 10.9.1 디폴트 인터럽트 조건10.9.1 Default Interrupt Condition *Default condition 0(BP_STATUS[0])-입력버터 0의 처리가 끝났을때, 또한 상기 BP가 IBUF0-DONE 플레그를 또한 세팅시키는 ARM7_IRQ을 확인해야 한다.* Default condition 0 (BP_STATUS [0])-When processing of input butter 0 is finished, you should also check the ARM7_IRQ which the BP also sets the IBUF0-DONE flag. *Default condition 1(BP_STATUS[1])-입력버퍼 1의 처리가 끝났을때, 또한 상기 BP가 IBUF1_DONE 플레그를 세팅시키는 ARM7_IRQ을 확인행 한다.Default condition 1 (BP_STATUS [1])-When processing of input buffer 1 is finished, the BP also checks ARM7_IRQ which sets the IBUF1_DONE flag. *Default condition 2(BP_STATUS[2])-입력버퍼 0의 처리가 끝났을때, 또는 상기 BP가 OBUF0-DONE 플레그를 세팅시키는 ARM7_IRQ을 확인해야 한다.Default condition 2 (BP_STATUS [2])-When the processing of input buffer 0 is finished, or ARM7_IRQ that the BP sets the OBUF0-DONE flag should be checked. *Default condition 3(BP_STSTUS[3])-입력버퍼 1의 처리가 끝났을때, 또한 상기 BP가 OBUF1_FULL 플레그를 세팅시키는 ARM7_IRQ를 확인해야 한다.Default condition 3 (BP_STSTUS [3])-When processing of input buffer 1 is finished, you should also check the ARM7_IRQ which the BP sets the OBUF1_FULL flag. *Default condition 4(BP_STATUS[4])-비디오 엔코딩의 경우, ARM7에 의해 설계된 슬라이스 또는 GOB를 마칠때나, 또는 비디오 디코딩의 경우 슬라이스 또는 GOB가 아닌 초기 코드에 도착하였을때, 또는 상기 BP는 BP_DONE 플레그를 세팅하는 ARM7_IRQ을 확인해야 한다.Default condition 4 (BP_STATUS [4])-For video encoding, when you finish a slice or GOB designed by ARM7, or for video decoding, when you arrive at an initial code that is not a slice or GOB, or the BP is BP_DONE You should check the ARM7_IRQ setting the flag. *Default condition 5(BP_STATUS[5])-선점 컨텍트 스위칭모드에서 컨텍트 저장 동작을 마쳤을때, 또는 협력 컨텍트 스위칭모드에서 현재의 슬라이스 또는 GOB를 마쳤을때, 상기 BP는 CTX_SW_DONE 플레그를 세팅하는 ARM7_IRQ을 확인해야 한다.Default condition 5 (BP_STATUS [5])-When completing a contact save operation in preemptive contact switching mode, or when the current slice or GOB is finished in cooperative contact switching mode, the BP must check the ARM7_IRQ setting the CTX_SW_DONE flag. do. *Default condition 6(BP_STATUS[6])-컨텍트 로드가 다시 동작했을때, 상기 BP는 또한 CTX_RELOAD_DONE 플레그를 세팅하는 ARM7_IRQ을 확인해야 한다.Default condition 6 (BP_STATUS [6])-When the contact load is running again, the BP should also check the ARM7_IRQ setting the CTX_RELOAD_DONE flag. *Default condition 7(BP_STATUS[7]_현재, BP_STATUS[7]이 유지된다. 그러므로, 이러한 비트는 0으로 세트되어야 한다. 정상적으로, 이러한 디폴트 인터럽트 조건은 BP_INT_MASK[7:0]를 사용하여 마스크되도록 권고하지는 않는다. 그러나, 어떤 동작에서는 사용자가 Default condition 1을 마스크하길 원할 수도 있다.* Default condition 7 (BP_STATUS [7] _currently, BP_STATUS [7] is maintained. Therefore, these bits should be set to 0. Normally, it is recommended that these default interrupt conditions be masked using BP_INT_MASK [7: 0]. However, in some operations you may want to mask Default condition 1. 10.9.2 에러 인터럽트 조건10.9.2 Error Interrupt Condition 만약 에러가 BP에서 발생되면, 상기 BP는 ARM7 인터럽트 요구가 되도록 BP_ERR 플레그를 세트한다. 이와 동시에, 상기 BP는 상기 BP-STATUS 레지스터에 있는 BP_ERR_CODE 필드에서 제로가 아닌 값 중에서 적당한 데이타를 세트한다. 이러한 8비트 BP_ERR_CODE는 다음의 의미를 가지고 있다.If an error occurs at the BP, the BP sets the BP_ERR flag to be an ARM7 interrupt request. At the same time, the BP sets appropriate data among non-zero values in the BP_ERR_CODE field in the BP-STATUS register. This 8-bit BP_ERR_CODE has the following meaning. *BP_CODE=8'b0000_0000;어떤 에러도 발생하지 않음* BP_CODE = 8'b0000_0000; No error occurred *BP_ERR_CODE=8'b0000_0001;BP_MODE 레지스터에 부적당하게 세팅됨* BP_ERR_CODE = 8'b0000_0001; improperly set in BP_MODE register *BP_ERR_CODE=8'b0000_0010;부적당하게 수평 매크로블록 위치가 세트됨* BP_ERR_CODE = 8'b0000_0010; Improperly set horizontal macroblock position *BP_ERR_CODE=8'b0000_0011;부적당하게 수직 매크로블록 위치가 세트됨* BP_ERR_CODE = 8'b0000_0011; Inappropriately set vertical macroblock position *BP_ERR_CODE=8'b0000_0100;매크로블록 어드레스 증가에 대한 부적당한 VLC* BP_ERR_CODE = 8'b0000_0100; Invalid VLC for Macroblock Address Increase *BP_ERR_CODE=8'b0000_0101;매크로블록 타입에 대한 부적당한 VLC* BP_ERR_CODE = 8'b0000_0101; Invalid VLC for Macroblock Type *BP_ERR_CODE=8'b0000_0110;매크로블록 motion 코드에 대한 부적당한 VLC* BP_ERR_CODE = 8'b0000_0110; Invalid VLC for Macroblock Motion Code *BP_ERR_CODE=8'b0000_0111;부적당한 취소 motion 벡터 마커 비트* BP_ERR_CODE = 8'b0000_0111; Inappropriate cancellation motion vector marker bit *BP_ERR_CODE=8'b0000_1000;부호화된 블록패턴에 대한 부적당한 VLC* BP_ERR_CODE = 8'b0000_1000; Illegal VLC for Coded Block Pattern *BP_ERR_CODE=8'b0000_1001;블록 DCT dc 사이즈에 대한 부적당한 VLC* BP_ERR_CODE = 8'b0000_1001; Inadequate VLC for block DCT dc size *BP_ERR_CODE=8'b0000_1010;부적당한 DCT dc 값* BP_ERR_CODE = 8'b0000_1010; Improper DCT dc value *BP_ERR_CODE=8'b0000_1011;블록 DCT ac 계수에 대한 부적당한 VLC* BP_ERR_CODE = 8'b0000_1011; Inadequate VLC for block DCT ac coefficients *BP_ERR_CODE=8'b0000_1100;하나의 매크로블록에서 블록의 #이 64를 초과한다.* BP_ERR_CODE = 8'b0000_1100; # of blocks in one macroblock exceeds 64. *BP_ERR_CODE=8'b0000_1101;부적당한 f_CODE값(예를 들면, 값이 0이다)* BP_ERR_CODE = 8'b0000_1101; Inappropriate f_CODE value (e.g. value is 0) *BP_ERR_CODE=8'b0000_1110;블록 DCT ac 계수에 대한 부적당한 VLC* BP_ERR_CODE = 8'b0000_1110; Inadequate VLC for block DCT ac coefficients *BP_ERR_CODE=8'b0000_1111;부적당한 IBUF 및 OBUF 어드레스 설정* BP_ERR_CODE = 8'b0000_1111; Improper IBUF and OBUF address setting *BP_ERR_CODE=8'b0000_0000;BP 입출력 버퍼용 시작 어드레스의 최하위 4비트는 제로가 아니다.* BP_ERR_CODE = 8'b0000_0000; The least significant 4 bits of the start address for the BP I / O buffer are not zero. 다른 BP_ERR_CODE값은 저장된다.Other BP_ERR_CODE values are stored. 10.10 상세한 기능성 요구10.10 Detailed Functionality Requirements 10.10.1 IOBUS 인터페이스10.10.1 IOBUS Interface BP와 CCU 사이에서의 모든 데이타 이동은 IOBUS를 통해서 이루어진다. 상기 IOBUS는 다중화된 어드레스 및 데이타를 포함하는 32비트 @40MHz 동기 버스이다. 적어도 7사이클은 상기 IOBUS를 통해서 16바이트 데이타를 전달하도록 요구되기 때문에, 상기 IOBUS의 최대 전달 속도는 91.4Mbytes/sec(=731.4Mbits/sec)All data movement between the BP and the CCU is via IOBUS. The IOBUS is a 32-bit @ 40 MHz synchronous bus containing multiplexed addresses and data. Since at least 7 cycles are required to transfer 16 bytes of data over the IOBUS, the maximum transfer rate of the IOBUS is 91.4 Mbytes / sec (= 731.4 Mbits / sec). 상기 BP는 모든 IOBUS 리드 및 라이트 전송을 위해 마스터 또는 슬레이브가 될 수 있다. 상기 VP가 마스터로서 동작할 때, IOBUS 아비터에 리퀘스터 신호를 보내야 한다. 만약, 상기 IOBUS가 없다면, 상기 아비터는 상기 BP에게 주고, 그리고 디바이스 셀렉트 신호를 보낼 것이다.The BP can be a master or slave for all IOBUS lead and write transfers. When the VP operates as a master, it must send a requester signal to the IOBUS arbiter. If there is no IOBUS, the arbiter will give the BP and send a device select signal. 상기 IOBUS를 통한 데이타의 경쟁은 다음의 3개의 카테고리중에서 어느 하나일 것 이다. 즉, 2 또는 4개의 픽셀요소를 포함하고 있는 32비트 픽셀 데이타와, 32비트 압축비트 스트림 워드와, 엔코딩 및 디코딩 동작을 위한 신텍스/제어 변수중 하나이다. IOBUS 인터페이스에 관한 타이밍도와 같은 정보에 추가하여 사용자는 상기 MSP IOBUS 사양을 검토하도록 권고된다.The competition of data over the IOBUS will be one of the following three categories. That is, 32-bit pixel data containing two or four pixel elements, 32-bit compressed bit stream words, and syntax / control variables for encoding and decoding operations. In addition to information such as timing charts for IOBUS interfaces, the user is advised to review the MSP IOBUS specification. 10.10.2 블록 레이어 과정10.10.2 Block Layer Process 10.10.2.1 지그-재그 스캔 규정10.10.2.1 Zig-zag scan specification 상기 BP는 MPEG 비디오 표준에서 제시된 두개의 지그-재그 스캔 변환 메트릭스를 지원한다. VP 및 BP 사이에서 전송되는 이러한 8*8블록 데이타는 모두 64개의 성분을 포함하고 있다.The BP supports the two zig-zag scan conversion metrics presented in the MPEG video standard. These 8 * 8 block data transmitted between VP and BP all contain 64 components. 10.10.2.2 RLC 코드10.10.2.2 RLC code RLC 디코딩을 위해서, 상기 BP는 DCT ac 계수의 호프만 디코드 결과에 따라서 제로 및 레벨 데이타를 발생한다. 만약, 데이타가 하나의 8*8 블록으로 생기기 전에 64개의 픽셀 end_of_block신호가 검출된다면, 상기 RLC 디코더는 나머지제로 데이타를 만들게 된다. RLC 엔코딩을 위해서, 상기 BP는 모호한 제로 데이타를 카운트하고 다음의 NON-제로 데이타와 결합함으로써 런-길이 및 레벨 코드를 발생시킨다. 만약, 남아있는 데이타 모두가 제로와 같다면, 남아있는 데이타를 위해 RLC을 발생하기 보다는 end-of-block을 발생시키면 된다. RLC 코드를 위한 동작 사이클은 이와같이 발생된 제로의 수만큼 진행된다.For RLC decoding, the BP generates zero and level data according to the Hoffman decode result of the DCT ac coefficients. If a 64 pixel end_of_block signal is detected before the data is produced in one 8 * 8 block, the RLC decoder produces the remaining zero data. For RLC encoding, the BP counts ambiguous zero data and combines with the next NON-zero data to generate run-length and level codes. If all of the remaining data is equal to zero, then an end-of-block is generated rather than an RLC for the remaining data. The operation cycle for the RLC code proceeds by the number of zeros generated in this way. 10.10.2.3 호프만 코드10.10.2.3 Hoffman Code 상기 BP 호프만 코드는 MPEG-1, MPEG-2, H.261 및 H.263 비디오 테이블준에 권고된 모든 호프만 테이블을 지원한다. 모든 롬 워드가 12비트인 경우, 모든 테이블은 룩-업 테이블에서 실행될 수 있을 것이다. 그러나, 단순하거나 또는 무척 복잡한 것을 갖는 어떤 호프만 테이블은 하드와이어드(hardwired) 로직을 사용하여 구현될 수 있다. 상기 룩-업-테이블 롬을 사용하여 구현하는 상기 디코더 테이블은 테이블 41에 요약되어 있다.The BP Hoffman code supports all Hoffman tables recommended for MPEG-1, MPEG-2, H.261 and H.263 video table specifications. If all ROM words are 12 bits, all tables will be able to run on the look-up table. However, any Hoffman table with something simple or very complex can be implemented using hardwired logic. The decoder table, which is implemented using the look-up-table ROM, is summarized in Table 41. [테이블 41]Table 41 호프만 디코더 룩업 테이블을 위해 요구되는 롬 사이즈Required ROM Size for Hoffman Decoder Lookup Table 상기 엔코더 테이블은 상기 디코더 테이블보다 더 큰 롬 사이즈를 요구하는 내용이 테이블 42에 요약되어 있다.The contents of the encoder table requiring a larger ROM size than the decoder table are summarized in Table 42. [테이블 42]Table 42 호프만 엔코더 룩업 테이블을 위해 요구되는 롬 사이즈ROM Size Required for Hoffman Encoder Lookup Tables 테이블 41 및 42로부터, 호프만 엔코더 및 디코더를 위해 전체적으로 요구되는 롬의 사이즈는 768*12비트이다. 상기 테이블은 스터핑 코드, escape_code, DCT계수의 사인 비트 및 스테이트 머신에 의해 조작되는 end_of_block 코드를 포함하고 있지 않다.From Tables 41 and 42, the size of the ROM as a whole required for the Hoffman encoder and decoder is 768 * 12 bits. The table does not include stuffing code, escape_code, sine bits of DCT coefficients and end_of_block code operated by the state machine. 상기 각각의 호프만 코드를 위해 동작 사이클은 테이블 43에 정리되어 있다.The operating cycles for each Hoffman code are listed in Table 43. [테이블 43]Table 43 호프만 코드용 처리 사이클Processing Cycles for Hoffman Codes 마지막으로, JPEG 코딩 테이블은 상기와 같은 과정을 수행한다면, 구현될 수 없다는 것을 나타낸다. 그러나, dc_coeff_next_0 테이블에서는 JPEG 엔코딩 응용이 사용될 수 있다.Finally, the JPEG coding table indicates that it cannot be implemented if the above process is performed. However, a JPEG encoding application may be used in the dc_coeff_next_0 table. 10.10.2.4 차분 dc 값10.10.2.4 Differential dc values 인트라 블록의 경우에, 상기 BP는 또한, 8*8 블록 데이타의 첫번째 요소의 차분 dc 계수를 계산하고 그리고 이미 전송된 차분 dc 계수를 가지고 dc 값을 재현한다.In the case of an intra block, the BP also calculates the differential dc coefficient of the first element of 8 * 8 block data and reproduces the dc value with the differential dc coefficient already transmitted. 10.10.2.5 비 코드화된 블록10.10.2.5 Non-coded Blocks 상기 BP는 코드화되지 않은 블록을 지원하지 않는다. 상기 VP 및 ARM7은 비부호화된 블록을 수행한다. 상기 VP 및 ARM7이 이러한 종류의 블록을 처리하도록, 상기 BP는 매크로블록 헤더의 워드에 나타나 있는 coded_block_pattern에서 비 코드화된 블록을 나타낸다.The BP does not support uncoded blocks. The VP and ARM7 perform an unsigned block. In order for the VP and ARM7 to process this kind of block, the BP represents an uncoded block in coded_block_pattern appearing in the word of the macroblock header. 10.10.2.6 블록전송의 순서10.10.2.6 Sequence of block transmissions 엔코딩 및 디코딩을 위해 전송된 하나의 매크로블록에서 블록의 순서는 다음과 같다; 휘도(Y) 블록 0,1,2 및 3, 색상 블루(Cb) 및 색상 red(Cr) 블록이다.The order of blocks in one macroblock sent for encoding and decoding is as follows; Luminance (Y) blocks 0, 1, 2 and 3, color blue (Cb) and color red (Cr) blocks. 10.10.3 매크로블록 레이어 과정10.10.3 Macroblock Layer Process 10.10.3.1 차분 motion 백터10.10.3.1 Differential motion vector 상기 BP는 상기 motion 추정 결과로부터 차분 motion 벡터를 계산하며, 다음의 경우를 제외하고 전송된 차분 motion 벡터를 가지고 motion 벡터를 재현한다.The BP calculates a differential motion vector from the motion estimation result and reproduces the motion vector with the transmitted differential motion vector except as follows. *첫번째 경우는 MPEG-2 비디오 엔코딩에서 경우의 듀얼 프라임 모드이다. 이 경우에서, 상기 BP에 전송된 움직임 벡터는 벡터'[0][0][1:0]이고, 벡터'[r][0][1:0)은 아니다(MPEG-2 비디오 표준의 7.6.3.6절 참조).The first case is the dual prime mode for MPEG-2 video encoding. In this case, the motion vector transmitted to the BP is a vector '[0] [0] [1: 0], not a vector' [r] [0] [1: 0) (7.6 of the MPEG-2 Video Standard). See section 3.6). *둘째의 경우는 H.263의 어드밴스이드 예측 모드이다. 이경우, 4개의 motion벡터 및 이러한 값이 차분 값으로서 상기 BP로부터/로 전송되어야 한다.The second case is H.263's advanced prediction mode. In this case, four motion vectors and these values should be transmitted to / from the BP as difference values. 10.10.3.2 스킵된 매크로블록10.10.3.2 Skip Macroblocks 상기 BP는 스킵된 매크로블록을 지원하지 않는다. 상기 VP 및 ARM7은 이와같이 스킵된 매크로블록을 처리한다. 위와같이 스킵된 매크로블록을 처리하기 위한 상기 VP 및 ARM7에서, 상기 BP는 상기 매크로블록의 헤더 워드에 수평 및 수직 매크로블록 어드레스를 라이트한다.The BP does not support skipped macroblocks. The VP and ARM7 process the skipped macroblock in this way. In the VP and ARM7 for processing the skipped macroblock as above, the BP writes horizontal and vertical macroblock addresses in the header word of the macroblock. 10.10.3.3 매크로블록 스터핑 코드10.10.3.3 Macroblock Stuffing Code MPEG-1에서, 한 사이클에서 매크로블록 스터핑 코드가 만약, 생긴다면 상기 BP는 이것을 버려야 한다. 그러나, MPEG- 엔코딩에서, BP는 사용자가 매크로블록 레이어 헤더 내의 매크로블록 스터핑 코드를 포함되지 않도록 한다. 일반적으로, 이러한 스터핑 코드는 출력 비디오 레이트버퍼를 제어하는데 사용된다. 그러므로, 매크로블록 스터핑 코드를 삽입하는 대신에, 시작 코드들 사이에 제로 스터핑 비트를 삽입하도록 권고한다.In MPEG-1, if a macroblock stuffing code occurs in one cycle, the BP should discard it. However, in MPEG-encoding, the BP prevents the user from including macroblock stuffing code in the macroblock layer header. In general, this stuffing code is used to control the output video rate buffer. Therefore, instead of inserting the macroblock stuffing code, it is recommended to insert zero stuffing bits between the start codes. MPEG-1 및 MPEG-2 응용을 위해서, 비트 스트림 출력은 슬라이스 레이어까지 바이트-얼라이먼트되어야 한다. 비록 비트 스트림 출력이 픽쳐 레이어까지 바이트-얼라이먼트되더라도, H.263 응용을 위해서는 GOB 레이어까지 바이트-얼라이먼트시킨다. 그러나, H.261 엔코더의 출력은 바이트-얼라인먼트되지 않는다. 그러므로, ARM7에서 루틴을 형성하는 비트스트림은 이러한 차이를 고려하여 프로그램되어진다. IOBUS를 통한 마지막 데이터 전송을 위한 데이터의 양이 엔코딩의 경우 16비트 이하인 경우, BP는 슬라이스의 끝에 제로를 채우는 동작(zero-fill)을 자동적으로 수행한다.For MPEG-1 and MPEG-2 applications, the bit stream output must be byte-aligned up to the slice layer. Although the bit stream output is byte-aligned to the picture layer, it is byte-aligned to the GOB layer for H.263 applications. However, the output of the H.261 encoder is not byte-aligned. Therefore, the bitstream that forms the routine in ARM7 is programmed to account for this difference. If the amount of data for the last data transfer over IOBUS is 16 bits or less for encoding, BP automatically performs a zero-fill operation at the end of the slice. 10.10.4.2 엑스트라 슬라이스 정보10.10.4.2 Extra Slice Information 디코딩에 있어서, BP는 MPEG-1 또는 MPEG-2 비트스트림의 슬라이스 헤드에 포함되는 임의의 엑스트라 슬라이스 정보를 버린다. 엔코딩에 있어서, BP는 사용자에 의해 요청된 임의의 엑스트라 슬라이스 정보를 삽입시키지 않는다. 만약 사용자가 여전히 MPEG-1 또는 MPEG-2 비트스트림에 이 정보를 포함시키고자 하는 경우에는 BP에 의해 미리 엔코딩된 비트스트림에 이 정보를 삽입하면 된다.In decoding, the BP discards any extra slice information contained in the slice head of the MPEG-1 or MPEG-2 bitstream. In encoding, the BP does not insert any extra slice information requested by the user. If the user still wants to include this information in the MPEG-1 or MPEG-2 bitstream, this information may be inserted into the bitstream previously encoded by the BP. 10.10.4.3 인트라 슬라이스10.10.4.3 Intra slice MPEG-2 슬라이스 레이어 비트스트림에 있어서, intra_slice라 하는 파라미터는 현재 슬라이스가 인트라 매크로블록으로만 구성되었음을 나타내는데 사용된다. 이 정보는 디코딩 과정에서는 사용되지 않고, 고속 전진 또는 고속 후진 기능을 수행할 경우 DSM 응용을 도와 주기 위한 것이다. 그러므로, BP는 디코딩 응용일 경우 이 정보를 버리고, 엔코딩 응용일 경우 슬라이스 레이어 헤더에 있는 intra_slice에 0을 삽입한다.In the MPEG-2 slice layer bitstream, a parameter called intra_slice is used to indicate that the current slice is composed only of intra macroblocks. This information is not used during decoding and is intended to assist DSM applications when performing fast forward or fast reverse functions. Therefore, the BP discards this information in decoding applications and inserts 0 into intra_slice in the slice layer header in encoding applications. 10.10.4.4 슬라이스 또는 GOB 스타트 코드10.10.4.4 Slice or GOB Start Code MPEG-1, MPEG-2, H.261에 있어서, 픽쳐는 적어도 하나의 슬라이스 또는 GOB 스타트 코드를 가진다. 그러나, H.263 픽쳐는 GOB 스타트 코드와 헤더 정보를 가지지 않는다. 특히, 임의의 H.263 픽쳐에서 첫번째 GOB는 스타트 코드와 헤더 정보를 가지지 않는다. 그러므로, 입력되는 비트스트림이 H.263을 위한 것일 경우, BP 상태 머쉰은 매크로블록 레이어를 바로 처리해야 한다. 뿐만 아니라, 비트스트림이 디코딩되는 동안 GOB 스타트 코드가 발견되면, BP는 스타트 코드를 디코딩하고, ARM7을 인터럽트하지 않으면서 처리과정을 계속 수행한다.In MPEG-1, MPEG-2, H.261, a picture has at least one slice or GOB start code. However, H.263 pictures do not have GOB start code and header information. In particular, the first GOB in any H.263 picture has no start code and header information. Therefore, if the incoming bitstream is for H.263, the BP state machine must process the macroblock layer immediately. In addition, if a GOB start code is found while the bitstream is being decoded, the BP decodes the start code and continues processing without interrupting ARM7. 10.11 입력/출력 더블 버퍼 인터페이스10.11 Input / Output Double Buffer Interface 10.11.1 일반적인 설명10.11.1 General Description 입력 및 출력 버퍼는 더블 버퍼로 구현된다. 그러므로 도 64와 도 65에 도시된 바와같이 IBUF0, IBUF1, OBUF0, OBUF1이라고 하는 4개의 메모리 버퍼를 사용하게 된다.The input and output buffers are implemented as double buffers. Therefore, as shown in Figs. 64 and 65, four memory buffers, IBUF0, IBUF1, OBUF0, and OBUF1, are used. 도 64와 도 65에서와 같이, 각각의 버퍼는 시작 및 끝 어드레스와 충만 및 완료 플래그를 가진다. 각 버퍼 사이즈를 결정하기 위하여, 사용자는 각 버퍼에 대한 시작 및 종료 어드레스에 적절한 값을 기입해야 한다.64 and 65, each buffer has a start and end address and a full and complete flag. To determine each buffer size, the user must enter appropriate values for the start and end addresses for each buffer. 일반 버퍼용 소스 프로세서는 버퍼에 대한 기입을 완료하면, 충만 플래그를 설정하고, 다른 뱅크에 대한 기입을 개시한다. 뱅크용 싱크 프로세서는 억세스되는 뱅크가 다 채워져 있음을 알게 되면, 데이터를 독출한다. 뱅크가 비어 있으면, 싱크는 완료 플래그를 설정하고, 다른 뱅크의 충반 플래그를 체크한다.When the source processor for a general buffer completes writing to the buffer, it sets the full flag and starts writing to another bank. When the sink processor for bank knows that the accessed bank is full, it reads data. If the bank is empty, the sink sets a completion flag and checks the fill flag of the other bank. 4개의 시작 어드레스는 소절 10.7.02에 설명한 바와 같이 BP의해 업데이트된다. 시작 어드레스를 위한 각각의 레지스터는 BP가 입력 또는 출력 버퍼를 억세스할 때마다 BP에 의해 억세스되는 맨 마지막의 바이트 어드레스를 저장한다. 그러므로, ARM7은 IBUF0_DONE, IBUF1_DONE, OBUF0_FULL, OBUF1_FULL 플래그중 어느 하나가 설정되면 해당 시작 어드레스를 설정한다.The four starting addresses are updated by the BP as described in section 10.7.02. Each register for the start address stores the last byte address accessed by the BP whenever the BP accesses the input or output buffer. Therefore, ARM7 sets the corresponding start address when any one of IBUF0_DONE, IBUF1_DONE, OBUF0_FULL, and OBUF1_FULL flags is set. 또한, 시작 어드레스의 마지막 4비트는 항상 ARM7에 의해 제로로 설정된다. 그 이유는 FBUS, CCU와 IOBUS 사이의 내부 데이터 얼라인먼트 구조 때문이다. 또한, 각 버퍼 사이즈의 전체 바이트 수가 16의 배수가 되도록 각각의 끝 어드레스를 설정해야 한다. 뿐만 아니라, 최소 버퍼 사이즈는 MPEG-1과 MPEG-2에 대해 64바이트, H.261과 H.263에 대해 128바이트일 것이 권고된다. 이에 ARM7에 대한 BP의 빈번한 인터럽트로 인한 성능의 열화를 방지하기 위해서이다.Also, the last four bits of the start address are always set to zero by ARM7. This is due to the internal data alignment structure between the FBUS, CCU and IOBUS. In addition, each end address must be set such that the total number of bytes of each buffer size is a multiple of 16. In addition, the minimum buffer size is recommended to be 64 bytes for MPEG-1 and MPEG-2 and 128 bytes for H.261 and H.263. This is to prevent performance degradation due to frequent interruption of BP to ARM7. 10.11.2 비정상적인 버퍼 스테이터스의 처리10.11.2 Handling Abnormal Buffer Status 두개의 출력 버퍼가 채워지면, BP는 처리를 중지시키고, 입력 더블 버퍼 스테이터스에 상관없이 아이들 상태로 떨어진다. OBUF0_DONE 또는 OBUF1_DONE 플래그가 설정되면 BP는 자동적으로 이 아이들 상태로부터 빠져 나온다.When two output buffers are filled, the BP stops processing and falls to the idle state regardless of the input double buffer status. If the OBUF0_DONE or OBUF1_DONE flag is set, the BP automatically exits this idle state. 두개의 입력 버퍼가 비워지면, BP는 처리를 중지할 필요가 없고, 내부에 남아있는 데이터의 처리가 완료될 때까지 처리를 계속한다. 그러나, 두개의 입력 버퍼가 비워지면, BP는 바로 ARM7을 인터럽트한다. 남아있는 데이터 처리의 종료 이후, 입력 버퍼들이 여전히 비워져 있으면, BP는 아이들 상태로 떨어진다. IBUF0_FULL 또는 IBUF1_FULL 플래그가 설정되면, 다시 BP는 자동적으로 이 상태로 부터 빠져 나온다.When the two input buffers are empty, the BP does not need to stop processing and continues processing until the data remaining therein is completed. However, if the two input buffers are empty, BP immediately interrupts ARM7. After the end of the remaining data processing, if the input buffers are still empty, the BP falls to the idle state. When the IBUF0_FULL or IBUF1_FULL flag is set, the BP automatically exits from this state. 이 소절에서 기술하는 아이들 상태는 이 사양서에서 기술한 다른 아이들 상태와 다르다. 왜냐 하면, 다른 아이들 상태로부터 빠져 나오기 위해서는 통상 ARM7의 제어 커맨드를 필요로 하기 때문이다.The idle states described in this section are different from the other idle states described in this specification. This is because the control command of ARM7 is normally required to escape from other idle states. 10.11.3 I/O 버퍼의 물리적인 구현:예10.11.3 Physical Implementation of the I / O Buffer: Example 대부분 BP 입력 및 출력 버퍼의 위치와 사이즈를 결정하는 것은 사용자의 몫이다. 사용자는 VP 데이터 캐쉬, ARM 7 데이터 캐쉬 또는 SDRAM의 스크래치 패드 영역에서 버퍼를 구현한다. BP 입력 및 출력 더블 버퍼의 구현이 다소 제한적일지라도, 상기 버퍼를 구현하기 위한 효율적인 방법이 있다.In most cases, it is up to you to determine the location and size of the BP input and output buffers. The user implements the buffer in the scratch pad area of the VP data cache, ARM 7 data cache, or SDRAM. Although the implementation of the BP input and output double buffers is somewhat limited, there is an efficient way to implement such buffers. 여기서, 비디오 디코딩 응용에 있어서 레이트 버퍼의 구현에 대한 특수한 예를 들기로 한다. 이 경우, 사용자는 BP 입력 버퍼를 순환 버퍼로 구현하고자 한다. 여기서, SDRAM을 사용하며, 완전한 레이트 버퍼는 도 66에 도시된 바와 같이 4개의 블록으로 분할되는 것으로 가정한다.Here, a special example of the implementation of the rate buffer in video decoding applications will be given. In this case, the user wants to implement the BP input buffer as a circular buffer. Here, SDRAM is used, and a complete rate buffer is assumed to be divided into four blocks as shown in FIG. 초기에, 사용자는 Rate_Buffer_Block_0과 Rate_Buffer_Block_1을 각각 IBUF0과 IBUF1으로 설정할 수 있다. 이는 다음과 같이 설정함으로써 가능하게 된다.Initially, the user can set Rate_Buffer_Block_0 and Rate_Buffer_Block_1 to IBUF0 and IBUF1, respectively. This is made possible by setting as follows. IBUF0_START=Rate_Buffer_Address_0;IBUF0_START = Rate_Buffer_Address_0; IBUF0_END=Rate_Buffer_Address_1;IBUF0_END = Rate_Buffer_Address_1; IBUF1_START=Rate_Buffer_Address_2;IBUF1_START = Rate_Buffer_Address_2; IBUF1_END=Rate_Buffer_Address_2;IBUF1_END = Rate_Buffer_Address_2; IBUF1_END=Rate_Buffer_Address_3IBUF1_END = Rate_Buffer_Address_3 IBUF0에 있는 데이터(즉, Rate_Buffer_Block_0에 있는 데이터)가 BP에 의해 모두 사용되면, BP는 ARM7을 인터럽트한다. 그러면, ARM7은 다음과 같이 설정함으로써 Rate_Buffer_Blokc_0을 IBUF0을 설정한다.If all the data in IBUF0 (that is, the data in Rate_Buffer_Block_0) are used by the BP, the BP interrupts ARM7. Then, ARM7 sets Rate_Buffer_Blokc_0 to IBUF0 by setting as follows. IBUF0_START=Rate_Buffer_Address_4;IBUF0_START = Rate_Buffer_Address_4; IBUF0_END=Rate_Buffer_Address_5.IBUF0_END = Rate_Buffer_Address_5. IBF1에 있는 데이터가 BP에 의해 모두 사용되면, BP는 ARM7을 인터럽트한다. 그러면, ARM은 다음과 같이 설정함으로서 Rate_Buffer_Block_3을 IBUF1로 설정한다.If the data in IBF1 is used up by the BP, the BP interrupts ARM7. Then, ARM sets Rate_Buffer_Block_3 to IBUF1 by setting as follows. IBUF1_START=Rate_Buffer_Address_6;IBUF1_START = Rate_Buffer_Address_6; IBUF1_END=Rate_Buffer_Address_7.IBUF1_END = Rate_Buffer_Address_7. Rate_Buff_Block_2에 잇는 데이터가 BP에 의해 모두 사용되면, ARM7은 첫번째 단계에서와 마찬가지로 어드레스를 설정함으로써 Rate_Buffer_Block_0을 IBUF0으로 다시 설정한다.If all data in Rate_Buff_Block_2 is used by the BP, ARM7 resets Rate_Buffer_Block_0 back to IBUF0 by setting the address as in the first step. 그러므로, 순환 버퍼는 단순히 이러한 완전한 과정을 반복함으로서 구현될 수 있다. 이 예는 BP 더블 버퍼의 사용이 사용자의 의도에 따라 매우 유연하다는 것을 보여준다.Thus, a circular buffer can be implemented by simply repeating this complete process. This example shows that the use of the BP double buffer is very flexible according to the user's intention. 10.12 문맥 스위칭10.12 Context switching 하나 이상의 응용이 MSP를 구동시킬 경우, ARM7 동작 시스템은 BP가 현재 작업을 종결시키고, 다른 작업으로 전환되도록 명령한다. 이 과정은 통상 문맥 스위칭이라 한다. BP는 다음에 기술되는 두가지 종류의 문맥 스위칭 모드를 지원한다.If more than one application runs MSP, the ARM7 operating system instructs the BP to terminate the current task and switch to another task. This process is commonly referred to as context switching. BP supports two kinds of context switching modes described below. 10.12.1 강제배제형(preemptive)문맥 스위칭10.12.1 Preemptive Context Switching 강제배제형 문맥 스위칭은 BP가 현재 8*8 화소 블록 처리를 수행하고 나서 정상적인 처리를 종료하였음을 의미한다. ARM7은 BP_CONTROL[6:5] 레지스터에 있는 CTX_SWITCH와 CTX_MODE 플래그를 11로 설정함으로써, 강제배제형 문맥 스위칭 모드를 명령한다. 현재 블록 처리가 완료되면, BP는 나중의 처리를 위해 내부 문맥을 외부 SDRAM으로 보낸다.Forced exclusion context switching means that the BP has now performed normal 8 * 8 pixel block processing and then ended normal processing. ARM7 commands forced exclusion context switching mode by setting the CTX_SWITCH and CTX_MODE flags to 11 in the BP_CONTROL [6: 5] register. Once the current block processing is complete, the BP sends the internal context to the external SDRAM for later processing. BP는 문맥 저장을 완료하면, BP_STATUS[5]에 위치한 CTX_SW_DONE 플래그를 설정함으로써 ARM7을 인터럽트한다. 그러면, ARM7은 BP의 입출력 버퍼의 모든 내용을 저장하고, 다른 작업을 위해 BP를 초기화시킨다.When the BP completes saving the context, it interrupts ARM7 by setting the CTX_SW_DONE flag located at BP_STATUS [5]. ARM7 then saves all of the contents of the BP's I / O buffer and initializes the BP for other work. 이 모드는 BP가 ARM7의 문맥 스위칭 리퀘스트를 가능한한 빨리 응답하도록 한다. 최악의 경우, BP는 현재 블록 처리를 완료하기 위해 약 150사이클(=3.75usec)를 필요로 한다. 그러나 정상적인 경우에는, 블록 처리를 완료하기 위해 수다스의 사이클을 필요로 한다고 간주하는 것이 바람직하다.This mode allows BP to respond as soon as possible to ARM7's context switching requests. In the worst case, the BP needs about 150 cycles (= 3.75usec) to complete the current block processing. In normal cases, however, it is desirable to assume that several dozen cycles are required to complete the block processing. 10.12.2 협조형(cooperative)문맥 스위칭10.12.2 Cooperative Context Switching 협조형 문맥 스위칭에 의하면 BP에서 문맥 저장 과정을 없앨 수 있다. 이는 모든 슬라이스 또는 G0B 레이어 처리시 BP 내부 상태를 모두 초기화시켜야 하는 사실에 기인한 것이다. 이 모드에서, BP는 현재 슬라이드 또는 G0B의 정상적인 처리를 계속하고 나서 처리를 완결시킨다.Cooperative context switching eliminates the context storage process in the BP. This is due to the fact that all BP internal states must be initialized when processing all slices or G0B layers. In this mode, the BP continues normal processing of the current slide or G0B and then completes the processing. ARM7은 BP_CONTROL[6:5] 레지스터에 있는 CTX_SWITCH와 CTX_MODE 플래그를 10로 설정함으로써, 협조형 문맥 스위칭 모드를 명령한다. 현재 슬라이드 또는 G0B 처리가 완료되면, BP는 BP_STATUS[5]에 위치한 CTX_SW_DONE 플래그를 설정함으로써 ARM7을 인터럽트한다. 그러면, ARM7은 BP의 입출력 버퍼의 모든 내용을 저장하고, 다른 작업을 위해 BP를 초기화시킨다.ARM7 commands the coordinated context switching mode by setting the CTX_SWITCH and CTX_MODE flags in the BP_CONTROL [6: 5] register to 10. When the current slide or G0B process is complete, the BP interrupts ARM7 by setting the CTX_SW_DONE flag located at BP_STATUS [5]. ARM7 then saves all of the contents of the BP's I / O buffer and initializes the BP for other work. 10.12.3 문맥 재로드10.12.3 Reload Context 이전 작업을 절환하기 위하여, BP는 어드레스 SAVE_ADR[31:0]으로부터 SDRAM에 저장된 문맥을 재로드한다. 이 문맥 재로드를 요청하기 위하여, BP가 아이들 상태에 있을 필요가 있다. 이 리퀘스트를 위한 가능한 상황은 BP_DONE이 설정된 경우, CTX_DONE 또는 ARM7이 소프트웨어로 BP를 리셋시킨 경우이다. 그래서, ARM7이 BP_CONTROL[7]에 있는 CTX_RELOAD 플래그를 설정하면, BP는 아이들 상태에서 빠져나와 저장된 문맥을 독출하기 시작한다.To switch the previous task, BP reloads the context stored in SDRAM from address SAVE_ADR [31: 0]. To request this context reload, the BP needs to be in an idle state. A possible situation for this request is if BP_DONE is set, or if CTX_DONE or ARM7 resets BP with software. So, if ARM7 sets the CTX_RELOAD flag in BP_CONTROL [7], the BP will exit the idle state and start reading the stored context. BP는 문맥 재로드 동작을 완료하고 나서 CTX_RELOAD_DONE 플래그를 설정하여 ARM7을 인터럽트한다. 그러면, ARM7은 BP의 내부 레지스터를 초기화시키고, 이전 작업 처리를 위해 BP를 인에이블시킨다.After the BP completes the context reload operation, it interrupts ARM7 by setting the CTX_RELOAD_DONE flag. ARM7 then initializes the internal registers of the BP and enables the BP for processing the previous job. 10.13 작업 핸드쉐이킹10.13 Task Handshaking 이 절은 BP가 처리를 마친 경우 작업 핸드쉐이크를 위한 세부적인 과정을 다룬다. 여기서, 마지막 데이터를 위한 포인터의 업테트란 BP가 VALID_BYTE_ADR[31:0]와 VALID_BIT_POS[2:0]에 각각 적절한 값을 기입하였음을 의미한다.This section covers the detailed process for job handshake when the BP has finished processing. Here, the uptet of the pointer for the last data means that the BP has written appropriate values in VALID_BYTE_ADR [31: 0] and VALID_BIT_POS [2: 0], respectively. 10.13.1 엔코딩의 경우10.13.1 For Encoding 정상 상태에서, 엔코딩을 위한 입력 데이터는 VP로부터 공급된다. 입력 더블 버퍼 중 하나가 VP에 의해 채워지면, BP는 IOBUS를 통해 데이터의 독출을 개시한다. 처리가 종료되는 시점(즉, 처리된 매크로블록의 수가 ARM7에 의해 지정된 매크로블록의 수와 동일한 경우)에서 BP는 BP_DONE 플래그를 설정하여 ARM7을 인터럽트하고 아이들 상태로 떨어진다.In steady state, input data for encoding is supplied from VP. When one of the input double buffers is filled by the VP, the BP starts reading data over the IOBUS. At the end of processing (i.e., if the number of macroblocks processed is equal to the number of macroblocks specified by ARM7), the BP sets the BP_DONE flag to interrupt ARM7 and fall to the idle state. 유효 데이터를 위한 포인터는 슬라이스 또는 G0B에 대한 압축된 비트 스트림의 끝을 나타낸다. 또한, VALID_BYTE_ADR[31:0]은 출력 더블 버퍼 중 하나에서의 위치를 나타낸다.The pointer for valid data indicates the end of the compressed bit stream for the slice or G0B. Also, VALID_BYTE_ADR [31: 0] indicates the position in one of the output double buffers. ARM7은 이 압축된 비트 스트림과 상위 레이어 헤더를 결합시켜 최종 비트 스트림을 형성하고, 처리과정을 반복한다. 출력 더블 버퍼에 있는 데이터를 완전히 소진시키기 전에 ARM7이 BP를 재개시하고자 하는 경우에는, 적어도 하나의 출력 더블 버퍼를 소진시키고, BP가 재개시되었을 때 포인터는 BP에 의해 업데이트되기 때문에 마지막 데이터를 위한 포인터는 그대로 둠으로써 가능하다.ARM7 combines the compressed bit stream with the higher layer header to form the final bit stream and repeats the process. If ARM7 wants to restart the BP before the data in the output double buffer is completely exhausted, at least one output double buffer is exhausted and the pointer is updated by the BP when the BP is resumed, so You can leave the pointer as is. 10.13.2 디코딩의 경우10.13.2 For decoding 먼저, ARM7은 슬라이스 또는 G0B 스타트 코드(존재시)를 탐색한다. 스타트 코드가 발견되면, ARM7은 BP를 초기화하고 인에이블시킨다. BP에서 허프만 디코딩, RLC 디코딩 및 역 지그재그 스캔 변환을 수행한 다음, 데이터는 VP 처리를 위해 출력 버퍼로 전송된다. BP는 이 처리 루틴을 넌-슬라이드 또는 넌-G0B 스타트 코드가 검출될 때까지 계속한다. 이들이 검출되면, BP는 넌-슬라이드 또는 넌-G0B 스타트 코드의 엔진에 사용되는 마지막 데이터를 위해 포인터를 설정하여 ARM7를 인터럽트한다. 다음, ARM7은 스타트 코드를 디코딩하여 다음번 슬라이드 또는 G0B 코드가 발견될 때까지 헤더 해석(parsing)을 수행한다.First, ARM7 looks for a slice or G0B start code (if present). If the start code is found, ARM7 initializes and enables BP. After performing Huffman decoding, RLC decoding, and reverse zigzag scan conversion at the BP, data is transferred to the output buffer for VP processing. The BP continues this processing routine until a non-slide or non-G0B start code is detected. If they are detected, the BP interrupts ARM7 by setting a pointer to the last data used in the engine of the non-slide or non-G0B start code. Next, ARM7 decodes the start code and performs header parsing until the next slide or G0B code is found. 10.13.3 압축된 비트 스트림에서 발견된 에러10.13.3 Errors Found in Compressed Bit Streams 실제의 데이터가 전화선 및 공중 스위칭망을 통해 전송되는 화상 전화 응용에 있어서, 몇 개의 무효 데이터가 입력되는 비트 스트림에 포함될 가능성이 매우 높다. 이 경우, BP는 ARM7을 인터럽트하여 ERR_HANDLE_MODE 플래그를 체크해야 한다. 만약 BP가 특정의 응용을 위해 인에이블되기 전에 사용자가 에러 처리 모드를 결정할 경우에는 안전하다.In video telephony applications where actual data is transmitted over telephone lines and public switching networks, it is very likely that some invalid data will be included in the incoming bit stream. In this case, the BP should interrupt ARM7 and check the ERR_HANDLE_MODE flag. It is safe if the user determines the error handling mode before the BP is enabled for a particular application. ERR_HANDLE_MODE 플래그가 1로 설정되면, BP는 자동적으로 다음번 스타트 코드를 찾아낸다. 스타트 코드가 슬라이스 또는 G0B를 위한 것일 경우, BP는 정상적인 처리를 계속한다. 이 모드는 매우 효율적인데, 그 이유는 BP가 ARM보다 더 신속하게 스타트 코드를 찾아낼 수 있고, BP가 다음번 스타트 코드를 찾는 동안 ARM7이 다른 처리 루틴을 수행할 수 있기 때문이다. 그러나, 슬라이스 또는 G0B 레이어와는 다른 스타트 코드가 발견되면, BP는 BP_DONE 플래그를 설정하여 ARM7을 다시 인터럽트하고, 아이들 상태로 떨어진다. 이러한 경우, 마지막 데이터를 위해 사용된 포인터는 다음번 스타트 코드의 엔드를 지시해야 한다.If the ERR_HANDLE_MODE flag is set to 1, the BP automatically finds the next start code. If the start code is for a slice or G0B, the BP continues normal processing. This mode is very efficient because the BP can find the start code faster than the ARM, and the ARM7 can perform other processing routines while the BP finds the next start code. However, if a start code other than the slice or G0B layer is found, the BP sets the BP_DONE flag to interrupt the ARM7 again and falls to the idle state. In this case, the pointer used for the last data must point to the end of the next start code. ERR_HANDLE_MODE 플래그가 0으로 설정되면, BP는 다음번 스타트 코드를 찾지 않고 아이들 상태로 떨어진다. 이러한 경우, 마지막 데이터를 위해 사용된 포인터는 에러가 발견된 위치를 지시해야 한다. 이 모드는 사용자가 ARM7 명령어를 이용하여 오염된 비트 스트림을 디버깅하고자 하는 경우 유용하다.If the ERR_HANDLE_MODE flag is set to 0, the BP falls to the idle state without looking for the next start code. In this case, the pointer used for the last data should indicate where the error was found. This mode is useful if you want to debug a dirty bit stream using ARM7 instructions. 부록 BAppendix B MPC 비트스트림 처리기MPC Bitstream Processor 비트 스트림 처리기(BP)는 비디오 데이터 엔코딩 및 디코딩 응용에 중요한 MSP 처리 코아 중 하나이다. BP는 MPEG 슬라이스 계층 엔코딩 및 디코딩, 그리고 H.261/H.263 블록 그룹(G0B) 계층 엔코딩 및 디코딩을 처리한다. 디코딩 응용에 있어서, BP는 각 매크로블록에 포함된 전체 정보를 벡터 처리기 및 ARM-7 코아에 제공한다.The bit stream processor (BP) is one of the MSP processing cores that is important for video data encoding and decoding applications. BP handles MPEG slice layer encoding and decoding, and H.261 / H.263 block group (G0B) layer encoding and decoding. In decoding applications, the BP provides the vector processor and the ARM-7 core with the full information contained in each macroblock. 비트 스트림 처리기 하드웨어는 4개의 기능 블록으로 나누어진다.The bit stream processor hardware is divided into four functional blocks. * I/O 제어 및 디코딩 유니트를 포함하는 IOBUS 포트 인터페이스IOBUS port interface with I / O control and decoding unit * BP 제어 스테이트 머쉰* BP Control State Machine * BP 레지스터 멀티플렉서, 레지스터, 산술 논리 유니트(ALU) 및 멀티플렉서, FIFO 제어 유니트를 포함하는 코덱 코아Codec cores including BP register multiplexer, registers, arithmetic logic unit (ALU) and multiplexer, FIFO control unit * VLC FIFO 유니트* VLC FIFO Unit * 코덱 어드레스 발생기와 함께 룩업 ROM을 포함하는 VLC 코덱VLC codec with lookup ROM with codec address generator VLC LUT ROM(340; 도 3 참조)에 대한 설명은 다음과 같다.A description of the VLC LUT ROM 340 (see FIG. 3) is as follows. 1.0 방법론1.0 methodology 룩업 테이블 유니트는 허프만 엔코딩 및 디코딩의 핵심이다. 이 유니트는 MPEG-1, MPEG-2, H.261 및 H.263 사양에 포함된 모든 VLC 테이블들을 지원하고, 삼성 MSP에 의해 지원된다. 이들 테이블의 대부분은 12비트 폭을 갖는 ROM으로 구현된다. 그러나 룩업 처리가 너무 단순하거나, ROM 테이블의 사이즈에 맞지 않을 경우, 특수한 엔코딩 및 디코딩이 적용될 것이다. 이 게층에 있는 4가지 사양 모두는 많은 가변길이 코드를 17비트까지 포함한다. 엔코딩 값 또는 디코딩값 이외에, 코드 ㅅ이즈 및 유효 코드 지시자가 엔코딩 및 디코딩을 위해 제공되어 처리가 정확하게 처리되조록 한다. VLC 테이블을 엔코딩 또는 디코딩하기 위해 종래의 방법을 사용할 경우, ROM 테이블 및 어드레스 발생기가 매우 커지게 될 것이다.The lookup table unit is the heart of Huffman encoding and decoding. The unit supports all VLC tables included in the MPEG-1, MPEG-2, H.261 and H.263 specifications and is supported by Samsung MSP. Most of these tables are implemented with ROM 12 bits wide. However, if the lookup process is too simple or does not fit in the size of the ROM table, special encoding and decoding will be applied. All four specifications in this layer include many variable length codes up to 17 bits. In addition to the encoding or decoding values, code sizes and valid code indicators are provided for encoding and decoding to ensure that the processing is processed correctly. Using conventional methods to encode or decode the VLC table, the ROM table and address generator will be very large. 1.1 구현 방법은 다음과 같다:1.1 The implementation is as follows: * 만약 어드레스 발생기를 설계하는 것이 어렵지 않다면, ROM 테이블을 가능한한 많이 공유한다.If designing an address generator is not difficult, share the ROM table as much as possible. * 엔코딩 또는 디코딩에 근거하여 VLC 테이블을 재배열한다.Reorder VLC tables based on encoding or decoding. * 허프만 코드에 기초하여, '0' 카운트와 '1' 카운트를 먼저 디코딩한다.Decode the '0' count and the '1' count first, based on the Huffman code. * 부호 또는 우수/기수와 같은 1비트 플래그를 상ㅇ하여 테이블 사이즈를 줄인다.Reduce table size by using 1-bit flags such as sign or even / odd. * 가능하다면 하나의 ROM 위치를 '상위'와 '하위'로 분리한다.* If possible, separate one ROM location into 'upper' and 'low'. * ROM 테이블 어드레스를 발생시키기 위해 VLC의 최하위 비트들(LSBs)를 사용하여 어드레스 발생기를 간소화한다.Simplify the address generator using the least significant bits (LSBs) of the VLC to generate a ROM table address. 이 방법은 매우 효율적이다. 최종 ROM 테이블 사이즈는 768*12 비트로 문제를 수반하기에는 훨씬 작다. 록업은 ROM 테이블 어드레스 발생기와 ROM테이블 록업 처리에 의해 수행된다. 어드레스 발생기는 테이블 종류, 모드 및 VLC값과 같은 입력신호를 디코딩하여 ROM테이블의 어드레스를 발생시킨다. 이후, ROM 테이블값 및 다른 정보로부터 엔코딩 또는 디코딩 데이타가 얻어진다. 디코딩 테이블은 두가지 포맷을 가지는데, 하나는 VLC 코드당 하나의 ROM 위치를 갖는 DCT 계수에 적용되고, 다른 하나는 각각의 ROM 위치가 상위 6비트와 하위 6비트로 분할되어 있는 다른 테이블에 적용된다. 따라서, 각 위치는 두가지 VLC 코드를 가진다. 엔코딩 테이블은 두가지 포맷을 가지는데, 하나는 H. 263의 TCOEF에 대한 것이고, 다른 하나는 다른 테이블에 대한 것이다. 각 ROM 위치는 엔코딩 응용을 위해 하나의 허프만 코드를 포함한다. ROM 테이블의 사이즈는 768*12 비트이다. 테이블은 다음과 같이 나타낼 수 있다.This method is very efficient. The final ROM table size is 768 * 12 bits, which is much smaller to involve the problem. The lockup is performed by the ROM table address generator and the ROM table lockup process. The address generator decodes an input signal such as a table type, a mode, and a VLC value to generate an address of the ROM table. The encoding or decoding data is then obtained from the ROM table values and other information. The decoding table has two formats, one for DCT coefficients with one ROM location per VLC code, and the other for different table where each ROM location is divided into upper 6 bits and lower 6 bits. Thus, each location has two VLC codes. The encoding table has two formats, one for the TCOEF of H. 263, and the other for the other table. Each ROM location contains one Huffman code for encoding application. The size of the ROM table is 768 * 12 bits. The table can be represented as: [테이블 1][Table 1] VLC 디코딩 ROM 테이블 맵VLC Decode ROM Table Map [테이블 2][Table 2] VLC 엔코딩 ROM 테이블 맵VLC Encoding ROM Table Map 1.2 디코딩1.2 decoding 디코딩에 대한 모든 테이블은 '0' 또는 '1' 카운트에 근거하여 재배열된다. VLC 코드의 MSB가 '0이면 '0' 카운트가 인가되고, '0'이 아니면 '1' 카운트가 사용된다. 예를 들어, 코드 '00001xxx'의 경우 4개의 '0'을 가지며, 코드 '1110xxx'의 경우 3개의 '1' 카운트를 가진다. 디코딩 과정은 먼저 '0'/'1' 카운트를 디코딩하여, VLC 코드의 '0'/'1' 카운트를 ROM 테이블 어드레스 발생기로 출력한다.All tables for decoding are rearranged based on '0' or '1' counts. If the MSB of the VLC code is '0', a '0' count is applied; otherwise, a '1' count is used. For example, the code '00001xxx' has four '0's, and the code' 1110xxx 'has three' 1 'counts. The decoding process first decodes the '0' / '1' count, and outputs the '0' / '1' count of the VLC code to the ROM table address generator. 이후, 어드레스 발생기는 코드의 나머지를 디코딩하여 어드레스를 발생시킨다. 어드레스는 두개 부분으로 이루어지는데, 하나는 오프셋이고, 다른 하나는 소위 마스크된 어드레스로서 VLC 테이블로 부터 얻어진다. 어드레스는 두개 부분에 대한 논리합(OR)으로 부터 얻어진다. 어드레스 발생기에 의해 제공되는 다른 정보는 다음과 같이 나타낼 수 있다.The address generator then decodes the rest of the code to generate an address. The address consists of two parts, one is an offset and the other is obtained from the VLC table as a so-called masked address. The address is obtained from the OR of the two parts. Other information provided by the address generator can be represented as follows. * VLC code size* VLC code size * Special Flag:2 비트 플래그는 H.261에서 'ESCAPE', 'END OF BLOCK', 'STUFFING', 또는 'START CODE'에 대한 디코딩 스테이트 머쉰을 나타낸다.Special Flag: The 2-bit flag indicates the decoding state machine for 'ESCAPE', 'END OF BLOCK', 'STUFFING', or 'START CODE' in H.261. * High data extract enable:유효 데이타는 상위 6비트이다.High data extract enable: Valid data is the upper 6 bits. * Sign/even enable:이 플래그는 디코딩이 VLC의 LSB를 테이블에 근거한 부호 또는 우수 비트로 추출해야 함을 지시한다.Sign / even enable: This flag indicates that decoding should extract the LSB of the VLC as a sign or even-bit based on the table. * Valid VLC* Valid VLC * Mask shift bits 및 mask:이 두 신호는 마스크된 어드레스를 발생시키기 위해 인가된다.Mask shift bits and mask: These two signals are applied to generate a masked address. ROM 테이블에 대하여, MPSG-2의 테이블 14, 15과 H. 263의 테이블 12를 제외하고는 각각의 위치에 상위와 하위 비트 포맷으로 형성된 데이타가 저장된다.With respect to the ROM table, except for Tables 14, 15 of MPSG-2 and Table 12 of H.263, data formed in the upper and lower bit formats are stored in respective positions. 1.2.1 테이블 12/MPEG-21.2.1 Table 12 / MPEG-2 이 테이블은 테이블 2-B. 5c/MPEG-1 및 테이블 5/H. 261과 동일하다.This table is shown in Table 2-B. 5c / MPEG-1 and Table 5 / H. Same as 261. ROM 테이블 포맷:비트 10∼6:런; 비트 5∼0:레벨ROM table format: bits 10 to 6: Run; Bit 5 to 0: level 1.2.2 테이블 15/MPEG-21.2.2 Table 15 / MPEG-2 테이블 14/MPEG-2와 동일한 런, 레벨 및 VLC 코드를 가지기 때문에 이 테이블의 대부분은 테이블 14/ MPEG-2와 공유한다.Most of this table is shared with Table 14 / MPEG-2 because it has the same run, level, and VLC code as Table 14 / MPEG-2. ROM 테이블 포맷:비트 10∼6:런; 비트 5∼0:레벨ROM table format: bits 10 to 6: Run; Bit 5 to 0: level 1.2.3 테이블 12/H. 2631.2.3 Table 12 / H. 263 이 테이블은 MPEG-2의 테이블 14, 15와 비교할 때 한개 이상의 출력값 'LAST'를 가진다.This table has one or more output values 'LAST' when compared to MPEG-2's tables 14 and 15. ROM 테이블 포캣:비트 11:LAST; 비트 10∼4:런; 비트 3∼0:레벨ROM table format: bit 11: LAST; Bits 10 to 4: run; Bit 3 to 0: level 1.2.4 움직임 코드/매크로블록 증가분1.2.4 Movement code / macroblock increment 이 절은 테이블 1/MPEG-2, 테이블 10/MPEG-2, 테이블 2-B.1/MPEG-1, 테이블 2-B.4/MPEG-1, 테이블 1/H.261, 테이블 3/H.261 및 테이블 10/H. 263을 다른다.This clause covers Table 1 / MPEG-2, Table 10 / MPEG-2, Table 2-B.1 / MPEG-1, Table 2-B.4 / MPEG-1, Table 1 / H.261, Table 3 / H .261 and Table 10 / H. 263 is different. 움직임 코드에 대하여, VLC=1인 경우를 제외하고는 우수값 플래그이다. 따라서, 테이블을 반만 디코딩한다. 타일(tile)부호/우수 비트를 무시할 경우, 테이블 10/H. 263의 상위 부분을 제외하고는 두가지 종류의 테이블은 동일한 VLC값과 디코딩값을 가진다. 디코딩된 값은 6비트까지 발갱하고, 이는 두개의 테이블값을 하나의 위치에 둘 수 있음을 의미한다. 비록, 테이블 10/H.263의 하위 부분의 디코딩값이 다른 것들과 다를지라도, 타일 이진값은 고정점 때문에 동일하다. 즉, 이 모든 테이블을 다루기 위해 고정점으로 16 1/2개의 위치를 사용한다. ROM 어드레스를 발생시키기 위해 하나의 간단한 FSM을 사용한다. 응용에 있어서, 움직임 코드가 디코딩되는 경우, ROM 테이블은 절대값을 제공한다. 한편, 어드레스발생기가 부호 비트를 인에이블시키면 디코더는 LSB를 추출하는데, 케이스 '1'은 -, '0'은 +를 의미한다. 이 알고리즘은 다음과 같이 나타낼 수 있다.For the motion code, it is an even value flag except when VLC = 1. Thus, half the table is decoded. Table 10 / H if the tile / excellent bit is ignored. Except for the upper part of 263, the two kinds of tables have the same VLC value and decoding value. The decoded value swings up to 6 bits, which means that two table values can be placed in one location. Although the decoding values of the lower part of Table 10 / H.263 are different from others, the tile binary values are the same because of the fixed point. In other words, we use 16 1/2 positions as fixed points to handle all these tables. Use one simple FSM to generate the ROM address. In an application, the ROM table provides an absolute value when the motion code is decoded. On the other hand, if the address generator enables the sign bit, the decoder extracts the LSB, in which case '1' means-and '0' means +. This algorithm can be written as if (sign_enable==1)if (sign_enable == 1) increment-value=sign*ROM_table-value;increment-value = sign * ROM_table-value; elseelse increment_value=ROM_table_value;increment_value = ROM_table_value; 만약 매크로블록 어드레스 증가 테이블이 디코딩된다면, 그 결과는 ROM테이블값과 우수 플래그로부터 얻어진다. 예를 들어, ROM 테이블은 '5'의 값을 제공 한다. 우수 플래그가 '하이'이면 '10'의 결과를 얻고, 우수 플래그가 '로우'이면 '11'의 값을 얻는다. 이 알고리즘은 다음과 같이 나타낼 수 있다.If the macroblock address increment table is decoded, the result is obtained from the ROM table value and the even flag. For example, the ROM table provides a value of '5'. If the even flag is 'high', a result of '10' is obtained, and if the even flag is 'low', a value of '11' is obtained. This algorithm can be written as if(even_enable==1)if (even_enable == 1) increment_value=(ROM_table_value1)increment_value = (ROM_table_value1) | (∼even_bit);| (~ Even_bit); || elseelse increment_value=ROM_table_value;increment_value = ROM_table_value; ROM 테이블 포맷:비트 11∼6:상위 데이타; 비트 5∼0:하위 데이타ROM table format: bits 11 to 6: upper data; Bits 5 to 0: Lower data 1.2.5 매크로블록 패턴1.2.5 Macroblock Pattern 이 절은 테이블 9/MPEG-2, 테이블 2-B.3/MPEG-1, 테이블 4/ H.261(CBP)를 다룬다.This section covers Table 9 / MPEG-2, Table 2-B.3 / MPEG-1, and Table 4 / H.261 (CBP). 디코딩된 값은 6비트까지 발생하는데, 이는 한개의 위치에 두개의 데이타를 둘 수 있음을 의미한다. 즉, 이들 테이블을 모두 다루기 위해서는 32개의 위치가 사용된다.The decoded value is generated up to 6 bits, which means you can put two data in one location. That is, 32 locations are used to handle all of these tables. ROM 테이블 포맷:비트 11∼6:상위 데이타; 비트 5∼0:하위 데이타ROM table format: bits 11 to 6: upper data; Bits 5 to 0: Lower data 1.2.6 매크로블록 타입1.2.6 Macroblock Type 이 절은 테이블 2,3,4/MPEG-2, 테이블 2-B.2/MPEG-1, 테이블 2/H.261(MTYPE) 및 테이블 3,4/H.263(MCBPC)를 다룬다.This section covers tables 2,3,4 / MPEG-2, tables 2-B.2 / MPEG-1, tables 2 / H.261 (MTYPE), and tables 3,4 / H.263 (MCBPC). 디코딩된 값은 5비트까지 발생한다. 여기서도 상위/하위 데이타 개념을 사용한다. ROM 어드레스를 발생시키기 위하여 한개의 간단한 FSM이 사용된다.The decoded value occurs up to 5 bits. Again, the concept of parent / child data is used. One simple FSM is used to generate the ROM address. ROM테이블 포맷:비트 11∼6:상위 데이타; 비트 5∼0:하위 데이타ROM table format: bits 11 to 6: upper data; Bits 5 to 0: Lower data 비록, 몇개의 비트들이 각 사양에 따라 서로 다른 의미를 가지지만, 매크로 블록 타입의 포맷은 MPEG에 근거하여 각 사양에 대해 세계적으로 정의되어 있다. H.263은 정보 요구에 근거하여 2단계 디코딩을 필요로 하는데, 이는 다음과 같다.Although some bits have different meanings for each specification, the format of the macroblock type is defined globally for each specification on the basis of MPEG. H.263 requires two-stage decoding based on the information request, which is as follows. * 3 비트 매크로블록 타입을 갖는 디코딩 MCBPC* Decoding MCBPC with 3-bit macroblock type * 매크로블록 타입, PB 플래그 및 픽쳐 타입에 근거한 매크로블록 타입 록업 VLC 테이블에서 매크로블록 타입의 포맷은 다음과 같다.Macroblock Type Based on the Macroblock Type, PB Flag, and Picture Type The format of the macroblock type in the VLC table is as follows. [테이블 3][Table 3] MPEG의 매크로블록 타입 포맷MPEG macroblock type format [테이블 4][Table 4] H. 263의 MCBPC 포맷MCBPC format in H. 263 [테이블 5][Table 5] H. 261의 매크로블록 타입 포맷H. 261's Macroblock Type Format 테이블 4로부터, 3비트 매크로블록 타입 뿐만 아니라 2비트 크로마 패탄을 얻는다. 여기서, 매크로블록 타입은 0∼4까지의 범위를 갖는 3비트 값이다. 상술한 바와 같이, 세부적인 매크로블록 타입 종류는 제2단계에서 디코딩된다.From Table 4, not only 3-bit macroblock types but also 2-bit chroma shells are obtained. Here, the macroblock type is a 3-bit value having a range of 0 to 4, inclusive. As described above, the detailed macroblock type type is decoded in the second step. [테이블 6][Table 6] H. 263의 매크로블록 타입 디코딩 룩업 테이블Macroblock Type Decoding Lookup Table of H.263 1.2.7 DCT DC 사이즈1.2.7 DCT DC size 이 절은 테이블 12,13/MPEG-2, 테이블 2-B.5/MPEG-1을 다룬다. VLC 구조로 인하여 '1'카운트는 여기서 '0' 카운트 대신 사용된다.This section covers Tables 12, 13 / MPEG-2, and Table 2-B.5 / MPEG-1. Due to the VLC structure a '1' count is used here instead of a '0' count. ROM테이블 포맷:비트 10∼6:상위 데이타:크로마; 비트 5∼0:하위 데이타:휘도. 비트 11과 비트 5는 예약되어 있다.ROM table format: Bits 10 to 6: Parent data: Chroma; Bit 5 to 0: Lower Data: Luminance. Bits 11 and 5 are reserved. 1.2.8 CBPY1.2.8 CBPY 이 절은 테이블 9/H.263을 다른다. 이 테이블은 두 세트의 데이를 포함하는데, 하나는 인터픽쳐에 대한 것이고, 다른 하나는 인트라픽쳐에 대한 것이다. 한 세트의 값은 다른 세트의 값을 반전시킨 것으로서, ROM에 한 세트의 데이타를 저장할 수 있도록 한다. 여기서, 인트라 데이타가 ROM에 위치한다 하나의 4비트 값이 CBPY값을 나타내는데 사용된다.This clause differs from Table 9 / H.263. This table contains two sets of days, one for the interpicture and one for the intrapicture. One set of values is the inverse of the other set of values, allowing one set of data to be stored in ROM. Here, the intra data is located in the ROM. One 4-bit value is used to represent the CBPY value. ROM 테이블 포맷:비트 9∼6:상위 데이타; 비트 3∼0:하위 데이타. 비 11∼10과 비트 5∼4는 예약되어 있다.ROM table format: bits 9 to 6: upper data; Bits 3 to 0: Lower data. Ratios 11 to 10 and bits 5 to 4 are reserved. 1.2.9 듀얼 프라임(dual prime) 및 모드1.2.9 Dual prime and mode 이 절은 테이블 11/MPEG-2 및 테이블 7/H.263을 다룬다.This section covers Table 11 / MPEG-2 and Table 7 / H.263. 이 두개의 테이블은 매우 간단하고 작아서 직접 디코딩될 수 있다.These two tables are very simple and small so they can be decoded directly. 1.3 엔코딩1.3 encoding 디코딩 절과 마찬가지로, 엔코딩 과정은 '0'/'1'카운트 개념을 사용한다. ROM 테이블은 '0'/'1' 카운트, '0' 또는 '1' 카운트에 대해 첫번째 1에 뒤따라는 코드의 크기 및 첫번째/마지막 '1'에 따르는 VLC 코드에 대한 정보를 포함한다. 이 포맷에 따르면, ROM 테이블의 사이즈는 테이블 12/H. 263에서 특수 엔코딩으로 해결되는 4가지를 제외하고는 12비트로 제한될 수 있다. 포맷은 다음과 같다.Like the decoding clause, the encoding process uses the concept of '0' / '1' counts. The ROM table contains information about the VLC code according to the first / last '1' and the size of the code following the first one for the '0' / '1' count, the '0' or '1' count. According to this format, the size of the ROM table is Table 12 / H. It can be limited to 12 bits except four that are addressed by special encoding at 263. The format is: [테이블 7][Table 7] 일반적인 엔코딩 포맷Common Encoding Formats [테이블 8]Table 8 테이블 12/H. 263 엔코딩 포맷Table 12 / H. 263 encoding format 상기 테이블에서, VLC 코드 사이즈는 첫번째/마지막 '1'을 뒤따르는 VLC 코드의 사이즈이다. VLC 코드는 첫번째/마지막 '1'을 뒤따르는 VLC 코드이다. '0' 카운트의 경우, 첫번째 '1'을 뒤따르는 VLC 코드가 추출되고, 그렇지 않은 경우 VLC 코드는 마지막 '1'을 뒤따르는 비트들로 부터 취출되어져야 한다. 엔코딩에서 '1' 카운트의 적용은 디코딩에서와 다르다. '1' 카운트는 '1 카운트 플래그가 어드레스 발생기에 의해 인에이블되는 경우에만 적용된다. 그러므로, VLC의 MSB가 1이지만, '1' 카운트 플래그가 로우인 경우, ROM 테이블의 '0'/'1' 카운트 부분은 0이 될 것이며, 이는 '0' 카운트가 적용되는 것을 의미한다.In the table, the VLC code size is the size of the VLC code following the first / last '1'. The VLC code is the VLC code following the first / last '1'. In the case of a '0' count, the VLC code following the first '1' is extracted, otherwise the VLC code must be extracted from the bits following the last '1'. The application of a '1' count in encoding is different than in decoding. The '1' count applies only when the '1 count flag is enabled by the address generator. Therefore, if the MSB of the VLC is 1 but the '1' count flag is low, the '0' / '1' count portion of the ROM table will be 0, which means that the '0' count is applied. 다음 예는 엔코딩에 대한 모든 가능한 경우를 다룬다.The following example covers all possible cases for encoding. 예 1:VLC=0000011001, one_count_enable=0Example 1: VLC = 0000011001, one_count_enable = 0 일반적인 경우에 대한 결과:0101 100 01001Results for common cases: 0101 100 01001 테이블 12/H.263에 대한 결과:101 100 001001Results for table 12 / H.263: 101 100 001001 예 2:VLC=11001, one_count_enable=0Example 2: VLC = 11001, one_count_enable = 0 일반적인 경우에 대한 결과:0000 100 0101Results for typical cases: 0000 100 0101 테이블 12/H.263에 대한 결과:000 100 001001Results for table 12 / H.263: 000 100 001001 예 3:VLC=11001, one_count_enable=1Example 3: VLC = 11001, one_count_enable = 1 일반적인 경우에 대한 결과:0010 011 00001Results for common cases: 0010 011 00001 테이블 12/H.263에 대한 결과Results for Table 12 / H.263 일반적인 어드레스는 옵셋과 입력 값의 가산으로서 발생된다.The general address is generated as the addition of the offset and the input value. 1.3.1 테이블 14/MPEG-21.3.1 Table 14 / MPEG-2 이 테이블은 테이블 2-B.5c/MPEG-1 및 테이블 5/H.261과 동일하다. 이 엔코딩은 'RUN', 'FIRST DC', 'ESCAPE', 'END OF BLOCK' 입력을 처리한다.This table is identical to Table 2-B.5c / MPEG-1 and Table 5 / H.261. This encoding handles 'RUN', 'FIRST DC', 'ESCAPE', and 'END OF BLOCK' inputs. 엔코딩 결과:어드레스를 발생하기 위하여 레벨 또는 런과 함께 가산되도록 인가되는 옵셋 어드레스Encoding result: offset address applied to be added with the level or run to generate an address 1.3.2 테이블 15/MPEG-21.3.2 Table 15 / MPEG-2 두 테이블이 동일한 런, 레벨 및 VLC 코드를 가지기 때문에, 이 테이블의 대부분은 테이블 14/MPEG-2를 공유한다. 몇가지 특수한 경우에 있어서 '1' 카운트가 적용된다. 이 엔코딩은 'RUN', 'LEVEL', 'FIRST DC', 'ESCAPE', 'END OF BLOCK' 입력을 처리한다.Since both tables have the same run, level, and VLC code, most of these tables share Table 14 / MPEG-2. In some special cases a '1' count is applied. This encoding handles 'RUN', 'LEVEL', 'FIRST DC', 'ESCAPE' and 'END OF BLOCK' inputs. 엔코딩 결과:옵셋 어드레스 및 '1' 카운트 지시자Encoding result: offset address and '1' count indicator 1.3.3. 테이블 12/ H.2631.3.3. Table 12 / H.263 상술한 바와 같이, 이 테이블은 매우 특수하다. 이를 다루기 위하여 다른 포맷을 사용한다. 불행히도, VLC코드를 나타내는데 12비트를 사용할 수 없는 몇가지 예외가 있다. 그 예외는 테이블 9에 나타낸 바와 같다. 이들 예외는 ROM 테이블을 사용하지 않은 특수하게 엔코딩될 수 있다.As mentioned above, this table is very special. We use a different format to deal with this. Unfortunately, there are some exceptions in which 12 bits cannot be used to represent the VLC code. The exception is shown in Table 9. These exceptions can be specially encoded without using ROM tables. [테이블 9]Table 9 12/H.263에서 엔코딩의 예외Exceptions to encoding in 12 / H.263 엔코딩은 'RUN' 및 'ESCAPE' 입력을 처리한다.Encoding processes the 'RUN' and 'ESCAPE' inputs. 엔코딩 결과:어드레스를 발생하기 위하여 레벨 또는 런과 함께 가산되도록 인가되는 옵셋 어드레스Encoding result: offset address applied to be added with the level or run to generate an address 1.3.4 움직임 코드/매크로블록 증가분1.3.4 Movement code / macroblock increment 이 절은 테이블 1/MPEG-2, 테이블 10/MPEG-2, 테이블 2-B. 1/MPEG-1, 테이블 2-B.4/MPEG-1, 테이블 1/H.261, 테이블 3/H.261 및 테이블 10/H.263을 다룬다.This section describes Table 1 / MPEG-2, Table 10 / MPEG-2, Table 2-B. 1 / MPEG-1, Table 2-B.4 / MPEG-1, Table 1 / H.261, Table 3 / H.261 and Table 10 / H.263. 디코딩 부분에서 설명한 바와 같이, 이 모든 테이블에 대하여 하나의 ROM 테이블과 하나의 FSM을 공유할 수 있다. ROM테이블로 부터 얻어지는 VLC 코드는 완전한 VLC 코드를 만들기 위하여 부호/우수 비트와 결합해야 한다. 그러므로, 이 엔코딩 FSM에서 처리하는 입력값들은 그 LSB가 프랙션 비트(fraction bit)인 움직임 코드에 대한 절대값과 1비트 오른쪽으로 쉬프트된 매크로블록 어드레스 증가분이다.As described in the decoding section, all of these tables can share one ROM table and one FSM. The VLC code obtained from the ROM table must be combined with the sign / excellent bit to make the complete VLC code. Therefore, the input values processed by this encoding FSM are the absolute value for the motion code whose LSB is a fraction bit and the macroblock address increment shifted one bit to the right. 엔코딩은 'STUFFING' 및 'ESCAPE'를 처리한다.Encoding handles 'STUFFING' and 'ESCAPE'. 1.3.5 매크로블록 패턴1.3.5 Macroblock Pattern 이 절은 테이블 9/MPEG-2, 테이블 2-B.3/MPEG-1을 이룬다.This clause makes up Table 9 / MPEG-2 and Table 2-B.3 / MPEG-1. 어드레스는 옵섹과 패턴 값을 가산한 값이다.The address is the sum of the opsec and pattern values. 1.3.6 매크로블록 타입1.3.6 Macroblock Type 이 절은 테이블 2,3,4/MPEG-2, 테이블 2-B.2/MPEG-1을 다룬다.This section covers Tables 2,3,4 / MPEG-2 and Table 2-B.2 / MPEG-1. 1.3.7 테이블 3.4/H.263(MCBPC)1.3.7 Table 3.4 / H.263 (MCBPC) 픽쳐 타입, 매크로블록 타입 및 스터핑(stuffing) 플래그에 대한 정보가 ROM 테이블 어드레스 옵셋을 발생시키기 위해 제공된다. 어드레스는 옵셋 어드레스와 CBPC의 합이다.Information about the picture type, macroblock type, and stuffing flag is provided to generate a ROM table address offset. The address is the sum of the offset address and the CBPC. 1.3.8 테이블 2/H.261(MTYPE)1.3.8 Table 2 / H.261 (MTYPE) 어드레스 발생기가 매우 복잡하여 구현에 대해 생각할 가치가 없다.The address generator is so complex that it is not worth thinking about the implementation. 1.3.9 CBPY1.3.9 CBPY 디코딩 부분에 논의한 바와 같이, 인트라 픽쳐 데이타만을 엔코딩한다. 픽쳐 타입이 인터 픽쳐인 경우 데이타는 먼저 반전되어야 한다.As discussed in the decoding section, only intra picture data is encoded. If the picture type is an inter picture, the data must first be inverted. 어드레스는 옵셋과 CBPY값을 가산한 값이다.The address is the sum of the offset and the CBPY value. 1.3.10 DCT DC 사이즈1.3.10 DCT DC size 이 절은 테이블 12,13/MPEG-2, 2-B.5/MPEG-1을 다룬다.This section covers tables 12, 13 / MPEG-2 and 2-B.5 / MPEG-1. 휘도 및 크로마에 대한 몇개의 VLC 코드가 동일하기 때문에 이들에 대하여 몇개의 ROM 테이블을 공유한다. 옵셋 어드레스를 발생시키기 위하여 크로마 플래그 및 몇개 비트의 값이 사용된다. 옵색과 실제 값을 가산함으로써 ROM 어드레스를 얻을 수 있다.Since several VLC codes for luminance and chroma are the same, several ROM tables are shared for them. The chroma flag and the value of several bits are used to generate the offset address. The ROM address can be obtained by adding the op color and the actual value. 1.3.11 듀얼 프라임(dual prime) 및 모드1.3.11 dual prime and mode 이 절은 테이블 11/MPEG-2 및 테이블 7/H.263을 다룬다.This section covers Table 11 / MPEG-2 and Table 7 / H.263. 이 두개의 테이블은 매우 간단하고 작아서 직접 엔코딩될 수 있다.These two tables are very simple and small so they can be encoded directly. 2.0 하드웨어 설명2.0 Hardware Description VLC 엔코딩/디코딩에 대한 하드웨어는 'VLC' 블럭에 포함된다. 이 블록은 세개의 서브 블록들을 포함한다. 이들 블록들은 ROM테이블 어드레스 또는 디코딩/엔코딩 데이타를 발생시키기 위하여 적용된다. 'VLC_DEC'는 VLC를 디코딩하여 ROM 테이블 어드레스를 발생시키기 위해 사용된다. 'VLC_ENC'는 VLC를 엔코딩하기 위한 블록으로서, ROM 테이블 어드레스 또는 H. 263의 TCOEF 테이블을 위한 특수 엔코딩을 발생시킨다. 'LOOKUP'은 ROM 테이블 값 또는 특수 엔코딩된 값에 근거하여 VLC 데이타를 출력한다.The hardware for VLC encoding / decoding is contained in the 'VLC' block. This block contains three subblocks. These blocks are applied to generate a ROM table address or decoding / encoding data. 'VLC_DEC' is used to decode the VLC to generate a ROM table address. 'VLC_ENC' is a block for encoding VLC and generates a special encoding for a ROM table address or TCOEF table of H.263. 'LOOKUP' outputs VLC data based on ROM table values or specially encoded values. 2.1 VLC 디코딩 어드레스 발생기2.1 VLC decoding address generator VLC_DEC의 핵심은 디코딩 FSM이다. 이 FSM은 입력 정보를 디코딩하여 어드레스 발생을 제어한다. FSM의 입력 및 정의는 다음과 같다.The key to VLC_DEC is the decoding FSM. This FSM decodes the input information to control address generation. The input and definition of FSM is as follows. * ZERO/ONE Count(15비트):0/1 카운트 값을 제공한다.* ZERO / ONE Count (15 bit): Provides 0/1 count value. * ZERO ONE Count(4비트):0/1 카운트 값을 제공한다. 두가지 다른 비트-카운트 신호를 사용하는 목적은 입력 데이타 공유로 인해 게이트 주문자(gate customer)들을 감소시키기 위해서이다. 대부분의 경우, 15비트가 사용된다.* ZERO ONE Count (4 bits): Provides a 0/1 count value. The purpose of using two different bit-count signals is to reduce gate customers due to input data sharing. In most cases, 15 bits are used. * ONE Count enable(1 비트):'1' 카운트 시작* ONE Count enable (1 bit): Start count of '1' * 테이블 타입(6비트):테이블 타입Table Type (6 bit): Table Type [테이블 10]Table 10 VLC_DEC FSM 테이블 타입 포맷VLC_DEC FSM Table Type Format *모드(9비트):동작 모드* Mode (9 bits): Operation mode [테이블 11]Table 11 VLC_DEC FSM 모드 포맷VLC_DEC FSM Mode Format 사양 및 픽쳐 타입에 대한 정의는 핀 정의에서 설명하기로 한다.The definition of the specification and picture type will be described in the pin definition. 하드웨어를 간소화하고 ROM 억세스 시간을 보증하기 위하여 특수한 알고리즘이 ROM 테이블 어드레스를 발생시키기 위해 사용된다. 그 과정은 다음과 같다.Special algorithms are used to generate ROM table addresses to simplify hardware and guarantee ROM access time. The process is as follows. 단계 1:옵셋 어드레스(OFFSET)를 발생시킨다.Step 1: Generate an offset address (OFFSET). 단계 2:4비트 쉬프트 양(MASK_SHFT)을 발생시키고, 이 양과 함께 라이트 쉬프트 16 비트 FIFO_DATA를 발생시킨다. 이후, 4개의 최하위 비트들(FOL_DATA)을 추출한다.Step 2: Generate a 4-bit shift amount (MASK_SHFT), along with a write shift 16-bit FIFO_DATA. Afterwards, the four least significant bits FOL_DATA are extracted. 단계 3:단계 2에서 얻어지는 4개 비트들을 반전시킨다.Step 3: Invert the four bits obtained in step 2. 단계 4:단계 3에서 얻어지는 데이타(MASK)를 마스크하기 위하여 4비트 마스크 신호를 발생시킨다.Step 4: Generate a 4-bit mask signal to mask the data MASK obtained in step 3. 단계 5:단계 4의 결과를 옵셋 어드레스와 논리합시킨다. 그 결과는 ROM 테이블 어드레스이다.Step 5: The result of step 4 is ORed with the offset address. The result is a ROM table address. 이들 단계를 결합시키면 다음과 같다.Combining these steps is as follows. Address=OFFSET|(BITREVERSE(Bit(3∼0) of (FIFO_DATAMASK_SHFT) (MASK)Address = OFFSET | (BITREVERSE (Bit (3∼0) of (FIFO_DATAMASK_SHFT) (MASK) FSM의 출력은 다음과 같다.The output of the FSM is: * MASK(4비트):마스크 데이타MASK (4-bit): Mask data * OFFSET(9비트):ROM 테이블 옵셋 어드레스OFFSET (9-bit): ROM table offset address * MASK_SHFT(4비트):쉬프트 양MASK_SHFT (4-bit): Shift amount * SIZE(5비트):VLC사이즈* SIZE (5 bits): VLC size *SPECIAL_FLAG(3비트):디코딩을 위한 여분의 정보* SPECIAL_FLAG (3 bits): extra information for decoding [테이블 12]Table 12 VLC_DEC의 특수 플래그의 정의Definition of special flags in VLC_DEC *VALID_VLC(1비트):유효 VLC 코드 플래그* VALID_VLC (1 bit): Valid VLC code flag *HIGH_DATA_INDICATOR(1비트):ROM데이타 중 상위 6비트를 출력한다.HIGH_DATA_INDICATOR (1 bit): Outputs the upper 6 bits of ROM data. 입력 핀들:Input pins: * FOL_DATA(4비트):쉬프트된 FIFO_DATA(상술한 단계 2 참조)FOL_DATA (4 bits): Shifted FIFO_DATA (see step 2 above) * CNT(4비트):0/1 카운트* CNT (4 bits): 0/1 count *ONE_CNT_EN(1비트):'1' 카운트 지시자* ONE_CNT_EN (1 bit): '1' count indicator *MODE(14비트):테이블 타입 및 다른 정보* MODE (14 bit): table type and other information 정의는 다음과 같다.The definition is as follows. [테이블 13]Table 13 VLC_DEC에서 MODE 포맷MODE format in VLC_DEC 사양:00=MPEG-1; 01-MPEG-2; 10=H.261; 11=H.263;Specification: 00 = MPEG-1; 01-MPEG-2; 10 = H.261; 11 = H.263; 픽쳐타입:00=예약; 01=인트라; 10=예측; 11=양방향;Picture type: 00 = reserved; 01 = intra; 10 = prediction; 11 = bidirectional; *FIFO_DATA(16비트); 데이타는 VLC를 포함한다.FIFO_DATA (16 bits); Data includes VLC. 출력 핀들:Output pins: * ROM_ADR(10비트):ROM테이블 어드레스ROM_ADR (10-bit): ROM table address * MASK_SHFT(4비트):FIFO_DATA에 대한 쉬프트양(상술한 단계 2 참조)MASK_SHFT (4 bits): Shift amount for FIFO_DATA (see step 2 above) * SIZE(5비트):VLC 사이즈* SIZE (5 bits): VLC size * SPECIAL_0(3비트):특수 플래그(FSM 출력 참조)* SPECIAL_0 (3-bit): special flag (see FSM output) * VALID_VLC(1비트):유효 VLC 플래그* VALID_VLC (1 bit): Valid VLC flag *HIGH_DATA(1비트):우스 플래그의 부호로 VLC의 LSB를 추출하라는 지시자* HIGH_DATA (1 bit): Indicator to extract the LSB of the VLC with the sign of the mouse flag *FULL_DATA(1비트):DCT 계수 디코딩시 하이인 완전한 12비트 데이타 구조* FULL_DATA (1 bit): Complete 12-bit data structure high when decoding CTCT coefficients. *TABLE(6비트):FSM 입력에 정의됨* TABLE (6 bit): Defined on FSM input. *T_MODE(9비트):FSM 입력에 MODE로 정의됨* T_MODE (9 bit): Defined as MODE on the FSM input. 2.2. VLC_ENC2.2. VLC_ENC VLC 엔코딩 코아 부분에서와 같이, VLC_ENC는 가변길이 코드를 엔코딩한다. 이 부분의 출력은 ROM 테이블 어드레스 또는 VLC의 특수 엔코딩이다. 1.0절에 설명한 바와 같이, 엔코딩 데이타 구조는 H.263에서 TCOEF의 몇가지 특수한 경우를 제외하고는 12비트 데이타 포맷을 따른다. 비록 10비트 가산기가 ROM 테이블 어드레스를 발생시키기 위해 사용되지만, 하드웨어 관점에서 볼때에는 VLC_DEC부분보다 훨씬 더 간단하다.As in the VLC encoding core portion, VLC_ENC encodes a variable length code. The output of this part is a special ROM ROM address or VLC encoding. As described in section 1.0, the encoding data structure follows the 12-bit data format in H.263 except for some special cases of TCOEF. Although a 10-bit adder is used to generate the ROM table address, from a hardware point of view it is much simpler than the VLC_DEC part. VLC_DEC와 마찬가지로, 이 부분의 핵심은 VLC_ENC라 하는 FSM이다. 다른 FSM, ENC_SP는 특수 엔코딩을 위해 사용된다.Like VLC_DEC, the heart of this part is the FSM called VLC_ENC. The other FSM, ENC_SP, is used for special encoding. FSM VLC_ENC의 입력신호는 이 부분의 입력 핀들과 동일하다.The input signal of FSM VLC_ENC is the same as the input pins of this part. * LAST(1비트):H.263의 TCOEF에 대한 LAST의 값* LAST (1 bit): value of LAST for TCOEF of H.263 * RUN/VALUE(6비트):DCT 계수 테이블이 엔코딩되는 중이면, 이 입력은 RUN을 의미하고, 그렇지 않은 경우 일반적인 값, 즉 패턴을 의미한다.* RUN / VALUE (6-bit): If the DCT coefficient table is being encoded, this input means RUN, otherwise it means a normal value, or pattern. * LEVEL(6비트):DCT 계수 레벨LEVEL (6-bit): DCT coefficient level *SPECIAL_FLAG(2비트):VLC_DEC 부분에서 정의된 특수 플래그* SPECIAL_FLAG (2 bits): Special flag defined in the VLC_DEC part. * TABLE(6비트):VLC_DEC와 동일TABLE (6 bits): same as VLC_DEC *MODE(9비트):VLC_DEC와 동일* MODE (9 bits): same as VLC_DEC ROM 어드레스 발생은 매우 간단하다. FSM은 어드레스를 발생시키기 위하여 값(런) 또는 레벨 또는 0에 더해지는 옵셋 어드레스를 제공한다. 이들 VLC들이 동일 한 사이즈와 '0' 카운트를 가지기 때문에 특수 엔코딩을 위해서는, 출력은 코드로 복원되는 2개의 최하위비트들이다.ROM address generation is very simple. The FSM provides an offset address that is added to the value (run) or level or zero to generate an address. Because these VLCs have the same size and '0' count, for special encoding, the output is the two least significant bits that are restored to the code. 출력 핀들은 다음과 같다.The output pins are as follows. * ONE_CNT_FLG(1비트):VLC 구조가 '1' 카운트를 사용함을 알린다.ONE_CNT_FLG (1 bit): Indicates that the VLC structure uses a '1' count. * SIGN_EN_BIT:VLC구조가 부호/우수 비트를 VLC LSB로 둠을 알린다.SIGN_EN_BIT: Signals that the VLC structure puts the sign / excellent bit into the VLC LSB. * SPECIAL_ENCODE(1비트):특수 엔코딩 플래그* SPECIAL_ENCODE (1 bit): special encoding flag * VLC(2비트):특수 엔코딩된 VLC 코드 LSB들* VLC (2-bit): specially encoded VLC code LSBs * ADR_A(16비트):옵셋 어드레스, 상위 6비트는 0이다.ADR_A (16 bits): Offset address, where the upper 6 bits are zero. * ADR_B(16비트):어드레스의 또 다른 부분. 상위 10비트는 항상 0이다.ADR_B (16 bits): Another part of the address. The upper 10 bits are always zero. 2.3 룩업2.3 lookup 이 절은 VLC 데이타의 엔코딩/디코딩을 제공한다. 이 블록은 다음과 같은 상황을 처리한다.This section provides for encoding / decoding of VLC data. This block handles the following situations: * 규칙적인 12비트 엔코딩/디코딩 ROM 테이블 값 출력Regular 12-Bit Encoding / Decoding ROM Table Value Output * 비트 상위/하위 디코딩 데이타 출력Bit high / low decoding data output * 특수 엔코딩 데이타 복원* Special Encoded Data Restoration 요구한 바와 같이, 출력 데이타는 0으로 메워진다.As requested, the output data is filled with zeros. 입력 핀들:Input pins: * D_ADR(10비트):ROM 어드레스를 디코딩한다.D_ADR (10 bits): Decodes the ROM address. * E_ADR(10비트):ROM 어드레스를 엔코딩한다.E_ADR (10 bits): Encodes the ROM address. * ENCODE(1비트):1:엔코딩; 0:디코딩ENCODE (1 bit): 1: encoding; 0: decoding * HIGH(1비트):상위 6비트 플래그를 추출한다.HIGH (1 bit): Extracts the high 6 bit flag. * ENABLE(1비트):완전한 12비트 데이타 플래그ENABLE (1 bit): Complete 12-bit data flag * VLC(2비트):특수 엔코딩 코드* VLC (2-bit): special encoding code * SPECIAL_ENCODE(1비트):특수 엔코딩 코드* SPECIAL_ENCODE (1 bit): special encoding code 출력 핀들:Output pins: LOOKUP(16비트):VLC 코드LOOKUP (16 bit): VLC code
KR1019970034995A 1996-08-19 1997-07-25 Method and apparatus for processing video data KR100262453B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US69930396A 1996-08-19 1996-08-19
US08/699,382 US6192073B1 (en) 1996-08-19 1996-08-19 Methods and apparatus for processing video data
US8/699,382 1996-08-19
US8/699,303 1996-08-19

Publications (2)

Publication Number Publication Date
KR19980018215A true KR19980018215A (en) 1998-06-05
KR100262453B1 KR100262453B1 (en) 2000-08-01

Family

ID=27106388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970034995A KR100262453B1 (en) 1996-08-19 1997-07-25 Method and apparatus for processing video data

Country Status (5)

Country Link
JP (1) JP4290775B2 (en)
KR (1) KR100262453B1 (en)
CN (2) CN1523895A (en)
DE (1) DE19735880A1 (en)
TW (1) TW436710B (en)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990060505A (en) * 1997-12-31 1999-07-26 구자홍 TV system with multiprocessing
KR20030030403A (en) * 2001-10-11 2003-04-18 (주)씨앤에스 테크놀로지 macro block level control circuit of video decoding
KR100440408B1 (en) * 1997-07-29 2005-09-28 삼성전자주식회사 Video data conversion method and conversion circuit
KR100688092B1 (en) * 2005-04-13 2007-03-02 한국전자통신연구원 Run_before decoding method, appartus and recording medium based on FSM for H.264/AVC
KR100720684B1 (en) * 2005-05-09 2007-05-21 이화여자대학교 산학협력단 Method and Apparatus for Huffman Decoding by Using Balanced Binary Search Tree
KR100732418B1 (en) * 2006-02-16 2007-06-27 삼성전자주식회사 Multimedia record/play device and play method threrof
KR100765267B1 (en) * 2005-06-29 2007-10-09 삼성전자주식회사 Electronic Apparatus, Control Method Thereof And Electronic Control System Comprising The Same
KR100769234B1 (en) * 2002-11-06 2007-10-22 노키아 코포레이션 Picture Stream Encoding/Decoding and Picture Stream Encoder/Decoder
KR100844224B1 (en) * 2004-01-21 2008-07-04 딜리시움 네트웍스 피티와이 리미티드 Method and apparatus for handling video communication errors
KR100858244B1 (en) * 2005-01-14 2008-09-12 주식회사 휴맥스 Device and Method for encoding/decoding video data
KR100880982B1 (en) * 2004-11-15 2009-02-03 엔비디아 코포레이션 Video processing
KR20090118812A (en) * 2008-05-14 2009-11-18 삼성전자주식회사 Method and apparatus for data transferring for time-slicing mode, and method and apparatus for data receiving by time-slicing mode
US8155454B2 (en) 2006-07-20 2012-04-10 Qualcomm Incorporated Method and apparatus for encoder assisted post-processing
US8253752B2 (en) 2006-07-20 2012-08-28 Qualcomm Incorporated Method and apparatus for encoder assisted pre-processing

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6459737B1 (en) * 1999-05-07 2002-10-01 Intel Corporation Method and apparatus for avoiding redundant data retrieval during video decoding
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US8111753B2 (en) 2003-02-06 2012-02-07 Samsung Electronics Co., Ltd. Video encoding method and video encoder for improving performance
KR101160640B1 (en) * 2003-12-30 2012-06-28 삼성전자주식회사 Data processing system and data processing method
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8738891B1 (en) 2004-11-15 2014-05-27 Nvidia Corporation Methods and systems for command acceleration in a video processor via translation of scalar instructions into vector instructions
US20060256854A1 (en) * 2005-05-16 2006-11-16 Hong Jiang Parallel execution of media encoding using multi-threaded single instruction multiple data processing
CN1993709B (en) 2005-05-20 2010-12-15 索尼株式会社 Signal processor
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
JP4404065B2 (en) * 2006-04-12 2010-01-27 ヤマハ株式会社 Digital signal processor
CN101090504B (en) * 2007-07-20 2010-06-23 清华大学 Coding decoding apparatus for video standard application
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
CN101093474B (en) * 2007-08-13 2010-04-07 北京天碁科技有限公司 Method for implementing matrix transpose by using vector processor, and processing system
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8665996B2 (en) 2008-04-01 2014-03-04 Qualcomm Incorporated Efficient parallel sub-packet decoding using multiple decoders
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
JP5332369B2 (en) * 2008-07-18 2013-11-06 ソニー株式会社 Image processing apparatus, image processing method, and computer program
US8194977B2 (en) * 2008-12-09 2012-06-05 Microsoft Corporation Remote desktop protocol compression acceleration using single instruction, multiple dispatch instructions
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
CN103914426B (en) * 2013-01-06 2016-12-28 中兴通讯股份有限公司 A kind of method and device of multiple threads baseband signal
CN103957437A (en) * 2014-04-26 2014-07-30 吉安英佳电子科技有限公司 Wireless servo portable high-integration digital multimedia all-in-one machine
CN105786224A (en) * 2016-03-29 2016-07-20 电子科技大学 Universal laser pointer and computer operation method
CN106940875B (en) * 2017-02-10 2020-07-24 杭州朔天科技有限公司 Gray level image background processing and table building method
KR102549503B1 (en) 2017-12-20 2023-06-30 삼성전자주식회사 Display driver integrated circuit for synchronizing the ouput timing of images in low power mode
KR20210025154A (en) 2019-08-26 2021-03-09 삼성디스플레이 주식회사 Scan driver and display device including the same
CN111159076B (en) * 2019-11-29 2021-04-13 北京空间机电研究所 Satellite-borne CAN bus master-slave switching and response control method
WO2021112639A1 (en) 2019-12-05 2021-06-10 Samsung Electronics Co., Ltd. Electronic device performing operation based on user speech in multi device environment and operating method thereof
KR20220030440A (en) 2020-08-31 2022-03-11 삼성전자주식회사 Electronic device, system-on-chip, and operating method

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100440408B1 (en) * 1997-07-29 2005-09-28 삼성전자주식회사 Video data conversion method and conversion circuit
KR19990060505A (en) * 1997-12-31 1999-07-26 구자홍 TV system with multiprocessing
KR20030030403A (en) * 2001-10-11 2003-04-18 (주)씨앤에스 테크놀로지 macro block level control circuit of video decoding
KR100769234B1 (en) * 2002-11-06 2007-10-22 노키아 코포레이션 Picture Stream Encoding/Decoding and Picture Stream Encoder/Decoder
KR100844224B1 (en) * 2004-01-21 2008-07-04 딜리시움 네트웍스 피티와이 리미티드 Method and apparatus for handling video communication errors
KR100917067B1 (en) * 2004-11-15 2009-09-15 엔비디아 코포레이션 Video processing
KR100880982B1 (en) * 2004-11-15 2009-02-03 엔비디아 코포레이션 Video processing
KR100858244B1 (en) * 2005-01-14 2008-09-12 주식회사 휴맥스 Device and Method for encoding/decoding video data
KR100688092B1 (en) * 2005-04-13 2007-03-02 한국전자통신연구원 Run_before decoding method, appartus and recording medium based on FSM for H.264/AVC
KR100720684B1 (en) * 2005-05-09 2007-05-21 이화여자대학교 산학협력단 Method and Apparatus for Huffman Decoding by Using Balanced Binary Search Tree
KR100765267B1 (en) * 2005-06-29 2007-10-09 삼성전자주식회사 Electronic Apparatus, Control Method Thereof And Electronic Control System Comprising The Same
KR100732418B1 (en) * 2006-02-16 2007-06-27 삼성전자주식회사 Multimedia record/play device and play method threrof
US8155454B2 (en) 2006-07-20 2012-04-10 Qualcomm Incorporated Method and apparatus for encoder assisted post-processing
US8253752B2 (en) 2006-07-20 2012-08-28 Qualcomm Incorporated Method and apparatus for encoder assisted pre-processing
KR20090118812A (en) * 2008-05-14 2009-11-18 삼성전자주식회사 Method and apparatus for data transferring for time-slicing mode, and method and apparatus for data receiving by time-slicing mode

Also Published As

Publication number Publication date
JP4290775B2 (en) 2009-07-08
JPH1093961A (en) 1998-04-10
DE19735880A1 (en) 1998-05-14
CN1189058A (en) 1998-07-29
CN1523895A (en) 2004-08-25
KR100262453B1 (en) 2000-08-01
TW436710B (en) 2001-05-28
CN1145362C (en) 2004-04-07

Similar Documents

Publication Publication Date Title
KR100262453B1 (en) Method and apparatus for processing video data
US8314808B2 (en) Electronic system and method for selectively allowing access to a shared memory
US5812789A (en) Video and/or audio decompression and/or compression device that shares a memory interface
US5448310A (en) Motion estimation coprocessor
US5486876A (en) Video interface unit for mapping physical image data to logical tiles
US6842219B2 (en) Moving picture decoding processor for multimedia signal processing
JPH11508066A (en) Image compression coprocessor with data flow control and multiple processing units
WO1996042169A1 (en) Video decoder with dedicated mpeg processor
KR100304511B1 (en) Video restoration and decoding system
JPH0870452A (en) Start cord detector
EP0772159B1 (en) Memory sharing in a MPEG decoder
Kim et al. A real-time MPEG encoder using a programmable processor
Lee et al. Real-time MPEG video codec on a single-chip multiprocessor
Lee Architectures and algorithms for MPEG video coding
Kim et al. PC sound and video compression boards for information infrastructure
FR2753031A1 (en) Digital video coding apparatus, e.g. for teleconferencing
JPH10303308A (en) Integrated circuit having cores and shells and hierarchical firmware therefor

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: 20120430

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee