본문으로 바로가기

Digital System이란?

category 칩설계 연구방 2016. 7. 31. 00:45

Digital system에서 목표로 하는 간단히 말해 하드웨어 칩을 만드는 것이다. 전자제품 내부를 열어보면 초록색 기판이 있고 그 위에 여러 부품이 있는 것을 볼 수 있는데, 그 중에 검은 사각형 모양의 칩들이 여러 개 존재한다. 이 칩 내부에 있는 기능들로 복잡한 전자 제품이 동작하게 된다.

 

<칩>


좀 더 근본적으로 이야기해보면 칩 내부는 트랜지스터라는 것으로 이루어져 있다. 트랜지스터가 회로 내에서 수행하는 역할은 크게 두 가지로 나눌 수 있는데, 하나는 증폭, 다른 하나는 스위치 기능이다. 예를 들어 스피커 장치를 생각해보자. 스피커 장치는 소리를 크게 들려주는 것인데 이를 위해서는 작은 신호를 크게 바꿔주는 증폭 장치가 필요하며 이 때 트랜지스터가 사용된다. 이러한 증폭 기능은 수 없이 많은 제품에서 활용되며 이를 주로 analog system이라 한다. 스위치 기능은 트랜지스터가 특정 전기 신호를 받을 때 회로를 끊거나 연결시켜 줄 수 있는 특징을 활용한 것이다. 즉, 트랜지스터를 이용해 한 신호선의 값을 0 또는 1로 만들어 줄 수 있으며, 0 / 1 값을 조합해 매우 복잡한 논리를 생성해 낼 수 있다. 일반적인 컴퓨터를 근본적으로 까보면 결국 수 억개의 스위치가 모여서 켰다 껏다 하며 화면도 그리고, 게임도 돌리고, 엑셀 식도 계산하고 하는 등 여러 동작을 처리해주는 것이다. 이를 주로 digital system이라 한다. 사실 실제 제품을 이렇게 딱 나눈 것은 불가능 한데, 그 이유는 대부분의 제품들이 둘 다 사용하기 때문이다. 간단히 스마트폰 제품을 생각해보면 계산은 digital system이 할 수 있지만, 음악 듣기에는 analog system이 필요하다는 것을 쉽게 추측할 수 있다.


특히 최근에는 SOC라는 용어가 많이 사용되는데, System on chip의 줄임말로써 이전에 사용하던 기판의 모든 회로를 하나의 칩 안으로 집적시킨 칩을 뜻한다. SOC에서는 대규모 digital 집적회로와 인터페이스 및 기타 용도의 analog 집적회로가 하나의 칩에 내장되는 형태를 갖는다. 예를 들어 스마트폰에 들어가는 SOC의 경우 연산을 처리하는 CPU / GPU 등이 digital 회로로 내장되며, USB와 같은 인터페이스 analog 회로가 하나의 SOC 안에 내장되게 된다. 이러한 구조가 갖는 이점은 한 개의 칩으로 여러 기능을 구현할 수 있기 때문에 제품 가격이 낮아지며 대량 생산에 특히 유리한 구조를 갖는다. 반대로 엔지니어 입장에서는 기존에 고려하지 않아도 되었던 수많은 기술적 문제가 발생하기 때문에 난이도가 높아지게 되지만, 좋게 보면 이로 인해 엔지니어 일자리가 늘어나고 월급도 받을 수 있다고 보면 된다.


Digital system이 갖는 장점은 고속 연산에 유리하고 노이즈에 매우 강한 특징을 갖는다는 점이다. 추가로 구현 난이도가 낮기 때문에 analog system에 비해 훨씬 복잡한 논리 연산을 쉽게 만들어 낼 수 있다. 반대로 analog system은 노이즈에 취약하고 논리 연산 용도로 사용하기 매우 어렵다. 하지만 analog 회로는 반드시 필요한데, 자연계의 모든 신호와 인간이 받아들 일 수 있는 신호는 전부 analog이기 때문이다. 즉 간단히 말해 칩 외부로 신호가 나오기 위해서는 어떻게든지 analog 회로를 통과해야만 하며 일종의 관문 역할을 한다고 보면 된다. 즉, digital 회로로 구현된 칩 내부에서 데이터 처리가 수행된 뒤에 analog 회로를 거쳐 전기 신호로 변환되어 칩 밖으로 나와 다른 칩이나 장치와 통신할 수 있게 된다. 또한 digital 회로의 low level인 논리 게이트 역시 결국은 analog 회로로 구성되어 제작되기 때문에 현대 반도체 기술에서 매우 중요한 역할을 담당한다. 


디지털 시스템을 설계하는 방법은 HDL 언어로 코드를 작성해서 원하는 동작을 수행하는 회로를 만드는 것이다. 이런 회로를 보통 로직이라고 부르며 주로 사용하는 HDL 언어는 Verilog와 VHDL이 있다. 최근에는 High Level Synthesis라고 해서 C 코드나 상위 레벨 언어로 알고리즘을 작성하면 이를 HDL 언어로 변환해주는 툴도 보이는데, 아직까지 실용성이 높아보이지는 않는다. HDL 언어로 작성되는 level을 보통 RTL(Register Transfer Level)이라고 불리며, 현재는 가장 흔히 사용되는 레벨이다. HDL 코드로 제작된 결과물은 결국 실제 칩으로 만들어져야 하는데, 대표적인 방법은 크게 두 가지로 FPGA와 ASIC이 있다. 


FPGA는 특수 설계된 칩으로 HDL 코드를 bitstream으로 바꾼 뒤에 이를 FPGA 내부에 프로그래밍해서 회로를 만들어 볼 수 있다. 처음 보면 굉장히 신기한데, 기본 원리는 LUT라는 프로그래밍 할 수 있는 기본 블록을 대량으로 깔아두고, 이를 프로그래밍해서 동작 방식을 원하는 대로 정하는 것이다. FPGA의 가장 큰 장점은 쉽게 회로를 만들어보고 바꿔볼 수 있다는 것이다. 이는 매우 강력한 장점이다. 이러한 특징으로 인해 다양한 제품에서 사용되며, 프로토타입 테스트에도 많이 사용된다. 단점으로는 가격이 상당히 비싸다는 점이다. FPGA는 구조 상 효율이 매우 떨어지기 때문에 동일 규모의 회로를 구성하려고 할 경우 ASIC에 비해 매우 비싼 가격을 가진다. 또한 구조적인 한계로 인해 고속 클럭을 사용해야 하는 로직에는 쓸 수 없다. 그리고 FPGA는 Analog 블록까지 프로그래밍해서 쓸 수 없기 때문에 아날로그 회로는 이미 내장되어 있는 것을 사용하거나 외부 추가 칩을 달아서 해결해야 한다.


ASIC은 주문형 반도체로써 말 그대로 특정 기능에 맞게 주문 생산된 반도체이다. 흔히 생각하는 칩이 ASIC이며 인텔에서 판매하는 CPU가 대표적인 ASIC이라고 보면 된다.  엄밀하게 따지면 약간 다르긴 하지만, 그냥 ASIC이 일반적으로 생각하는 시스템 반도체라고 생각하면 된다. ASIC의 장점은 일단 가격이 매우 싸다는 것이다. 예를 들어 인텔사의 CPU가 10만원짜리라고 했을 때 동일 수준을 FPGA로 만드려면 수천만원 대의 비용을 지불해야 한다. ASIC은 일단 개발이 완료되면 매우 저렴한 가격으로 대량 생산이 가능하다. 또 다른 장점으로, 내부 구조를 FPGA와는 다르게 마음대로 만들 수 있기 때문에 성능을 높일 수 있고, 고속 클럭을 사용할 수 있다. 반대로 단점은 한 번 회로가 완성되면 고치기가 불가능하다는 것이며, 기본으로 들어가는 개발비가 비싸다는 것이다. 이로 인해 소량 생산 제품에는 FPGA를 쓰는게 더 가격상 유리할 수 있다.


최근에 Xilinx 사에서 판매하는 ZYNQ SOC는 FPGA와 ASIC을 짬뽕해 놓은 형태인데, 일반적으로 많이 사용하는 CPU / Interface 등은 ASIC으로 찍어 놓고 내장된 FPGA를 연결해 프로그래밍 가능한 로직 영역을 만들어 사용할 수 있도록 해두었다. 딱 연습용으로 적절한 칩인데, 사실 FPGA로 로직을 만들다보면 CPU나 표준 인터페이스가 절실히 필요한데 이를 따로 따로 전부 만드는 그 귀찮은 작업에서 해방될 수 있다.