FPGA (Field Programmable Gate Array) 1
FPGA 개념 q FPGA (Field Programmable Gate Array)? v 사용자가현장에서직접프로그램가능한소자 v 기본적인논리게이트, 플립플롭, 메모리등을구현가능 v 수십개 ~ 수백만개의소자를포함하는규모 v 개발기간이짧고회로동작을바로검증할수있어개발초기에사용하거나 소규모다품종제품에사용 q FPGA 구조 v 논리블록 v 연결자원 (interconnection resource) v 입출력회로 v 프로그래밍스위치 : 전기적인 Fuse v 게이트수, 입출력수, 핀수, 동작속도등에 따라성능및가격차이 2
FPGA 종류 Types 회사계열게이트수 (1,000) 사용자입출력핀수 MAX 7000 0.6-5 36-164 Altera MAX 9000 6-12 159-216 EEPROM isplsi 8000 25-45 148-312 Lattice MACH 5 5-20 68-256 MAX 5000 0.6-3.7 16-67 EPROM Altera Classic EPLD 0.3-0.9 22-64 Xilinx XC9500/XL/XV 0.8-64 34-192 Flash Cypress Delta 39k 30-200 32-264 Anti-fuse SRAM Actel ACT 3 1.5-10 70-228 QuickLogic pasic 3 8-38 70-316 XC 4000E 2-85 64-448 Xilinx Virtex-5 30-330 400-1200 Spartan-3 50-5000 124-784 FLEX 10K (ACEX1K) 10-250 59-470 Altera APEX 20K 30-1500 128-808 Cyclone III 50-120 94-535 Stratix III 50-340 288-1104 3
프로그래밍구조 q 프로그래밍 : 전기적 fuse 인연결스위치에회로정보 (configuration 정보 ) 를 기억하는과정 v 칩의면적, 지연시간, 성능, 집적도, 표준공정사용, 가격등에영향 v 프로그래밍정보의불휘발성 (non-volatile), 소자의재프로그래밍, ISP (In System Programmability) à PCB 기판설계에영향 q SRAM 프로그래밍방식 v SRAM (Static RAM) 에정보저장 v 휘발성 (volatile) v 초기화를위한정보저장매체가따로필요 v 재프로그래밍및 ISP 가능, 표준 CMOS 공정사용, v 전원소모가크다, v 초기제품개발, 교육용으로사용 routing wires RAM cell RAM cell RAM cell MUX routing wire routing wire routing wire routing wire RAM cell pass transistor transmission gate multiplexer to logic cell input 4
프로그래밍구조 q Anti-fuse 방식 v 3 개층으로구성 Ø n+ 확산층 : 반도체 Ø 유전체층 : 절연체 Ø Poly-Si 층 : 도체 v 18V-5mA 전류로유전체에열을가하여전기적 fuse 를녹여서프로그래밍 v anti-fuse 를위한별도의마스크제조공정필요 v 불휘발성 v 재프로그래밍불가 v 성능이우수 v 최종제품용도 단면층평면층 ( 마스크 ) Actel 사의안티퓨즈프로그래밍구조 5
프로그래밍구조 q EPROM (EEPROM)/Flash 방식 v select gate 와 floating gate 로구성 v 프로그래밍된상태 : floating 게이트가전하를포획하여 select 게이트가 NMOSFET 로동작하는것을불가하게함 연결이끊어짐 v 비표준공정 가격상승, 소규모소자 v 불휘발성 v EPROM : 자외선조사로재프로그래밍가능, ISP 불가 v EEPROM : 전기적재프로그래밍가능, ISP 가능 v 컨피겨레이션 ROM 으로많이사용 +5V 1 st level poly Si (floating gate) +V G 2 nd level poly Si (select gate) gate oxide bit line pull-up resistor V S +V D select gate field oxide n+ n+ EPROM transistor word line floating gate p-substrate gnd 단면층 회로연결 6
FPGA 설계과정 q 설계입력 v HDL, EDIF, Schematic q 논리최적화 v 일반적인논리합성과최적화과정 q Technology 매핑 v FPGA 의논리구조에적합한회로생성, FPGA 소자 회사의 CAD 툴사용 q 배치및배선 (P&R) v FPGA 칩내부의특정위치에회로를배치하고연결 v P&R 결과는회로의전기적특성에영향을미침 q 설계검증 v 타이밍시뮬레이터를통한동작검증 q 프로그래밍 ( 컨피겨레이션 ) v 전기적프로그래밍파일 (JEDEC) 형태로저장 v 다운로드케이블을통하여 FPGA 를직접 프로그래밍하거나 EPROM writer 로프로그래밍 Initial design Entry Design database Logic optimization Technology mapping Placement & Routing Design verification Configuration & Dow nloading 7
ACEX 1K q Altera 사의 SRAM 방식 FPGA q 논리블록, 메모리, 입출력블록포함 q EAB (Embedded Array Block) : 내부전용메모리, megafunction 구현 v RAM 비트 : 12,288 ~ 49,152 q Logic array : look-up table 논리블록, 논리회로, glue logic 구현 v 게이트개수 : 10,000 ~ 100,000 v LE (Logic Element) 개수 : 576 ~ 4,992 q 최대사용자입출력핀수 : 136 ~ 333 q 동작전원 v 입출력다중전압지원 : 5.0V, 3.3.V, 2.5V v 내부회로 2.5V 동작 q ICR (In Circuit Reconfigurability) v 외부 EPROM, 마이크로프로세서 v JTAG (Joint Test Action Group) port q 설계툴 v MAX+Plus II, Quartus II v 설계입력형태 : EDIF, Verilog HDL, VHDL, v 스키매틱, 그외 EDA 와의인터페이스지원 8
ACEX1K 소자종류 Feature EP1K10 EP1K30 EP1K50 EP1K100 Typical gates (logic and RAM) 10,000 30,000 50,000 100,000 Max. system gates 56,000 119,000 199,000 257,000 Logic Elements (LEs) 576 1,728 2,880 4,992 Logic Array Blocks (LABs) Embedded Array Bocks (EABs) 72 218 360 624 3 6 10 12 Total RAM bits 12,288 24,576 40,960 49,152 Max. user I/O pins 136 171 249 333 1 LAB = 8 LEs 1 EAB = 4,096 bits RAM 9
ACEX1K 패키지와 usable I/O pins Device 100-Pin TQFP 144-Pin TQFP 208-Pin PQFP 256-Pin FineLine BGA 484-Pin FIneLine BGA EPF1K10 66 92 120 136 136 EP1K30 102 147 171 171 EP1K50 102 147 186 249 EP1K100 147 186 333 L T Q R G B F 패키지형태이름 PLCC (plastic J-lead chip carrier) TQFP (plastic thin quad flat pack) PQFP (plastic quad flat pack) RQFP (power quad flat pack) PGA (ceramic pin grid array) BGA (ball grid array) FineLine BGA C I 동작온도 Commercial (0 o C - 70 o C) Industrial (-40 o C - 85 o C) Speed Grade -1, -2, -3,... 소자이름예 : EP1K100QC208-3 ACEX1K 계열, 100,000 게이트수, 208 핀의 PQFP 패키지동작온도 0 o C - 70 o C, speed grade -3 10
ACEX 1K 성능 사용자원량 성능 응용회로 LEs EABs 속도등급 -1-2 -3 단위 16 bit loadable counter 16 0 285 232 185 MHz 16 bit accumulator 16 0 285 232 185 MHz 16-to-1 multiplexer 10 0 3.5 4.5 6.6 ns 16 bit multiplier with 3 stage pipeline 592 0 156 131 93 MHz 256x16 RAM read cycle speed 0 1 278 196 143 MHz 256x16 RAM write cycle speed 0 1 185 143 111 MHz 11
ACEX 1K 구조 v LAB (Logic Array Block) : 행과열의형태로배열배치 v EAB (Embedded Array Bock) : 행단위마다 1개씩중앙열에배치 v IOE (I/O Element) : 칩바깥쪽에배치 v Row/Column Interconnect : LAB, EAB, IOE의연결 12
EAB (Embedded Array Block) v 1EAB = 4,096 bits memory v 내부입출력레지스터포함 v 입출력비트수가변 v 주소선가변 v 메모리구현 : RAM, ROM, FIFO, dual port RAM v 조합 / 순차회로구현 : 곱셈기, vector scalar, 디지털필터, micro-controller 등 v 쿼터스툴에서 MegaWizard 함수를호출 하여각파라미터설정으로메모리배열 을설계 메모리배열구조예 13
LAB (Logic Array Block) v 1 LAB은약 96개정도의사용가능한게이트에해당 : v 8 비트카운터, 가감산기, 디코더, 상태머신등의논리구현에적합 v 8개 LE (Logic Element) v LAB control signal : global 신호 ( 클럭, 리셋,..) v carry and cascade chain v LAB 내부 (local) 연결배선 v 칩내행열배치 14
LE (Logic Element) v 일반적인논리구현 v 4 입력 LUT (LookUp Table) 구조 : 논리함수구현 v 프로그램가능한 D 플립플롭 v carry chain, cascade chain v 내부및외부연결선 v LE 사용모드 Normal 모드 : 일반적논리회로, 디코딩회로 연산모드 : 가산기, 누산기, 비교기 업 / 다운카운터모드 : 동기형로드, 업 / 다운, 비동기형클리어 클리어카운터모드 : 동기형로드및클리어 15
IOE (Input Output Element) v 입력, 출력, 양방향입출력 v 양방향 I/O buffer, register v 출력형태 : 핀별지정가능 v v 저잡음, 고속 slew rate 개방드레인 (open drain) 출력 v 삼상 (tri-state) 출력 v 주변제어신호버스 : v v 글로벌채널사용 클럭, 클리어, 클럭인에이블, 출력 인에이블 v 2 개의전용클럭입력 : 클럭와이어 지연감소 v GCLK1, GCLK2 16
ACEX 1K Configuration q Altera SRAM 계열컨피겨레이션 scheme MSEL1 MSEL0 컨피겨레이션 scheme Active Serial (AS) 0 0 Passive serial (PS) J TAG 1 0 Passive parallel sync.(pps) 1 1 Passive parallel async. (PPA) q 컨피겨레이션데이터크기 소자 데이터크기 (bits) 데이터크기 (bytes) EP1K10 159,160 19,895 EP1K30 473,720 59,215 EP1K50 784,184 98,023 EP1K100 1,335,720 166,965 17
PS 방식컨피겨레이션 v PS 컨피겨레이션연결도 단일 FPGA 다중 FPGA 18
컨피겨레이션파일 v SRAM object file (.sof) : ByteBlaster를사용하는 PS 컨피겨레이션 v Programming Object File (.pof) : EPC 소자에다운로드 v Serial Bitstream File (.sbf) : BitBlaster를사용하는 PS 컨피겨레이션 v Hexadecimal (Intel format) File (.hex) : third party ROM 프로그래머, PPS, PPA 모드, parallel EPROM q Download cable : ByteBlasterMV, ByteBlaster, USBBlaster v PC 에 10 핀으로연결되어 FPGA 를 PS 방식으로프로그래밍 19
EAB 를사용한메모리설계 - RAM q 쿼터스툴의라이브러리함수사용 v ROM, RAM, FIFO 등설계 Megawizard manager- memory compiler-ram 1port RAM 의주소, 입출력데이터크기설정 소자, 생성할출력의형태, 파일이름설정 20
RAM 설계 주소, 입출력포트의레지스터사용설정 메모리의초기정보파일설정.mif (memory initialization file) 혹은.hex 파일형태사용 21
RAM 설계 RAM megafunction 에서생성되는파일종류 스키매틱편집기에생성된 ram1 심볼호출 ram1.v : Verilog file ram1.bsf : 회로심볼파일 22
RAM 설계 생성된 ram1.v Verilog 파일 ß 설계에서사용 module ram1 ( address, data, inclock, we, q); input [7:0] address; input [9:0] data; input inclock; input we; output [9:0] q; wire [9:0] sub_wire0; wire [9:0] q = sub_wire0[9:0]; lpm_ram_dq lpm_ram_dq_component (.address (address),.inclock (inclock),.data (data),.we (we),.q (sub_wire0),.outclock (1'b1)); defparam lpm_ram_dq_component.lpm_address_control = "REGISTERED", lpm_ram_dq_component.lpm_indata = "REGISTERED", lpm_ram_dq_component.lpm_outdata = "UNREGISTERED", lpm_ram_dq_component.lpm_type = "LPM_RAM_DQ", lpm_ram_dq_component.lpm_width = 10, lpm_ram_dq_component.lpm_widthad = 8; endmodule 23
EAB 를사용한메모리설계 - ROM 설계 Megawizard manager- memory compiler-rom 1port ROM 의주소, 입출력데이터크기설정 소자, 생성할출력의형태, 파일이름설정 24
ROM 설계 주소, 입출력포트의레지스터사용설정 메모리의초기정보파일설정.mif (memory initialization file) 혹은.hex 파일형태사용 25
ROM 설계 ROM megafunction 에서생성되는파일종류 스키매틱편집기에생성된 rom1 심볼호출 rom1.v : Verilog file rom1.bsf : 회로심볼파일 26
ROM 설계 생성된 rom1.v Verilog 파일 ß 설계에서사용 module rom1 ( address, inclock, outclock, q); input [6:0] address; input inclock; input outclock; output [9:0] q; wire [9:0] sub_wire0; wire [9:0] q = sub_wire0[9:0]; lpm_rom lpm_rom_component (.outclock (outclock),.address (address),.inclock (inclock),.q (sub_wire0),.memenab (1'b1)); defparam lpm_rom_component.intended_device_family = "ACEX1K", lpm_rom_component.lpm_address_control = "REGISTERED", lpm_rom_component.lpm_file = "rom1_data.mif", lpm_rom_component.lpm_outdata = "REGISTERED", lpm_rom_component.lpm_type = "LPM_ROM", lpm_rom_component.lpm_width = 10, lpm_rom_component.lpm_widthad = 7; endmodule 27
ROM 설계 mif 파일형식 depth = 128; width = 10; address_radix = dec; data_radix = hex; content begin 0: 000; 1: 001; 2: 002; 3: 003; 4: 004; 5: 005; 6: 006; 7: 007; 8: 008; 9: 009; 10: 1A0; 11: 111; 12: 112; 13: 213; 14: 214; 15: 315; 16: 316; 17: 317; 18: 318; 19: 019; 20: 020; 21: 021; [22..26]: 3FF; 27: 3F7; 28: 3F8; [29..127]:3F0; end; depth : 주소최대크기 width : 데이터비트 address radix : 주소표현 base data radix : 데이터표현 base radix 종류 : bin, oct, hex, uns ( 양의정수 ), dec( 부호있는정수 ) 저장될데이터내용 1: 001 ß 1 번지에 001 데이터저장 [22..26]:3FF ß 22~26 번지에모두 3FF 이와같은형태로파일을편집하여 rom1_data.mif 와같은이름으로저장 28
ROM 설계 쿼터스툴에서 mif 파일생성 (1) 메뉴 (3) 데이터편집 (4) 저장된파일보기 (2) 워드수, 크기설정 29
설계된메모리의동작검증 ram1 과 rom1 을스키매틱생성기에서호출하여아래회로와같이연결 : ex_mem.bdf 로저장 회로동작 : rom1 에저장된내용 (rom1_data.mif) 을 ram1 에쓰게한후 ram1 의출력 (ram_out) 으로읽어내게한다. 컴파일후의 report 파일 : 사용한메모리양확인 30
설계된메모리의동작검증 시뮬레이션파형 ram_we=1 : ram1 에데이터저장 ram 의 03 번지부터 001 저장 ram_we=0 : ram1 의데이터읽기 ram 의 03 번지부터 001 이읽혀진다. 31