상기한 기술적 과제를 달성하기 위한 본 발명에 따른 영상 변환 장치는, 영상 변환부, 변환 동작 제어부, 및 어드레스 발생부를 포함한다. 영상 변환부는 판독(read) 제어 신호, 판독 어드레스 신호, 및 입출력 제어 신호에 기초하여, 메모리에 저장된 복수의 소스 프레임을 포함하는 소스 영상을 판독한다. 영상 변환부는 판독한 소스 영상을 모드 선택 신호에 기초하여 변환한다. 영상 변환부는 변환 영상을 기입(write) 제어 신호, 기입 어드레스 신호, 및 입출력 제어 신호에 기초하여, 다시 메모리에 기입한다. 변환 동작 제어부는 CPU로부터 변환 모드 정보와 복수의 소스 프레임 각각의 사이즈 정보를 포함하는 영상 변환 정보를 수신한다. 변환 동작 제어부는 변환 모드 정보에 기초하여, 복수의 영상 변환 모드 중 하나를 선택하기 위한 모드 선택 신호를 출력한다. 변환 동작 제어부는 어드레스 발생 완료 신호에 응답하여 입출력 제어 신호를 출력한다. 변환 동작 제어부는 변환 완료 신호에 응답하여 판독 또는 기입 제어 신호를 출력한다. 변환 동작 제어부는 소스 프레임 각각의 사이즈 정보에 기초하여, 판독 및 기입 어드레스 변수를 출력한다. 어드레스 발생부는 모드 선택 신호와 판독 제어 신호에 응답하여, 판독 어드레스 변수를 연산하고, 그 연산 결과로서, 선택된 영상 변환 모드에 대응하는 판독 어드레스 신호를 출력한다. 어드레스 발생부는 모드 선택 신호와 기입 제어 신호에 응답하여, 기입 어드레스 변수를 연산하고, 그 연산 결과로서, 선택된 영상 변환 모드에 대응하는 기입 어드레스 신호를 출력한다.
복수의 소스 프레임 각각은 복수의 소스 블록을 포함하고, 변환 영상을 이루는 복수의 변환 프레임 각각은 복수의 변환 블록을 포함한다.
복수의 소스 블록 각각, 또는 복수의 변환 블록 각각은 설정된 수의 화소 데이터들을 포함하고, 하나의 소스 또는 변환 블록에 포함되는 화소 데이터들은 복수의 로우 화소 라인들과 복수의 칼럼 화소 라인들을 형성한다.
어드레스 발생부는, 하나의 소스 블록에 대응하는 판독 어드레스 신호 또는 하나의 변환 블록에 대응하는 기입 어드레스 신호를 출력할 때마다, 어드레스 발생 완료 신호를 출력한다.
영상 변환부는, 하나의 소스 블록 단위로 판독 및 변환 동작을 실행하고, 하나의 변환 블록 단위로 기입 동작을 실행하고, 복수의 소스 블록들에 대한 영상 변환이 모두 완료될 때까지, 판독 동작, 변환 동작, 및 기입 동작을 반복하여 실행하고, 변환 동작을 완료할 때마다 변환 완료 신호를 출력한다.
상기한 다른 기술적 과제를 달성하기 위한 본 발명에 따른 영상 변환 방법은, 변환 동작 제어부에 의해, CPU로부터 수신되는 영상 변환 정보에 기초하여, 복수의 영상 변환 모드들 중 하나를 선택하는 단계; DMA 입출력부에 의해, 소스 영상에 포함되는 복수의 소스 블록들 중 변환될 하나의 소스 블록을 메모리로부터 판독하는 단계; 화소 위치 변경부에 의해, 판독된 소스 블록을 선택된 영상 변환 모드에 대응하게 변환하여, 변환 블록을 발생하는 단계; 및 DMA 입출력부에 의해, 변환 블록을 메모리에 기입하는 단계를 포함한다.
소스 블록의 판독 단계는, 어드레스 발생부에 의해, 영상 변환 정보에 기초하여, 하나의 소스 블록에 대응하는 판독 어드레스 신호를 발생하는 단계; DMA 입출력부에 의해, 메모리로부터 판독 어드레스 신호에 대응하는 소스 블록의 화소 데이터들을 판독하는 단계; 및 판독된 화소 데이터들을 읽기 버퍼부에 저장하는 단계를 포함한다.
소스 블록, 또는 변환 블록은 설정된 수의 화소 데이터들을 포함하고, 하나의 소스 또는 변환 블록에 포함되는 화소 데이터들은 복수의 로우 화소 라인들과 복수의 칼럼 화소 라인들을 형성한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 3은 본 발명의 일 실시예에 따른 영상 변환 장치를 포함하는 영상 처리 시스템의 개략적인 블록 도이다. 도 3을 참고하면, 영상 처리 시스템(100)은 메모 리(101), CPU(102), 영상 출력 장치(103), 디스플레이 장치(104), 및 영상 변환 장치(200)를 포함한다. 메모리(101)는 소스(source) 영상(P1) 또는 변환 영상(P2)을 저장한다. 여기에서, 소스 영상(P1)은 복수의 소스 프레임(frame)(S1∼SK)(K는 정수)을 포함하고, 복수의 소스 프레임(S1∼SK) 각각은 복수의 소스 블록(예를 들어, SB1∼SBJ, 도 8 참고)(J는 정수)을 포함한다. 또, 변환 영상(P2)은 복수의 변환 프레임(F1∼FK)(K는 정수)을 포함하고, 복수의 변환 프레임(F1∼FK) 각각은 복수의 변환 블록(예를 들어, CB1∼CBJ, 도 12 참고)(J는 정수)을 포함한다. CPU(102)는 소스 영상(P1)에 대한 영상 변환 정보(CON_IF)를 영상 변환 장치(200)에 출력한다. 또, CPU(102)는 영상 변환 장치(200)로부터 수신되는 동작 완료 신호(OPE_END)에 응답하여, 출력 제어 신호(OCTL)를 영상 출력 장치(103)에 출력한다. 영상 출력 장치(103)는 출력 제어 신호(OCTL)에 응답하여, 메모리(101)로부터 변환 영상(P2)을 판독하고, 그 판독한 변환 영상(P2)을 디스플레이 장치(104)에 의해 표시 가능한 형태로 처리하여 디스플레이 장치(104)에 출력한다. 영상 변환 장치(200)는 영상 변환 정보(CON_IF)에 기초하여, 복수의 영상 변환 모드 중 하나를 선택하고, 그 선택된 영상 변환 모드에 따라 메모리(101)로부터 하나의 소스 블록 단위로 판독하여 변환하고, 그 변환 블록을 메모리(101)에 기입한다. 이를 위해, 영상 변환 장치(200)는 해당 블록에 대응하도록 판독 어드레스 신호(RADD) 및 기입 어드레스 신호(WADD)를 각각 변경시켜 발생한다. 한편, 선택된 영상 변환 모드에 따라, 영상 변환 장치(200)가 각 변환 블록을 메모리(101)에 기입하는 순서가 변경될 수 있다.
다음으로, 도 4를 참고하여, 영상 변환 장치(200)의 구성 및 구체적인 동작 을 좀 더 상세히 설명한다. 도 4는 본 발명의 일 실시예에 따른 영상 변환 장치의 블록 도이다. 영상 변환 장치(200)는 인터페이스 장치(210), 변환 동작 제어부(220), 어드레스 발생부(230), 및 영상 변환부(240)를 포함한다. 또, 영상 변환부(240)는 DMA(Direct Memory Access) 입출력부(241), 읽기 버퍼부(242), 화소 위치 변경부(243), 및 쓰기 버퍼부(244)를 포함한다.
인터페이스 장치(210)는 CPU(102)와 변환 동작 제어부(220) 간의 송수신 신호들을 상호 인터페이스 한다. 변환 동작 제어부(220)는 CPU(102)로부터 수신되는 영상 변환 정보(CON_IF)에 기초하여, 복수의 영상 변환 모드 중 하나를 선택하고, 그 선택된 영상 변환 모드에서 소스 영상(P1)의 변환 및 메모리(101)의 액세스를 위한 제어 신호들을 출력한다. 여기에서, 영상 변환 정보(CON_IF)는 변환 모드 정보(MODE)와 소스 프레임들 각각의 사이즈 정보(FSIZE)를 포함한다. 변환 모드 정보(MODE)는 소스 영상에 대한 변환 방식을 나타내는 것으로서, 상기 변환 방식으로는 노말(normal) 수평 플립(flip) 변환, 노말 수직 플립 변환, 노말 수평/수직 플립 변환, 회전 변환, 회전 수평 플립 변환, 회전 수직 플립 변환, 및 회전 수평/수직 플립 변환이 있다. 노말 수평 플립 변환은 소스 영상을 수평 방향으로 뒤집어 변환하는 것이고, 노말 수직 플립 변환은 소스 영상을 수직 방향으로 뒤집어 변환하는 것이다. 또, 노말 수평/수직 플립 변환은 소스 영상을 수평 방향으로 뒤집은 후, 다시 수직 방향으로 뒤집어 변환하는 것이다. 회전 변환은 소스 영상을 설정된 각도로 회전시켜 변환하는 것이고, 회전 수평 플립 변환은 소스 영상을 설정된 각도로 회전시킨 후, 수평 방향으로 뒤집어 변환하는 것이다. 회전 수직 플립 변환은 소스 영상을 설정된 각도로 회전시킨 후, 수직 방향으로 뒤집어 변환하는 것이고, 회전 수평/수직 플립 변환은 소스 영상을 설정된 각도로 회전시킨 후, 수평 방향 및 수직 방향의 순서로 연속적으로 뒤집어 변환하는 것이다.
한편, 상기 제어 신호들은 판독 제어 신호(RCTL), 기입 제어 신호(WCTL), 모드 선택 신호(SMODE), 및 입출력 제어 신호(DMA_IO)를 포함한다. 변환 동작 제어부(220)는 변환 모드 정보(MODE)에 기초하여, 복수의 영상 변환 모드 중 하나를 선택한다. 여기에서, 상기 복수의 영상 변환 모드는 노말 수평 플립 모드, 노말 수직 플립 모드, 노말 수평/수직 플립 모드, 회전 모드, 회전 수평 플립 모드, 회전 수직 플립 모드, 및 회전 수평/수직 플립 모드를 포함하고, 모드 선택 신호(SMODE)는 복수의 비트들을 포함할 수 있다. 변환 동작 제어부(220)는 상기 변환 모드 정보(MODE)에 기초하여, 노말 수평 플립 모드, 노말 수직 플립 모드, 노말 수평/수직 플립 모드, 회전 모드, 회전 수평 플립 모드, 회전 수직 플립 모드, 및 회전 수평/수직 플립 모드 중 어느 하나를 선택하고, 그 선택된 영상 변환 모드에 대응하는 비트 값을 갖는 모드 선택 신호(SMODE)를 출력한다.
또, 변환 동작 제어부(220)는 소스 프레임 각각의 사이즈 정보(FSIZE)에 기초하여, 판독 어드레스 변수(RE_VAR) 및 기입 어드레스 변수(WT_VAR)를 출력한다. 변환 동작 제어부(220)는 화소 위치 변경부(243)로부터 수신되는 변환 완료 신호(CON_END)에 응답하여, 판독 제어 신호(RCTL) 또는 기입 제어 신호(WCTL)를 출력한다. 이를 좀 더 상세히 설명하면, 예를 들어, 변환 완료 신호(CON_END)의 로직 값이 소스 블록의 변환이 완료되지 않은 것을 나타낼 때, 변환 동작 제어부(220)는 판독 제어 신호(RCTL)를 출력한다. 또, 변환 완료 신호(CON_END)의 로직 값이 소스 블록의 변환이 완료된 것을 나타낼 때, 변환 동작 제어부(220)는 기입 제어 신호(WCTL)를 출력한다.
변환 동작 제어부(220)는 CPU(102)로부터 소스 영상(P1)에 대한 컬러(color) 정보(COL)를 더 수신할 수 있다. 변환 동작 제어부(220)는 컬러 정보(COL)를 수신하면, DMA 입출력부(241)에 컬러 요청 신호(COL_REQ)를 출력한다. 그 결과, 영상 변환부(240)가 메모리(101)로부터 소스 영상(P1)에 대한 컬러 데이터(COL_DAT)를 판독하고 변환하여, 그 변환된 컬러 데이터(NCOL_DAT)를 메모리(101)에 기입한다. 통상적으로, 컬러 데이터(COL_DAT)는 소스 영상(P1)과 분리된 형태로 메모리(101)에 저장되기 때문에, 변환 영상(P2)에 컬러 성분을 적용할 경우, 영상 변환 장치(200)는 소스 영상(P1)에 대한 판독, 변환, 및 기입 동작을 완료한 후, 추가로 컬러 데이터(COL_DAT)에 대한 판독, 변환, 및 기입 동작을 실행할 수 있다.
변환 동작 제어부(220)는 어드레스 발생부(230)로부터 수신되는 어드레스 발생 완료 신호(ADD_END)에 응답하여, 입출력 제어 신호(DMA_IO)를 DMA 입출력부(241)에 출력한다. 좀 더 상세하게는, 어드레스 발생 완료 신호(ADD_END)가 어드레스의 발생이 완료되지 않은 것을 나타낼 때, 변환 동작 제어부(220)는 입출력 제어 신호(DMA_IO)를 디세이블시킨다. 그 결과, 입출력 제어 신호(DMA_IO)에 응답하여, DMA 입출력부(241)가 메모리(101)의 액세스 동작을 정지한다. 또, 어드레스 발생 완료 신호(ADD_END)가 어드레스의 발생이 완료된 것을 나타낼 때, 변환 동작 제어부(220)는 입출력 제어 신호(DMA_IO)를 인에이블시킨다. 그 결과, 입출력 제어 신호(DMA_IO)에 응답하여, DMA 입출력부(241)가 메모리(101)의 액세스 동작을 실행한다.
어드레스 발생부(230)는 모드 선택 신호(SMODE)와 판독 제어 신호(RCTL)에 응답하여, 판독 어드레스 변수(RE_VAR)를 연산하고, 그 연산 결과로서 각 소스 블록에 대응하는 판독 어드레스 신호(RADD)를 DMA 입출력부(241)에 출력한다. 또, 어드레스 발생부(230)는 하나의 소스 블록에 대응하는 판독 어드레스 신호(RADD)를 출력할 때, 어드레스 발생이 완료되었음을 나타내는 어드레스 발생 완료 신호(ADD_END)를 변환 동작 제어부(220)에 출력한다. 여기에서, 어드레스 발생부(230)는 어드레스 발생 완료 신호(ADD_END)의 로직 값을 변경시켜 출력함으로써, 어드레스 발생 동작이 완료되었음을 변환 동작 제어부(220)에 알린다. 예를 들어, 어드레스 발생 동작이 완료될 때, 어드레스 발생 완료 신호(ADD_END)가 로직 "하이" 또는 "로우"로 토글(toggle) 할 수 있다. 또한, 예를 들어, 어드레스 발생 동작이 완료되기 전에는 어드레스 발생 완료 신호(ADD_END)가 제1 로직 값(1 또는 0)을 가지며, 어드레스 발생 동작이 완료되면 어드레스 발생 완료 신호(ADD_END)가 제2 로직 값(0 또는 1)을 가질 수도 있다.
한편, 판독 어드레스 신호(RADD)는 뱅크(bank) 어드레스 신호, 로우(row) 어드레스 신호, 및 칼럼(column) 어드레스 신호를 포함하는 물리(physical) 어드레스 신호이다. 또, 어드레스 발생부(230)는 모드 선택 신호(SMODE)와 기입 제어 신호(WCTL)에 응답하여, 기입 어드레스 변수(WT_VAR)를 연산하고, 그 연산 결과로서 해당 변환 블록에 대응하는 기입 어드레스 신호(WADD)를 DMA 입출력부(241)에 출력 한다. 또, 어드레스 발생부(230)는 하나의 변환 블록에 대응하는 기입 어드레스 신호(WADD)를 출력할 때, 어드레스 발생이 완료되었음을 나타내는 어드레스 발생 완료 신호(ADD_END)를 변환 동작 제어부(220)에 출력한다. 여기에서, 판독 어드레스 신호(RADD)와 유사하게, 기입 어드레스 신호(WADD) 역시 뱅크 어드레스 신호, 로우 어드레스 신호, 및 칼럼 어드레스 신호를 포함하는 물리 어드레스 신호이다. 택일적으로, 어드레스 발생부(230)는 변환 동작 제어부(220)로부터 컬러 어드레스 변수(미도시)를 더 수신할 수 있고, 이 컬러 어드레스 변수를 연산하여, 컬러 데이터의 판독 및 기입 동작에 필요한 어드레스 신호(CADD)를 더 발생할 수 있다.
DMA 입출력부(241)는 판독 제어 신호(RCTL) 또는 기입 제어 신호(WCTL)와, 입출력 제어 신호(DMA_IO)에 응답하여 메모리(101)를 액세스한다. 좀 더 상세하게는, DMA 입출력부(241)가 판독 제어 신호(RCTL)와 입출력 제어 신호(DMA_IO)에 응답하여, 어드레스 발생부(230)로부터 수신되는 판독 어레스 신호(RADD)를 메모리(101)에 출력하여, 하나의 소스 블록(SB1∼SBJ 중 하나)의 화소 데이터들(1P1∼NPM, 도 9 참고)(N,M은 정수)을 판독한다. 또, DMA 입출력부(241)는 기입 제어 신호(WCTL)와 입출력 제어 신호(DMA_IO)에 응답하여, 하나의 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들(1P1∼NPM, 도 10a 내지 도 11d 참고)이 메모리(101)에 기입되도록, 기입 어드레스 신호(WADD)와 함께 하나의 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들(1P1∼NPM)을 메모리(101)에 출력한다. 택일적으로, DMA 입출력부(241)는 변환 동작 제어부(220)로부터 컬러 요청 신호(COL_REQ)를 수신하고, 어드레스 발생부(230)로부터 어드레스 신호(CADD)를 수신하면, 메모리(101)를 추가로 액세스한다. 이 경우, DMA 입출력부(241)는 어드레스 신호(CADD)를 메모리(101)에 출력하여, 메모리(101)로부터 컬러 데이터(COL_DAT)를 판독하거나, 또는 변환된 컬러 데이터(NCOL_DAT)를 메모리(101)에 기입한다. 또, DMA 입출력부(241)는 메모리(101)로부터 하나의 소스 블록(SB1∼SBJ 중 하나)의 화소 데이터들을 수신하여 읽기 버퍼부(242)에 출력할 때, 읽기 버퍼부(242)에 데이터 전송의 시작을 알리는 읽기 시작 신호(RE_START)를 출력한다.
메모리(101)의 기입 동작시, DMA 입출력부(241)는 쓰기 버퍼부(244)와 통신한다. 이를 좀 더 상세히 설명하면, 기입 제어 신호(WCTL)에 응답하여, DMA 입출력부(241)가 쓰기 버퍼부(244)에 전송 요청 신호(TRS)를 출력한다. 또, 메모리(101)의 기입 동작 상태에 따라, DMA 입출력부(241)가 쓰기 버퍼부(244)에 대기 요청 신호(WAIT)를 출력한다. 한편, DMA 입출력부(241)는 메모리(101)에 하나의 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들의 기입 동작이 완료될 때, 기입 완료 신호(WT_END)를 변환 동작 제어부(220)에 출력한다. 변환 동작 제어부(220)는 DMA 입출력부(241)로부터 수신되는 기입 완료 신호(WT_END)에 응답하여 초기화 신호(ITL)를 더 발생한다. 그 결과, 초기화 신호(ITL)에 응답하여, 어드레스 발생부(230), DMA 입출력부(241), 읽기 버퍼부(242), 화소 위치 변경부(243), 및 쓰기 버퍼부(244)가 각각 초기화된다. 한편, 변환 동작 제어부(220)는 기입 완료 신호(WT_END)의 수신 횟수가 설정된 값에 도달할 때, 인터페이스 장치(210)를 통하여 CPU(101)에 소스 영상(P1)의 변환 동작이 완료되었음을 알리는 동작 완료 신호(OPE_END)를 출력한다.
읽기 버퍼부(242)는 DMA 입출력부(241)로부터 수신되는 읽기 시작 신호(RE_START)에 응답하여 동작한다. 좀 더 상세하게는, 읽기 시작 신호(RE_START)에 응답하여, 읽기 버퍼부(242)가 DMA 입출력부(241)로부터 수신되는 하나의 소스 블록(SB1∼SBJ 중 하나)의 화소 데이터들을 저장한다. 이 후, 읽기 버퍼부(242)는 읽기 완료 신호(RE_END)를 화소 위치 변경부(243)에 출력하여, 하나의 소스 블록(SB1∼SBJ 중 하나)의 화소 데이터들에 대한 저장 동작을 완료하였음을 알린다.
화소 위치 변경부(243)는 읽기 완료 신호(RE_END)를 수신하면, 읽기 버퍼부(242)로부터 하나의 소스 블록(SB1∼SBJ 중 하나)의 화소 데이터들을 수신한다. 이때, 화소 위치 변경부(243)는 모드 선택 신호(SMODE)에 응답하여, 수신되는 하나의 소스 블록(SB1∼SBJ 중 하나)의 화소 데이터들의 배열 위치를 해당 영상 변환 모드에 맞게 변경한다. 화소 위치 변경부(243)는 모드 선택 신호(SMODE)에 의해 선택된 영상 변환 모드에 따라, 읽기 버퍼부(242)에 저장된 화소 데이터들을 읽어오는 순서를 변경함으로써, 화소 데이터들의 배열 위치를 변경할 수 있다. 이 후, 화소 위치 변경부(243)는 변환 완료 신호(CON_END)를 쓰기 버퍼부(244)와 변환 동작 제어부(220)에 출력하고, 하나의 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들을 쓰기 버퍼부(244)에 출력한다. 또, 화소 위치 변경부(243)는 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들의 출력 동작을 완료하면, 쓰기 버퍼부(244)에 전송 완료 신호(TR_END)를 출력한다. 그 결과, 전송 완료 신호(TR_END)에 응답하여, 쓰기 버퍼부(244)가 화소 위치 변경부(243)로부터 더 이상 수신할 화소 데이터가 없는 것으로 인식한다. 한편, 화소 위치 변경부(243)는 쓰기 버퍼부(244)로부터 전송 대기 요청 신호(TR_WAIT)를 수신할 때부터 전송 대기 해제 신호(TR_SRT)를 수신할 때까지, 해당 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들의 출력 동작을 정지한다.
쓰기 버퍼부(244)는 변환 완료 신호(CON_END)에 응답하여, 화소 위치 변경부(243)로부터 수신되는 하나의 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들을 저장한다. 쓰기 버퍼부(244)는 DMA 입출력부(241)로부터 전송 요청 신호(TRS)를 수신하면 저장된 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들을 DMA 입출력부(241)에 출력한다. 쓰기 버퍼부(244)는 저장된 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들의 출력 동작을 완료하면, DMA 입출력부(241)에 전송 완료 신호(TRS_END)를 출력한다. 그 결과, 전송 완료 신호(TRS_END)에 응답하여, DMA 입출력부(241)가 쓰기 버퍼부(244)로부터 더 이상 수신할 화소 데이터가 없는 것으로 인식한다. 한편, 쓰기 버퍼부(244)는 DMA 입출력부(241)로부터 대기 요청 신호(WAIT)를 수신하면, 차기의 전송 요청 신호(TRS)를 수신할 때까지 저장된 변환 블록(CB1∼CBJ 중 하나)의 화소 데이터들의 출력 동작을 정지한다.
도 5는 도 4에 도시된 어드레스 발생부의 상세한 블록 도이다. 도 5를 참고하면, 어드레스 발생부(230)는 변수 선택 제어부(231), 제1 변수 선택기(232), 읽기 모드 레지스터(233), 쓰기 모드 레지스터(234), 제2 변수 선택기(235), 및 주소 계산기(236)를 포함한다. 변수 선택 제어부(231)는 초기화 신호(ITL)에 응답하여 리셋 제어 신호(RST)를 발생한다. 또, 변수 선택 제어부(231)는 모드 선택 신호(SMODE)와, 판독 또는 기입 제어 신호(RCTL 또는 WCTL)에 응답하여, 연산 제어 신호(ARI_CTL)와 변수 선택 신호(VAR_SEL)를 출력한다. 바람직하게, 변수 선택 제 어부(231)는 판독 제어 신호(RCTL)를 수신할 때와 기입 제어 신호(WCTL)를 수신할 때, 각각 변수 선택 신호(VAR_SEL)의 로직 값을 서로 다르게 출력할 수 있다. 변수 선택 제어부(231)는 판독 또는 기입 제어 신호(RCTL 또는 WCTL)를 수신한 시점으로부터 설정된 시간(즉, 설정된 클록 사이클 수)이 경과 하면, 어드레스 발생 완료 신호(ADD_END)를 변환 동작 제어부(220)에 출력한다. 그 결과, 변환 동작 제어부(220)는 어드레스 발생 완료 신호(ADD_END)를 수신하고, 어드레스 발생부(230)의 연산 동작이 완료되었음을 확인한다. 여기에서, 상기 설정된 시간은 어드레스 발생부(230)가 판독 또는 기입 어드레스 신호(RADD 또는 WADD)를 발생하는데 걸리는 시간에 대응하게 설정될 수 있다.
제1 변수 선택기(232)는 변수 선택 신호(VAR_SEL)에 응답하여, 주소 계산기(236)로부터 수신되는 이전의 연산 결과인 판독 어드레스 신호(RADD')를 읽기 모드 레지스터(233)에 출력하거나, 또는 주소 계산기(236)로부터 수신되는 이전의 연산 결과인 기입 어드레스 신호(WADD')를 쓰기 모드 레지스터(234)에 출력한다. 이를 좀 더 상세히 설명하면, 변수 선택 신호(VAR_SEL)가 제1 로직 상태일 때, 제1 변수 선택기(232)가 주소 계산기(236)로부터 수신되는 이전의 연산 결과인 판독 어드레스 신호(RADD')를 읽기 모드 레지스터(233)에 출력한다. 또, 변수 선택 신호(VAR_SEL)가 제2 로직 상태일 때, 제1 변수 선택기(232)가 주소 계산기(236)로부터 수신되는 이전의 연산 결과인 기입 어드레스 신호(WADD')를 쓰기 모드 레지스터(234)에 출력한다. 읽기 모드 레지스터(233)는 판독 어드레스 변수(RE_VAR)와 판독 어드레스 신호(RADD') 중 수신되는 어느 하나를 저장한다. 쓰기 모드 레지스 터(234)는 기입 어드레스 변수(WT_VAR)와 기입 어드레스 신호(WADD') 중 수신되는 어느 하나를 저장한다. 한편, 도 5에 도시되지는 않았지만, 변수 선택 제어부(231)가 읽기 모드 레지스터(233)와 쓰기 모드 레지스터(234)의 입출력 동작을 제어하기 위한 제어 신호를 더 출력할 수 있다.
제2 변수 선택기(235)는 변수 선택 신호(VAR_SEL)에 응답하여, 읽기 모드 레지스터(233)의 출력 신호(RE_VAR 또는 RADD')와 쓰기 모드 레지스터(234)의 출력 신호(WT_VAR 또는 WADD') 중 어느 하나를 선택하여 연산 변수(ARI_VAR)로서 출력한다. 이를 좀 더 상세히 설명하면, 변수 선택 신호(VAR_SEL)가 제1 로직 상태일 때, 제2 변수 선택기(235)가 읽기 모드 레지스터(233)의 출력 신호(RE_VAR 또는 RADD')를 선택하여 연산 변수(ARI_VAR)로서 출력한다. 또, 변수 선택 신호(VAR_SEL)가 제2 로직 상태일 때, 제2 변수 선택기(235)가 쓰기 모드 레지스터(234)의 출력 신호(WT_VAR 또는 WADD')를 선택하여 연산 변수(ARI_VAR)로서 출력한다.
주소 계산기(236)는 리셋 제어 신호(RST)에 응답하여 리셋된다. 또, 주소 계산기(236)는 연산 제어 신호(ARI_CTL)에 응답하여, 연산 변수(ARI_VAR)를 연산하고, 그 연산 결과로서, 판독 또는 기입 어드레스 신호(RADD 또는 WADD)를 출력한다. 여기에서, 변수 선택 제어부(231)는 모드 선택 신호(SMODE)에 의해 선택된 영상 변환 모드에 대응하게 연산 제어 신호(ARI_CTL)를 출력한다. 그 결과, 주소 계산기(236)가 연산 제어 신호(ARI_CTL)에 응답하여, 해당 영상 변환 모드에 대응하는 연산 동작을 실행한다. 이를 좀 더 상세히 설명하면, 주소 계산기(236)는 물리 주소인, 판독 또는 기입 어드레스 신호(RADD 또는 WADD)를 발생하기 위해, 아래의 연산식에 기초하여 연산 동작을 실행한다.
RADD(또는 WADD) = (LineADR ≪ ColADR) + OffsetADR
상기 [수학식 1]에서, "LineADR"는 라인(line) 어드레스이고, "ColADR"는 칼럼 어드레스이고, "OffsetADR"는 오프셋 어드레스이다. 또, 연산 기호 "≪"는 좌변의 값을 우변의 값만큼 좌측으로 쉬프트 하는 것을 의미한다. 즉, "LineADR ≪ ColADR"의 경우, 연산 기호 "≪"는 LineADR의 각 비트를 ColADR의 비트 값만큼 좌측으로 쉬프트 하는 것을 의미한다. 예를 들어, LineADR의 비트 값이 "00011"이고, ColADR의 비트 값이 "2"일 때, LineADR의 각 비트가 좌측으로 두 번 쉬프트 되어야 하므로, "LineADR ≪ ColADR"의 결과는 "01100"으로 된다. 여기에서, "ColADR"는 컬럼 어드레스 신호로서, 판독 또는 기입 어드레스 변수(RE_VAR, WT_VAR)에 포함된다.
한편, 주소 계산기(236)가 판독 어드레스 신호(RADD)를 발생할 때와, 기입 어드레스 신호(WADD)를 발생할 때, "LineADR" 및 "OffsetADR"를 계산하기 위한 연산식은 서로 다르다. 먼저, 주소 계산기(236)가 판독 어드레스 신호(RADD)를 발생할 때, "LineADR" 및 "OffsetADR"를 계산하기 위한 연산식을 설명한다. 주소 계산기(236)가 판독 어드레스 신호(RADD)를 발생할 때, "LineADR" 및 "OffsetADR"를 계산하기 위한 연산식은 선택된 영상 변환 모드에 상관없이 모든 영상 변환 모드에 대해 동일하게 적용되며, 이 연산식은 다음과 같이 나타낼 수 있다.
LineADR = (LineBASE - 0) + LineCNT
OffsetADR = OffsetBASE + OffsetCNT
상기 [수학식 2]와 [수학식 3]에서, "LineBASE"는 라인 베이스(base) 어드레스로서, 그 값은 "0"으로 설정되고, "OffsetBASE"는 오프셋 베이스 어드레스로서, 역시 그 값은 "0"으로 설정된다. "LineCNT"는 라인 카운트 어드레스이고, "OffsetCNT"는 오프셋 카운트 어드레스이며, "LineCNT" 및 "OffsetCNT"를 계산하기 위한 연산식은 다음과 같이 나타낼 수 있다.
LineCNT(C) = LineCNT(C-1) + TrSIZE(N*M)
OffsetCNT(C) = OffsetCNT(C-1) + TrSIZE(N*M/N)
상기 [수학식 4]와 [수학식 5]에서, "LineCNT(C-1)"는 이전의 라인 카운트 어드레스를 나타내고, "LineCNT(C)"는 현재의 라인 카운트 어드레스를 나타낸다. 이와 유사하게, "OffsetCNT(C-1)"는 이전의 오프셋 카운트 어드레스를 나타내고, "OffsetCNT(C)"는 현재의 오프셋 카운트 어드레스를 나타낸다. 또, "TrSIZE(N*M)"은 전송 사이즈 값이 N*M 임을 나타낸다. 여기에서, "N"은 도 8에서 참고되는 것과 같이 하나의 소스 블록(예를 들어, SB1)의 높이를 나타내고, "M"은 하나의 소스 블록(예를 들어, SB1)의 폭을 나타낸다. "전송 사이즈 값 N*M"은 DMA 입출력부(241)가 메모리(101)를 액세스할 때, 한 번에 판독하거나 또는 기입하는(이때, 기입 동 작은 소스 영상(P1)이 영상 변환되지 않고 그대로 메모리(101)에 기입되는 노말(normal) 기입 동작을 의미한다) 양의 기본 단위를 나타낸다. 한편, 읽기 모드 레지스터(233)는 동작 초기에 "ColADR"를 포함하는 판독 어드레스 변수(RE_VAR)를 변환 동작 제어부(220)로부터 수신한다. 여기에서, 판독 어드레스 변수(RE_VAR)에 포함되는 "ColADR"의 값은 필요에 따라 변경될 수 있다.
다음으로, 주소 계산기(236)가 기입 어드레스 신호(WADD)를 발생할 때, "LineADR" 및 "OffsetADR"를 계산하기 위한 연산식을 설명한다. 주소 계산기(236)가 기입 어드레스 신호(WADD)를 발생할 때, "LineADR" 및 "OffsetADR"를 계산하기 위한 연산식은 선택된 영상 변환 모드에 따라 변경된다. 주소 계산기(236)가 기입 어드레스 신호(WADD)를 발생할 때, "LineADR" 및 "OffsetADR"를 계산하기 위한 연산식을 각 영상 변환 모드 별로 정리하면, 아래의 표로 나타낼 수 있다.
노말 수평 플립 모드 |
LineADR = LineBASE + LineCNT, LineBASE = 0 |
OffsetADR = OffsetBASE - OffsetCNT, OffsetBASE = SrcWIDTH - TrSIZE(N*M/N) |
LineCNT(C) = LineCNT(C-1) + TrSIZE(N*M) |
OffsetCNT(C) = OffsetCNT(C-1) + TrSIZE(N*M/N) |
노말 수직 플립 모드 |
LineADR = LineBASE - LineCNT, LineBASE = SrcHEIGHT - TrSIZE(N*M)F |
OffsetADR = OffsetBASE - OffsetCNT, OffsetBASE = SrcWIDTH - TrSIZE(N*M/N) |
LineCNT(C) = LineCNT(C-1) + TrSIZE(N*M)F |
OffsetCNT(C) = OffsetCNT(C-1) + TrSIZE(N*M/N) |
노말 수평/수직 플립 모드 |
LineADR = LineBASE - LineCNT, LineBASE = SrcHEIGHT - TrSIZE(N*M)F |
OffsetADR = OffsetBASE + OffsetCNT, OffsetBASE = 0 |
LineCNT(C) = LineCNT(C-1) + TrSIZE(N*M)F |
OffsetCNT(C) = OffsetCNT(C-1) + TrSIZE(N*M/N) |
회전 모드 |
LineADR = LineCNT, LineBASE = 0 |
OffsetADR = OffsetBASE - OffsetCNT, OffsetBASE = SrcWIDTH - TrSIZE(N/M) |
LineCNT(C) = LineCNT(C-1) + TrSIZE(M) |
OffsetCNT(C) = OffsetCNT(C-1) + TrSIZE(N/M) |
회전 수평 플립 모드 |
LineADR = LineCNT, LineBASE = 0 |
OffsetADR = OffsetBASE + OffsetCNT, OffsetBASE = 0 |
LineCNT(C) = LineCNT(C-1) + TrSIZE(M) |
OffsetCNT(C) = OffsetCNT(C-1) + TrSIZE(N/M) |
회전 수직 플립 모드 |
LineADR = LineBASE - LineCNT, LineBASE = SrcHEIGHT - TrSIZE(M)F |
OffsetADR = OffsetBASE - OffsetCNT, OffsetBASE = SrcWIDTH - TrSIZE(N/M) |
LineCNT(C) = LineCNT(C-1) + TrSIZE(M)F |
OffsetCNT(C) = OffsetCNT(C-1) + TrSIZE(N/M) |
회전 수평/수직 플립 모드 |
LineADR = LineBASE - LineCNT, LineBASE = SrcHEIGHT - TrSIZE(M)F |
OffsetADR = OffsetBASE + OffsetCNT, OffsetBASE = 0 |
LineCNT(C) = LineCNT(C-1) + TrSIZE(M)F |
OffsetCNT(C) = OffsetCNT(C-1) + TrSIZE(N/M) |
상기 [표 1]에서, "TrSIZE(N*M)F"는 전송 사이즈 값이 N*M 임을 나타내고, "(N*M)F"는 "-(N*M)"을 나타낸다. 이와는 대조적으로, "TrSIZE(N*M)"에서 "N*M"은 "+(N*M)"을 나타낸다. 예를 들어, "N"이 64이고, "M"은 4이며, 1워드가 4바이트인 것으로 가정할 때, "N*M", 즉, "64*4"의 결과는 256바이트이고, 이를 워드 단위로 나타내면 64워드로 된다. 결과적으로, "TrSIZE(N*M)F", 즉, "TrSIZE(256)F"는 "TrSIZE(64)F"로 나타낼 수 있다. 여기에서, "TrSIZE64F"는 전송 사이즈가 64 워드임을 나타내고, "64F"는 "- 64"를 나타낸다. 또, "TrSIZE64"에서, "64"는 "+ 64"를 나타낸다. "TrSIZE(N*M)F"와 유사하게, "TrSIZE(M)"은 전송 사이즈가 M 워드임을 나타내고, "M"은 "+ M"을 나타내고, "(M)F"는 "-M"을 나타낸다. 예를 들어, "M"이 4일 때, "TrSIZE4"는 전송 사이즈가 4 워드임을 나타내고, "4"는 "+ 4"를 나타낸다. 또, "TrSIZE4F"는 전송 사이즈가 4 워드임을 나타내고, "4F"는 "- 4"를 나타낸다. "TrSIZE(N/M)" 및 "TrSIZE(N/M)F" 역시 "TrSIZE(M)" 및 "TrSIZE(M)F"와 유사하게 각각 전송 사이즈를 나타낸다. "SrcHEIGHT"는 소스 프레임의 높이를 나타낸다. "SrcHEIGHT" 및 "SrcWIDTH"는 "ColADR"와 함께 기입 어드레스 변수(WT_VAR)에 포함된다. 기입 어드레스 변수(WT_VAR)에 포함되는 "SrcHEIGHT", "SrcWIDTH", 및 "ColADR"의 값들은 필요에 따라 각각 변경될 수 있다. 여기에서, "SrcHEIGHT" 및 "SrcWIDTH", 및 "ColADR"를 포함하는 기입 어드레스 변수(WT_VAR)는 CPU(102)로부터 출력되는 영상 변환 정보(CON_IF)에 포함되며, 변환 동작 제어부(220)가 영상 변환 정보(CON_IF)에 기초하여, 기입 어드레스 변수(WT_VAR)를 발생한다.
도 6은 도 4에 도시된 읽기 버퍼부와 화소 위치 변경부의 상세한 블록 도이다. 읽기 버퍼부(242)는 읽기 레지스터 컨트롤러(251)와 레지스터 어레이(252)를 포함한다. 또, 화소 위치 변경부(243)는 위치 변환 컨트롤러(261), 로우 데이터 선택기(262), 칼럼 데이터 선택기(263), 화소 선택기(264), 및 바이트 리오더(byte reorder)(265)를 포함한다.
읽기 레지스터 컨트롤러(251)는 변환 동작 제어부(220)로부터 수신되는 초기화 신호(ITL)에 응답하여, 리셋 제어 신호(RST)를 출력한다. 또, 읽기 레지스터 컨트롤러(251)는 DMA 입출력부(241)로부터 수신되는 읽기 시작 신호(RE_START)에 응답하여, 레지스터 제어 신호들(RC1_1∼RCM_N)(M과 N은 정수)을 출력한다. 읽기 레지스터 컨트롤러(251)는 레지스터 어레이(252)에 하나의 소스 블록의 화소 데이터들이 각각 저장되면, 읽기 완료 신호(RE_END)를 위치 변환 컨트롤러(261)에 출력한다. 레지스터 어레이(252)는 복수의 레지스터들(RG1_1∼RGN_M)(N, M은 정수)을 포함한다. 복수의 레지스터들(RG1_1∼RGN_M)은 복수의 칼럼 출력 라인들(COL1∼COLM)(M은 정수)과 복수의 로우 출력 라인들(ROL1∼ROLN)(N은 정수)을 공유하고 매트릭스 형태로 배치된다. 예를 들어, 로우 방향으로 배열된 레지스터들(RG1_1∼RG1_M)은 로우 출력 라인(ROL1)을 공유하고, 레지스터들(RG2_1∼RG2_M)은 로우 출력 라인(ROL2)을 공유한다. 또, 칼럼 방향으로 배열된 레지스터들(RG1_1∼RGN_1)은 칼럼 출력 라인(COL1)을 공유하고, 레지스터들(RG1_2∼RGN_2)은 칼럼 출력 라인(COL2)을 공유한다. 복수의 레지스터들(RG1_1∼RGN_M)은 리셋 제어 신호(RST)에 응답하여 각각 리셋 된다. 또, 복수의 레지스터들(RG1_1∼RGN_M)은 레지스터 제어 신호들(RC1_1∼RCM_N)에 각각 응답하여, 하나의 소스 블록(SB1∼SBJ 중 하나)의 화소 데이터들(1P1∼NPM)을 각각 저장한다. 예를 들어, 레지스터(RG1_1)는 레지스터 제어 신호(RC1_1)에 응답하여, 화소 데이터(1P1)를 저장하고, 그 저장된 화소 데이터(1P1)를 로우 출력 라인(ROL1)과 칼럼 출력 라인(COL1)에 각각 출력한다. 레지스터들(RG1_2∼RGM_N)의 구체적인 동작 설명은 레지스터(RG1_1)와 유사하므로 생략된다. 한편, 하나의 소스 블록(SB1∼SBJ 중 하나)의 화소 데이터들(1P1∼NPM)이 복수의 레지스터들(RG1_1∼RGN_M)에 각각 저장되면, 그 저장된 화소 데이터들(1P1∼NPM)의 배열 형태는 도 9에 도시된 것과 동일하다.
위치 변환 컨트롤러(261)는 변환 동작 제어부(220)로부터 수신되는 초기화 신호(ITL)에 응답하여, 리셋 된다. 위치 변환 컨트롤러(261)는 변환 동작 제어부(220)로부터 모드 선택 신호(SMODE)를 수신하고, 읽기 레지스터 컨트롤러(251)로부터 읽기 완료 신호(RE_END)를 수신한다. 위치 변환 컨트롤러(261)는 모드 선택 신호(SMODE)와 읽기 완료 신호(RE_END)에 응답하여, 칼럼 선택 신호들(CSEL1∼CSELM)(M은 정수), 로우 선택 신호들(RSEL1∼RSELN)(N은 정수), 화소 선택 신호(PSEL), 및 엔디안(endian) 선택 신호(ESEL)를 출력한다. 이를 좀 더 상세히 설명하면, 모드 선택 신호(SMODE)에 기초하여, 위치 변환 컨트롤러(261)는 해당 영상 변환 모드에 대응하게 칼럼 선택 신호들(CSEL1∼CSELM), 로우 선택 신호들(RSEL1∼RSELN), 화소 선택 신호(PSEL), 및 엔디안 선택 신호(ESEL)를 출력한다. 예를 들어, 모드 선택 신호(SMODE)가 노말 수평 플립 모드, 노말 수직 플립 모드, 및 노말 수평/수직 플립 모드 중 어느 하나를 나타낼 때, 위치 변환 컨트롤러(261)는 칼럼 선택 신호들(CSEL1∼CSELM)을 출력하지 않고 로우 선택 신호들(RSEL1∼RSELN)을 출력하고, 화소 선택 신호(PSEL)를 제1 로직 레벨로 출력한다. 결과적으로, 노말 수평 플립 모드, 노말 수직 플립 모드, 및 노말 수평/수직 플립 모드에서, 화소 위치 변경부(243)는 도 9에 도시된 로우 화소 라인 R1, R2, ..., RN의 순서, 또는 RN, R(N-1), R(N-2), ..., R1의 순서로, 레지스터 어레이(252)에 저장된 화소 데이터들을 가져온다.
또, 회전 모드, 회전 수평 플립 모드, 회전 수직 플립 모드, 및 회전 수평/수직 플립 모드 중 어느 하나일 경우, 위치 변환 컨트롤러(261)는 로우 선택 신호들(RSEL1∼RSELN)을 출력하지 않고, 칼럼 선택 신호들(CSEL1∼CSELM)을 출력하고, 화소 선택 신호(PSEL)를 제2 로직 레벨로 출력한다. 결과적으로, 회전 모드, 회전 수평 플립 모드, 회전 수직 플립 모드, 및 회전 수평/수직 플립 모드에서, 화소 위치 변경부(243)는 도 9에 도시된 칼럼 화소 라인 C1, C2, ..., CM의 순서, 또는 CM, C(M-1), C(M-2), ..., C1의 순서로, 레지스터 어레이(252)에 저장된 화소 데이터들을 가져온다.
노말 수평 플립 모드, 노말 수평/수직 플립 모드, 회전 수평 플립 모드, 및 회전 수평/수직 플립 모드 중 어느 하나일 때, 위치 변환 컨트롤러(261)는 엔디안 선택 신호(ESEL)를 제1 로직 레벨로 출력한다. 여기에서, 엔디안 선택 신호(ESEL1)가 제1 로직 레벨일 때, 레지스터 어레이(252)로부터 판독된 화소 데이터들의 바이트 배열 순서가 변경된다. 또, 노말 수직 플립 모드, 회전 모드, 및 회전 수직 플립 모드 중 어느 하나일 때, 위치 변환 컨트롤러(261)는 엔디안 선택 신호(ESEL)를 제2 로직 레벨로 출력한다. 여기에서, 엔디안 선택 신호(ESEL1)가 제2 로직 레벨일 때, 레지스터 어레이(252)로부터 판독된 화소 데이터들의 바이트 배열 순서가 변경되지 않는다.
또, 위치 변환 컨트롤러(261)는 엔디안 선택 신호(ESEL)를 출력할 때, 변환 완료 신호(CON_END)를 변환 동작 제어부(220)와 쓰기 버퍼부(244)에 출력한다. 좀 더 상세하게는, 위치 변환 컨트롤러(261)가 변환 완료 신호(CON_END)의 로직 값을 변경시켜 출력함으로써, 소스 블록(SB1∼SBJ 중 하나)에 대한 영상 변환 동작의 완료 여부를 나타낸다. 예를 들어, 소스 블록(SB1∼SBJ 중 하나)의 영상 변환 동작이 완료된 경우, 위치 변환 컨트롤러(261)는 변환 완료 신호(CON_END)를 제1 로직 레벨로 출력할 수 있다. 또, 소스 블록(SB1∼SBJ 중 하나)의 영상 변환 동작이 완료되지 않은 경우, 위치 변환 컨트롤러(261)는 변환 완료 신호(CON_END)를 제2 로직 레벨로 출력할 수 있다. 또한, 예를 들어, 소스 블록(SB1∼SBJ 중 하나)의 영상 변환 동작이 완료된 경우, 위치 변환 컨트롤러(261)는 변환 완료 신호(CON_END)를 토글(toggle) 시킬 수도 있다.
로우 데이터 선택기(262)는 로우 선택 신호들(RSEL1∼RSELN)에 응답하여, 복수의 로우 출력 라인들(ROL1∼ROLN) 중 어느 하나로부터 수신되는 화소 데이터들을 선택한다. 예를 들어, 로우 데이터 선택기(262)는 로우 선택 신호(RSEL1)에 응답하여, 로우 출력 라인(ROL1)으로부터 수신되는 화소 데이터들(1P1∼1PM)을 선택하고, 그 선택된 화소 데이터들(1P1∼1PM)을 화소 선택기(264)에 출력한다. 칼럼 데이터 선택기(263)는 칼럼 선택 신호들(CSEL1∼CSLEM)에 응답하여, 복수의 칼럼 출력 라인들(COL1∼COLM) 중 어느 하나로부터 수신되는 화소 데이터들을 선택한다. 예를 들어, 칼럼 데이터 선택기(263)는 칼럼 선택 신호(CSEL1)에 응답하여, 칼럼 출력 라인(COL1)으로부터 수신되는 화소 데이터들(1P1∼NP1)을 선택하고, 그 선택된 화소 데이터들(1P1∼NP1)을 화소 선택기(264)에 출력한다. 화소 선택기(264)는 화소 선택 신호(PSEL)에 응답하여, 칼럼 데이터 선택기(263)에 의해 선택된 화소 데이터들, 또는 로우 데이터 선택기(262)에 의해 선택된 화소 데이터들을 수신하여 출력한다. 좀 더 상세하게는, 화소 선택 신호(PSEL)가 제1 로직 레벨일 때, 화소 선택기(264)는 로우 데이터 선택기(262)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다. 또, 화소 선택 신호(PSEL)가 제2 로직 레벨일 때, 화소 선택기(264)는 칼럼 데이터 선택기(263)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다.
바이트 리오더(265)는 엔디안 선택 신호(ESEL)에 응답하여, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 결정하고, 그 결정된 바이트 배열 순서에 따라 변환된 화소 데이터들을 출력한다. 이를 좀 더 상세히 설명하면, 엔디안 선택 신호(ESEL)가 제1 로직 레벨일 때, 바이트 리오더(265)는 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 변경한다. 예를 들어, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서가 빅 엔디안(big endian)의 형식으로 이루어진 경우, 바이트 리오더(265)는 각 화소 데이터들의 바이트 배열 순서를 리틀 엔디안(little endian)의 형식으로 변경한다. 여기에서, 빅 엔디안의 형식은 바이트 열에서 가장 큰 값이 먼저 저장되고, 가장 작은 값이 마지막에 저장되는 형식을 의미한다. 예를 들어, 16진수 "4F52"이 빅 엔디안 형식으로 배열될 경우, "4F52"으로 배열된다. 리틀 엔디안의 형식은 바이트 열에서 가장 작은 값이 먼저 저장되고, 가장 큰 값이 마지막에 저장되는 형식을 의미한다. 예를 들어, 16진수 "4F52"이 리틀 엔디안 형식으로 배열될 경우, "524F"으로 배열된다.
한편, 위치 변환 컨트롤러(261)는 쓰기 버퍼부(244)로부터 전송 대기 요청 신호(TR_WAIT)를 수신할 때부터 전송 대기 해제 신호(TR_SRT)를 수신할 때까지, 엔디안 선택 신호(ESEL)의 출력 동작을 정지한다. 그 결과, 바이트 리오더(265)가 변환된 화소 데이터들의 출력 동작을 정지한다.
도 7은 도 4에 도시된 쓰기 버퍼부의 상세한 블록 도이다. 쓰기 버퍼부(244)는 쓰기 레지스터 컨트롤러(271)와 복수의 레지스터들(WG1_1∼WGT_P)(T와 P는 정수)을 포함한다. 쓰기 레지스터 컨트롤러(271)는 변환 동작 제어부(220)로부터 수신되는 초기화 신호(ITL)에 응답하여, 리셋 제어 신호(RST)를 출력한다. 쓰기 레지스터 컨트롤러(271)는 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)로부터 수신되는 변환 완료 신호(CON_END)에 응답하여, 레지스터 입력 신호들(RI1_1∼RIT_P)(T와 P는 정수)을 출력한다. 쓰기 레지스터 컨트롤러(271)는 DMA 입출력부(241)로부터 수신되는 전송 요청 신호(TRS)에 응답하여, 레지스터 출력 신호들(RO1_1∼ROT_P)(T와 P는 정수)을 출력한다. 쓰기 레지스터 컨트롤러(271)는 복수의 레지스터들(WG1_1∼WGT_P)의 데이터 저장 상태에 따라 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)에 전송 대기 요청 신호(TR_WAIT) 또는 전송 대기 해제 신호(TR_SRT)를 출력한다.
복수의 레지스터들(WG1_1∼WGT_P)은 리셋 제어 신호(RST)에 응답하여 각각 리셋 된다. 복수의 레지스터들(WG1_1∼WGT_P)은 레지스터 입력 신호들(RI1_1∼RIT_P)에 각각 응답하여, 화소 위치 변경부(243)로부터 수신되는 화소 데이터들을 각각 저장한다. 여기에서, 쓰기 버퍼부(244)에 포함되는 레지스터의 수는 필요에 따라 증가 또는 감소할 수 있고, 읽기 버퍼부(242)에 포함되는 레지스터의 수보다 작거나 또는 동일하게 설정될 수 있다. 예를 들어, 쓰기 버퍼부(244)에 포함되는 레지스터의 수가 읽기 버퍼부(242)에 포함되는 레지스터의 수보다 더 작게 설정된 경우, 쓰기 버퍼부(244)는 화소 위치 변경부(243)를 통해 읽기 버퍼부(242)로부터 수신되는 화소 데이터들의 일부만을 저장할 수 있다. 이 경우, 쓰기 버퍼부(244)는 읽기 버퍼부(242)로부터 수신되는 화소 데이터들의 일부를 저장하고, 그 저장된 화소 데이터들이 모두 DMA 입출력부(241)에 전송될 때까지, 화소 위치 변경부(243)에 전송 대기 요청 신호(TR_WAIT)를 출력한다. 쓰기 버퍼부(244)는 화소 데이터들을 모두 DMA 입출력부(241)에 전송한 후, 화소 위치 변경부(243)에 전송 대기 해제 신호(TR_SRT)를 출력하여, 읽기 버퍼부(242)로부터 나머지 화소 데이터들을 수신하여 저장한다. 복수의 레지스터들(WG1_1∼WGT_P)은 레지스터 출력 신호들(RO1_1∼ROT_P)에 각각 응답하여, 저장된 화소 데이터들을 각각 출력한다. 한편, 쓰기 레지스터 컨트롤러(271)는 DMA 입출력부(241)로부터 대기 요청 신호(WAIT)를 수신할 때부터 대기 해제 신호(즉, 차기의 전송 요청 신호(TRS))를 수신할 때까지, 레지스터 출력 신호들(RO1_1∼ROT_P)의 출력 동작을 정지한다. 그 결과, 복수의 레지스터들(WG1_1∼WGT_P)이 화소 데이터들의 출력 동작을 정지한다.
다음으로, 첨부된 도면을 참고하여 각 영상 변환 모드에 대한 영상 변환 장치(200)의 동작 과정을 좀 더 상세히 설명한다.
노말 수평
플립
모드
도 8은 도 3에 도시된 메모리에 저장된 소스 영상 중 하나의 소스 프레임을 나타내는 도면이다. 또, 도 16은 영상 변환 장치의 동작 과정을 나타내는 흐름도이다. 도 8에서 참고되는 것과 같이, 하나의 소스 프레임(S1∼SK 중 하나)은 복수의 소스 블록(SB1∼SBJ)을 포함한다. 여기에서, 복수의 소스 블록(SB1∼SBJ) 각각은 설정된 수의 화소 데이터들(1P1∼NPM, 도 9 참고)을 포함한다. 또, 하나의 소스 블록에 포함되는 설정된 수의 화소 데이터들(1P1∼NPM)은 복수의 로우 화소 라인들(R1∼RN)과 복수의 칼럼 화소 라인들(C1∼CN)을 형성한다. 한편, 소스 프레임의 높이(SrcHEIGHT)가 소스 블록 높이의 정수 배에 정확하게 일치하지 않는 경우, 소스 블록(SB1∼SBJ) 중 일부의 크기는 나머지 소스 블록의 크기와 서로 다를 수 있다. 예를 들어, 소스 프레임의 높이(SrcHEIGHT)가 23라인(즉, 로우(row) 방향으로 23개의 화소 라인)이고, 하나의 소스 블록의 높이(N)가 5라인일 때, 4개의 소스 블록(예를 들어, SB1∼SB4) 각각은 5개의 화소 라인을 포함하고, 나머지 하나의 소스 블록(예를 들어, SB5)은 3개의 화소 라인을 포함한다.
먼저, 영상 변환 장치(200)의 변환 동작 제어부(220)는 CPU(102)로부터 소스 영상(P1), 즉, 소스 프레임(S1∼SK 중 하나)에 대한 사이즈 정보(FSIZE)와 변환 모드 정보(MODE)를 포함하는 영상 변환 정보(CON_IF)가 수신되는지의 여부를 판단한다(단계 1100). 여기에서, 사이즈 정보(FSIZE)는 소스 프레임의 높이(SrcHEIGHT)와 소스 프레임의 폭(SrcWIDTH)을 포함한다. CPU(102)로부터 영상 변환 정보(CON_IF)를 수신하면, 변환 동작 제어부(220)는 영상 변환 정보(CON_IF)에 포함되는 소스 프레임의 사이즈 정보(FSIZE)에 기초하여, 판독 어드레스 변수(RE_VAR) 및 기입 어드레스 변수(WT_VAR)를 출력한다. 그 결과, 어드레스 발생부(230)의 읽기 모드 레지스터(233)에는 판독 어드레스 변수(RE_VAR)가 저장되고, 쓰기 모드 레지스터(234)에는 기입 어드레스 변수(WT_VAR)가 저장된다. 또, 변환 동작 제어부(220)는 영상 변환 정보(CON_IF)에 포함되는 변환 모드 정보(MODE)에 기초하여, 모드 선택 신호(SMODE)를 출력한다. 그 결과, 영상 변환 장치(200)가 실행할 해당 영상 변환 모드로서 노말 수평 플립 모드가 선택된다(단계 1200).
이 후, 영상 변환 장치(200)는 선택된 영상 변환 모드에 따라 소스 블록(SB1)을 판독한다(단계 1300). 이를 좀 더 상세히 설명하면 다음과 같다. 초기에 어드레스 발생 동작을 실행하지 않았으므로, 어드레스 발생부(230)의 변수 선택 제어부(231)는 어드레스가 발생되지 않았음을 나타내는 어드레스 발생 완료 신호(ADD_END)를 출력한다. 또, 초기에 영상 변환 동작을 실행하지 않았으므로, 화소 위치 변경부(243)는 영상 변환이 완료되지 않았음을 나타내는 변환 완료 신호(CON_END)를 출력한다. 그 결과, 변환 동작 제어부(220)가 변환 완료 신호(CON_END)에 응답하여, 판독 제어 신호(RCTL)를 어드레스 발생부(230)와 DMA 입출력부(241)에 출력한다. 판독 제어 신호(RCTL)에 응답하여, 어드레스 발생부(230)가 판독 어드레스 신호(RADD)를 발생하고(단계 1301, 도 17 참고), 어드레스 발생이 완료되었음을 나타내는 어드레스 발생 완료 신호(ADD_END)를 출력한다.
어드레스 발생 완료 신호(ADD_END)에 응답하여, 변환 동작 제어부(220)가 입출력 제어 신호(DMA_IO)를 출력한다. DMA 입출력부(241)는 판독 제어 신호(RCTL)와 입출력 제어 신호(DMA_IO)에 응답하여, 어드레스 발생부(230)로부터 수신되는 판독 어레스 신호(RADD)를 메모리(101)에 출력하고, 메모리(101)로부터 하나의 소스 블록(예를 들어, SB1)의 화소 데이터들(1P1∼NPM)을 판독한다(단계 1302, 도 17 참고). DMA 입출력부(241)는 판독된 소스 블록(SB1)의 화소 데이터들(1P1∼NPM)을 읽기 버퍼부(242)에 출력할 때, 읽기 버퍼부(242)에 데이터의 전송 시작을 알리는 읽기 시작 신호(RE_START)를 출력한다.
읽기 시작 신호(RE_START)에 응답하여, 읽기 버퍼부(242)의 읽기 레지스터 컨트롤러(251)는 레지스터 제어 신호들(RC1_1∼RCM_N)을 출력한다. 레지스터 제어 신호들(RC1_1∼RCM_N)에 응답하여, 레지스터 어레이(252)의 복수의 레지스터들(RG1_1∼RGN_M)은 소스 블록(SB1)의 화소 데이터들(1P1∼NPM)을 각각 저장한다(단계 1303, 도 17 참고). 복수의 레지스터들(RG1_1∼RGN_M)은 메모리(101)로부터 판독된 소스 블록(SB1)의 화소 데이터들의 배열 상태(도 9 참조)를 그대로 유지한 채 저장한다. 예를 들어, 레지스터(RG1_1)는 화소 데이터(1P1)를 저장하고, 레지스터(RG1_2)는 화소 데이터(1P2)를 저장한다. 또, 레지스터(RG2_1)는 화소 데이터(2P1)를 저장하고, 레지스터(RG2_2)는 화소 데이터(2P2)를 저장한다.
복수의 레지스터들(RG1_1∼RGN_M) 각각은 자신에 저장된 화소 데이터를 자신이 공유한 로우 출력 라인(ROL1∼ROLN 중 하나) 및 칼럼 출력 라인(COL1∼COLM 중 하나)에 출력한다. 예를 들어, 레지스터(RG1_1)는 자신에 저장된 화소 데이터(1P1)를 로우 출력 라인(ROL1)과 칼럼 출력 라인(COL1)에 각각 출력한다. 한편, 읽기 레지스터 컨트롤러(251)는 레지스터 어레이(252)에 소스 블록(SB1)의 화소 데이터들(1P1∼NPM)이 모두 저장되면, 읽기 완료 신호(RE_END)를 화소 위치 변경부(243)에 출력한다. 여기에서, 읽기 레지스터 컨트롤러(251)는 레지스터 제어 신호들(RC1_1∼RCM_N)을 모두 출력하였는지의 여부에 따라, 레지스터 어레이(252)에 하나의 소스 블록의 화소 데이터들이 모두 저장되었는지의 여부를 판단한다.
다음으로, 화소 위치 변경부(243)가 읽기 버퍼부(242)에 저장된 화소 데이터들을 노말 수평 플립 모드에 대응하게 변환하여, 변환 블록을 발생한다(단계 1400). 이를 좀 더 상세히 설명하면 다음과 같다. 읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)가 로우 선택 신호들(RSEL1∼RSELN)를 출력한다. 이를 좀 더 상세히 설명하면, 위치 변환 컨트롤러(261)는 로우 선택 신호들을 RSEL1, RSEL2, RSEL3, ..., RSELN의 순서로 하나씩 연속적으로 출력한다. 로우 선택 신호들(RSEL1∼RSELN)에 응답하여, 로우 데이터 선택기(262)가 로우 출력 라인들을 ROL1, ROL2, ROL3, ..., ROLN의 순서로 하나씩 연속적으로 선택하고, 그 선택된 로우 출력 라인의 화소 데이터들을 화소 선택기(264)에 출력한다. 결과적으로, 로우 데이터 선택기(262)는 레지스터 어레이(252)로부터 로우 화소 라인 R1 → RN(도 9 참고)의 방향으로 화소 데이터들을 가져온다(단계 1401, 도 18 참고).
또, 위치 변환 컨트롤러(261)는 읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 선택 신호(PSEL)와 엔디안 선택 신호(ESEL)를 제1 로직 레벨로 각각 출력한다. 그 결과, 화소 선택 신호(PSEL)에 응답하여, 화소 선택기(264)가 로우 데이터 선택기(262)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다. 바이트 리오더(265)는 엔디안 선택 신호(ESEL)에 응답하여, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 변경한다. 예를 들어, 도 9와 도 10a를 참고하면, 도 9에 도시된 로우 화소 라인(R1)이 리틀 엔디안의 형식으로 배열되어 있으므로, 바이트 리오더(265)는 화소 데이터들(1P1∼1PM)의 배열 순서를 도 10a에 도시된 로우 화소 라인(R1)과 같이 빅 엔디안 형식으로 변경한다. 그 결과, 배열 형태가 변경된 화소 데이터들을 포함하는 변환 블록이 발생된다(단계 1402, 도 18 참고).
한편, 위치 변환 컨트롤러(261)는 엔디안 선택 신호(ESEL)를 출력할 때, 영상 변환이 완료되었음을 나타내는 변환 완료 신호(CON_END)를 변환 동작 제어부(220)와 쓰기 버퍼부(244)에 출력한다. 변환 동작 제어부(220)는 변환 완료 신호(CON_END)에 응답하여, 기입 제어 신호(WCTL)를 어드레스 발생부(230)와 DMA 입출력부(241)에 출력한다.
변환 완료 신호(CON_END)에 응답하여, 쓰기 버퍼부(244)의 쓰기 레지스터 컨트롤러(271)는 레지스터 입력 신호들(IN1_1∼INT_P)을 출력한다. 쓰기 버퍼부(244)의 레지스터들(WG1_1∼WGT_P)은 레지스터 입력 신호들(IN1_1∼INT_P)에 각각 응답하여, 화소 위치 변경부(243)로부터 수신되는 화소 데이터들을 각각 저장한다(단계 1403, 도 18 참고). 예를 들어, 레지스터(WG1_P)에 화소 데이터(1P1)가 저장되고, 레지스터(WG2_P))에 화소 데이터(2P1)가 저장된다. 또, 레지스터(WG3_P)에 화소 데이터(3P1)가 저장되고, 레지스터(WGT_P))에 화소 데이터(NP1)가 저장된다. 결과적으로, 쓰기 버퍼부(244)에 저장된 화소 데이터들(1P1∼NPM)의 배열 형태는 도 10a에 도시된 것과 동일하다.
이 후 DMA 입출력부(241)가 쓰기 버퍼부에 저장된 변환 블록의 화소 데이터들을 메모리(101)에 기입한다(단계 1500). 이를 좀 더 상세히 설명하면 다음과 같다. DMA 입출력부(241)는 기입 제어 신호(WCTL)에 응답하여 전송 요청 신호(TRS)를 쓰기 버퍼부(244)에 출력하고, 쓰기 버퍼부(244)로부터 변환 블록(예를 들어, CB1)의 화소 데이터들(1P1∼NPM)을 수신한다. 한편, 기입 제어 신호(WCTL)에 응답하여 어드레스 발생부(230)가 기입 어드레스 신호(WADD)를 발생하고(단계 1501, 도 19 참고), 어드레스 발생이 완료되었음을 나타내는 어드레스 발생 완료 신호(ADD_END)를 출력한다. 여기에서, 어드레스 발생부(230)가 판독 또는 기입 어드레스 신호(RADD 또는 WADD)를 발생한 이 후, 어드레스 발생부(230)의 읽기 또는 쓰기 모드 레지스터(233 또는 234)에는 차기의 판독 또는 기입 어드레스 신호(RADD 또는 WADD)를 발생하기 위해, 이전의 판독 또는 기입 어드레스 신호(RADD' 또는 WADD')가 업데이트 된다.
변환 동작 제어부(220)는 어드레스 발생 완료 신호(ADD_END)에 응답하여, 입출력 제어 신호(DMA_IO)를 출력한다. DMA 입출력부(241)는 입출력 제어 신호(DMA_IO)에 응답하여, 기입 어드레스 신호(WADD)와 변환 블록(CB1)의 화소 데이터들(1P1∼NPM)을 메모리(101)에 출력한다. 그 결과, 변환 블록(CB1)의 화소 데이터들(1P1∼NPM)이 기입 어레스 신호(WADD)에 대응하는 메모리(101)의 셀 영역(미도시)에 저장된다(단계 1502, 도 19 참고).
메모리(101)에 변환 블록(CB1)의 화소 데이터들의 기입 동작이 완료될 때, DMA 입출력부(241)는 기입 완료 신호(WT_END)를 변환 동작 제어부(220)에 출력한다. 변환 동작 제어부(220)는 기입 완료 신호(WT_END)에 응답하여 초기화 신호(ITL)를 발생한다. 그 결과, 초기화 신호(ITL)에 응답하여, 어드레스 발생부(230), DMA 입출력부(241), 읽기 버퍼부(242), 화소 위치 변경부(243), 및 쓰기 버퍼부(244)가 각각 초기화된다(단계 1600).
이 후, 변환 동작 제어부(220)는 상술한 변환 동작의 회수가 설정된 회수에 도달하였는지의 여부를 판단한다(단계 1700). 여기에서, 변환 동작 제어부(220)는 DMA 입출력부(241)로부터 수신되는 기입 완료 신호(WT_END)의 회수를 계산함으로써, 변환 동작의 회수가 설정된 회수에 도달하였는지의 여부를 판단한다. 단계 1700에서, 변환 동작의 회수가 설정된 회수에 도달한 경우, 변환 동작 제어부(220)는 CPU(102)에 동작 완료 신호(OPE_END)를 전송하여, 변환 동작이 완료되었음을 알린다. 또, 단계 1700에서, 변환 동작의 회수가 설정된 회수에 도달하지 않은 경우, 변환 동작 제어부(220)는 변환 동작 회수를 1 증가시킨다(단계 1800). 단계 1800 이 후, 소스 영상(P1)의 변환이 완료될 때까지, 영상 변환 장치(200)는 단계 1300 내지 단계 1700의 동작을 반복적으로 실행한다.
결과적으로, 영상 변환 장치(200)는 판독 및 변환 동작을 SB1, SB2, SB3,...., SBJ의 순서로 각각 실행한다. 도 13을 참고하면, 영상 변환 장치(200)는 점선 화살표로 나타낸 순서로 화소 데이터들의 판독 동작을 실행한다. 도 13에서, "X"는 전송 워드 유닛을 나타내고, 도 13에서는 하나의 소스 블록에 16개의 화소 데이터들이 포함되는 경우가 일례로서 도시되어 있다. 또, 영상 변환 장치(200)는 도 12에 도시된 것과 같이, 변환 블록에 대해 CB1, CB2, CB3, ...CBJ의 순서로 메모리(101)에 기입한다. 좀 더 상세하게는, 영상 변환 장치(200)가 도 14a에서 점선 화살표로 나타낸 순서로 화소 데이터들의 기입 동작을 실행한다. 도 14a에서는 하나의 변환 블록에 16개의 화소 데이터들이 포함되는 경우가 일례로서 도시되어 있다. 한편, 변환 동작 제어부(220)는 기입 완료 신호(WT_END)의 수신 횟수가 설정된 값에 도달할 때(즉, 소스 프레임(S1∼SK)의 영상 변환이 완료될 때), 인터페이스 장치(210)를 통하여 CPU(101)에 소스 영상(P1)의 변환 동작이 완료되었음을 알리는 동작 완료 신호(OPE_END)를 출력한다.
노말 수직
플립
모드
노말 수직 플립 모드에서의 영상 변환 장치(200)의 구체적인 동작 과정은 화소 위치 변경부(243)의 동작을 제외하고, 상술한 노말 수평 플립 모드에서의 영상 변환 장치(200)의 동작 과정과 실질적으로 동일하다. 따라서, 본 실시예에서는 화소 위치 변경부(243)의 동작을 중심으로 설명하기로 한다.
읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)가 로우 선택 신호들(RSEL1∼RSELN)를 출력한다. 이를 좀 더 상세히 설명하면, 위치 변환 컨트롤러(261)는 로우 선택 신호들을 RSELN, RSEL(N-1), RSEL(N-2), ..., RSEL1의 순서로 하나씩 연속적으로 출력한다. 로우 선택 신호들(RSEL1∼RSELN)에 응답하여, 로우 데이터 선택기(262)가 로우 출력 라인들을 ROLN, ROL(N-1), ROL(N-2), ..., ROL1의 순서로 하나씩 연속적으로 선택하고, 그 선택된 로우 출력 라인의 화소 데이터들을 화소 선택기(264)에 출력한다. 결과적으로, 로우 데이터 선택기(262)는 레지스터 어레이(252)로부터 로우 화소 라인 RN → R1(도 9 참고)의 방향으로 화소 데이터들을 가져온다.
또, 위치 변환 컨트롤러(261)는 읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 선택 신호(PSEL)를 제1 로직 레벨로 출력하고, 엔디안 선택 신호(ESEL)를 제2 로직 레벨로 출력한다. 그 결과, 화소 선택 신호(PSEL)에 응답하여, 화소 선택기(264)가 로우 데이터 선택기(262)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다. 바이트 리오더(265)는 엔디안 선택 신호(ESEL)에 응답하여, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 변경하지 않고 그대로 출력한다. 한편, 쓰기 버퍼부(244)에 저장된 변환 블록(예를 들어, CB1)의 화소 데이터들(1P1∼NPM)의 배열 형태는 도 10b에 도시된 것과 동일하다. 영상 변환 장치(200)는 도 14b에서 점선 화살표로 나타낸 순서로 화소 데이터들의 기입 동작을 실행한다. 도 14b에서는 하나의 변환 블록에 16개의 화소 데이터들이 포함되는 경우가 일례로서 도시되어 있다.
노말 수평/수직
플립
모드
노말 수평/수직 플립 모드에서의 영상 변환 장치(200)의 구체적인 동작 과정은 화소 위치 변경부(243)의 동작을 제외하고, 상술한 노말 수평 플립 모드에서의 영상 변환 장치(200)의 동작 과정과 실질적으로 동일하다. 따라서, 본 실시예에서는 화소 위치 변경부(243)의 동작을 중심으로 설명하기로 한다.
읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)가 로우 선택 신호들(RSEL1∼RSELN)를 출력한다. 이를 좀 더 상세히 설명하면, 위치 변환 컨트롤러(261)는 로우 선택 신호들을 RSELN, RSEL(N-1), RSEL(N-2), ..., RSEL1의 순서로 하나씩 연속적으로 출력한다. 로우 선택 신호들(RSEL1∼RSELN)에 응답하여, 로우 데이터 선택기(262)가 로우 출력 라인들을 ROLN, ROL(N-1), ROL(N-2), ..., ROL1의 순서로 하나씩 연속적으로 선택하고, 그 선택된 로우 출력 라인의 화소 데이터들을 화소 선택기(264)에 출력한다. 결과적으로, 로우 데이터 선택기(262)는 레지스터 어레이(252)로부터 로우 화소 라인 RN → R1(도 9 참고)의 방향으로 화소 데이터들을 가져온다.
또, 위치 변환 컨트롤러(261)는 읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 선택 신호(PSEL)와 엔디안 선택 신호(ESEL)를 제1 로직 레벨로 각각 출력한다. 그 결과, 화소 선택 신호(PSEL)에 응답하여, 화소 선택기(264)가 로우 데이터 선택기(262)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다. 바이트 리오더(265)는 엔디안 선택 신호(ESEL)에 응답하여, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 변경한다. 예를 들어, 도 9와 도 10c를 참고하면, 도 9에 도시된 로우 화소 라인(RN)이 리틀 엔디안의 형식으로 배열되어 있으므로, 바이트 리오더(265)는 화소 데이터들(NP1∼NPM)의 배열 순서를 도 10c에 도시된 로우 화소 라인(RN)과 같이 빅 엔디안 형식으로 변경한다. 한편, 쓰기 버퍼부(244)에 저장된 변환 블록(예를 들어, CB1)의 화소 데이터들(1P1∼NPM)의 배열 형태는 도 10c에 도시된 것과 동일하다. 영상 변환 장치(200)는 도 14c에서 점선 화살표로 나타낸 순서로 화소 데이터들의 기입 동작을 실행한다. 도 14c에서는 하나의 변환 블록에 16개의 화소 데이터들이 포함되는 경우가 일례로서 도시되어 있다.
회전
모드
회전 모드에서의 영상 변환 장치(200)의 구체적인 동작 과정은 화소 위치 변경부(243)의 동작을 제외하고, 상술한 노말 수평 플립 모드에서의 영상 변환 장치(200)의 동작 과정과 실질적으로 동일하다. 따라서, 본 실시예에서는 화소 위치 변경부(243)의 동작을 중심으로 설명하기로 한다.
읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)가 칼럼 선택 신호들(CSEL1∼CSELM)를 출력한다. 이를 좀 더 상세히 설명하면, 위치 변환 컨트롤러(261)는 칼럼 선택 신호들을 CSEL1, CSEL2, CSEL3, ..., CSELM의 순서로 하나씩 연속적으로 출력한다. 칼럼 선택 신호들(CSEL1∼CSELM)에 응답하여, 칼럼 데이터 선택기(263)가 칼럼 출력 라인들을 COL1, COL2, COL3, ..., COLM의 순서로 하나씩 연속적으로 선택하고, 그 선택된 칼럼 출력 라인의 화소 데이터들을 화소 선택기(264)에 출력한다. 결과적으로, 칼럼 데이터 선택기(263)는 레지스터 어레이(252)로부터 칼럼 화소 라인 C1 → CM(도 9 참고)의 방향으로 화소 데이터들을 가져온다.
또, 위치 변환 컨트롤러(261)는 읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 선택 신호(PSEL)와 엔디안 선택 신호(ESEL)를 제2 로직 레벨로 각각 출력한다. 그 결과, 화소 선택 신호(PSEL)에 응답하여, 화소 선택기(264)가 칼럼 데이터 선택기(263)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다. 바이트 리오더(265)는 엔디안 선택 신호(ESEL)에 응답하여, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 변경하지 않고 그대로 출력한다. 한편, 쓰기 버퍼부(244)에 저장된 변환 블록(예를 들어, CB1)의 화소 데이터들(1P1∼NPM)의 배열 형태는 도 11a에 도시된 것과 동일하다. 영상 변환 장치(200)는 도 15a에서 점선 화살표로 나타낸 순서로 화소 데이터들의 기입 동작을 실행한다. 도 15a에서, "Y"는 전송 워드 유닛을 나타내고, 도 15a에서는 하나의 변환 블록에 16개의 화소 데이터들이 포함되는 경우가 일례로서 도시되어 있다.
회전 수평
플립
모드
회전 수평 플립 모드에서의 영상 변환 장치(200)의 구체적인 동작 과정은 화소 위치 변경부(243)의 동작을 제외하고, 상술한 노말 수평 플립 모드에서의 영상 변환 장치(200)의 동작 과정과 실질적으로 동일하다. 따라서, 본 실시예에서는 화소 위치 변경부(243)의 동작을 중심으로 설명하기로 한다.
읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)가 칼럼 선택 신호들(CSEL1∼CSELM)를 출력한다. 이를 좀 더 상세히 설명하면, 위치 변환 컨트롤러(261)는 칼럼 선택 신호들을 CSEL1, CSEL2, CSEL3, ..., CSELM의 순서로 하나씩 연속적으로 출력한다. 칼럼 선택 신호들(CSEL1∼CSELM)에 응답하여, 칼럼 데이터 선택기(263)가 칼럼 출력 라인들을 COL1, COL2, COL3, ..., COLM의 순서로 하나씩 연속적으로 선택하고, 그 선택된 칼럼 출력 라인의 화소 데이터들을 화소 선택기(264)에 출력한다. 결과적으로, 칼럼 데이터 선택기(263)는 레지스터 어레이(252)로부터 칼럼 화소 라인 C1 → CM(도 9 참고)의 방향으로 화소 데이터들을 가져온다.
또, 위치 변환 컨트롤러(261)는 읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 선택 신호(PSEL)를 제2 로직 레벨을 출력하고, 엔디안 선택 신호(ESEL)를 제1 로직 레벨로 각각 출력한다. 그 결과, 화소 선택 신호(PSEL)에 응답하여, 화소 선택기(264)가 칼럼 데이터 선택기(263)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다. 바이트 리오더(265)는 엔디안 선택 신호(ESEL)에 응답하여, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 변경한다. 예를 들어, 도 11a와 도 11b를 참고하면, 도 11a에 도시된 칼럼 화소 라인(C1)이 빅 엔디안의 형식으로 배열되어 있으므로, 바이트 리오더(265)는 화소 데이터들(1P1∼NP1)의 배열 순서를 도 11b에 도시된 칼럼 화소 라인(C1)과 같이 리틀 엔디안 형식으로 변경한다. 한편, 쓰기 버퍼부(244)에 저장된 변환 블록(예를 들어, CB1)의 화소 데이터들(1P1∼NPM)의 배열 형태는 도 11b에 도시된 것과 동일하다. 영상 변환 장치(200)는 도 15b에서 점선 화살표로 나타낸 순서로 화소 데이터들의 기입 동작을 실행한다. 도 15b에서는 하나의 변환 블록에 16개의 화소 데이터들이 포함되는 경우가 일례로서 도시되어 있다.
회전 수직
플립
모드
회전 수직 플립 모드에서의 영상 변환 장치(200)의 구체적인 동작 과정은 화소 위치 변경부(243)의 동작을 제외하고, 상술한 노말 수평 플립 모드에서의 영상 변환 장치(200)의 동작 과정과 실질적으로 동일하다. 따라서, 본 실시예에서는 화소 위치 변경부(243)의 동작을 중심으로 설명하기로 한다.
읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)가 칼럼 선택 신호들(CSEL1∼CSELM)를 출력한다. 이를 좀 더 상세히 설명하면, 위치 변환 컨트롤러(261)는 칼럼 선택 신호들을 CSELM, CSEL(M-1), CSEL(M-2), ..., CSEL1의 순서로 하나씩 연속적으로 출력한다. 칼럼 선택 신호들(CSEL1∼CSELM)에 응답하여, 칼럼 데이터 선택기(263)가 칼럼 출력 라인들을 COLM, COL(M-1), COL(M-2), ..., COL1의 순서로 하나씩 연속적으로 선택하고, 그 선택된 칼럼 출력 라인의 화소 데이터들을 화소 선택기(264)에 출력한다. 결과적으로, 칼럼 데이터 선택기(263)는 레지스터 어레이(252)로부터 칼럼 화소 라인 CM → C1(도 9 참고)의 방향으로 화소 데이터들을 가져온다.
또, 위치 변환 컨트롤러(261)는 읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 선택 신호(PSEL)와 엔디안 선택 신호(ESEL)를 제2 로직 레벨로 각각 출력한다. 그 결과, 화소 선택 신호(PSEL)에 응답하여, 화소 선택기(264)가 칼럼 데이터 선택기(263)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다. 바이트 리오더(265)는 엔디안 선택 신호(ESEL)에 응답하여, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 변경하지 않고 그대로 출력한다. 한편, 쓰기 버퍼부(244)에 저장된 변환 블록(예를 들어, CB1)의 화소 데이터들(1P1∼NPM)의 배열 형태는 도 11c에 도시된 것과 동일하다. 영상 변환 장치(200)는 도 15c에서 점선 화살표로 나타낸 순서로 화소 데이터들의 기입 동작을 실행한다. 도 15c에서는 하나의 변환 블록에 16개의 화소 데이터들이 포함되는 경우가 일례로서 도시되어 있다.
회전 수평/수직
플립
모드
회전 수평/수직 플립 모드에서의 영상 변환 장치(200)의 구체적인 동작 과정은 화소 위치 변경부(243)의 동작을 제외하고, 상술한 노말 수평 플립 모드에서의 영상 변환 장치(200)의 동작 과정과 실질적으로 동일하다. 따라서, 본 실시예에서는 화소 위치 변경부(243)의 동작을 중심으로 설명하기로 한다.
읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 위치 변경부(243)의 위치 변환 컨트롤러(261)가 칼럼 선택 신호들(CSEL1∼CSELM)를 출력한다. 이를 좀 더 상세히 설명하면, 위치 변환 컨트롤러(261)는 칼럼 선택 신호들을 CSELM, CSEL(M-1), CSEL(M-2), ..., CSEL1의 순서로 하나씩 연속적으로 출력한다. 칼럼 선택 신호들(CSEL1∼CSELM)에 응답하여, 칼럼 데이터 선택기(263)가 칼럼 출력 라인들을 COLM, COL(M-1), COL(M-2), ..., COL1의 순서로 하나씩 연속적으로 선택하고, 그 선택된 칼럼 출력 라인의 화소 데이터들을 화소 선택기(264)에 출력한다. 결과적으로, 칼럼 데이터 선택기(263)는 레지스터 어레이(252)로부터 칼럼 화소 라인 CM → C1(도 9 참고)의 방향으로 화소 데이터들을 가져온다.
또, 위치 변환 컨트롤러(261)는 읽기 완료 신호(RE_END)와 모드 선택 신호(SMODE)에 응답하여, 화소 선택 신호(PSEL)를 제2 로직 레벨로 출력하고, 엔디안 선택 신호(ESEL)를 제1 로직 레벨로 출력한다. 그 결과, 화소 선택 신호(PSEL)에 응답하여, 화소 선택기(264)가 칼럼 데이터 선택기(263)에 의해 선택된 화소 데이터들을 수신하여, 바이트 리오더(265)에 출력한다. 바이트 리오더(265)는 엔디안 선택 신호(ESEL)에 응답하여, 화소 선택기(264)로부터 수신되는 화소 데이터들의 바이트 배열 순서를 변경한다. 예를 들어, 도 11a와 도 11d를 참고하면, 도 11a에 도시된 칼럼 화소 라인(CM)이 빅 엔디안의 형식으로 배열되어 있으므로, 바이트 리오더(265)는 화소 데이터들(1PM∼NPM)의 배열 순서를 도 11d에 도시된 칼럼 화소 라인(CM)과 같이 리틀 엔디안 형식으로 변경한다. 한편, 쓰기 버퍼부(244)에 저장된 변환 블록(예를 들어, CB1)의 화소 데이터들(1P1∼NPM)의 배열 형태는 도 11d에 도시된 것과 동일하다. 영상 변환 장치(200)는 도 15d에서 점선 화살표로 나타낸 순서로 화소 데이터들의 기입 동작을 실행한다. 도 15d에서는 하나의 변환 블록에 16개의 화소 데이터들이 포함되는 경우가 일례로서 도시되어 있다.
상술한 것과 같이, CPU(102)가 변환될 소스 영상(P1)에 관한 영상 변환 정보(CON_IF)를 영상 변환 장치(200)에 한 번 출력하면, 영상 변환 장치(200)가 소스 영상(P1)을 메모리(101)로부터 판독하고, 변환한 후, 그 변환된 영상(P2)을 메모리(101)에 기입하므로, CPU에 집중되는 과도한 부하가 감소할 수 있다. 또한, 영상 변환 장치(200)는 소용량의 레지스터 버퍼를 포함하므로, 전체 장치의 하드웨어 사이즈 및 소비 전력이 감소할 수 있다.
상기한 실시 예들은 본 발명을 설명하기 위한 것으로서 본 발명이 이들 실시 예에 국한되는 것은 아니며, 본 발명의 범위 내에서 다양한 실시예가 가능하다. 또한 설명되지는 않았으나, 균등한 수단도 또한 본 발명에 그대로 결합되는 것이라 할 것이다. 따라서 본 발명의 진정한 보호범위는 아래의 특허청구범위에 의하여 정해져야 할 것이다.