FPGA가 "프로그래밍"되면 어떻게됩니까?


13

내가 이해 한 바에 따르면, FPGA 프로그래밍 프로세스는 두 부분으로 나뉩니다.

  1. 하드웨어 설명을 FPGA가 이해할 수있는 비트로 인코딩합니다 (예 : HDL을 작성하고 컴파일)
  2. 컴파일 된 HDL을 FPGA에로드하십시오.

내 질문은 "FPGA는 컴파일 된 HDL로 무엇을 하는가?"입니다. 현재 FPGA는 와이어와 로직 게이트를 원하는대로 성형 할 수있는 "몰딩 가능한 하드웨어"라고 생각합니다. 좋은 점 중 하나는 성형 성이 영구적이라는 것입니다. FPGA를 다시 프로그래밍 할 수 있습니다.

FPGA는 컴파일 된 HDL을 어떻게 해석합니까? 영구적 인 성형 성은 어떻게 이루어 집니까?


4
실제로는 영구적이지 않습니다. 전원이 공급 될 때마다 EEPROM에서 FPGA 비트 스트림을 다시로드해야합니다. CPLD에는이 문제가 없으며 일부 FPGA에는 전원을 켤 때마다 비트 스트림을로드하는 내장 EEPROM이 있습니다.
AngryEE

2
나는 그가 "성형은 영구적이다"를 의미한다고 생각한다.
ajs410

답변:


23

다른 질문으로 판단하면 자일링스 사람입니다. 자일링스 칩의 데이터 시트를 받아 기능 설명 장으로 이동하는 것이 좋습니다. 내가 사용하는 Spartan 3 칩의 경우 42 페이지의 재미있는 독서입니다. IOB, CLB, 슬라이스, LUT, 블록 RAM, 멀티 플라이어, 디지털 클록 관리자, 클록 네트워크, 인터커넥트 및 매우 기본적인 구성 정보와 같이 FPGA에 어떤 구성 요소가 포함되어 있는지 정확하게 설명합니다. "컴파일 된 HDL"의 모양을 알고 싶다면이 정보를 이해해야합니다.

FPGA 아키텍처에 익숙해지면이 프로세스를 이해할 수 있습니다. 먼저 HDL 디자인은 합성 엔진을 통해 실행되므로 HDL을 기본적으로 RTL로 변환합니다. 그런 다음 Mapper는 Synthesis의 결과를 처리하여 사용 가능한 FPGA 아키텍처에 "매핑"합니다. 그런 다음 라우터는 PAR (Place And Route)을 수행하여 해당 부분의 위치와 연결 방법을 파악합니다. 마지막으로 PAR의 결과는 BIT 파일로 바뀝니다. 일반적으로이 BIT 파일은 플래시 칩에로드 될 수 있도록 어떤 방식 으로든 변환되어 FPGA가 켜지면 자동으로 프로그래밍 될 수 있습니다.

이 비트 파일은 전체 FPGA 프로그램을 설명합니다. 예를 들어, Spartan 3의 CLB는 슬라이스로 구성되며 LUT로 구성되며 16 비트 1 비트 SRAM입니다. 따라서 BIT 파일에 포함되는 것은 SRAM의 각 주소에 데이터가 들어가는 것입니다. BIT 파일에 포함 된 또 다른 것은 LUT의 각 입력이 연결 매트릭스에 연결되는 방법입니다. BIT 파일에는 블록 RAM 내부의 초기 값도 포함됩니다. 각 슬라이스에서 각 플립 플롭의 세트 및 리셋 핀에 연결된 것을 설명합니다. 캐리 체인이 어떻게 연결되어 있는지 설명합니다. 각 IOB (LVTTL, LVCMOS, LVDS 등)의 논리 인터페이스에 대해 설명합니다. 통합 풀업 또는 풀다운 저항에 대해 설명합니다. 기본적으로 모든 것.

Xilinx의 경우, 구성이 시작될 때 FPGA의 메모리가 지워집니다 (즉, PROG_B가 주장됩니다). 메모리가 비워지면 INIT_B가 높아져 단계가 완료되었음을 나타냅니다. 그런 다음 JTAG 또는 Flash 칩 인터페이스를 통해 BIT 파일이로드됩니다. 프로그램이로드되면 GSR (Global Set / Reset)에 펄스가 발생하여 모든 플립 플롭이 초기 상태로 재설정됩니다. 그런 다음 DONE 핀이 높아져 구성이 완료되었음을 나타냅니다. 정확히 한 클록 사이클 후, Global Three-State 신호 (GTS)가 해제되어 출력을 구동 할 수 있습니다. 정확히 1 클럭 사이클 후에 GWE (Global Write Enable)가 해제되어 플립 플롭이 입력에 응답하여 상태 변경을 시작할 수 있습니다. 이 최종 구성 프로세스조차도 BIT 파일에 설정된 플래그에 따라 약간 재정렬 될 수 있습니다.

편집하다:

또한 FPGA 프로그램이 영구적이지 않은 이유는 로직 패브릭이 휘발성 메모리 (예 : SRAM)로 구성되어 있기 때문입니다. 따라서 FPGA의 전원이 꺼지면 프로그램을 잊어 버립니다. 그렇기 때문에 FPGA 프로그램을위한 비 휘발성 스토리지로 플래시 칩이 필요하므로 디바이스 전원을 켤 때마다로드 할 수 있습니다.


6

HDL을 컴파일하면 비트 패턴이 발생하여 FPGA 내부에서 어떤 연결을 활성화해야하는지 나타냅니다. FPGA는 더 이상 HDL을 해석 할 필요가 없습니다. 비트 패턴은 직렬 로더 Flash / EEPROM으로 프로그래밍되며 부팅시이 패턴이 FPGA로 전환되어 필요한 연결이 이루어집니다.


1
종합은 세 가지 문구를 의미합니다. 1. 넷리스트 생성 2. 게이트 레벨 최적화 3. 기술 매핑.
표준 Sandun

4

컴파일 결과는 전원을 켠 후에로드되는 비트 스트림 (문자 그대로 비트 스트림)입니다. 이것은 일부 메모리 셀 (래치)에 저장된 FPGA를 통해 이동합니다. 이 셀들은 다양한 로직 엔터티, 멀티플렉서, 룩업 테이블, RAM 블록, 라우팅 매트릭스에 연결되며 "구성"을 구성합니다. 비트 스트림이로드되면 FPGA가 작동하기 시작합니다. 구성 래치의 비트는 FPGA의 각 작은 조각에 작동 방법을 "알려줍니다".

2012 년 4 월 24 일 편집 : 내가 언급 한 플립 플롭은 룩업 테이블이나 테이블 구성이 아닙니다. @ ajs410이 말한 것처럼 RAM에 트랜지스터가 적습니다. 플립 플롭은 스토리지가 활성화 된 경우 LUT 외부로 데이터를 저장하기위한 것입니다.


일반적인 FPGA의 회로는 실제 로직 및 라우팅의 양과 프로그래밍 지원은 얼마입니까?
supercat

기술적으로 "메모리 셀"은 래치가 아니라 플립 플롭입니다. 즉, 에지 트리거됩니다.
Brian Carlton

@BrianCarlton : 플립 플롭은 모든 프로그램 저장 셀에 실제로 사용됩니까? 내가 이해 한 바에 따르면, 플립 플롭은 비트 당 12-16 MOSFET 정도의 무언가가 필요하다. 대조적으로, 데이터를 래 칭하기위한 다른 완전 정적 기술은 5-8 만 필요합니다.
supercat

1
LUT는 일반적으로 SRAM으로 만들어집니다. 플립 플롭은 SRAM의 출력에 연결됩니다.
ajs410

1
@supercat이 : 내가 FPGA의 90 %가 라우팅되는 것을 들었습니다 ... 나머지는 논리와 구성입니다 - :(하지만 빨리 참조를 찾을 수 없습니다
마틴 톰슨

1

표준 용어는 "구성"이며 ​​FPGA의 "프로그래밍"이 아닙니다. FPGA는 일반적으로 SRAM 기반 디바이스입니다. SRAM은 장치의 "논리 패브릭"내부에서 어떤 연결이 형성되고 끊어 졌는지를 나타내는 비트를 저장합니다. 구성이 발생하면 비트 스트림이 FPGA로 전송되어이 SRAM에 기록됩니다. SRAM 기반 FPGA를 끄면 SRAM 데이터가 지워지고 FPGA를 켜면 다시 구성해야합니다.

이제 이것을 알고, 그것들은 "구성"및 FPGA에 대한 다양한 방법이므로이 "비트 스트림"을 포함하는 다른 파일 형식이 존재합니다. 하루가 끝날 무렵, 이러한 파일의 구조와 FPGA가 얼마나 정밀하게 구성되어 있는지에 대한 세부 사항은 해당 제조업체의 소유이며이 정보는 공유되지 않습니다. 그러나 일반적인 원리는 FPGA에서 동일하게 유지됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.