~20100429/나의하는일... - 해당되는 글 14건
사용자 삽입 이미지

전반사란 빛이 광학적으로 밀한 매질(굴절률이 큰 물질)에서 소한 매질(굴절률이 작은 물질)로 입사할 때, 입사각이 특정 각도 이상이면 그 경계 면에서 빛이 전부 반사되어 버리고 굴절광선은 존재하지 않게 되는데 이것을 전반사라 한다.

 본 프로젝트에서 사용될 아크릴 판과 공기와의 굴절율의 차이를 이용하여 멀티 터치 스크린을 구현한다. 아크릴 판의 측면으로부터 투사된 적외선 LED의 빛은 아크릴 판의 내부를 따라 아크릴 표면에서 전반사를 이루게 된다. 이때 외부에서 아크릴 판 위로 접촉이 일어나게 되면 그 부분에서 빛이 산란하면 전반사 장애 즉 난 반사가 일어나게 된다. 멀티 터치 스크린 하드웨어 구조를 그림으로 보면 다음과 같다.

사용자 삽입 이미지

아크릴로 투사된 적외선 LED의 빛이 아크릴 판 안에서 전반사 되어지고, 손가락과의 접촉면에서 난 반사가 발생하는데 난반사 되어 아크릴판(스크린) 아래쪽으로 반사된 적외선은 적외선 카메라를 통하여 인식되고, 이를 영상처리 하여 난반사 된곳의 좌표와 이동 벡터를 파악하여 이를 이용하여 컨텐츠를 조작할 수 있다.

|
1. collection이란?
보통 collection이라 하면 여러개의 원소를 한 묶음으로 묶어줄 수 있는 객체를 의미합니다. 객체를 담는 객체라고 생각하시면 되고, container라고 부르기도 합니다. 꼭 자바에서만 통용되는 의미는 아니죠.
이 collection을 이용하면 데이터를 collection에 담아두기도 하고, collection 담아둔 데이터를 나중에 다시 찾을 수도 있어야 합니다.
자바의 배열이나 java.util.Vector를 사용해보셨다면 collection이 어떤 것인지 대충 짐작하고 계실겁니다. 다시 말해, 우리가 개념적으로 어떤 것들의 묶음을 생각하고 있다면, 프로그래밍 언어에서 제공하는 collection으로 표현하면 되는 것입니다.
자바에서 이미 여러 종류의 collection들을 제공하고 있어 프로그래머에게 상당히 편리합니다. C/C++ 프로그래밍을 하다가 자바를 사용하게 되면서 느끼게 되는 가장 큰 매력중의 하나가 바로 자바에서는 다양한 collection이 제공된다는 점이죠.

* 인터페이스
Collection, List, Set, Map

* 구현 클래스
Set에 속하는 것들: HashSet, TreeSet
List에 속하는 것들: ArrayList, LinkedList
Map에 속하는 것들: HashMap, TreeMap

2. collection framework란?
collection framework란 프로그래밍 언어에서 collection을 제공하는데 필요한 밑바탕에 해당합니다. collection을 표현하기 위한 자료구조와 collection에 대해 사용할 수 있는 연산들을 위한 전반적인 아키텍처를 의미합니다. 자바에서는 collection framework를 구성하는 세가지 요소를 다음과 같이 정리할 수 있습니다.

- interface: 그냥 추상적으로 collection에 대해 생각할 수 있는 연산들만을 정의합니다. 예를 들어, list면 원소 추가하기, 원소 삭제하기, n번째 원소 얻기 등등을 정의해둔 collection의 interface가 고유의 collection마다 정의되어 있기 마련이죠.
- implementation: 각 collection을 실제 어떤 자료구조를 이용하여 표현했느냐에 따라, collection의 종류가 달라집니다.
- algorithm: 각 collection마다 유용하게 사용할 수 있는 메소드를 의미합니다.

자바 collection은 이러한 collection framework란 견고한 기반위에서 정의되어 있으므로, 각 collection 종류마다 제공되는 method에 일관성이 있어, 한가지 collection을 익혀두면 다른 collection을 사용하기가 매우 쉽습니다.
|
FPGA와 ASIC의 차이점은 생각보다는 쉽습니다.

FPGA와 ASIC의 설계방법은 비슷합니다.먼저 언급드린 것처럼 VHDL이나
회로를 ORCAD에서처럼 직접 그리는 것을 일컫는 스키메틱 캡쳐 방식등을
이용해서 디지탈 로직을 구현합니다. 로직 구현 후, 회로가 제대로 되어
있는지 검증하기 위해 시뮬레이션을 합니다. 이 부분 즉, 설계의 앞분야
(Front-End)는 각 과정중 복잡도만 제외하면 ASIC,FPGA 개념은 모두 같다고
볼 수 있습니다. FPGA같은 경우 회로설계의 앞 부분만 끝마치면 보드에
장착된 FPGA상에 바로 회로를 다운로드하여 보드의 동작이 가능합니다.
하지만, ASIC같은 경우 회로설계의 뒷 부분 즉, 웨이퍼상에 셀(게이트)가
놓일 위치를 정해주고, 그 웨이퍼상에서 피지컬로 각 셀들을 메탈을 이용하여
Front-End에서 작성된 회로대로 연결하여 주는 작업을 해주게 됩니다.
바로 여기에서 FPGA와 약간의 차이가 나게되는데, FPGA는 이미 특정 셀들이
FPGA내부에 구성되어 있어서 단순히 선만 연결하여주거나 혹은 끊어주거나
하여서 회로도를 작성하여 주는 반면, ASIC는 셀들이 어느 위치에 놓일지
알 수 없습니다. 즉, FPGA는 시뮬레이션시 시뮬레이션을 위한 타이밍의
예측이 쉽지만, ASIC은 FPGA처럼 쉽지만은 않습니다. 더군다나 ASIC같은
경우 한번 공정에 들어간 웨이퍼는 보통 2개월 정도 걸리며 웨이퍼를
제작하기 위한 마스크 비용역시(장당 몇백씩 합니다.) 무시할 수 없기때문에
시뮬레이션의 중요성이 FPGA보다는 훨씬 크지만, 각 셀들의 딜레이를 예측할
수 있는 정도는 FPGA보다는 떨어집니다. 때문에, 각 상용 소프트웨어는
이러한 타이밍 차이(실제와 시뮬레이션)를 줄이기 위한 특별한 알고리즘을
사용하기도 합니다. 위의 이유때문에 ASIC 설계 소프트웨어가 보통 억 단위를
넘어갑니다. FPGA와 ASIC의 가장 큰 차이점은 Front-End 설계는 같지만,
Back-End설계의 있고 없고의 차이라고 할 수 있습니다. 이 외에 ASIC같은 경우
IC가 나오고 나서 그 IC가 제대로 만들어 졌는지 테스트를 위한 과정도
고려를 해야하는데, 이 또한 만만히 볼 과정이 아닙니다. 그래서 로직 디자인이
완전히 끝나고 나서 FPGA는 즉시 보드에 동작 시킬 수 있는 반면, ASIC은
뒷 설계과정이(Back-End) 로직 디자인 못지 않기때문에 또한 공정상 웨이퍼가
숙성하는 과정의 기간때문에 개발 시간이 보통 2개월 반 정도 더 추가됩니다.
또한 Back-End 엔지니어의 몸값이 비싸지는 이유도 위에 있는 이유와 같다고
볼 수 있습니다.(잘못해서 ASIC Back-End과정을 진행하게되면 손해가 몇10억
단위로 날 수 있으며, 실제 제가 회사에 있을 때, 웨이퍼 DB를 공정으로 잘못
보내서 10억 이상가는 손해를 회사에 끼쳤다고 시말서를 쓴 동료도 있습니다).
하지만, 그런데도 ASIC을 하는 이유는 바로 가격때문이라고 할 수 있습니다.
FPGA는 이미 수백 ~ 수만개의 셀들을 이미 IC안에 만들어 놓기때문에 쓰지 않는
셀들이 상당히 많이 있을 수 있습니다. 그만큼 웨이퍼 다이(IC바로 전의 상태)
가 커지게되며, 그만큼 생산량이 ASIC에 비해서는 월등히 떨어지게 됩니다.
그래서 일반적으로 FPGA는 Prototype 용으로 많이 쓰이고, ASIC은 양산용으로
많이 쓰이게 됩니다.



-----------------------------------------------------------------------------
ASIC과 SoC의 차이점을 간략하게 적어보도록 하겠습니다.

ASIC은 국내에서는 주문형 반도체로 익히 알려져 있는데, 1998년쯤 이전부터 많이
사용하던 용어입니다. 물론 현재에도 많이 사용하고 있으며 종류는 2가지로 나뉘어
집니다.

1. Full-Custom
2. Semi-Custom(Standard Cell, Gate Array)

Full-Custom은 로우레벨의 함수 기능까지 모두 수작업으로 제작하는 것을 말하며,
현재 DRAM분야나 Analog 분야에서 많이 사용하고 있습니다. 수작업으로 직접
Not, And, Or, Xor,... OPAMP등을 CAD Tool을 이용해서 그려주기때문에 숙련된
엔지니어가 작업할 시 조그마한 사이즈로 많은 함수를 구현할 수 있습니다.
하지만, 그만큼 제작하는 데 들어가는 시간이 좀 걸린다는 단점이 있습니다.
설계를 완료하는데 걸리는 시간이 보통 개월단위입니다. Full-Custom은
Semi-Custom과는 달리 Front-END와 Back-END로 나뉘어 전담하는 엔지니어가
없습니다. 일반적으로 로직 설계부터 웨이퍼 생산을 위한 DB(DataBase)생성
을 첨부터 끝까지 모두 한 엔지니어가 하게됩니다.
각 대학의 VLSI 연구실의 대학원생이 주로하는 작업이 위의 1번
Full-Custom이라고 할 수 있습니다.
Semi-Custom은 크게 Stand-Cell과 Gate-Array로 나뉘어지게 되는데,
And, Or, Xor 등의 기본적인 셀(게이트라고도 합니다.)은 라이브러리형태로 이미
존재하게됩니다. 이 라이브러리를 이용하여 Front-End엔지니어는 로직 설계를 하게
되며, Back-End 엔지니어는 그 로직 설계한 DataBase를 이용해서 웨이퍼 생산을
위한 DataBase를 생성하게됩니다. Full-Custom보다는 설계 시간이 걸리지 않는
대신에 웨이퍼상의 사이즈는 Full-Custom보다는 크게됩니다. 여기서 웨이퍼상의
사이즈는 곧 생산원가와도 직결되기때문에, 설계시 상당히 고려해야 하는 부분중
한 분야라고 할 수 있습니다. 스탠다드셀과 게이트어레이의 차이점은 웨이퍼에
게이트를 구현하기위한 마스크의 갯수라고 볼 수도 있습니다. 스탠다드셀은
각 게이트들을 웨이퍼에 형상화 하기위해서 마스크가 12장 필요하게되는데,
설계를 할때마다 마스크를 12장 다 제작하게됩니다. 이에 반해서 게이트 어레이는
12장의 마스크중 4장만 제작하면 됩니다. 이에따른 웨이퍼 공간과 제작 시 걸리는
시간등의 장단점이 각각 있게됩니다.(게이트 어레이는 스탵다드 셀과 FPGA의
중간적인 형태라고 보시면 됩니다.)

SoC는 System On Chip의 약자로 원래는 시스템을 구성하고 있는 모든 콤포넌트들을
하나의 IC안에 집적시킨다는 의미로 1990년대 중반(?)부터 주로 대두되기 시작한
단어입니다. 즉, 위의 스탠다드셀이나 게이트 어레이의 라이브러리를 확장한
보다 덩치가 큰 라이브러리를 이용하여 IC를 설계하는 개념입니다.
각 게이트들을 몇개 모아서 TTL중 카운터나 콤파레이터의 작용을 하는 Macro Function을
라이브러리로 구성하고, 이 Macro Function을 몇개 모아서 UART, TIMER, DMA,...등의
Mega Function을 구현하게 됩니다. 이 Mega Function을 더 모아서 IP라고 불릴 수 있는
8051 CPU IP, ARM Core IP, 등을 구성 할 수 있습니다. SoC는 System자체를 한 IC안에
구현하기때문에 워낙 덩치가 커지게 되는데, 이 이유때문에 IP(일종의 라이브러리라고
할 수가 있을 것입니다)라는 개념의 콤포넌트들을 사용하게 됩니다. 또한 System
을 구성할 수 있는 구성 요소는 디지탈적인 요소 이외에도 ADC,DAC등 아날로그 IP도
필요하게 됩니다. 때문에, SoC는 보다 포괄적인 개념이라고 할 수 있습니다.
현재의 SoC는 주로 DRAM이나 SRAM등의 메모리와 디지탈 로직을 한 IC에 구현하는
개념으로 한정시키는 엔지니어도 있지만, 현재의 기술 수준에서 따져본다면
딱 틀린 얘기는 아니라고 할 것입니다. 왜냐하면 SoC를 구현하기 위해서는 디지탈,
아날로그 등이 총 망라되어야 되는데, 아직까지 완벽하게 상용으로 사용하기 위한
SoC를 구현하는 반도체 회사가 없기때문입니다. 하지만, MCU, DRAM(혹은 SRAM),
디지탈 로직등을 한 IC에 집적시키는 정도는 대부분 가능하기 때문에 그 분야를
SoC라고 한다고 해서 틀린 얘기는 아닐 것이기 때문입니다.

ASIC과 SoC의 개념 차이를 정확하게 칼로 물 자르듯이 구분 지어서 생각 할 수는
없을 것 같습니다. 왜냐하면 서로간에 겹치는 분야, 겹치지 않는 분야가 있기
때문이며, 분명한 것은 ASIC의 발전이 있고 나서 SoC의 개념이 나왔다는 것이라고
할 수 있습니다.
|
 하드웨어냐 소프웨어냐....
 이번방학에 무엇을 공부할까 생각해 보았다....
 소프트웨어? 소프트웨어에 대한 과제를 진행해 보고 욕심이 생겼었다... 소프트웨어 공부를 방학동안 좀더 깊게 해볼까~ 하고... 가만히 생각해 보았다. 내가 앞으로 하게 될 일은 어떤것일까...
 결론적으로 하드웨어에 가깝다 내가 여태까지 해온 일이 하드웨어 였고 익숙한것도 그리고 잘 하는
것도 아직도 내가 모르는 것이 많다... 로우 레벨단 부터 기초부터 확실히 파자~!! 공부하자~!!
|

변화가필요해...'s Blog is powered by Daum & tistory