39
보안 회로 설계 FPGA 입출력 및 UART 사용법 Dong Kyue Kim Hanyang University [email protected]

보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

보안 회로 설계

FPGA 입출력 및 UART 사용법

Dong Kyue Kim

Hanyang University

[email protected]

Page 2: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

FPGA

Page 3: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

ASIC와 FPGA 정의

• ASIC(Application Specific Integrated Circuit)

– 주문형 반도체

– 특정한 목적에 의해 가공된 칩

• 일반적인 표준 셀 방식

• FPGA(Field Programmable Gate Array)

– 일반 사용자가 원하는 로직을 프로그램 할 수 있는 gate array

• 현장에서 재수정 가능

3

Page 4: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

ASIC와 FPGA 장점

• ASIC 장점

– 큰 규모에서 가격이 효율적이다.

– 빠른 속도

– 높은 집적도

– 낮은 전력소모

– 특수한 필요성

• 아날로그와 디지털이 복합된 회로(Full Custom)

• FPGA 장점

– 작은 규모에서 가격이 효율적

– 오류발생시 회로 변경이 가능함(수정 가능)

– 개발 시간이 짧으며 개발 비용이 비교적 적음

• Time to market : 제품 개발 및 제품을 만들어서 시장에 내놓는 데 걸리는시간이 짧다.

4

Page 5: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

FPGA 구조

• CLB(Configurable Logic Block) array

– 로직 게이트 구성

• IOB(Input/Output Block)

– I/O 핀과 FPGA 내부 로직 간의 양방향 인터페이스를 제공함

• Interconnect

– 로직과 로직 연결

5

IOB

CLB

Interconnect

Page 6: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

FPGA 구조

• Ex) 2-input AND gate

6

IOB

CLB

AND OAB

AB

O

Page 7: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

CLB

• LUT(Look-Up Table)와 DFF로 구성

7

Look-Up

Table

(LUT)

Q

QSET

CLR

D

MUX

Input

Output

Page 8: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

LUT

8

• Ex) 4-input And gate

A B C D O

0 0 0 0 0

0 0 0 1 0

0 0 1 0 0

0 0 1 1 0

0 1 0 0 0

0 1 0 1 0

0 1 1 0 0

0 1 1 1 0

1 0 0 0 0

1 0 0 1 0

1 0 1 0 0

1 0 1 1 0

1 1 0 0 0

1 1 0 1 0

1 1 1 0 0

1 1 1 1 1

O

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

MUX O

AND O

ABCD

Programmed LUT

A,B,C,D

Page 9: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

FPGA PIN

• PIN 구성

– USER IO pin, power 관련 pin

Page 10: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

FPGA flow

Page 11: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

FPGA flow

11

Synthesis Implement Configuration

• netlist로 변환 • Translate• Map• Place & Route• pin locking

• FPGA에 업로드• svf, xsvf파일 생성

Page 12: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

Synthesis

• Synthesis란?

– VHDL/Verilog/SCH를 netlist로 만드는 과정

– Synthesis Options

• Optimization Goal

• Optimization Effort

• Power Reduction

• Synthesis constraint

• Keep Hierarchy

• Global Optimization Goal

– Xilinx Specific Options

• Add I/O buffer

• Max fanout

12

Page 13: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

Implement

• Translate

– 여러 개의 netlist파일을 하나의 포맷으로 통일시키고 하나의netlist로 만드는 과정

• Map

– netlist내부에 있는 logic을 FPGA 내부에 있는 구성요소로 1:1 바꿔주는 역할

– map report를 통해 logic 전체 사용량 확인

• Place & Route

– 위에서 생긴 구성 요소를 적당한 위치에 놓고(place) 연결(route)

– 가장 긴 시간(여러 번 시행됨)

13

Page 14: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

Pin locking

• Pin locking이란?

– PCB artwork을 하기 위해 FPGA에서 사용하려는 IO의 핀 번호를 정하는작업

– Pin locking방법

• Pin 정보 없이 implementation 하면 임의의 port에 핀 할당

• Pin 번호 수정 후 UCF 파일에 저장 및 프로젝트에 추가 후에implementation

– ucf 파일 예시

14

Page 15: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

Configuration

• Configuration 이란?

– FPGA(SRAM 기반 휘발성 메모리)에 사용자가 설계한 하드웨어 정보를써 넣는 과정

– Configuration 방법

• PROM을 연결하여 configuration

• PROM 없이 configuration

– micro processor와 rom 이용

– CPLD와 user memory로 FPGA download

– JTAG cable로 FPGA download

15

Page 16: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

JTAG cable

• JTAG 종류

– USB cable/Parallel cable III

• PROM 사용 없이 FPGA에 직접 download

• 전원 on/off시 데이터 없어짐

• 개발단계에 FPGA 기능 점검 시 사용

• Mode pin의 상태에 관계없이 사용

16

BIT file

XSVF

file

JTAG command+

Configuration Data(Binary)

Configuration Dataimplementation

impact

Page 17: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

Xilinx ISE 사용한 FPGA 합성

Page 18: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

(1/7)Project Settings

18

• ISE를 실행하고 프로젝트를 생성

• 보드의 정보와 일치하도록 설정

Page 19: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

(2/7)Add Source & Synthesis

• 설계한 모듈을 추가시키고 synthesize 진행

19

Page 20: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

(3/7)Pin locking

• ucf파일 생성

20

Page 21: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

(4/7)Pin locking

• pin정보 입력

– FPGA배치도 excel파일 이용하여 ucf파일 편집

21

Page 22: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

(5/7) Implement

• Synthesize와 Implement 진행

22

Page 23: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

(6/7)Generate Programming file

• Programming file생성

23

Page 24: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

(7/7)Configuration

• iMPACT실행 후 Configuration

– JTAG cable로 FPGA download

24

Page 25: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

FPGA 검증을 위한 시스템

Page 26: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

검증 시스템 구조

• 암호모듈 및 통신모듈

26

AES SIMON SPECK HIGHT

PICCOLO LED TWINE SIMECK

BUS

Reset

Clock

RxUART

Tx

LED

OutputInput

Data Reg

Key Reg

Page 27: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

UART

Page 28: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

통신 모듈의 필요성

• FPGA 동작 검증 환경

– 복잡한 암호모듈의 입출력

– 검증 시스템 입출력 환경의 단순화

– PC를 통한 값 입력 및 출력

28

Host PC

RS232Serial Target

System

Page 29: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

2929

UART (1/3)

• Basics

– I/O interface

– Universal Asynchronous Receiver Transmitter

– Serial Communication

• 1 wire, 1 bit

– 일반적으로 안정적인 신호전달을 위해 통신표준과 함께 사용

(EX. RS-232,RS-422,RS-485)

Byte Byte

Page 30: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3030

UART (2/3)

• Frame

– 정의 : UART 통신의 기본 단위, Packet이라고도 함

– 역할 : start/stop bit로 인해 연속된 data 구분 용이

– 보내지는 신호가 없을 때는 logic ‘1’유지 (IDLE 상태)

– Start bit : 통신의 시작(logic ‘0’)

– Data bit : 통신 데이터(5~9 bit)

– Parity bit : 오류검출(None(N), Odd(O), Even(E))

– Stop bit : 통신의 종료(logic ‘1’, 1~2 bit)

비트수

1 2 3 4 5 6 7 8 9 10 11

시작비트

5~9 데이터 비트패리티비트

종료비트

start data0 data1 data2 data3 data4 data5 data6 data7 parity stop

LSB MSB

Page 31: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3131

UART (3/3)

• 4 asynchronous communication parameters

– Baud rate(bps) : 9600bps

– Number of data bits : 8bits

– Parity bit : None(N)

– Number of stop bits : 1bit

Page 32: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3232

Baud Rate

• Basics

– 1초 당 프레임(패킷)수

– 단위 : bit/s(bps)

– 수신부와 송신부의 baud rate 동기화 필요

– 𝐵𝑎𝑢𝑑 𝑅𝑎𝑡𝑒 =𝑓𝑐𝑦

16 ∙(𝑈𝑥𝐵𝑅𝐺)+1, 𝑈𝑥𝐵𝑅𝐺 =

𝑓𝑐𝑦−𝐵𝑎𝑢𝑑𝑅𝑎𝑡𝑒

16 ∙𝐵𝑎𝑢𝑑𝑅𝑎𝑡𝑒

(𝑓𝑐𝑦 = 𝑓𝑜𝑠𝑐/2, 𝑈𝑥𝐵𝑅𝐺 ∶전송속도 설정을 위한 clock divisor를 포함한 레지스터)

– 클럭주파수를 바꿀 때마다 𝐵𝑎𝑢𝑑 𝑅𝑎𝑡𝑒 계산 필요

– 연구실에서는 클럭을 세는 방법으로 동기화

Page 33: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3333

RS-232 (1/3)

• Basics

– 데이터의 직렬 통신 전송을위한 표준(EIA)

– 신호의 전기 특성 및 타이밍, 의미, 커넥터의 물리적 크기 및 핀아웃 등을 정의

– 짧은 거리에서의 신호 전달 효율이 높음

– UART의 신호는 TTL(Transistor Transistor Logic) Level

– RS-232의 신호는 SP3232 등의 신호변환기를 거침

Page 34: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3434

RS-232 (2/3)

• Voltage level

– -15V ~ -3V : logic ‘1’ (Mark)

– -3V ~ 3V : not valid

– 3V ~ 15V : logic ‘0’ (Space)

Page 35: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3535

RS-232 (3/3)

• RS-232 connectors

– 9 pin connector

• RX단자와 TX단자 유의

Page 36: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3636

모듈 설명 – Input, Output

• UART

– UART의 input과 output 신호

UART

i_clk

i_reset

TX(송신)

RX(수신)

i_TxStarti_TxData

i_Rx

N bitso_Tx

o_fTxDone

o_fTxReady

o_RxData

o_fRxDone

o_fSync

N bits

신호 설명

i_clk Clock 신호

i_reset Reset 신호

i_TxStart 송신 Start 신호

i_TxData 송신 데이터

i_Rx 수신 bit

o_Tx 송신 bit

o_fSync Sync 여부

o_fTxDone 1 frame의 송신 확인

o_fTxReady 송신 data의 유무

o_RxData 수신 데이터

o_fRxDone 1 frame의 수신 확인

Page 37: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3737

모듈설명 - Sync 맞추는 법

• Synchronization

– 송신부와 수신부의 동기를 맞추기 위해 수행

– Synchronize 하는 방법

• 0x80 송신

• Start bit부터 Bit6까지 clock cycle 카운트

• Bit마다 clock cycle을 균등하게 배분

• 8로 나눈 나머지만큼 정해진 bit에 1 CLK씩 추가 배분하여 오차 최소화

(sampling point는 bit의 midpoint이므로 상관X)

CLK

Page 38: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3838

모듈 설명 – TX FSM

• UART_TX

38

IDLE

STARTclkDivisior--

DATA_OUTn_BitCnt = c_BitCnt + 1

clkDivisior--

STOPclkDivisior--

i_start != 1

c_BitCnt == 8 && !clkDivisior!clkDivisior

i_start == 1

!(c_BitCnt == 8 && !clkDivisior)

!clkDivisior

Page 39: 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 · ASIC와FPGA 정의 • ASIC(Application Specific Integrated Circuit) –주문형반도체

3939

모듈 설명 – RX FSM

• UART_RX

39

IDLE

STARTclkDivisior--

DATA_INn_BitCnt = c_BitCnt + 1

clkDivisior--

STOPclkDivisior--

i_Rx == 1

c_BitCnt == 8 && !clkDivisior!clkDivisior

i_Rx == 1

!(c_BitCnt == 8 && !clkDivisior)

f_done == 1