이 글을 PDF로 보기
선행 이해:
AND, OR, NOT, XOR, NAND Gates 작동 방식 및 진리표.
이 부분은 너무 기초라서 생략하고 시작하겠습니다.
LUT (Look-Up Table)
LUT를 통해 기본 게이트들이 어떻게 작동하는지 더 깊이 알아보겠습니다. 그리고 더 복잡한 Boolean algebra (부울 대수)에 대해 알아보겠습니다.
먼저, 모든 이산 논리 게이트(AND, OR, XOR 등)는 실제로는 FPGA 내부에 존재하지 않습니다. 그러나 이러한 기능을 분명 FPGA는 수행할 수 있습니다. FPGA가 부울 대수를 수행할 수 있는 방법은 Look-Up Table (LUT)을 사용하는 것입니다. LUT는 프로그래밍될 수 있는 이산 기능 블록입니다. LUT는 진리표 개념을 사용하여 출력과 입력을 연결합니다. 예제를 살펴보겠습니다.
다음 부울 방정식에 대한 진리표를 작성해 보겠습니다: Q = A*B + A’. 우선, 이러한 기호가 의미하는 바를 정의해야 할 것입니다.
- = AND
- = OR
- ‘ = NOT
- ^ = XOR
따라서 구두로, 부울 방정식 Q = AB + A’는 “출력 Q는 A와 B를 AND하거나 A가 아닌 값을 갖는다”라고 읽을 수 있습니다. 이제 진리표와 이 방정식으로 생성된 회로를 살펴보겠습니다. 아래 이미지를 보면, 이 회로를 만들기 위해 총 3개의 게이트가 필요하다는 것을 알 수 있습니다.
(그림)
진리표 Q = A*B + A’ | ||
A | B | Q |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 0 |
1 | 1 | 1 |
위 예제의 진리표는 두 개의 입력(A와 B)을 가지므로 4가지 가능한 출력 조합이 있습니다. 각 입력은 가능한 출력의 수를 2배로 증가시킵니다. 따라서 하나의 입력에 대해 2개의 출력 가능성이 있고, 2개의 입력에 대해 4개의 출력 가능성이 있으며, 3개의 입력에 대해 8개의 출력 가능성이 있습니다. 수학적으로는 2^(입력 수)로 표현할 수 있습니다. 이제 3개의 입력을 가진 또 다른 예제를 살펴보겠습니다. 진리표를 만들 방정식은 다음과 같습니다: Q = A + (CB’). 괄호는 C AND NOT B 연산이 OR 연산보다 우선적으로 수행됨을 나타냅니다.
진리표 Q = A + (C*B’) | |||
A | B | C | Q |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
글의 처음에 언급했듯이, 이산 논리 게이트는 실제로 FPGA 내부에 존재하지 않습니다. 대신 FPGA는 Look-Up Tables 또는 LUT를 사용합니다. LUT는 프로그래머에의해 부울 대수 방정식을 수행하도록 프로그래밍됩니다. 예상할 수 있듯이, 모든 가능한 부울 표현의 조합이 Look-Up Table에 프로그래밍될 수 있어야 합니다. 다시 말하자면, 하나의 3-입력 LUT는 3개의 입력 신호를 사용하여 생각할 수 있는 모든 부울 대수 방정식을 만들 수 있습니다.
LUT는 사용하는 FPGA에 따라 다양한 크기로 제공될 수 있지만, 모두 같은 방식으로 작동합니다. 3-input LUT는 그리 오래전까지 표준이었지만, 요즘에는 4-input 및 5-input LUT가 일반적입니다. 더 복잡한 표현을 만들어야 할 경우, 더 많은 Look-Up Tables를 사용할 수 있습니다. LUT는 FPGA에서 가장 기본적인 두 가지 구성 요소 중 하나입니다. 단일 FPGA에는 이러한 구성 요소가 수천 개 있습니다. 이제 이러한 놀랍고 다재다능한 구성 요소에 대해 더 잘 알게 되었으니, FPGA 내부의 또 다른 가장 중요한 요소인 Flip-Flop (=Register)에 대해 알아보겠습니다.
https://johnnyjay.tistory.com/126
그럼 다들 화이팅!
'전자 | 제어 | 항공우주 > FPGA & HDL' 카테고리의 다른 글
[FPGA 강의4] VHDL - 레지스터 기반 FIFO 설계 (0) | 2024.08.11 |
---|---|
[FPGA 강의3] FIFO 개념과 용도 (0) | 2024.08.11 |
[FPGA 강의2] Flip-Flop (Register) (6) | 2024.08.10 |
VS Code 에서 TerosHDL Linter를 GHDL로 사용하는 방법 (0) | 2024.04.07 |
Verilig & VHDL 무료 프로그램 TOP 4 (2) | 2023.05.28 |
댓글