이에 본 발명에서는 화면 표시를 위해서 프레임 데이터 재정렬 할 필요가 없고, 블록단위의 프레임 메모리 액세스에 있어서 주소 계산 방법이 간단하며, 메모리 구조가 직관적이고, 지연 없이 연속적으로 블록 데이터를 액세스 할 수 있는 프레임 메모리 관리 방법과 그 장치를 제공하고자 한다.
또한, 격행 주사를 효율적으로 지원하기 위해서 프레임 메모리를 액세스 할 때 매크로블럭 단위로 프레임/필드를 선택해서 액세스 할 수 있는 프레임 메모리 관리 방법과 그 장치를 제공하고자 한다.
뿐 만 아니라, 영상 처리 장치 및 외부 메모리 설정을 참조하여 구성에 적합한 프레임 메모리 구조를 자동으로 생성하는 프레임 메모리 관리 방법 및 그 장치를 제공하고자 한다.
더 나아가, 분산되어 관리되는 프레임 메모리 관련기능을 통합하여 관리를 간단하게 한 프레임 메모리 관리 방법 및 그 장치를 제공하고자 한다.
본 발명의 제1측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로서, 메모리 구성 정보와 영상 처리 정보를 참조하여 프레임 메모리 구조를 결정하는 단계; 상기 프레임 메모리 구조에 따라 각 페이지에 다수개의 영상 신호가 저장되도록 프레임 메모리를 구성하는 단계; 및 영상 획득 정보를 비트단위로 결합하여 신호 저장 주소를 계산하고 프레임 메모리 맵에 액세스하여 영상 신호를 페이지 단위로 기입 또는 독출하는 단계를 포함하는 영상 처리를 위한 프레임 메모리 관리 방법을 제공한다.
상기 프레임 메모리 구조를 결정하는 단계는 페이지 사이즈, 버스 폭, 뱅크수, 및 행수에 대한 정보를 가지는 메모리 구성 정보와 영상의 폭과 높이에 대한 정보를 가지는 영상 처리 정보를 참조하여, 상기 프레임 메모리의 최대 프레임수, 페이지당 영상 라인 수, 프레임 옵셋, 색차 신호 옵셋을 결정하는 것을 특징으로 한다.
상기 프레임 메모리 구조를 결정하는 단계는 최대 프레임수, 페이지당 영상 라인 수는 '1) 영상폭 = 매크로 블록 단위의 픽셀 폭 × 16, 2) 영상높이 = 매크로 블록 단위의 픽셀 높이 × 16, 3) 프레임 액세스 라인 디스턴스 =
, 4) 필드 액세스 라인 디스턴스 = 프레임 액세스 라인 디스턴스 × 2, 5) 페이지당 영상 라인 수 = 페이지 사이즈 / 프레임 액세스 라인 디스턴스, 6) 최대 프레임 수 = floor(메모리 행 수 / 프레임 옵셋)'의 식에 따라 결정되는 것을 특징을 한다.
상기 프레임 메모리 구조를 결정하는 단계는 프레임 옵셋 및 색차 신호 옵셋은 '1) 색차 신호 옵셋 = 영상높이 / 페이지 당 영상 라인 / 뱅크 수, 2) 프레임 옵셋 = 색차옵셋 × 3 / 2'의 식에 따라 결정하거나 사용자로부터 입력받을 수 있는 것을 특징으로 한다.
상기 프레임 메모리를 구성하는 단계는 최대 프레임수에 따라 프레임 개수를 결정하고, 페이지당 영상 라인 수에 따라 한 개의 뱅크를 다수개의 서브 뱅크로 분할하고, 프레임 옵셋 및 색차 신호 옵셋에 따라 휘도신호와 색차 신호를 분리하여 저장하도록 하는 특징으로 한다.
그리고 상기 프레임 메모리를 구성하는 단계는 영상신호가 휘도신호, 제1색차 신호, 및 제2색차신호로 구성되는 경우, 프레임 옵셋에 따라 휘도신호를 저장할 행들의 시작 주소를 결정하고, 프레임 옵셋 및 색차 신호 옵셋에 따라 제1색차 신 호, 및 제2색차신호를 저장할 행들의 시작 주소를 결정하는 것을 특징으로 한다.
또한, 상기 프레임 메모리를 구성하는 단계는 영상신호가 휘도신호, 제1색차 신호, 및 제2색차신호로 구성되는 경우, 한 개의 페이지에 다수개의 휘도신호 또는 제1색차 신호 및 제2색차신호를 함께 저장되는 것을 특징으로 한다.
상기 기입 또는 독출하는 단계는 영상신호가 휘도신호, 제1색차 신호, 및 제2색차신호로 구성되고, 프레임 옵셋이 2n인 경우, '1) 휘도화소 주소 = {프레임 인덱스, 휘도화소, Y좌표, X좌표} = {행 주소, 뱅크 주소, 열 주소, 바이트주소}, 2) 제1색차화소 주소 = {프레임 인덱스, 색차화소, Y좌표, X좌표, 색차화소 종류} = {행 주소, 뱅크 주소, 열 주소, 바이트주소}, 3) 제2색차화소 주소 = 제1색차화소 주소 +1'의 식에 따라 프레임 인덱스, 신호 종류 및 X, Y좌표로 구성되는 영상 획득 정보로부터 휘도신호 주소와 제1색차 신호 주소 및 제2색차신호 주소를 획득하는 것을 특징으로 한다.
상기 기입 또는 독출하는 단계는 영상신호가 휘도신호, 제1색차 신호, 및 제2색차신호로 구성되고, 프레임 옵셋이 2n이 아닌 경우, '1)휘도화소 주소 = 프레임 인덱스×프레임 옵셋+{Y좌표, X좌표}= {행 주소, 뱅크 주소, 열 주소, 바이트주소}, 2)제1색차화소 주소 = 프레임 인덱스×프레임 옵셋+색차 옵셋+{Y좌표>>1, X좌표>>1, 색차화소 종류}= {행 주소, 뱅크 주소, 열 주소, 바이트주소}, 3)제2색차화소 주소 = 제1색차화소 주소 +1임'의 식에 따라 프레임 인덱스, 신호 종류 및 X, Y좌표로 구성되는 영상 획득 정보로부터 휘도신호 주소와 제1색차 신호 주소 및 제2색차신호 주소를 획득하는 것을 특징으로 한다.
그리고 상기 기입 또는 독출하는 단계는 뱅크 인터리빙 방식으로 액세스를 수행하되, 라인 디스턴스(Line Distance)를 수정하여 액세스 단위를 변경하며, 필드 액세스 라인 디스턴스는 프레임 액세스 라인 디스턴스의 두 배인 것을 특징으로 한다.
본 발명의 제2측면에 따르면 상기와 같은 문제점을 해결하기 위한 수단으로서, 호스트 시스템로부터 제공되는 영상 데이터 스트림을 해석하는 스트림 제어부; 상기 스트림 제어부로부터 제공되는 움직임 벡터에 해당하는 영역의 영상 신호를 프레임 메모리에서 읽어와 움직임보상 화면을 구성하고, 상기 스트림 제어부로부터 제공되는 데이터를 토대로 예측 화면과 차화면을 구성하는 스트림 처리부; 화면내 예측화면 또는 움직임보상 화면과 차화면을 더해서 원본 화면을 재구성하는 화면 재구성부; 상기 프레임 메모리에서 주변블록의 화면을 읽어들여서 상기 원본 화면과 함께 필터링한 후, 상기 프레임 메모리에 재저장하는 디블록킹 필터; 및 상기 프레임 메모리의 각 페이지에 다수개의 영상 신호가 동시 저장하도록 하며, 상기 스트림 처리부 또는 상기 디블록킹의 액세스 요청시에는 비트단위 결합 방식을 통해 영상 획득 정보로부터 신호 저장 주소를 획득하고 상기 프레임 메모리에 액세스하여 페이지 단위로 영상 신호를 기입 또는 독출하는 프레임 메모리 제어부를 포함하는 영상 처리 장치를 제공한다.
상기 프레임 메모리 제어부는 페이지 사이즈, 버스 폭, 뱅크수, 및 행수에 대한 정보를 가지는 메모리 구성 정보와 영상의 폭과 높이에 대한 정보를 가지는 영상 처리 정보를 참조하여, 상기 프레임 메모리의 최대 프레임수, 페이지당 영상 라인 수, 프레임 옵셋, 색차 신호 옵셋을 결정하는 것을 특징으로 한다.
그리고 상기 프레임 메모리 제어부는 최대 프레임수에 따라 프레임 개수를 결정하고, 페이지당 영상 라인 수에 따라 한 개의 뱅크를 다수개의 서브 뱅크로 분할하고, 프레임 옵셋 및 색차 신호 옵셋에 따라 휘도신호와 색차 신호를 분리하여 저장하도록 하는 특징으로 한다.
그리고, 상기 프레임 메모리 제어부는 영상신호가 휘도신호, 제1색차 신호, 및 제2색차신호로 구성되고, 프레임 옵셋이 2n인 경우, '1) 휘도화소 주소 = {프레임 인덱스, 휘도화소, Y좌표, X좌표} = {행 주소, 뱅크 주소, 열 주소, 바이트주소}, 2) 제1색차화소 주소 = {프레임 인덱스, 색차화소, Y좌표, X좌표, 색차화소 종류} = {행 주소, 뱅크 주소, 열 주소, 바이트주소}, 3) 제2색차화소 주소 = 제1색차화소 주소 +1'의 식에 따라 프레임 인덱스, 신호 종류 및 X, Y좌표로 구성되는 영상 획득 정보로부터 휘도신호 주소와 제1색차 신호 주소 및 제2색차신호 주소를 획득하는 것을 특징으로 한다.
또한, 상기 프레임 메모리 제어부는 영상신호가 휘도신호, 제1색차 신호, 및 제2색차신호로 구성되고, 프레임 옵셋이 2n이 아닌 경우, '1)휘도화소 주소 = 프레임 인덱스×프레임 옵셋+{Y좌표, X좌표}= {행 주소, 뱅크 주소, 열 주소, 바이트주소}, 2)제1색차화소 주소 = 프레임 인덱스×프레임 옵셋+색차 옵셋+{Y좌표>>1, X좌표>>1, 색차화소 종류}= {행 주소, 뱅크 주소, 열 주소, 바이트주소}, 3)제2색차화소 주소 = 제1색차화소 주소 +1임'의 식에 따라 프레임 인덱스, 신호 종류 및 X, Y좌표로 구성되는 영상 획득 정보로부터 휘도신호 주소와 제1색차 신호 주소 및 제2 색차신호 주소를 획득하는 것을 특징으로 한다.
상기 프레임 메모리 제어부는 뱅크 인터리빙 방식으로 액세스를 수행하되, 라인 디스턴스(Line Distance)를 수정하여 액세스 단위를 변경하며, 필드 액세스 라인 디스턴스는 프레임 액세스 라인 디스턴스의 두 배인 것을 특징으로 한다.
이와 같이 본 발명의 영상 처리 장치 및 영상 처리를 위한 프레임 메모리 관리 방법은 프레임 메모리 액세스시에, 화면 표시를 위한 데이터 재정렬이 필요없고 블록단위로 프레임 메모리 액세스할 때 주소 계산 방법이 간단하며, 메모리 구조가 직관적이고, 지연없이 연속적으로 블록단위의 프레임 데이터를 액세스 할 수 있도록 해준다.
그리고, 단일 프레임 메모리 구조에서 프레임 메모리를 액세스 할 때 라인 디스턴스를 수정하여 매크로블럭 단위로 프레임/필드를 선택해서 액세스 할 수 있으므로 격행 주사를 효율적으로 지원할 수 있도록 한다.
또한 영상 처리 장치 및 외부 메모리 설정을 참조하여 구성에 적합한 프레임 메모리 구조를 자동으로 생성할 수 있도록 한다.
뿐 만 아니라, 분산되어 관리되는 프레임 메모리 관련기능을 통합하여 보다 간단하고 효율적으로 관리할 수 있도록 한다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
또한, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도3은 본 발명의 일실시예에 따른 영상 처리 장치의 개략적인 구성을 도시한 도면이다.
도3을 참조하면, 본 발명의 디코더는 호스트시스템(200)와 연결되는 호스트 인터페이스 버스(110), 스트림 버퍼(121), 스트림 제어부(122), 화면간 예측부(Inter Prediction)(130), 화면내 예측부(Intra Prediction)(140), 역변환/역양자화부(Inverse Transform/Inverse Quantization)(150), 화면재구성부(160), 디블로킹 필터(170), 프레임 메모리 제어부(180), 및 영상 출력부(Video Ouput)(190)를 포함하여 구성된다.
여기서 호스트 시스템(200)은 응용프로그램이 실행되는 프로세서 및 주변장치를 포함하며, H.264/AVC 코덱과 같은 코덱 장치에 포함되거나 외부 시스템일 수 있다. 또한, 프레임 메모리(400)은 2개 이상의 뱅크를 가지는 메모리 장치로 상기 코덱 장치에 포함되거나 외부 메모리일 수 있다. 일예로 코덱 장치에 포함될 경우에는 임베디드(embedded) DRAM으로 구현되며, 외부에 장착될 경우는 SDR(Single Data Rate) SDRAM 또는 DDR(Dual Data Rate) SDRAM으로 구현될 수 있다
이하에서는 각 구성요소의 기능을 살펴보기로 한다.
호스트 인터페이스 버스(110)는 호스트 시스템(200)로부터 제공되는 각각의 기능모듈에 대한 초기화 정보 및 영상 데이터 스트림을 전송하거나, 영상 출력부(190)로부터 출력되는 영상 데이터 스트림을 호스트 시스템(200)에 전송한다.
스트림 버퍼(121)는 호스트 인터페이스 버스(110)로부터 전송되는 영상 데이터 스트림을 획득 및 버퍼링한 후, 스트림 제어부(122)에 제공하고, 스트림 제어부(122)는 영상 데이터 스트림을 해석하여 각각의 모듈로 해석된 데이터를 분배한다.
화면간 예측부(130)는 스트림제어부(122)에서 받은 움직임 벡터에 해당하는 영역의 데이터를 프레임 메모리(400)에서 읽어와 움직임보상 화면을 구성한 후, 화면 재구성부(160)로 보낸다.
화면내 예측부(140)는 스트림제어부(122)에서 받은 데이터를 토대로 예측 화면을 구성하여 화면 재구성부(160)로 보낸다.
역변환/역양자화부(150)는 스트림 제어부(122)에서 받은 데이터를 토대로 차화면(residual)을 구성하여 화면 재구성부(160)로 보낸다.
화면 재구성부(160)는 모드에 따라서 화면내 예측화면 또는 움직임보상 화면과 차화면을 더해서 원본 화면을 재구성하여 디블록킹 필터(170)로 보낸다.
디블록킹 필터(170)는 프레임 메모리(400)에서 주변블록의 화면을 읽어들여서 재구성된 화면과 함께 필터링을 수행하여, 블록의 경계면에서 나타나는 블록 왜곡을 제거한 후 프레임 메모리(400)에 저장한다.
프레임 메모리 제어부(180)는 화면간 예측부(130), 디블록킹 필터(170), 및 영상 출력부(190)에서 독출 요청이 오는 경우에는 해당 데이터를 프레임 메모리(400)에서 읽어서 해당 모듈로 전송하거나, 디블록킹 필터(170)에서 기록 요청이 오는 경우에는 해당 데이터를 프레임 메모리(400)에 저장한다. 이때, 프레임 메모리에 대한 데이터 전송은 블록 단위로 이루어진다.
영상 출력부(190)는 프레임 메모리(400)에 저장된 화면을 읽은 후 RGB 형식으로 변환한 뒤 호스트 시스템(200)으로 보낸다.
호스트 시스템(200)은 영상 출력부(190)에서 받은 데이터를 화면표시장치(300)에 표시한다.
H.264/AVC에서는 화소라인들을 두 개의 필드(짝수라인과 홀수라인)로 나누어 주사하는 격행 주사를 지원하며, 픽쳐 단위로 프레임/필드를 선택하는 Picture-AFF(픽쳐 적응적 프레임/필드 부호화) 방식과, 매크로 블록 단위로 프레임/필드를 선택하는 MB-AFF(매크로 블록 적응형 프레임/필드 부호화) 방식이 있다.
따라서 격행 주사를 효율적으로 지원하기 위해서는 필드 및 프레임을 프레임 메모리에 기록 및 독출할 때 매크로블럭 단위로 프레임/필드를 액세스 할 수 있어야 한다.
H.264/AVC에서 사용되는 영상포맷은 색차(Croma)신호가 휘도(Luma)신호의 가로세로 각각 1/2의 해상도를 가지는 YCbCr4:2:0 포맷이 주로 사용된다.
도4는 프레임과 상위/하위 필드의 휘도 및 색차 샘플위치를 도시한 도면이다.
이때, Y는 휘도(Luma)를 나타내고 Cb는 휘도와 파랑의 색차를 나타내며 Cr은 휘도와 빨강의 색차를 나타낸다. 16×16 매크로 블록 하나는 16×16의 휘도신호와 8×8의 Cb신호와, 8×8의 Cr신호로 구성되며, 각각 독립적으로 처리된다.
도5는 W×H 해상도를 가지는 프레임 메모리 공간에서 전송될 영상 블록을 도시한 도면이다. 이때, 상기한 도 2b와 같이 주소계산을 간단하게 하기 위해서 프레임 메모리 공간에서 영상 폭(W)은 2n(n=1,2,3…)으로 제한한다.
실제 영상폭이 2n이 아닐 경우 실제 영상폭 다음 데이터부터 2n까지 사용하지 않는다. 각 화소가 N 바이트로 구성되어 있다면, WH 해상도의 원영상은 H개의 NW 바이트를 가지는 2차원 배열로 프레임 메모리에 저장된다.
따라서 원영상을 구성하는 각 라인(혹은 row)의 간격은 NW 바이트가 되며 이를 LD(Line Distance)로 정의한다. 전송될 블록의 수평해상도가 W1이라면, 전송될 블록의 한 라인에 대응하는 데이터양은 NW1 바이트가 되며, 전송될 블록의 수직해 상도는 IH(Image Height)로 정의할 수 있다.
이에 각 화소가 N 바이트로 구성된 WH 해상도의 프레임메모리에서 W1×IH 해상도를 가지는 임의의 영상블록을 정의하기 위해서 필요한 파라미터는 N, W, W1, IH 등이 된다.
도6은 1차원 및 2차원 메모리 전송 구조를 설명하기 위한 도면이다
도 6에서, 1차원 DMA(direct memory access)는 연속적인 주소를 가지는 BL(Burst Length) 개의 데이터 전송을 의미하고, 2차원 DMA는 반복적인 1차원 DMA를 나타낸다. 1차원 DMA에 의해서 전송되는 용량은 데이터 크기에 BL을 곱해서 계산되며, 각 1차원 DMA의 시작 주소는 일정한 간격을 가지고 있다.
본 발명에서는 영상 처리 장치 및 외부 메모리 설정을 참조하여 구성에 적합한 프레임 메모리 구조를 자동으로 생성하도록 한다.
본 발명에서는 영상 처리 장치 및 외부 메모리 설정을 참조하여 구성에 적합한 프레임 메모리 구조를 자동으로 파악할 수 있다.
즉, 메모리 구성 정보(페이지 사이즈, 버스 폭, 뱅크 숫자, 행 숫자) 및 영상 처리 정보(영상의 폭과 높이)에 따라서 도8에서와 같이 최적화된 프레임 메모리 구조(한 페이지에 저장되는 영상라인, 색차 신호옵셋, 프레임 옵셋, 라인 디스턴스, 최대 프레임수 등)를 생성한다. 이때, 프레임 옵셋 및 색차 신호옵셋은 자동으로 구성하거나 사용자가 입력할 수 있다.
메모리 구성 정보는 영상 처리 장치의 초기화시 입력되며, 영상 처리 정보는 디코딩시에는 호스트 시스템(200)에서 제공하는 스트림에서 추출하고 인코딩시에는 인코딩 파라미터에서 추출할 수 있다.
각각의 프레임 구성 정보는 수학식1에 따라 계산되어 내부 레지스터에 저장되며, 저장된 구성 정보는 외부에서 읽어서 메모리 액세스에 사용할 수 있다.
1) 영상폭 = 매크로 블록 단위의 픽셀 폭 × 16,
2) 영상높이 = 매크로 블록 단위의 픽셀 높이 × 16,
4)필드 액세스 라인 디스턴스 = 프레임 액세스 라인 디스턴스 × 2
5)페이지 당 영상 라인 수 = 페이지 사이즈 / 프레임 액세스 라인 디스턴스
6)색차 신호 옵셋 = 영상높이 / 페이지 당 영상 라인 / 뱅크 수
7)프레임 옵셋 = 색차옵셋 ×3 / 2
10)최대 프레임 수 = floor(메모리 행 수 / 프레임 옵셋)
상기 Ceil은 올림 값(이 숫자보다 크거나 같은 가장 가까운 정수), 상기 floor는 내림 값 (이 숫자보다 작거나 같은 가장 가까운 정수)이다.
도7은 본 발명의 일실시예에 따른 매크로 블록의 저장 주소 및 저장 위치를 나타낸 도면으로, 도7의 (a) 및 (b)에서는 32 bit 인터페이스를 가지며, 페이지 크기가 4096byte인 DRAM으로 구현되는 프레임 메모리를 일예로 들어 설명한다.
도7의 (a) 에서는 좌측 상단의 0번 매크로블럭(MB#0)의 X 좌표 및 Y 좌표를 표시하였으며, 하나의 화소는 8bit로 가정하고 16bit에 2개, 32bit에 4개의 화소가 들어있는 것으로 가정하여 첫번째 화소의 좌표만 도시하였다.
그리고 휘도 y0_x0는 y=0, x=0,1,2,3의 휘도화소 4개로 구성되어 있고, 색차 y0_x0는 y=0, x=0,1 의 색차화소 2개로 구성되어 있다.
도7의 (a) 와 같은 저장 주소를 가지는 0번 매크로 블록(MB#0)은 도7b에서와 같이 프레임 메모리에 저장된다.
도7의 (b) 을 참조하면, 0번 매크로 블록(MB#0)이 실제 프레임 메모리에 저장될 때는 휘도신호와 색차 신호가 분리되어 저장되며, 제1색차신호(Cb)와 제2색차신호(Cr)는 바이트(byte)단위로 인터리빙되어 저장된다.
도8은 본 발명의 일실시예에 따른 프레임 매모리 맵의 일예를 도시한 도면으로, 도8에서는 페이지 사이즈가 4096byte(1024word)이고, 4096개의 페이지로 이루어진 32bit(4 Byte) 인터페이스를 가지는 DRAM을 사용한 경우, 휘도 및 색차신호로 화소당 8bit를 사용하고, 화면 사이즈가 휘도 기준으로 2048×2048화소인 8장인 영상을 처리하기 위한 프레임 메모리 맵을 일예로 들어 설명한다.
이러한 프레임 메모리 맵은 앞서 설명한 프레임 메모리 구조를 참조하여 구성된다. 즉, 프레임 메모리 구조 파악시 계산된 최대 프레임수에 따라 프레임 개수를 결정하고, 페이지당 영상 라인 수에 따라 한 개의 뱅크를 다수개의 서브 뱅크로 분할하고, 프레임 옵셋 및 색차 신호 옵셋에 따라 휘도신호와 색차 신호를 분리하 여 저장하도록 한다.
예를 들어, 프레임 메모리 구조 파악시 최대 프레임수는 8이고, 페이지당 영상 라인 수는 2개이고, 프레임 옵셋은 2n 이고, 색차 신호옵셋은 26'h0400000라고 계산되면, 프레임 메모리 맵은 도8에서와 같은 형태로 구성된다.
계속하여 도8을 참조하면, 프레임 메모리 맵은 8개의 프레임으로 구성되고, 각 뱅크는 페이지당 영상 라인 (즉, DRAM의 페이지 사이즈와 프레임 액세스 라인 디스턴스(LD, Line Distance))에 따라 2개의 서브 뱅크로 분할된다. 프레임 옵셋은{행 주소[11:0]), 뱅크 주소[1:0], 열 주소[9:0], 바이트주소[1:0]} = {12'h200,2'h0,10'h0,2'b00} = 26'h0800000으로 2n이 되도록 지정되고, 색차 신호옵셋은 {행 주소[11:0]), 뱅크 주소[1:0], 열 주소[9:0], 바이트주소[1:0]} = {12'h100,2'h0,10'h0,2'b00} = 26'h0400000으로 지정된다.
도8에서는 하나의 뱅크가 2개의 서브뱅크로 분리되며 서브뱅크의 한 행에 영상의 한 라인이 저장되므로, DRAM의 한 페이지에 영상의 두 라인이 저장되며, 매 두 라인마다 뱅크가 변경된다.
도8에서 사용된 메모리가 가상의 메모리이며, 모바일용으로 사용되는 저해상도 영상의 경우(예를 들어 QVGA(320×240)의 경우), 페이지사이즈가 1KB인 상용화된 단품 메모리를 이용하여 두 라인 이상의 데이터를 하나의 페이지에 저장 가능하다. 그리고, 고해상도 영상의 경우, 8bit 인터페이스와 페이지사이즈가 1KB인 단품 메모리 4개를 병렬로 조합하거나 16bit 인터페이스와 페이지사이즈가 2KB인 단품 메모리 4개를 병렬로 조합하여, 페이지 사이즈가 4KB이고 32bit 인터페이스를 가지 는 메모리를 만들 수 있다. 또한 모듈형 메모리를 사용해서 두 라인 이상의 데이터를 하나의 페이지에 저장할 수도 있다.
본 발명에서는 라인 디스턴스를 조절함으로써 격행 주사를 지원하기 위한 프레임/필드 액세스를 수행하도록 한다. 프레임단위의 액세스를 할 경우 라인 디스턴스는 영상의 한라인 사이즈가 되며, 필드 액세스를 할 경우 라인 디스턴스는 영상의 두 라인 사이즈가 된다.
도8에서는 프레임 액세스시에는 라인 디스턴스가 0x200(512)이 되며, 필드 액세스 시에는 라인 디스턴스가 0x400(1024)이 된다.
도8에서와 같이 하나의 뱅크를 여러 개의 서브뱅크로 나누어 사용할 경우, 하나의 뱅크에 여러 영상 라인이 연속으로 저장되므로 블록 단위로 액세스시에 행전환 횟수가 줄어들어 행전환시 필요한 지연시간을 줄일 수 있으며, 필드 액세스(0,2,4,6,… 또는, 1,3,5,7,…) 시에도 매 번의 행전환 마다 4개의 뱅크를 순차적으로 사용하게 되므로 뱅크 인터리빙(Interleaving) 효율도 증대해줄 수 있다.
도8에서와 같이 구성되는 프레임 메모리 맵의 주소는 비트단위결합 방식을 통해 매운 간단하게 계산될 수 있다. 이때, 숫자표기는 Verilog HDL의 숫자표기 형식을 따른다.
먼저, 프레임 옵셋이 2n인 경우, 원하는 영상 신호가 저장된 주소는 수학식2에 따른 비트단위 결합을 통해서 간단하게 구해질 수 있다.
1) 휘도화소 주소 = {프레임 인덱스, 휘도화소, Y좌표, X좌표} = {행 주소, 뱅크 주소, 열 주소, 바이트주소},
2) 제1색차화소 주소 = {프레임 인덱스, 색차화소, Y좌표, X좌표, 색차화소 종류} = {행 주소, 뱅크 주소, 열 주소, 바이트주소},
3) 제2색차화소 주소 = 제1색차화소 주소 +1.
1번 프레임의 X좌표가 32, Y좌표가 15인 화소를 예로 들어 설명하면, 휘도신호의 저장 주소는 이하의 수학식3에서와 같이 계산되어, 26'h0807820의 주소를 가지며 DRAM의 3번 뱅크의 201행의 208번째(서브뱅크31의 8번째) 열의 첫번째 바이트에 저장된다.
제1색차신호는 DRAM의 3번 뱅크의 300행의 208번째(서브뱅크31의 8번째) 열의 첫번째 바이트에 저장되며, 제2색차신호는 같은 위치의 두번째 바이트에 저장된다.
1)프레임 인덱스[2:0]= 3'b001
2)Y자표[10:0] = 11'd15 = 11'h00F = 11'b000_0000_1111
3)X좌표[10:0] = 11'd32 = 11'h020 = 11'b000_0010_0000
4) 휘도주소
={프레임 인덱스[2:0], 1'b0, Y자표[10:0], X좌표[10:0]}
={3'b001,1'b0,11'b000_0000_1111,11'b000_0010_0000}=26'h0807820 = {12'h201,2'h3,10h208,2'h0}
={행 주소[11:0], 뱅크 주소[1:0], 열 주소[9:0], 바이트주소[1:0]}.
이때, 1'b0는 휘도신호를 의미함.
5)제1색차주소
={프레임 인덱스[2:0], 2'b10, Y자표[10:1], X좌표[10:1] ,1'b0}
={3'b001,1'b10,10'b000_0000_111,9'b000_0010_000,1'b0}
={12'h201,2'h3,10h208,2'b00}
={행 주소[11:0]), 뱅크 주소[1:0], 열 주소[9:0], 바이트주소[1:0]}
이때, 2'b10는 색차신호를 의미하고, 1'b0는 제1색차신호임을 의미함.
6)제2색차주소
={프레임 인덱스[2:0], 2'b10, Y자표[10:1], X좌표[10:1] ,1'b1}
={3'b001,1'b10,10'b000_0000_111,9'b000_0010_000,1'b1}
={12'h201,2'h3,10h208,2'b01}
={행 주소[11:0]), 뱅크 주소[1:0], 열 주소[9:0], 바이트주소[1:0]}
=제1색차주소 +1
이때, 2'b10는 색차신호를 의미하고, 1'b1는 제2색차신호임을 의미함.
다음으로, 프레임 옵셋이 2n인 경우에는 이하의 수학식4에 따라 구해질 수 있다.
1)휘도주소
= 프레임 인덱스×프레임 옵셋+{Y좌표, X좌표}
= {행 주소, 뱅크 주소, 열 주소, 바이트주소}
2)제1색차주소
= 프레임 인덱스*프레임 옵셋+색차옵셋+{Y좌표>>1, X좌표>>1,1'b0}
= {행 주소, 뱅크 주소, 열 주소, 바이트주소}
이때, 1'b0는 제1색차신호임을 의미함.
3)제2색차주소
= 프레임 인덱스×프레임 옵셋+색차옵셋+{Y좌표>>1, X좌표>>1,1'b1}
= {행 주소, 뱅크 주소, 열 주소, 바이트주소}
= 제1색차주소 +1
이때, 1'b1는 제2색차신호임을 의미함.
상기에서 (프레임인덱스×프레임 옵셋)은 수학식5에서와 같이 (이전 프레임 옵셋 + 프레임 옵셋)으로 치환가능하며 덧셈기를 이용하여 미리 계산된 값을 사용할 수 있다.
1)프레임 0 옵셋 = 프레임버퍼 베이스 어드레스
2)프레임 1 옵셋 = 프레임 0 옵셋 + 프레임 옵셋
…
n)프레임 n 옵셋 = 프레임 n-1 옵셋 + 프레임 옵셋
본 발명의 구성에 따르면 프레임 메모리의 서로 다른 행에 대하여 연속적인 데이터 액세스가 발생하더라도 초기 데이터 지연을 제외하면 프레임 메모리의 행 변환을 위한 지연없이 연속적으로 액세스가 가능하다.
도 9는 H.264/AVC 에서 휘도4×4블럭에 대한 움직임 보상을 위하여 중간화소 계산을 위한 주변화소를 포함하여 9×9화소를 전송하는 싸이클을 도시한 도면이다.
도 9의 (a) 및 (b)에서는, 16bit 인터페이스를 가진 DDR SDRAM의 타이밍을 기준으로 지연시간을 계산하였으며, 버스트 크기(burst Length)는 4를 기준으로 하고, 한 클럭에 32bit(16bit × 2) 데이터 전송을 수행한다고 가정한다.
도 9의 (a) 는 프레임버퍼 구조에서 프레임 단위의 Luma 4×4 움직임 보상을 위한 9(3word)×9 데이터 전송 싸이클을 도시한 도면으로, 이를 참조하면 한 행에서 두 라인의 영상 데이터를 연속으로 독출하고 다음라인은 다른 뱅크에서 독출하여, 이전의 메모리액세스에 지연이 숨겨짐을 알 수 있다.
이에 총 81화소를 독출하기 위해서는 워드단위로 27개의 데이터를 필요하며, 27개의데이터 싸이클과 초기지연 6싸이클을 합하여 총 33싸이클이 소요된다.
도 9의 (b) 는 프레임버퍼 구조에서 필드 단위의 Luma 4×4 움직임 보상을 위한 9(3word)×9 데이터 전송 싸이클을 도시한 도면으로, 도9b에서는 매 라인 변경마다 뱅크전환이 이루어지며, 총 전송 싸이클은 프레임 액세스 싸이클과 같은 33싸이클임을 알 수 있다.
도 10는 H.264/AVC 에서 색차 4×4블럭에 대한 움직임 보상을 위하여 중간화소 계산을 위한 주변화소를 포함하여 3×3화소를 전송하는 싸이클을 도시한 도면이다.
제1색차화소와 제2색차화소는 도8에서 도시된 바와 같이 같은 영역에 저장되므로, 한 번의 독출 동작을 통해 제 1색차화소와 제2색차화소를 동시에 읽어온다.
그리고 프레임 액세스나 필드 액세스시, 모두 초기 데이터 지연 6싸이클과 데이터 전송 싸이클 6싸이클이 소요되어 총 12싸이클에 제1색차 및 제2색차를 전송할 수 있다.
도11은 데이터 블록 전송이 연속적으로 이루어질 경우, 뱅크 인터리빙에 의하여 데이터 전송시 발생하는 초기지연 6싸이클이 이전의 데이터 전송 싸이클에 의해 숨겨지는 것을 도시하였다.
도 11과 같이 3×3화소의 색차 신호블록 전송이 연속으로 이루어질 경우 두 번째 연속되는 데이터 전송에서는 초기지연은 숨겨지고 6개의 데이터 전송 싸이클만 소요된다.
움직임 보상에서 매크로 블록이 모두 4×4 블록이 코딩된 가장 극단적인 경우를 예로 들면, 하나의 매크로 블록에 대한 움직임을 보상하기 위해서는 16번의 휘도 9×9 전송과 16번의 색차 3×3 전송이 연속적으로 이루어진다.
이 경우, 이하 [표1]에 나타난 바와 같이 초기 지연 싸이클(6)과 16번의 휘도 데이터 전송 싸이클(27)과 16번의 색차데이터 전송 싸이클(6)이 소요되어, 총 534 전송 싸이클이 소요된다.
그 결과, 지연 싸이클은 전체 데이터 전송 싸이클 중 단 1.1% 만을 차지하게 되어, 메모리가 제공하는 대역폭의 98.9%를 실제 데이터 전송에 사용할 수 있게 된다.
싸이클 종류 |
소요 싸이클(clock) |
비중(%) |
지연 싸이클 |
6 |
1.1 |
데이터 싸이클 |
16×27 + 16×6=528 |
98.9 |
총 싸이클 |
6 + 528 |
100 |
이상에서 설명된 기능들은 도3의 영상 처리 장치내에 구비된 프레임 메모리 제어부(180)에 모두 수행되므로, 종래에 분산되어 관리되던 프레임 메모리 관련 기능을 통합하여 관리할 수 있다. 앞서 설명한 바와 같이 몇 개의 파라메타(parameter)만으로 이를 통합 관리할 수 있어 프레임 메모리 관리 기능 또한 보다 간단하게 수행할 수 있게 된다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.