블루투스 멀티-터치 입력 장치
본 경진대회에서 제작하려는 블루투스 멀티터치 입력장치는 멀티 터치 기능을 가지고 있는 디바이스와 스마트폰을 미러링하고 있는 상태에서, 멀티 터치 스크린을 터치하면 미러링되고 있는 스마트 디바이스의 기능을 제어하도록 설계하고자 한다. 이 기능이 설계 완료되면 원거리에서도 멀티 터치 패널을 이용하여 스마트 디바이스를 제어할 수 있게 되며
이는 스마트 디바이스간의 미러링 효과를 극대화 할 수 있게 되는 것이다.
수상팀/동양미래대학교, 서주환, 박동호
지도교수/박군종교수
디자인 소개
최근 출시된 구글의 Chromecast는 35달러라는 적은 금액으로 WIFI라는 무선 프로토콜을 이용해 HDMI단자를 지원하는 모니터, TV 등에 소형 스마트 디바이스의 화면을 출력할 수 있도록 만든 제품이다. 넷플릭스, 유튜브 등이 제공하는 수많은 콘텐츠를 집안에 있는 큰 화면의 HDTV등으로 즐길 수 있게 되었다는 의미를 갖는다.
이외에 삼성 올쉐어캐스트 동글 제품도 크롬캐스트와 유사한 기능을 제공하고 있으며 수많은 업체가 스마트 미러링 기능의 제품을 출시하고 있다. 하지만 현재 출시된 미러링 기능을 갖는 제품의 문제점은 스마트 디바이스의 화면만 미러링하고 있는 상황이며 미러링의 효과를 극대화할 수 있는 양방향 제어 기능을 탑재한 미러링 제품은 아직 출시되지 않고 있다.
본 경진대회에서 제작하려는 블루투스 멀티터치 입력장치는 멀티 터치 기능을 가지고 있는 디바이스와 스마트폰을 미러링하고 있는 상태에서, 멀티 터치 스크린을 터치하면 미러링되고 있는 스마트 디바이스의 기능을 제어 하도록 설계하고자 한다. 이 기능이 설계 완료되면 원거리에서도 멀티 터치 패널을 이용하여 스마트 디바이스를 제어할 수 있게 되며 이는 스마트 디바이스간의 미러링 효과를 극대화 할 수 있게 되는 것이다.
디자인 아키텍처
(1) 하드웨어 블록도 (그림 1, 그림 2)
(2) 소프트웨어 플로우차트
그림 3에 나타낸 소프트웨어 블록에서 A블럭, B블록, 그리고 C블록을 Altera가 제공하는 FPGA와 QuartusII를 이용하여 설계하였으며 VHDL 텍스트 에디터와 그래픽 에디터를 기반으로 설계하였다. A블록은 I2C버스인터페이스 블록이고 B블록은 I2C버스 인터페이스 블록에서 출력되는 63바이트의 데이터를 버퍼링 하기 위한 블록이며 C블록은 63바이트 데이터를 블루투스에 송신하기 위한 UART블록이다.
각 블록의 프로그램 흐름도는 그림 4, 그림 5 그리고 그림 6에 나타내었다. 멀티 터치 패널 및 시스템에 전원을 인가하면 각 모듈의 초기화가 진행되고 블루투스는 스마트 디바이스와 패어링을 진행하여 연결을 확인한다.
초기화 및 연결이 확인된 후 사용자가 멀티 터치 패널을 터치하면 모션 신호가 발생하고 FPGA는 이 모션 신호에 따라 I2C버스 데이터를 직렬로 수신한다. 수신된 데이터는 8비트 병렬데이터로 변환하고 이를 버퍼에 저장한다.
UART가 Non-Busy상태이면 버퍼의 데이터를 가져가고 Busy일 경우 대기모드에 들어간다. UART에 의해 전송된 데이터는 블루투스 통신 장치로 전달되고 패어링되어 있는 스마트 디바이스에 전달된다. 이와 같은 방법으로 멀티 터치 패널의 터치 동작으로 스마트 디바이스의 기능을 제어한다.
기능 설명
(1) 디자인 기능
I2C 버스 인터페이스를 가지고 있는 멀티 터치 패널을 터치하면 터치 데이터가 I2C 버스로 직렬 출력된다. 한번의 터치로 전송되는 프레임 사이즈는 63바이트이며 1 포인트 터치에서 10 포인트 터치까지 가능하다. 직렬로 전송 되는 이 데이터는 I2C버스 인터페이스 블록의 VHDL프로그램에 의해 8비트 병렬데이터로 변환하고 63바이트의 모든 데이터가 I2C버스 데이터 버퍼링 블록에 의해 저장된다. 저장된 데이터는 UART 인터페이스 블록에 의해 다시 직렬로 블루투스장치로 전달하고 블루투스 장치는 패어링 되어있는 스마트 디바이스로 전달한다. 결과적으로 멀티터치 패널에서 공급되는 터치 데이터에 의해 스마트 디바이스의 기능을 제어하는 시스템이다.
◎ 주요 기능
- 멀티 터치 기능을 이용해 다양한 제스처 기능을 활용할 수 있다.
- 디스플레이 장치만을 이용하여 스마트 디바이스를 제어할 수 있다.
- 유선의 불편함을 벗어나 최근 각광받는 블루투스 기능을 활용한다.
- 스마트 TV의 입력장치로 활용할 수 있으며 새로운 제어 방식을 제공할 수 있다.
1) 터치패드를 이용하여 스마트 TV에 그림 그리기.
2) 모션을 이용하여 사운드, 채널, 밝기 등 컨트롤.
3) 스마트 디바이스에 있는 유아용 어플리케이션
(ex: 틀린 그림 찾기, 단어에 맞는 그림 선택하기)
스마트 디바이스와 터치가 가능한 TV와 미러링하여, 스마트 디바이스와 TV간의 제어 미러링.
(2) 구현 과정
멀티 터치 패널의 하드웨어 입출력 장치가 I2C버스를 장착하고 있으며 I2C버스 인터페이스 블록은 VHDL과 그래픽 에디터 기능을 이용하여 구현하였다. 이 블록은 상태 다이어그램 구현 방식으로 모두 구현하였으며, 멀티매스터, 멀티 슬레이브 기능을 가지고 있는 I2C버스에서 설계한 FPGA는 싱글 매스터의 역할을, 멀티 터치 패널은 싱글 슬레이브 역할을 담당하는 시스템이며 I2C버스를 이용하여 인터페이스 하였다. I2C버스는 SCLK 신호와 SDA신호로 구성되어 있으며 SCLK와 SDA신호를 이용하여 직렬로 데이터를 받는다.
직렬데이터는 400kBPS속도로 전송되므로 시스템의 50MHz 클럭을 적절히 분주하여 400kBPS와 동기 시킨다. 터치 데이터는 멀티 터치 패널에서 제공하는 모션 신호를 이용하여 데이터 전송의 시작과 끝을 알 수 있게 한다.
한 프레임은 전체 63바이트이며 각각의 터치 정보는 6바이트로 구성되어 있고 전체 63바이트의 데이터는 I2C 버스 버퍼링 블록에 의해 저장된다. I2C버퍼링 블록에 저장된 데이터는 UART 인터페이스 블록의 상태가 Busy가 아닌 것을 확인하여 UART 인터페이스 블록으로 전송된다.
UART 블록은 버퍼에 있는 병렬데이터를 직렬데이터로 변환한 다음 400kBPS의 속도로 블루투스에 전송하며 블루투스는 스마트 디바이스에 해당 데이터를 전송하고 스마트 디바이스의 모든 기능을 제어한다. 멀티 터치 패널은 시중에서 판매되는 일반적인 특성을 갖는 디바이스이고 블루투스는 스마트폰에서 사용하는 디바이스를 이용하였으며 스마트 디바이스는 Nexus 7모델인 Tablet PC를 이용하였다.
◎ FPGA로구현하고자한레퍼런스모델의블록다이어그램
◎ Flow Chart A에 대한 설명(I2C_READ)
멀티 터치 패널의 데이터를 얻기 위해선 그림 8과 같은 데이터 프레임을 갖는 I2C버스 인터페이스 방법을 이용하여 멀티 터치 패널과 통신해야 한다.
그림 8과 같은 방식으로 터치 패널과 통신 할 수 있다.
그림 8은 마스터(FPGA)가 슬레이브(멀티 터치 패널)와 통신하기 위한 프로토콜이며 만약 슬레이브에 연결 된 장치를 초기화 해야 할 경우 9번째 비트를 논리 0으로 한후 쓰기 동작을 함으로서 슬레이브 장치에 데이터를 쓸수 있다. 우리가 사용한 터치 패널은 초기화가 패널 자체에서 이루어지므로 슬레이브 주소 00(h)부터 읽기를 하면 되기 때문에 그림 9와 같이 초기에 리드할 장치의 주소(70h)와 레지스터 주소(71h)에 쓰기 동작을 한 다음 63개의 데이터를 읽어 저장을 버퍼에 저장하면 된다.
그림 10은 I2C버스 통신시 데이터 전송 시작과 종료 조건을 나타낸 것이며 모든 통신은 SDA와 SCL의 논리 상태에 따라 시작과 종료를 결정한다. 초기상태는 SDA와 SCL이 모두 논리 1일 경우이며 SDA를 논리 0으로 만든 후 scl의 클럭을 논리 0상태로 만들면 시작 조건에 진입하게 된다. 마스터가 슬레이브에 쓰기 동작을 할 경우 데이터를 모두 보낸 후 ACK신호를 점검한 다음 종료 조건으로 들어가면 되고 읽기 동작을 할 경우 데이터를 모두 읽은 다음 /ACK 신호를 만들어 주어야 한다.
그림 11은 읽기 동작 시 /ACK신호를 제공하지 않은상태이기 때문에 데이터 전송 종료 후 종료 조건이 만들 어지지 않은 상태이며 정상적인 통신이 이루어지지 않은 상태임을 알 수 있다. 즉, SDA신호는 논리 0 상태를 유지하고 있으며 하이 임피던스가 되지 않았음을 알 수 있다. 그림 12는 프로그램에서 /ACK를 처리함으로써 데이터 읽기가 종료된 후 SDA와 SCLK신호가 모두 종료 조건으로 진입한 것을 확인할 수 있다.
◎ Flow Chart B에 대한 설명(UART_BUFFER)
I2C버스 인터페이스를 통해 터치 패널에서 얻은 데이터를 이용하여 스마트 디바이스를 제어하기 위해선 터치 패널에서 얻은 I2C형식의 데이터를 UART로 전송하기 위한 과정이 필요하다. 하지만 이 과정에서 I2C와 UART의 데이터 형식이 다르고 속도의 차이가 있기 때문에 데이터를 그대로 전송할 수 없다. 그래서 터치 패널에서 얻은 데이터를 잠시 저장하는 버퍼가 필요하다. 이 버퍼의 크기는 63바이트이며 최대 10포인트의 터치 데이터를 저장할 수 있다. 저장된 데이터는 UART 블록이 비동작(Non-Busy)인 동안 현재의 값을 전송하고 동작일 경우 현재의 값을 유지하도록 설계하였다.
◎ Flow Chart C에 대한 설명(UART_Tx)
멀티 터치 패널의 정보를 이용하여 스마트 디바이스를 무선으로 제어하기 위해 UART를 이용하였으며 스마트 디바이스와의 모선통신은 블루투스 통신방식을 이용하였다. 블루투스는 편리하며 사용하기 쉽고 이동 및 개인 통신을 위한 충분한 대역폭을 갖고 있다. 그림 13은 블루투스 모듈을 이용한 UART 통신의 예이다.
블루투스 모듈을 이용하여 터치 패널과 스마트 디바이스를 통신하기 위해선 I2C_READ, UART_BUFFER 과정에서 만들어낸 데이터를 UART형식으로 변환해주어야 한다. Flow Chart C(UART_Tx) 블록은 I2C버스 인터페이스 데이터를 UART 데이터 형식으로 변환하는 역할을 한다.UART 통신방식은 I2C 통신 방법에 비해 매우 간단하다.
그림 14는 UART 데이터 형식을 나타낸 것이며 통신이 정지된 아이들(IDLE) 상태에서 논리 1상태로 있다가 통신을 개시하면 논리 0으로 떨어지면서 시작 신호를 출력하고, 순차적으로 데이터 nbits, 패리티 비트 그리고 종료 비트를 출력한 다음 아이들 상태로 복귀한다.
성능 파라미터
◎ I2C 버스: 목표 400kbps였으나 이것은 순수 데이터를 보낼 경우이고 초기화 및 쓰레기 데이터를 처리하는 과정이 포함되어야 하므로 실제 약 380kbps의 전송 속도를 구현할 수 있었다. I2C버스는 멀티 마스터, 멀티 슬레이브를 연결할 수 있는 오픈 드레인 모드를 가지고 있으며 2개의 신 호 SCLK와 SDA신호에 풀업저항을 반드시 연결해 주어야 한다.
◎ I2C 버스 데이터 버퍼링 모듈: 약 227kbps로 63바이트의 병렬데이터를 UART 블록으로 보낼 수 있도록 설계하였다. 현재 저장된 데이터는 병렬이므로 충분한 속도 성능을 유지할 수 있다.
◎ 터치 데이터: 총 10 포인트까지의 터치 데이터를 처리할 수 있으며 1포인트당 6바이트의 메모리 공간이 필요하다.
◎ UART: 약 110kbps를 목표로 하였으나 블루투스의 전송속도가 매우 높으므로 약 460.8kbps의 성능을 유지하게 설계하였다
디자인 설명
(1) 터치 패널
이 프로젝트에서 가장 중요한 것은 멀티 터치가 가능한 I2C 터치 패널 이다. 터치패널의 종류로는 저항막 방식 터치패널과 정전용량 터치패널이 있다. 그림 15는 저항막 방식 터치패널 구조를, 그림 16은 정전용량 방식 터치패널 구조를 나타낸 것이다.
◎ 저항막 방식 터치패널
그림 15와 같이‘저항막 방식 터치패널’같은 경우는 액정 위에 여러 겹의 막(스크린)이 쌓여 있는 형태로 가장 바깥쪽(손이나 펜이 맞닿는 부위)에는 부드러우면서 흠집에 강한 재질의 막이 있고, 다음에는 충격을 완화해주는 막, 그리고 다음은 입력을 감지하는 투명 전도막(전기가 통하는 얇고 투명한 기판) 2장이 겹쳐 있다. 동작 원리는 사용자가 화면을 누르면, 투명 전도막 2장이 서로 맞닿으면서(전기적 접촉, 압력) 발생한 전류와 저항의 변화를 감지해 입력을 판별(가로, 세로 좌표)한다.
따라서 손가락은 물론, 터치 펜 등을 이용해 화면을 터치할 수 있으며, 작은 아이콘을 터치하는데도 유리하다. 또한, 원리가 간단한 만큼 비용이 많이 들지 않기 때문에 과거에는 가장 널리 사용된 터치패널 방식이었다.
그러나 액정 위에 여러 겹으로 막이 형성된 만큼 화면 선명도가 떨어지고, 충격에 약하다는 단점도 있다. 그래서 고해상도 화면을 지원하는 기기는 화질 저하를 우려해 저항막 방식 터치패널 채택을 회피하고 있다.
◎ 정전용량 터치패널
그림 16과 같이‘정전용량 방식(정전식) 터치패널’은 쉽게 말해 우리 몸에 있는 정전기를 이용하는 방식이다.
정전식 터치패널의 액정 유리에는 전기가 통하는 화합물이 코팅되어 있어 전기가 계속 흐르는데, 화면에 손가락이 닿으면 액정 위를 흐르던 전자가 접촉 지점으로 끌려오게 되고, 터치패널 모퉁이의 센서가 이를 감지해서 입력을 판별하게 된다. 따라서 화면을 살짝 스치듯 만져도 터치 입력이 가능(감성적인 느낌 연출)하며, 멀티 터치(여러 접촉 부위를 인식)등을 지원한다. 또한, 유전체(전기가 통하는 화합물)가 코팅된 액정 유리를 사용했기 때문에 화질이 저하될 염려도 없다.
현재 스마트 디바이스에서 활용되고 있으며, 이들은 고화질 화면에 다양한 기능을 감성적 터치 인터페이스로 구현한 것이 특징이다. 정전식 터치패널의 내구성은 저항막 방식에 비해 뛰어난 것(코팅된 강화 유리를 사용하기때문)이 맞지만, 화면에 작은 손상(충격으로 인한 흠집)이 생길 경우 아예 터치가 되지 않을 수 있고, 이를 교체하는데 드는 비용이 상대적으로 비싸다는 단점이 있다.
◎ 프로젝트에서 사용한 터치 패널
두 터치패널의 특징을 살펴보면 정전용량 터치패널은 멀티 터치가 가능하고 고화질의 화면을 제공한다. 그러한 이유로 본 연구에서는 10.1인치의 정전식 터치패널을 사용하였다. 그림 17과 같이 10개의 핀이 있고 핀 6, 핀 7에서 sda, scl을 지원하고 있다. 여기서 핀 4에선 패널에 데이터가 생기면 하이->로우가 된다. 데이터를 여러 번쓰다 보면 핀 4의 상태가 약간 불안정한 경우가 있었다.
이것을 해결하기 위하여 핀 4의 상태가 5번 이상 로우 상태를 유지하게 되면 Motion_Error_Reset를 이용하여 핀 5에 리셋 신호를 전송하고, 터치 패널을 리셋시켜서 다시 데이터를 읽을 수 있도록 하였다.
그림 18은 터치패널과 I2C 통신을 하였을 때의 화면이며 멀티 터치 패널에 손가락 하나를 터치한 경우의 데이터 흐름을 오실로스코프로 측정하여 나타낸 것이다. 70(h)번지는 멀티 터치 패널의 고유 주소이고 71(h)번지는 레지스터를 선택하기 위한 주소이며 레지스터의 00(h)번지부터 데이터를 읽고 있으며 순차적으로 00(h)-01(h)-02(h)-03(h)-04(h)-05(h) -06(h)- ㆍㆍㆍ-3D(h)-3E(h)- -3F(h)를 읽는 모습을 나타낸 것이다.
데이터시트를 보면 00(h)는 DEVICE_MODE가 레지스터이며, [2:0]bit가 000b일 경우 동작 모드이다. 01(h)는 제스처 ID이며 현재 0x00으로 제스처가 없다. 그리고 02(h) 어드레스에서 [3:0]bit가 터치 포인트의 개수를 나타난다. 03(h)부터 08(h)까지가 1point에 대한 데이터를 포함하고 있다.
첫번째 이벤트 플래그가 논리“10”일 경우엔 접촉이므로 터치패널이 터치를 인식한 것으로 판단한다. 그리고 그에 따른 데이터들이 그림 19와 같이 나오게 된다.
그림 20은 두 손가락을 이용하여 2point를 터치한 데이터의 모습이다. 3번째 데이터 이후로 1point당 6개의 데이터를 읽으면 된다.
그림 21은 5point를 터치한 데이터의 모습이다. 터치패널과 FPGA간의 통신을 오실로스코프를 이용하여 측정한 것이다.
(2) Flow Chart A 의 상세설명(I2C_READ)
터치 패널에 데이터가 생기면 motion =‘1’이 된다.
motion=‘1’이 되면 I2C_READ는 읽을 준비를 하고 준비-시작 상태를 거치면서 데이터를 쓸 준비를 한다. 명령 상태에선 슬레이브 주소를 보내주고, 그 후 ack 신호를 받는다.이때 rw의 초기 값이‘0’이기 때문에 Reg_wr 상태로 이동한다. Reg_wr에선 데이터 읽기를 할 레지스터의 주소 값을 슬레이브(터치 패널)에 쓰고 ack 신호를 받은 후 종료를 한다.
종료를 하기 전에 rw의 값을 1로 변경하고 다시 준비-시작-명령-slv_ack까지 도달한 후 rw 값이 1로 변경 되었기 때문에 rd 상태로 이동한다. 처음 rd 상태에 도달하면 Reg_wr에서 쓰기한 레지스터(00(h))부터 3F(h)까지 읽기를 한다. 3F(h)까지 데이터를 읽으면 data_count는 0이 되어 I2C 통신을 종료하고 대기하고 있다가 motion=‘1’이 되면 다시 위와 같은 방법으로 데이터를 전송한다.
(3) Flow Chart B(UART_BUFFER)
I2C_READ 부분에서 63바이트의 데이터를 모두 읽으면 Send_Enable을‘1’로 하고 Send_Enable 신호는 UART_BUFFER의 래치 신호가 된다. UART_BUFFER에 래치 신호가 들어오면 I2C_READ에서 읽은 데이터를 버퍼에 저장하고 터치한 포인트의 값을 읽은 3번째 데이터인 Data_buf_3 또는 Data_3의 값을 이용하여 포인트 값에 따라 데이터를Uart_tx에 전송한다.
(4) Flow Chart C(UART_Tx)
UART_Tx 부분은 I2C_READ에서 받은 데이터들을 블루투스로 UART 형식으로 전송해주는 역할을 한다. 일단 UART_BUFFER에서 Send_Uart=‘1’이 되면 UART_Tx에서는 ByteReady는‘1’이 되고 LoadXMTshftreg을 ‘1’로 설정한다. LoadXMTshftreg가‘1’이면 시프트될 때 마다 뒤에‘1’을 붙이게 된다. 그 후 상태를 대기상태로 만들고 시작을‘1’로 하여 UART통신이 시작한다. 그 후 전송 상태가 되어 BitCount가 9가 되기 전까지 시프트시키며 데이터를 전송한다.
BitCount가 9가 되면 전송을 마치고, SerialOut을 ‘0’으로 만들어 UART_BUFFER에 전송하고 다음 데이터를 읽을 준비를 한다.
(5) 터치패널과 스마트 디바이스간의 화면 미러링
MiraCast는 스마트 디바이스의 화면과 음향을 무선으로 TV로 전송해주는 장치이며, 현재 스마트 폰의 작은 화면을 TV로 전송하여 볼 수 있게 해주는 장치이다. 그리고 본 연구에서는 터치패널과 스마트 디바이스의 화면 미러링을 위해서 MiraCast라는 제품을 사용하였다. Mira-Cast는 HDMI를 이용하기 때문에 HDMI를 지원하는 AD보드를 구매하여 10.1인치의 LCD패널을 구매하여 터치패널과 붙여서 패널을 만들고, Wi-Fi를 이용하여 스마트 디바이스의 화면을 터치패널과 미러링하고 터치패널에서의 화면을 보고 스마트 디바이스 제어를 할 수 있도록 구현하였다(그림 22, 그림 23).
결론
본 알테라 FPGA경진대회를 위해 블루투스 멀티 터치입력 장치를 개발하였으며 멀티 터치 기능을 가지고 있는 디바이스와 스마트 폰이 미러링 되고 있는 상태에서, 멀티 터치 스크린을 터치하면 미러링되고 있는 스마트 디바이스의 기능을 제어할 수 있게 되었으며 그 결과 총 10개의 터치 포인터를 처리할 수 있는 시스템을 개발하였다.
이 기능을 통해 원거리에서도 멀티 터치 패널을 이용하여 스마트 디바이스를 제어할 수 있게 되었으며 이는 스마트디바이스간의 미러링 효과를 극대화 할 수 있게 되었다.
향후 설계한 기능을 향상시키고 안정화시킨 다음 교육용 툴이나 수업용 툴로 사용할 수 있도록 본 과제를 계속 개발해 나갈 것이다.
Altera QuartusII를 배운지도 1년이 지났다. 지난 프로젝트는 그래픽 툴만을 이용하여 로직 설계를 했다. 그당시 1층에서 가고자 하는 층을 입력하면 엘리베이터 2개를 가지고 가까운 엘리베이터를 1층으로 호출하고 1층에 도착했다가 다른 입력(닫기)을 받으면 가고자 하는 층으로 이동하는 엘리베이터 시스템을 설계하려고 했었다. 하지만 로직만으로 설계가 힘들어C언어로 배웠던 IF를 써서 하고 싶다는 생각이 엄청나게 들었다.
그래서 처음에 구상한 엘리베이터 시스템보다 약간 쉽고 보편적인 방법의 엘리베이터 시스템을 설계했다. 그당시엔 VHDL이란 것을 몰랐고 NAND, OR, AND 게이트 등 로직으로만 설계하는 프로그램으로‘복잡한 회로를 어떻게 구현해낼까?’라는 생각을 많이 했었다. 하지만 지금은 저번에 설계한 엘리베이터 시스템보다 훨씬 발전하고 실용적인 프로젝트를 완성하였다. 아마 그리고 이콘테스트에 참여하지 않았다면 이번 학기 과제로도 그냥 카운터만 이용한 저번 프로젝트인 엘리베이터 시스템을 발전시켜 설계했을지도 모른다.
처음엔 I2C통신에 대하여 감이 잘 잡히진 않았지만 교수님께 OFM와 데이터시트를 받아 FPGA와 OFM I2C 통신을 공부하였다. 처음에는‘터치패널로 바로 I2C통신을 하면 되지 OFM을 이용하여 I2C통신을 연습하는 이유가 뭘까?’라는 생각을 했다. 하지만 OFM과의 I2C통신도 쉬운 것이 아니었고, I2C통신 자체가 이해되지 않아 고생을 많이 했다. 교수님께서 따로 지도를 해주셔서 FPGA와 OFM간의 통신을 하여 기본적인 쓰기와 읽기를 할 수 있게 되었고, 지금 보면 간단한 W/R였지만 그 당시엔 성취감과 자신감을 얻을 수 있었다.
그리고 OFM으로 먼저 연습을 한 이유가 패널보다 쉽기 때문이라고 생각했었는데, 교수님께서 우리가 처음에 I2C통신을 위한 VHDL 소스를 잘못 작성하거나 하드웨어 인터페이스를 잘못 연결할 경우 슬레이브 장치가 고장이 날 수도 있다고 하셨다. 그리고 실제로 OFM이 고장이 난적도 있었다. 터치 패널과 OFM 가격차이가 많이나기 때문에 처음부터 터치 패널로 했으면 큰일 났을 것이라는 생각이 들었다. 그리고 회사에 처음 들어가 배울때도 이런 식으로 배우고 작업을 한다고 하셨다. 나는 아직 개발자로써 경험이 전무하였는데 콘테스트를 참여하면서 프로젝트를 구체적으로 진행하는 과정과 작업방법을 알 수 있었다.
I2C통신은 고속의 통신을 하기 때문에 학교에서 실습시간에 사용하던 오실로스코프를 이용해선 I2C 데이터를 분석하기 힘들었다. 하지만 교수님께서 좋은 오실로스코프를 구해주셔서 파형도 잘 보이고 I2C 데이터를 인식하는 블록과 오실로스코프 화면을 통해 위에서 첨부한 사진 처럼 데이터를 쉽게 보며 작업을 할 수 있었다. 콘테스트에 참가하면서 회사에서만 사용하는 고사양의 계측기 사용법도 배울 수 있어서 좋은 경험이 되었다.
그리고 계측기 사용법뿐만 아니라 프로그램 설계 능력이 많이 발전하였다. C언어를 통한 간단한 연산을 하는 프로그래밍, 그리고 8051을 이용하여 링, 존슨 카운터를 만들어 LED를 제어밖에 할 줄 몰랐던 내가 VHDL이라는 언어를 배우고 널리 쓰이고 있는 블루투스 통신, UART 통신, I2C 통신에 대해 이해하고 다룰 수 있게 되었다. 이번 프로젝트는 화면 미러링을 AD보드를 통해서 했다는 점이 만족스럽지 못했다. 향후 AD보드의 역할과 데이터들을 공부를 하여서 이점을 보완하고 원 칩으로 음성, 영상, 제어가 가능한 디자인을 만들 것이다.
참고 자료
|
<반도체네트워크 8월>