FPGA(Field Programmable Gate Array)에 대해 설명해보세요.
FPGA(field programmable gate array)은 프로그래머블 논리 요소와 프로그래밍가능 내부선이 포함된 반도체 소자이다. 프로그래머블 논리 요소는 AND, OR, XOR, NOT, 더 복잡한 디코더나 계산 기능의 조합 기능 같은 기본적인 논리 게이트의 기능을 복제하여 프로그래밍 할 수 있다. 대부분의 FPGA는 프로그래밍가능 논리에 간단한 플립플롭이나 더 완벽한 메모리 블록으로 된 메모리 요소를 포함하고 있다. 프로그램이 가능한 내부선 계층구조는 FPGA의 논리블록을 시스템 설계자가 요구하는 대로 단일칩 프로그래밍 가능 빵판처럼 내부연결을 할 수 있다. 이 논리블록과 내부선은 제조공정 이후에 소비자/설계자가 프로그램 할 수 있으므로 요구되는 어떠한 논리기능도 수행할 수 있다.
FPGA는 일반적으로 주문형 반도체(ASIC) 대용품보다 느리고, 복잡한 설계에 적용할 수 없으며, 소비전력이 크다. 그러나 개발시간이 짧고, 오류를 현장에서 재수정할 수 있고, 초기 개발비가 저렴하다는 장점이 있다. 제조사는 설계 이후에 수정할 수 없도록 할당된 덜 유연한 FPGA 버전으로 싸게 팔 수 있다. 이런 설계개발은 일반적인 FPGA에서 만들었고 좀 더 ASIC와 비슷한 고정된 버전으로 변경되었다. 일반적인 기본 구조는 컨피규러블 논리 블록(configurable logic blocks) 어레이와 라우팅 채널로 구성된다. 다중 I/O 패드는 한 행의 높이나 한 열의 너비에 적합할지도 모른다. 일반적으로 모든 라우팅 채널은 동일한 폭을 가지고 있다.
일반적인 FPGA의 논리 블록은 아래에 보이는 것처럼 4개의 입력 룩업 테이블 (lookup table)과 플립플롭으로 구성된다. 레지스터나 언레지스터 룩업 테이블이 가능한 하나의 출력만 있다. 논리 블록에는 룩업 테이블를 위한 4개의 입력과 클럭 입력이 있다. 클럭 신호 (와 높은 팬 아웃 신호)는 일반적으로 특별용도 전용 라우팅망을 통하여 연결되고 다른 신호는 분리하여 관리하기 때문이다.
▲ FPGA의 논리 블록도
그럼 레지스터에 대해서 알아보도록 하자. 레지스터는 값을 저장하는 개념으로 보통 한칸씩 움직이는 shift register를 말한다. Shift Register는 N-bit 데이터를 직렬 혹은 병렬로 N-bit 레지스터에 이동 저장하는 동기식 순차회로이다. 방향에 따라서 Left Shift, Right Shift로 분류된다. 그리고 데이터가 계속적으로 순환하는 것을 Rotation으로 말한다. 이에 대해 회로를 작성하면 아래와 같다. 이 회로들을 FPGA를 컴퓨터에 연결해서 입력하면 레지스터를 설계할 수 있다.
▲ 양방향 레지스터
▲ 병렬로드를 가진 레지스터
FPGA(field programmable gate array)의 레지스터를 설계해보면, 레지스터는 값을 저장하는 개념으로 보통 한 칸씩 움직이는 shift register를 말한다. Shift Register는 N-bit 데이터를 직렬 혹은 병렬로 N-bit 레지스터에 이동 저장하는 동기식 순차회로이다. 방향에 따라서 Left Shift, Right Shift로 분류된다. 그리고 데이터가 계속적으로 순환하는 것을 Rotation으로 말한다. 이 회로들을 FPGA를 컴퓨터에 연결해서 입력하면 레지스터를 설계할 수 있다.
커뮤니티 Q&A
위 이론과 관련된 게시글이에요.
이해가 안 되거나 궁금한 점이 있다면 커뮤니티에 질문해 보세요!
게시글 작성하기