서론
1강부터 9강까지 논리설계를 배웠다. 그러나, 매번 회로를 설계할 때마다 모든 과정을 할 수 없으니 실제로는 CAD tool을 이용해서 작성하게 된다. 대표적으로 Xilinx와 같은 도구로 Truth table minimization를 내부적으로 진행시키고 우리는 다른 문제를 푸는데 집중할 수 있다.
이번 강의에서는 Complex Programmable Logic Devices (CPLDs)와 Field Programmable Logic Devices (FPGAs)가 물리적으로 어떻게 구현되는지 알아보고자 한다.
PLD (Programmable Logic Device)
이렇게 생긴 것을 PLD라고 한다. 이미 PLA를 보고 와서 알겠지만, Sum of Product 형식으로 논리값을 구현할 수 있도록 하는 회로이다. 여기서 각 Junction의 연결은 프로그램으로 설정할 수 있기 때문에 이를 코드를 이용해서 조작할 수 있다. 그리고 Reg가 필요하면 설정을 통해서 Reg를 사용할지 사용하지 않을지도 정할 수 있다. 이미 4강에서 한 내용과 겹치므로 넘어가겠다.
CPLD
일반적으로 CPLD의 구조는 위와 같다. PLD 몇개와 다수의 I/O 핀으로 구성되어 있는 모습이다. 여기서 I/O 핀은 input으로 사용할 수도, output으로 사용할 수도 있는 핀들을 의미한다.
이들은 아래의 도식처럼 연결되어 있다. IO 블럭들은 Switch matrix를 통해서 실제 Function Block에 접근하는 모습이다.
Function Block
Function Block은 아래의 구조를 가진다.
Switch matrix에서 할당된 input은 (이 보드에서는) PLA를 거치고 Product Term Allocators를 지나 Macrocell을 통해 출력값을 반환한다.
- PLA: $AB$, $A\overline{B}+ AC$와 같은 logic을 만든다.
- Product Term Allocator: 실제로 회로를 짜보면 logic term이 output (위 그림에서는 총 18개...!)을 만드는데 부족하기 때문에 다른 곳에 있는 logic term을 가져다 쓸 필요가 있다. 그래서 그걸 해주는 것이 PTA이다.
- Macrocell: 최종 조합으로 output combination을 만들어낸다.
IO Block
IO블록이 어떻게 input을 쓸지, output을 사용할지 위 그림에 나타나 있다. User-programmable ground를 통해서 "1"이 주어질시 ouput으로, "0"이 주어지면 input이 된다.
Switch matrix
Switch matrix는 programmable하게 io와 macrocell을 이어 줄뿐이다.
원래라면 위에 구성요소들을 섬세하게 짜야하겠지만 CAD 툴이 위 과정을 대신해 주기 때문에 신경 쓸 필요는 없다.
FPGA
FPGA는 CPLD에 비해서 작은 Programmable logic block(CLB)을 가지고 있으나 더 많은 수를 지니고 있어 더욱 활용성이 높다. 그러나 그만큼 Programmable intercoonect를 연결하는 것이 어렵다.
Configurable Logic Block (CLB)
각 Programmable logic bloc은 위와 같은 Configurable Logic Block (CLB)으로 구성되어 있다.
여기에 있는 $G$, $F$, $H$를 이용하면 많은 종류의 함수를 효율적으로 작성할 수 있다. 이들은 16x1 SRAM으로 구성된 Look Up Table이고 함수의 진리표를 저장해 주는 역할을 한다.
$$\begin{align*}G&=G(G1, G2, G3,G4)\\ F & =F(F1, F2, F3,F4) \\ H & =H((F,H2), (G,H0), H1)\end{align*} $$
- Input이 각각 4,4,3인 함수 3개를 만들 수 있음.
- Input이 5인 함수 하나를 만들 수 있음.
- ...
그리고 2개의 D f/f도 있다는 것을 기억해 주자.
출력은
- $X = F \: or \: H $
- $ XQ = M4 \: or \: Qx (Dx = F \: or \: G \: or \: H \: or \: DIN) $
- $ Y = G \: or \: H $
- $ YQ = M6 \: or \: Qy (Dy = F \: or \: G \: or \: H \: or \: DIN) $
이다.
하나 재미있는 점은 CLB는 하나의 logic equation을 만들기 위해서 하나의 CLB 전부가 필요하기 때문에 Sequential circuit을 만드는 데에 필요한 transition table 하나를 만들기 위해서 하나의 CLB가 통째로 필요하다. 그래서 f/f 하나를 구성하는데 필요한 logic equations를 다른 데서 가져와야 해서 f/f 수보다 CLB수가 딸리는 경우가 잦다.
IO Block
CPLD와 비슷하지만 2개의 f/f을 가지고 있다. Why? → Output stabilizer! Input synchronizer!
Programmable Interconnect
PSM(Programmable Switch Matrix)을 이용하여 경로를 지정할 수 있고 CPLD에 비해 매우 복잡해진다는 것만 기억하자. 어디에 CLB를 배치할지, 어떻게 연결할지, 어떤 경로를 따라갈지 등의 문제는 풀기 어렵고, 이는 CAD툴의 도움을 받아 작업한다.
만약 위 다이어그램들을 주고서 직접 회로를 구현하라 한다면 레지스터를 설정하고 논리회로를 알맞게 짠 후에 그것들은 wire을 통해서 연결해 주면 된다.
'컴퓨터 > 논리설계' 카테고리의 다른 글
[논리설계] 9강 - 순차회로 설계 / Sequential Design Practice (0) | 2025.06.08 |
---|---|
6강-순차회로 (0) | 2025.05.29 |
1강 - 논리설계의 배경지식과 회로 (0) | 2025.05.29 |