논문 2012-49-11-10
실사기반 디지털 홀로그래픽 비디오의 실시간 생성을 위한 하드웨어의 설계
( A New Hardware Design for Generating Digital Holographic Video based on Natural Scene )
이 윤 혁*, 서 영 호**, 김 동 욱***
( Yoon-Hyuk Lee, Young-Ho Seo, and Dong-Wook Kim )
요 약
본 논문에서는 고속으로 홀로그램을 생성할 수 있는 하드웨어의 구조를 제안하고 이를 구현하였다. 제안한 하드웨어는 홀로 그램 평면의 행 단위로 병렬 연산을 수행할 수 있는 구조를 가지고 있고, 한 행의 각 홀로그램 화소들이 독립적으로 연산될 수 있는 알고리즘을 이용하였다. 이러한 연산 방법을 통해서 홀로그램 생성 하드웨어서 가장 문제가 되는 메모리 접근량을 대 폭 감소시킴으로써 하드웨어 처리능력의 실시간성을 대폭 향상시켰다. 제안한 하드웨어는 입력 인터페이스, 초기 파라미터 연 산기, 홀로그램 화소 연산기, 라인 버퍼, 그리고 메모리 제어기로 구성된다. 제안한 하드웨어는 기존의 하드웨어와 동일한 처리 능력을 가지면서도 메모리 접근횟수는 약 20,000배 감소시킬 수 있었다. 구현한 하드웨어는 198MHz에서 안정적으로 동작할 수 있었고, 168,960개의 LUT, 153,944개의 레지스터, 그리고 19,212개의 DSP 블록을 사용하였다.
Abstract
In this paper we propose a hardware architecture of high-speed CGH (computer generated hologram) generation processor, which particularly reduces the number of memory access times to avoid the bottle-neck in the memory access operation. For this, we use three main schemes. The first is pixel-by-pixel calculation rather than light source-by-source calculation. The second is parallel calculation scheme extracted by modifying the previous recursive calculation scheme.
The last one is a fully pipelined calculation scheme and exactly structured timing scheduling by adjusting the hardware.
The proposed hardware is structured to calculate a row of a CGH in parallel and each hologram pixel in a row is calculated independently. It consists of input interface, initial parameter calculator, hologram pixel calculators, line buffer, and memory controller. The implemented hardware to calculate a row of a 1,920×1,080 CGH in parallel uses 168,960 LUTs, 153,944 registers, and 19,212 DSP blocks in an Altera FPGA environment. It can stably operate at 198MHz. Because of the three schemes, the time to access the external memory is reduced to about 1/20,000 of the previous ones at the same calculation speed.
Keywords: 위상 홀로그램, 컴퓨터 생성 홀로그램, FPGA, 하드웨어 설계, FPGA
* 학생회원, *** 정회원, 광운대학교 전자재료공학과 (Department of Electrical Material Engineering, Kwangwoon University)
** 정회원, 광운대학교 교양학부
(Faculty of Liberal Arts, Kwangwoon University)
※ 이 논문은 2012년도 정부(교육과학기술부)의 재원으 로 한국연구재단의 지원을 받아 수행된 연구임 (NRF-2010-0026245).
접수일자: 2012년7월8일, 수정완료일: 2012년10월24일
Ⅰ. 서 론
홀로그래피는 1948년 Gabor에 의해 최초로 제안된 이래 3차원 정보를 기록할 수 있다는 특징 때문에 많은 연구자들의 관심을 끌어왔다. 기존의 홀로그래피는 홀 로그램 필름에 3차원 정보를 기록하고, 현상된 필름을
사용하여 3차원 물체를 복원하는 방식을 사용함으로써 그 응용이 크게 제한되었다. 이러한 단점을 극복하기 위한 새로운 접근방법으로 1966년 이후 많은 연구자들 이 컴퓨터에 의한 홀로그램(computer-generated hologram, CGH)의 제작을 연구해 오고 있다[1]. 이 기술 은 물체파와 기준파의 간섭에 의해 생성되는 간섭항을 계산함으로써 현실에서는 불가능한 이상적인 특성을 가 진 부품을 제작하거나 특성시험 등을 위해 개발되었다
[2~3].
CGH를 이용하여 한 프레임에 해당하는 홀로그램을 생성하기 위해서는 많은 연산량과 시간이 소요되기 때 문에 고속의 연산방법이 필요하다. 이런 고속 CGH를 위한 여러 알고리즘들이 개발되어 왔다[4~6]. MIT Media 연구소의 Spatial Imaging Group(지금은 Object-based Media Group)은 고속 CGH를 위한 연구 를 가장 먼저 시작한 연구그룹이다[4]. 여기서는 HPO (horizontal-parallax-only) 방식의 CGH 기법을 이용해 디지털 홀로그램을 생성하는 연구를 수행하였다. 이 연 구에서는 LUT(Look-up Table)방식과 슈퍼컴퓨터를 이 용해 10,000 개의 광원 영상으로부터 1초에 한 장씩 디 지털 홀로그램(해상도: 6M)을 생성하였다. 일본 Nihon 대학의 Yoshikawa교수는 root연산을 Taylor 전개를 통 해 변형한 후 CGH 수식의 근사화를 통해 고속화 알고 리즘을 정리하였다[5]. 이 연구는 최근 연구되고 있는 고 속 CGH 알고리즘들의 이론적 토대가 된다는 점에서는 상당히 가치가 있지만, 연산속도 측면에서는 큰 의미가 없다. 일본의 Chiba 대학의 연구팀은 Yoshikawa교수의 이론을 변형시켜 x축에서 반복덧셈만을 수행하여 CGH 를 계산하는 알고리즘을 제안하고 FPGA를 이용한 하 드웨어로 구현하였다[6]. 이와 같이 CGH 연산량이 너무 나 방대하기 때문에 실제로 소프트웨어로 CGH를 실시 간으로 처리하는 것은 불가능하고 하드웨어로 구현되어 야 하며, 지금까지 CGH를 위해 하드웨어를 활용한 많 은 연구가 진행되어 왔다[7~14]. 이러한 연구들은 GPU 기반의 소프트웨어 방식[7~11]과 FPGA 기반의 하드웨어 칩 구현 방식[6, 12~14]으로 나누어진다.
GPU를 이용한 방식은 FPGA 기반의 방식에 비해서 구현이 비교적 쉽고 개발기간이 짧다는 장점이 있다.
FPGA를 이용하면 구현과정이 매우 복잡하고 개발기간 이 오래 걸린다는 단점이 있다. 또한 한번 구현하면 구 조를 변경하거나 성능을 개선하기 어렵다. 그러나 GPU
방식에 비해서 성능은 수배 가랑 높은 성능을 갖는다.
또한 GPU는 GPU를 구동하기 위한 호스트(CPU) 및 PC가 필요하기 때문에 독립적인 시스템으로 구성하기 어렵고, 다른 H/W 시스템으로의 이식이 어렵다. 반면 에 FPGA는 단독 칩이므로 독립적인 시스템을 구성하 기 용이하고 외부 인터페이스의 변경이 가능하기 때문 에 다른 시스템으로의 이식성이 높다.
최근 GPU의 급격한 발달과 함께 이에 대한 연구가 최근에 활발히 이루어지고 있다. 싱가폴대[9]는 CGH 수 식을 복소형태로 변환한 후에 연산을 분리하는 알고리 즘을 제안하였다. 분리된 항을 각각 LUT로 만든 후에 연산을 고속화시켰고, 이를 nVidia의 GPU로 구현하였 다. 1,000(1K)개의 object point를 갖는 객체에 대해 1024×768크기의 홀로그램을 0.3초당 한 장씩 생성할 수 있었다. 중국 Zhongshan 대학의 Wang[10]은 3D 메시 모델을 기반으로 GPU를 이용해 CGH를 수행한 연구를 발표했다. 또한 일본 Chiba대의 Shimobaba[11]는 AMD 의 GPU를 기반으로 하여 이전 연구에서 제안한 알고리 즘[6]을 사용하면서 GPU 프로그래밍 기법을 활용하여 고속화하였고, HD크기의 홀로그램을 0.31초당 한 장씩 생성할 수 있었다. [12]에서는 4개의 Xilinx FPGA (XC2VP70)를 사용하는 전용 PCB 보드를 제작하여 Fresnel 변환 CGH를 구현하였다. 홀로그램의 x축 해상 도만큼의 단위 연산기를 병렬로 배열(1,408개)하는 구조 를 가지고 166MHz의 클록 주파수에서 한 프레임의 홀 로그램을 0.0679초에 생성할 수 있다. 최근에는 CGH를 연산하기 위한 전용 연산 시스템인 HORN-6 특수 컴퓨 터가 제안되기도 하였다[13]. 또한 100% 파이프라인 구 조를 기반으로 하는 CGH 프로세서가 제안되었다[14]. Fresnel 변환을 수행하기 위한 CGH 셀의 하드웨어 구 조를 제안한 후에 이를 확장하여 CGH 커널을 구성하 였고, 이를 다시 확장하여 CGH 프로세서를 구현하였 다. [14]의 하드웨어는 [12]보다 최대 87.32%의 높은 성 능을 갖는다. [15]의 논문에서 사용한 하드웨어는 1920
×1080 크기의 HD급의 홀로그램을 생성할 수 있다.
[15]의 논문에서 구현한 하드웨어는 하나의 광원에 대한 중간 홀로그램들을 각각 구하여 누적하는 방식이 기 때문에 계산 후 출력을 고려했을 때 메모리 병목 현 상이 발생하는 단점을 갖는다. 본 연구팀은 이전 연구[1
4~15]
에서 제안된 하드웨어의 단점을 극복하기 위해 메 모리의 접근 개수를 줄이기 위한 방식을 적용한다. 이
를 위해 알고리즘을 재구성하고 하드웨어의 구조 및 동 작 스케쥴을 제안하여 고성능의 CGH 프로세서를 구현 하였다.
본 논문은 다음과 같이 구성되어 있다. Ⅱ장에서는 CGH의 원리와 하드웨어 구현을 위해 수정된 CGH 알 고리즘을 설명한다. Ⅲ장에서는 제안한 하드웨어 구조 를 설명하고 Ⅳ장에서는 구현결과를 보이고 기존 연구 와 비교한다. 마지막으로 Ⅴ장에서는 결론을 맺는다.
Ⅱ. 컴퓨터 생성 홀로그램
1. CGH 알고리즘
홀로그램은 광학계를 이용하여도 취득할 수 있지만 광학계 자체를 수학적으로 모델링한 연산에 의해서 구 할 수도 있다. 이러한 수학적인 연산을 통해 얻어진 홀 로그램을 컴퓨터 생성 홀로그램(computer-generated hologram, CGH)이라고 한다. 여러 종류의 CGH가 있지 만 본 논문에서는 “위상(phase)” 방식을 사용하는데, 이 것은 객체에서 CCD로 입사되는 파에서 위상 성분을 이 용하여 홀로그램을 생성하는 것으로, 그 증명[3]은 본 논 문에서 다루지 않는다.
파면의 간격이 시간과 공간에 걸쳐 일정하게 유지되 는 가간섭성(coherent) 광이 어떤 형태를 가진 물체에 부딪쳐 반사될 때 반사된 광의 파면은 물체의 형태에 비례하여 달라진다. 즉 파면의 위상 변화가 물체의 형 상에 따라 변화하게 된다. 그러므로 물체의 형상에 관 한 좌표의 정보가 있으면, 형상에 따라 변화하는 파면 의 위상변화는 기하광학적인 광선추적에 의해 쉽게 계 산된다.
CGH는 식 (1)과 같이 정의되는데 앞서 설명한 것과 같이 홀로그램의 위상으로부터 홀로그램의 강도()를 얻는 방법이다. 여기서 N은 3차원 객체의 광원수를 뜻 한다. 는 참조파의 파수로 로 정의되고 는 사용 된 파의 파장을 나타낸다. 와 는 홀로그램내의 위 치를 뜻하고 , , 및 는 3차원 객체의 위치를 나타 낸다. 는 객체의 밝기 정보를 나타낸다. 는 홀로그 램 평면에서 하나의 화소의 크기를 나타낸다.
(1)
와 는 각각 및 로 정의한다. 식 (1)에서 ≪ 의 조건인 경우에 Fresnel 근사를 통해서 식 (2)와 같이 근사될 수 있다[5].
(2)
2. 수정된 CGH 알고리즘
본 절에서는 앞 절에서 설명한 CGH 알고리즘의 효 율을 높이기 위해 수정된 CGH 알고리즘을 사용한다[15]. 수정된 CGH 알고리즘은 병렬적으로 연산이 가능하도 록 하는 것이 목적이다. 먼저, 가로줄의 첫 번째 홀로그 램 위치( )에 대해 연산을 수행하고 그 이후의 위치 ( )에 대해서는 을 구한 후에 모든 위치에서 병 렬적으로 를 구한다. 이를 이용하여 각 위치에서의 홀로그램 값()을 구한다.
식 (3)에 수정된 CGH 식을 나타냈다. 식 (3)의 와
는 홀로그램 평면과 객체 평면과의 위상에 대한
관계로 식 (4) 및 식 (5)로 정의된다. 식 (5)의 는 홀로그램 평면에서 한 행의 첫 번째 화소 위치 ( )에서만 연산되는 값으로 이 값은 한 행의 다른 모든 위치의 초기 파라미터로 사용된다. 식 (3)의 는 홀로그램 평면의 와 만큼 떨어진 위치와의 차 이로 식 (6)으로 정의되고, 이 식에서 는 식 (7)로 정 의된다. 는 홀로그램 평면에서 한 행의 두 번째 위치 ( )에서 구하는 값으로 이 값도 행의 다른 모든 위 치에서 초기 파라미터로 사용된다. 식 (6)의 는 식 (8) 로 정의된다.
(3)
(4)
(5)
(6)
(7)
(8)
하드웨어의 효율성을 고려한다면 식 (6)은 식 (9)와 같이 변형하는 것이 유리하다. 두 식의 연산결과는 동 일하지만, 하드웨어 구현 측면에서는 차이점을 갖는다.
하드웨어의 측면에서 식 (6)은 3개의 곱셈기와 1개의 덧셈기, 그리고 1개의 shifter가 필요하지만, 식 (9)는 2 개의 곱셈기와 1개의 덧셈기가 필요하다. 즉, 곱셈기의 개수가 1개와 shifter 1개가 감소한다. 이러한 감소는 중 요하지 않게 생각될 수 있다. 그러나 CGH 셀이 홀로그 램의 열의 개수(예를 들어 1920개)만큼 사용된다는 것 을 고려한다면 중요한 요소로 고려될 수 있다.
(9) 식 (3)은 식 (2)와 동일한 결과를 갖는 식이지만 한 행에 대한 초기값( , )이 주어진 이후에는 그 행 의 임의의 위치에서 홀로그램 화소를 쉽게 생성할 수 있다는 장점을 갖는다. 이러한 장점은 하드웨어 구현 시 다양한 병렬화를 가능하게 해줄 수 있다. 뿐만 아니 라 홀로그램 평면에서 임의의 영역에 대한 홀로그램을 선별적으로 구할 수도 있어서 다양한 활용이 가능하다.
이때 초기 파라미터는 행(혹은 열) 단위로 모든 광원에 대해서 한 번씩 구해야 한다.
Ⅲ. 제안한 하드웨어의 구조
1. 전체 동작
본 장에서는 새롭게 유도된 CGH 수식을 바탕으로 하여 새로운 하드웨어 구조를 제안한다. 본 논문에서는 기본적으로 모든 광원 정보를 이용하여 홀로그램 화소 를 하나씩 순차적으로 생성하는 방식을 사용한다. 이러 한 순차적인 CGH 방식을 그림 1(a)에 나타냈다. 이러 한 순차방식의 CGH를 동시에 수행한다면 그림 1(b)와 같은 병렬화가 가능하다. 병렬화를 위해서는 다수 개의 하드웨어가 필요하게 된다. 또한 그림 1(c)와 같이 블록 단위로 병렬화를 수행할 수도 있다. 행단위의 병렬화와 블록단위의 병렬화는 연산량이나 데이터 처리율은 거의
동일하다. 그러나 블록단위의 병렬화는 초기에 필요한 값들을 더 많이 생성해야하는 단점을 갖는다. 따라서 본 논문에서는 식 (3)을 이용하고, 그림 1(b)의 행단위 병렬방식을 이용하여 하드웨어를 구현하고자 한다.
제안한 하드웨어의 구조는 그림 2에 나타내었다. 하 드웨어의 셀은 입력받은 객체의 광원을 받아서 화소 밝 기가 0이 아닌 값만 SRAM에 저장시키고 해당 좌표만 출력하는 입력 인터페이스, 실제 한 가로줄에 대한 CGH연산을 하기 위해 공통항과 업데이트 항을 포함하 는 CGH 연산기로 구성된다.
전체적인 동작 순서를 그림 3에 나타냈다. 홀로그래 픽 비디오인 경우에 첫 번째 프레임에 해당하는 광원
(a) (b)
(c)
그림 1. CGH 연산 방식 (a) 순차방식 (b) 행(열)단위 병 렬방식 (c) 블록단위 병렬방식
Fig. 1. Arithmetic method of CGH (a) sequential, (b) column(row)-parallel, (c) block-parallel method.
그림 2. 제안한 하드웨어 구조
Fig. 2. The proposed hardware architecture.
그림 3. 전체 동작 순서
Fig. 3. Whole operational sequence.
정보를 칩 내부의 SRAM에 입력한다. N개의 광원이라 면 N 클록이 소요된다. 입력된 N개의 광원을 이용하여 첫 번째 행에 대해 병렬적으로 CGH 연산을 수행한다.
전체 하드웨어가 파이프라인화되어 있다면 CGH 연산 을 수행하는데에도 약 N 클록이 소요된다.
다음으로 두 번째 행에 대해 CGH 연산을 수행하고, 이와 함께 생성된 첫 번째 행에 해당하는 홀로그램 화 소값들이 외부로 출력된다. 그림 3에서 보이는 바와 같 이 한 행을 연산하는 중에 이전 행에 연산되었던 값들 은 외부 메모리에 저장할 수 있다. 이전 연구[15]에서는 광원 하나에 대하여 중간 홀로그램 평면에 대한 연산을 수행하기 때문에 한 클록 주기 마다 한 행의 연산 결과 가 출력되었고, 이로 인해 메모리 병목현상이 발생하였 다. 그러나 본 논문에서 제안한 방식의 경우에는 이러 한 메모리 병목 현상이 최소화되어 실시간 동작이 용이 하다.
2. 입력 인터페이스
그림 5는 그림 4의 입력 인터페이스 블록을 상세하게 나타낸 것이다. 입력 인터페이스 블록의 경우 입력받은 데이터 중에서 밝기 값이 0일 경우 식 (1)과 같이 어떠 한 코사인 값이 나와도 결과 값이 0이 되어서 누적 덧 셈에 영향을 주지 않으므로 연산을 하지 않아도 된다.
하지만 값이 0이라 해도 해당하는 객체의 좌표는 카운 트를 해야 한다. 따라서 입력되는 밝기 값이 0이 아닐 경우 SRAM의 주소를 카운팅하여서 3개의 SRAM에 화소에 해당하는 밝기, 깊이정보, 좌표를 저장을 하게 된다. 한 프레임에 관하여 저장이 완료 되면 모든 홀로 그램 평면에 대하여 연산이 완료될 때까지 읽기 명령을 대기하게 된다.
그림 4. 입력 인터페이스의 구조
Fig. 4. The architecture of input interface.
그림 5. 초기 파라미터 연산기의 구조
Fig. 5. The architecture of initial parameter calculator.
3. 초기 파라미터 연산기
그림 1(b)의 8개의 홀로그램 화소를 병렬적으로 구 하기 위해서는 식 (3)을 수행할 수 있는 8개의 동일한 하드웨어가 필요하다. 8개의 하드웨어는 각각 다른 홀 로그램 화소에 해당하므로 각각 다른 값을 연산한 다. 앞 절에서의 CGH 연산 방법을 이용한다면 각 수 식 혹은 하드웨어는 의 초기값(
, )들을 구하
기 위한 부분(초기 파라미터 연산)과 코사인 연산 결 과와 밝기값을 곱한 결과를 누적하여 홀로그램 화소값 을 구하는 부분(홀로그래픽 화소 연산)으로 구성될 수 있다. 여기서 초기값을 구하는 모듈을 초기 파라미터 연산기(Initial Parameter Calculator, IPC)라 정의한다.
초기값들을 구하는 연산은 각 행별로 처음에 한번만 연산이 수행된다. 하나의 광원에 대해서 홀로그램 평 면의 한 행을 병렬적으로 구하기 때문에 는 한 행에 대해서 공통적으로 사용된다. 따라서 초기값이 구해지면 는 즉시 연산이 가능하다.
그림 5에 이러한 초기 파라미터들을 연산하기 위한 하 드웨어 구조를 나타냈다. 하드웨어 구현을 고려한다면
과 를 look-up table(LUT)로 만드는 것이 바람직 하다. 두 개의 항 모두 를 변수로 갖는 연산이다. 는 거리를 256단계로 나누는 깊이 정보이다. 따라서
와 은 256개의 주소를 가지는 LUT1으로 통합하 고 하드웨어에 내장시킨다. 에서 의 처음 좌표 값이므로 같게 되는데 제곱 항이 필요 하므 로
은
와 같다. 따라서 항에 항은
와 같다.
4. 홀로그래픽 화소 연산기
앞서 구한 초기 파라미터들을 이용하여 한 행에서 각
그림 8. 구현한 하드웨어의 타이밍도
Fig. 8. Timing waveform of the designed H/W.
그림 6. 홀로그래픽 화소 연산기의 구조
Fig. 6. The architecture of holographic pixel calculator.
홀로그램 화소 위치의 을 구하면 각 위치에서의 중간 홀로그램이 구해진다. 이 값을 모든 광원에 대해서 누 적하여 더하면 최종 홀로그램 화소값을 구할 수 있다.
이러한 연산을 수행하는 모듈을 홀로그래픽 화소 연산 기(Holographic Pixel Calculator, HPC)라 정의한다.
HPC는 초기 파라미터 연산기의 출력 데이터를 이용 하여 ( )인 가로줄에 대하여 연산한다. HPC는 셀 의 개수가 많기 때문에 IPC의 연산 순서에 맞추어 파라 미터를 순차적으로 사용하면 업데이트 레지스터를 줄일 수 있다.
코사인 함수의 연산도 간단한 LUT로 처리할 수 있 다. 따라서 누적되는 항은 LUT2의 결과를 로 곱하는 것으로 매우 단순한 과정이다. 그림 6은 HPC의 구조를 나타내고 있다. HPC는 HD급(1920×1080) 홀로그램의 한 가로줄만큼 구성하므로 는 각 업데이트 셀마다 일 정한 값을 가지게 되므로 카운터 하나가 감소한다. 카 운터 하나의 감소는 중요하지 않을 수 있다고 생각할지 도 모르지만 한 세로줄의 화소 수(1080개)만큼 감소한
다면 중요한 요소로 고려될 수 있다.
5. 전체 구조
그림 7에 IPC와 HPC를 이용한 전체 하드웨어의 구 조를 나타냈다. 그림 7의 하드웨어는 그림 1(b)와 같이 가로의 너비가 8인 경우를 예시한 것이다. 따라서 HPC 가 총 8개 사용되었다. HD 홀로그램이라면 1,920개의 HPC를 사용하고, Line Buffer가 변화되는 것 이외에 다 른 모든 하드웨어는 동일하다. Input Interface를 통해
그림 7. IPC 및 HPC를 이용한 H/W의 구조 Fig. 7. The H/W architecture using IPC and HPC.
공급되는 광원을 이용하여 IPC를 거치면서 행단위의 병렬 연산을 위한 초기 파라미터들을 생성한다. 이 값 들을 이용하여 HPC들은 홀로그램 화소값을 병렬적으 로 생성한다. 전체 광원에 대해서 한 행의 홀로그램이 구해지면 Line Buffer를 통해 정렬된 후에 Memory Controller를 통해서 외부 SDRAM 혹은 DDR 메모리에 저장된다. SDRAM 제어기는 논문의 주 관심사가 아니 기 때문에 자세한 설명은 생략한다.
그림 8에는 그림 1(b)의 경우에 대해 제안한 하드웨 어가 어떻게 동작하는지 정확한 타이밍도를 나타냈다.
그림 1(b)는 광원이 4개이고 홀로그램 평면이 8×8인 매 우 단순한 경우이다. 그림 8에서 클록에 따른 동작 순 서는 그림 5와 6에서 제안한 IPC와 HPC의 동작에 따 라 결정된 것이다. 여기에서 광원이 입력되는 순서, IPC 를 통해 초기 파라미터들이 출력되는 순서, HPC를 통 해서 홀로그램 화소가 출력되는 순서, Line Buffer에 데 이터가 적재되는 순서, 그리고 마지막으로 메모리 제어 기를 통해 burst-8 모드로 SDRAM으로 데이터가 출력 되는 순서를 클록 단위로 정확히 확인할 수 있다. 메모 리 제어기는 일반적으로 연산 모듈들과 다른 클록 주파 수를 사용한다.
Ⅲ. 실 험 결 과
1. 하드웨어 구현 결과
제안한 하드웨어는 Verilog-HDL을 이용하고 Altera 사의 FPGA 환경을 이용하였다. Verilog-HDL의 설계 는 Quartus II 10.0을 이용하였고, 시뮬레이션은 Modelsim 6.5e를 사용하였다. 홀로그램 생성기의 자원 사용량은 표 1에 나타내었다. 구현한 홀로그램 생성기 는 FPGA 환경에서 최대 198.7MHz로 동작 할 수 있었 다. 1,920개의 업데이트 셀을 이용하여 총 168,960개의 LUT를 사용하고 153,944개의 레지스터 그리고 19,212 개의 DSP 블럭을 사용하여 구현되었다.
Hardware Resource Total Interface Common Update Combinational ALUTs 168960 276 83 88 Dedicated logic register 153944 198 146 80 DSP block 18-bit elements 19212 - 12 10
표 1. 자원 사용량
Table 1. Resource utilization.
2. 메모리 접근량의 비교
제안한 하드웨어는 병렬 처리 후 연산된 데이터를 처 리하는데 있어서 메모리의 입출력에 발생하는 병목 현 상을 제거했기 때문에 여러 장의 프레임을 고속으로 연 산할 수 있는 장점을 갖는다. 1장의 프레임의 홀로그램 을 계산하는데 걸리는 시간은 식 (10)으로 정의할 수 있다. 제안한 하드웨어는 홀로그램의 수평 해상도만큼 CGH 셀 수를 갖고 모든 하드웨어의 구조는 100% 파이 프라인화되어 있다.
× (10)
식 (10)에 따라서 10K개의 광원을 갖는 객체에 대해 서 1,920×1,080(HD)크기의 홀로그램을 생성하는 데에는 0.07s가 소요된다. 가로 방향으로 3줄씩 홀로그램을 병 렬로 연산하는 구조를 적용한다면 0.03s가 소요된다.
한 장의 홀로그램을 생성하는 시간만 본다면 이전연 구[15]와 차이가 없지만 제안한 구조를 이용하면 홀로그 램 생성이후에 메모리 접근 시간을 줄일 수 있어서 다 수에 프레임을 생성하는데 유리하다. 표 2에는 이전 연 구[15]와 제안한 하드웨어간의 메모리 접근 횟수를 비교 하였다. 유효광원수가 10K이고 계산되어야할 홀로그램 의 해상도가 1,920×1,080(HD)일 때 이전연구[15]에서는 1 클록당 1,920개의 중간 홀로그램 결과가 출력이 된다.
또한 이 중간 홀로그램끼리의 누적을 위하여 1,920개의 중간 홀로그램 입력이 필요하다. 따라서 1클록당 총 메 모리 접근 횟수는 3,840번이 되어야 한다. 홀로그램 생 성기의 클록 주파수가 166MHz일 때 초당 6.374×1,011 개의 데이터가 메모리 포트를 통하여 이동해야 한다[15]. 제안한 구조에서는 광원의 수, 즉 10K 클록 당 1,920개 의 홀로그램 결과가 출력이 된다. 이 홀로그램 결과의 경우 누적된 값이기 때문에 출력만 하면 된다. 홀로그 램 생성기의 클록 주파수가 166MHz일 때 초당
Item FPGA
[15] Proposed
Hologram Size 1,920×1,080 1,920×1,080
Light source 10,000 10,000
Frequency(MHz) 166MHz 166MHz
1,920 -
1,920 0.192
6.374×1011 3.187×107 Parallel Unit Cells 1,920 1,920
표 2. 메모리 접근량의 비교
Table 2. Comparison of accessing memory.
3.187×107개의 데이터가 메모리 포트를 통하여 이동해 야 한다. 따라서 제안한 하드웨어 구조는 이전 연구에 비하여 약 20,000배만큼 메모리 입출력 횟수를 감소시 킬 수 있다.
3. 시뮬레이션 결과
Cadence사의 ModelSim을 이용하여 시뮬레이션을 수 행하였다. 그림 9는 한 장의 홀로그램을 연산한 시뮬레 이션 결과이다. 초기에 광원을 입력 받고 유효광원 수 만큼 주기 동안 하나의 가로줄만큼 홀로그램 화소를 연 산하고 다음 가로줄을 연산하는 동안 이전 가로줄의 연 산 결과를 출력 할 수 있다. 그림 9(a)를 S/W와 H/W 로 각각 CGH를 수행하여 홀로그램을 생성한 후에 복 원하였다. 복원에 대한 자세한 설명은 참고문헌을 참고 하기 바란다[2]. 그림 9(b)는 C언어를 이용하여 홀로그램 을 생성한 후에 복원한 결과이고, 그림 9(c)는 구현한 H/W를 이용하여 홀로그램을 생성한 후에 복원한 결과 이다. 두 결과의 PSNR을 구해보면 객체의 종류 및 광 원의 개수에 따라서 차이가 있는데 약 25dB로 다소 차 이가 발생했다는 것을 확인할 수 있다. H/W는 C언어와 같은 S/W만큼의 정밀도를 갖는 버스 크기와 연산기를 모두 사용할 수 없기 때문에 두 구현 사이에는 차이가
(a) (b)
(c)
그림 9. 실험영상 (a) 원본 깊이영상, (b) S/W를 이용한 CGH의 복원결과 (c) H/W를 이용한 CGH의 복 원 결과
Fig. 9. Experimental images; (a) original depth, reconstructed images of CGH by (b) S/W, (c) H/W.
발생한다. 또한 이로 인해 복원된 객체에 대해서 최대 및 최소값의 차이가 발생하고 8비트로 정규화를 수행하 는 과정에서 복원된 객체의 전체에 영향을 미치게 된 다. 그러나 그림 9와 같이 복원된 객체를 시각적으로 관찰해보면 큰 차이를 느낄 수 없다.
Ⅳ. 결 론
본 논문에서는 홀로그램 화소들을 독립적으로 연산 할 수 있는 CGH 알고리즘을 이용하여 행 단위의 병렬 연산을 수행할 수 있는 고성능 홀로그램 생성기를 제안 하고, 이를 하드웨어로 구현하였다. IPC에서 하나의 가 로줄에 해당하는 초기 파라미터들을 연산한 후 이 값을 이용하여 HPC에서 임의의 가로줄에 대한 홀로그램 화 소 값을 구하였다. 홀로그램 화소값들을 행단위로 병렬 적으로 전체 광원에 대해서 누적하여 최종 홀로그램 구 하였다. 이 구조는 행단위의 최종 홀로그램이 한 행에 대한 연산이 끝날 때 마다 생성되기 때문에 이전 연구 에서 최종 홀로그램이 한 클록에 생성되는 구조에 비하 여 메모리 입출력에 대한 병목현상을 줄여서 동영상 홀 로그램 생성에 효율적이다. 기존 연구와 비교할 때 메 모리 병목 현상을 20,000배 정도 향상시켜서 동영상 홀 로그램 생성도 가능하고, 가로 방향의 병렬화를 늘려도 병목 현상이 없어서 성능을 선형적으로 증가시킬 수 있 는 장점도 갖는다.
참 고 문 헌
[1] T. Motoki, H. Isono, and I. Yuyama, “Present Status of Three-Dimensional Television Research,” Proc. IEEE 83(7): 1009-1021(July 1995).
[2] J. K. Chung and M. H. Tsai, Three-Dimensional Holographic Imaging, John Wiley & Sons, Inc., 2002.
[3] P. Hariharan, Basics of Holography, Cambridge University Press, May 2002.
[4] Mark Lucente, “Interfactive Computation of Holograms Using a Look-up Table”, Journal of Electronic Imaging, vol. 2, no.1, pp. 28-34, Jan.
1993.
[5] H. Yoshikawa, S. Iwase, and T. Oneda, “Fast Computation of Fresnel Holograms employing Differences”, Proceeding of SPIE, vol. 3956, 2000.
[6] T. Shimobaba, T. Ito, “An efficient computational method suitable for hardware of computer-generated hologram with phase computation by addition”, Computer Physics Communications, vol. 138, pp. 44-52, 2001.
[7] N. Masuda, T. Ito, T. Tanaka, A. Shiraki, and T. Sugie, “Computer generated holography using a graphics processing unit,” Optics Express, vol.
14, no. 2, January 2006.
[8] L. Ahrenberg, P. Benzie, M. Magnor, and J.
Watson, “Computer generated holography using parallel commodity graphics hardware,” Optics Express, vol. 14, no. 17, August 2006.
[9] Y. Pan, X. Xu, S. Solanki, X. Liang, R. Bin, A.
Tanjung, C. Tan, and T.-C. Chong, “Fast CGH computation using S-LUT on GPU”, Optics Express, vol. 17, no. 21, pp. 18543-18555, Oct.
2009.
[10] Y.-Z. Liu, J.-W. Dong, Y.-Y. Pu, B.-C. Chen, H.-X. He, and H.-Z. Wang, “High-speed full analytical holographic computations for true-life scenes”, Optics Express, vol. 18, no. 4, pp.
3345-3351, Feb. 2010.
[11] T. Shimobaba, T. Ito, N, Masuda, Y, Ichihashi, and N. Takada, “Fast calculation of computer-generated-hologram on AMD HD5000 series GPU and OpenCL”, Optics Express, vol.
18, no. 10, pp. 9955-9960, May. 2010.
[12] T. Ito, N. Masuda, K. Yoshimura, A. Shiraki, T.
Shimobaba, and T. Sugie, “Special-Purpose computer HORN-5 for a real-time electroholography,” Optics Express, vol. 13, no.
6, March 2005.
[13] Y. Ichihashi, H. Nakayama, T. Ito, N, Masuda, T. Shimobaba, A, Shiraki, and T. Sugie,
“HORN-6 special-purpose clustered computing system for electroholography”, Optics Express, vol. 17, no. 16, pp. 13895-13903, Aug, 2009 [14] Y.-H. Seo, H.-J. Choi, J.-S. Yoo, and D.-W.
Kim, “An architecture of a high-speed digital hologram generator based on FPGA”, Journal of Systems Architecture, vol. 56. pp. 27-37, Dec.
2009.
[15] Y.-H. Seo, H.-J. Choi, J.-S. Yoo, and D.-W.
Kim, “A New Parallelizing Algorithm and Cell-based Hardware Architecture for High-speed Generation of Digital Hologram”, Journal of Systems Architecture, vol. 16. pp.
54-63, Jan. 2011.
저 자 소 개 이 윤 혁(학생회원)
2012년 광운대학교 전자재료 공학과 졸업(공학사) 2012년~현재 광운대학교
일반대학원 석사과정
<주관심분야 : 디지털 홀로그램, SoC 설계>
서 영 호(정회원)
1992년 광운대학교 전자재료 공학과 졸업(공학사) 2001년 광운대학교 일반대학원
졸업 (공학석사) 2004년 광운대학교 일반대학원
졸업(공학박사) 2003년~2004년 한국전기연구소 연구원 2005년~2008년 한성대학교 조교수
2008년~현재 광운대학교 교양학부 부교수
<주관심분야 : 실감미디어, 2D/3D 영상신호처리, 디지털 홀로그램>
김 동 욱(정회원)
1983년 한양대학교 전자공학과 졸업(공학사)
1985년 한양대학교 전자공학과 졸업(공학석사)
1993년 Georgia 공과대학 전기 공학과 졸업(공학박사) 2000년~2001년 인티스닷컴(주) 연구원
1992년~현재 광운대학교 전자재료공학과 교수 2006년~현재 (사)실감미디어 산업협회 이사 2009년~현재 광운대학교 실감미디어 연구소장
<주관심분야 : 3D 영상처리, 디지털 홀로그램, 디 지털 VLSI Testability, VLSI CAD, DSP 설계, Wireless Communication>