FPGA란??

2017. 1. 18. 20:58 from FPGA

개요

먼저 "FPGA(Field-programmable logic array)는 뭐지?"라는 물음에 대하여 그 원초적인 답을 찾아봅시다. 그 이름에서 나타나 있듯이 "프로그램 가능한 논리소자의 배열의 일종이다" 라고 할 수 있겠습니다. 그런데 "programmable"은 "프로그램 가능한"이고 "logic"은 "논리소자"를 의미하며, "array"는 "배열"을 의미하는데 "Field"의 의미가 그 답에서 보이지 않는 것 같습니다만, 실제로는 array에 그 의미가 포함되어 있습니다. 밭, 논같은 경작지를 생각해보면 넓은 평야(field)의 경우 바둑판처럼 규칙적인 구획을 가진 배열이지요. 가로 세로로 나누는 것은 사람들이 걸어다닐 수 있는 "둑"과 같은 것이고요. 즉 FPGA는 하나의 밭의 구역과 같은 로직블럭이 넓은 평야에 있는 밭처럼 규칙적, 반복적으로 배치되어 있으며, 그 각각의 로직 블럭을 둑의 길과 같이 가로 및 세로방향으로 연결선이 배치된 구조로, 외부에서 프로그램하여 로직블럭의 동작과 로직블럭간의 연결선을 임의로 배치하여 다양한 동작을 할 수 있도록 설계된 IC입니다.





그림 1에는 FPGA구조를 간단하게 도식화한 것입니다. 그림 1의 좌우로 쭉 연결된 구조가 FPGA의 구조입니다. 도식화한 바와 같이 밭의 구획같은 것이 로직 블럭이고 걷는 둑이 배선의 배치를 나타낸 것입니다. 그림 1에서 보이는 로직블럭을 Altera사에서는 LAB(Logic array block)이라고 하고 Xilinx 사에서는 Configurable logic block(CLB)라고 부릅니다. 비록 로직블럭의 내부 구조는 다르지만 사용자 입장에서는 동일하게 봐도 상관 없겠습니다.


* 오로지 Digital 논리 회로로 구성되어 있다고 생각하면 된다. 하지만 최근에는 편의를 위해서 다른 장치들도 조금씩 들어가고 있다.



Difference of Processor-based system

MCU같은 것들도 FPGA와 마찬가지로 reprogrammable 하다. 하지만 MCU는 사용가능한 코어 숫자에 처리할 수 있는 일이 제한 된다. 즉 병렬처리가 안된다는 뜻. Unlike processors, FPGAs are truly parallel in nature, so different processing operations do not have to compete for the same resources. Each independent processing task is assigned to a dedicated section of the chip, and can function autonomously without any influence from other logic blocks. As a result, the performance of one part of the application is not affected when you add more processing.


Figure 1. One of the benefits of FPGAs over processor-based systems is that the application logic is implemented in hardware circuits rather than executing on top of an OS, drivers, and application software. FPGA는 사용자들이 마음대로 칩 상에 논리회로를 구성하여 자신이 원하는 기능을 만들어 낼 수 있습니다. 마치 C 프로그래밍하는 것처럼 하드웨어를 프로그래밍할 수 있지요. 모든 소프트웨어알고리즘은 하드웨어로 구현할 수 있는데요. 하드웨어에서 구현된 알고리즘이 실행속도가 빠르므로 암호 알고리즘 같은 것을 FPGA로 구현해서 많이 사용합니다.(소프트웨어 알고리즘뿐만 아니라 CU, ALU, Memory, I/O etc 도 만들 수 있다)



Defining the Parts of an FPGA

Every FPGA chip is made up of a finite number of predefined resources with programmable interconnects to implement a reconfigurable digital circuit and I/O blocks to allow the circuit to access the outside world.



 FPGA resource specifications often include the number of configurable logic blocks, number of fixed function logic blocks such as multiplliers, and size of memory resources like embedded block RAM(BRAM) of the many FPGA chip parts, these are typically the most important when selecting and comparing FPGAs for a particular application.

The configurable logic blocks (CLBs) are the basic logic unit of an FPGA. Sometimes referred to as slices or logic cells, CLBs are made together, so it is important to understand flip-flops and LUTs. Various FPGA families differ in the way flip-flops and LUTs are packaged together, so it is important to understand flip-flops and LUTs.




참고

Overview : http://www.ntrexgo.com/archives/10172#comment-7507

Difference : http://blogspot.designonchip.com/2009/12/fpga-1.html



'FPGA' 카테고리의 다른 글

Embedded, F/W, MCU, FPGA 차이점  (1) 2017.01.17
Posted by 나무길 :