보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 ·...
Transcript of 보안회로설계esslab.hanyang.ac.kr/uploads/security_circuit_design... · 2019-05-29 ·...
FPGA
ASIC와 FPGA 정의
• ASIC(Application Specific Integrated Circuit)
– 주문형 반도체
– 특정한 목적에 의해 가공된 칩
• 일반적인 표준 셀 방식
• FPGA(Field Programmable Gate Array)
– 일반 사용자가 원하는 로직을 프로그램 할 수 있는 gate array
• 현장에서 재수정 가능
3
ASIC와 FPGA 장점
• ASIC 장점
– 큰 규모에서 가격이 효율적이다.
– 빠른 속도
– 높은 집적도
– 낮은 전력소모
– 특수한 필요성
• 아날로그와 디지털이 복합된 회로(Full Custom)
• FPGA 장점
– 작은 규모에서 가격이 효율적
– 오류발생시 회로 변경이 가능함(수정 가능)
– 개발 시간이 짧으며 개발 비용이 비교적 적음
• Time to market : 제품 개발 및 제품을 만들어서 시장에 내놓는 데 걸리는시간이 짧다.
4
FPGA 구조
• CLB(Configurable Logic Block) array
– 로직 게이트 구성
• IOB(Input/Output Block)
– I/O 핀과 FPGA 내부 로직 간의 양방향 인터페이스를 제공함
• Interconnect
– 로직과 로직 연결
5
IOB
CLB
Interconnect
FPGA 구조
• Ex) 2-input AND gate
6
IOB
CLB
AND OAB
AB
O
CLB
• LUT(Look-Up Table)와 DFF로 구성
7
Look-Up
Table
(LUT)
Q
QSET
CLR
D
MUX
Input
Output
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
FPGA PIN
• PIN 구성
– USER IO pin, power 관련 pin
FPGA flow
FPGA flow
11
Synthesis Implement Configuration
• netlist로 변환 • Translate• Map• Place & Route• pin locking
• FPGA에 업로드• svf, xsvf파일 생성
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
Implement
• Translate
– 여러 개의 netlist파일을 하나의 포맷으로 통일시키고 하나의netlist로 만드는 과정
• Map
– netlist내부에 있는 logic을 FPGA 내부에 있는 구성요소로 1:1 바꿔주는 역할
– map report를 통해 logic 전체 사용량 확인
• Place & Route
– 위에서 생긴 구성 요소를 적당한 위치에 놓고(place) 연결(route)
– 가장 긴 시간(여러 번 시행됨)
13
Pin locking
• Pin locking이란?
– PCB artwork을 하기 위해 FPGA에서 사용하려는 IO의 핀 번호를 정하는작업
– Pin locking방법
• Pin 정보 없이 implementation 하면 임의의 port에 핀 할당
• Pin 번호 수정 후 UCF 파일에 저장 및 프로젝트에 추가 후에implementation
– ucf 파일 예시
14
Configuration
• Configuration 이란?
– FPGA(SRAM 기반 휘발성 메모리)에 사용자가 설계한 하드웨어 정보를써 넣는 과정
– Configuration 방법
• PROM을 연결하여 configuration
• PROM 없이 configuration
– micro processor와 rom 이용
– CPLD와 user memory로 FPGA download
– JTAG cable로 FPGA download
15
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
Xilinx ISE 사용한 FPGA 합성
(1/7)Project Settings
18
• ISE를 실행하고 프로젝트를 생성
• 보드의 정보와 일치하도록 설정
(2/7)Add Source & Synthesis
• 설계한 모듈을 추가시키고 synthesize 진행
19
(3/7)Pin locking
• ucf파일 생성
20
(4/7)Pin locking
• pin정보 입력
– FPGA배치도 excel파일 이용하여 ucf파일 편집
21
(5/7) Implement
• Synthesize와 Implement 진행
22
(6/7)Generate Programming file
• Programming file생성
23
(7/7)Configuration
• iMPACT실행 후 Configuration
– JTAG cable로 FPGA download
24
FPGA 검증을 위한 시스템
검증 시스템 구조
• 암호모듈 및 통신모듈
26
AES SIMON SPECK HIGHT
PICCOLO LED TWINE SIMECK
BUS
Reset
Clock
RxUART
Tx
LED
OutputInput
Data Reg
Key Reg
UART
통신 모듈의 필요성
• FPGA 동작 검증 환경
– 복잡한 암호모듈의 입출력
– 검증 시스템 입출력 환경의 단순화
– PC를 통한 값 입력 및 출력
28
Host PC
RS232Serial Target
System
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
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
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
3232
Baud Rate
• Basics
– 1초 당 프레임(패킷)수
– 단위 : bit/s(bps)
– 수신부와 송신부의 baud rate 동기화 필요
– 𝐵𝑎𝑢𝑑 𝑅𝑎𝑡𝑒 =𝑓𝑐𝑦
16 ∙(𝑈𝑥𝐵𝑅𝐺)+1, 𝑈𝑥𝐵𝑅𝐺 =
𝑓𝑐𝑦−𝐵𝑎𝑢𝑑𝑅𝑎𝑡𝑒
16 ∙𝐵𝑎𝑢𝑑𝑅𝑎𝑡𝑒
(𝑓𝑐𝑦 = 𝑓𝑜𝑠𝑐/2, 𝑈𝑥𝐵𝑅𝐺 ∶전송속도 설정을 위한 clock divisor를 포함한 레지스터)
– 클럭주파수를 바꿀 때마다 𝐵𝑎𝑢𝑑 𝑅𝑎𝑡𝑒 계산 필요
– 연구실에서는 클럭을 세는 방법으로 동기화
3333
RS-232 (1/3)
• Basics
– 데이터의 직렬 통신 전송을위한 표준(EIA)
– 신호의 전기 특성 및 타이밍, 의미, 커넥터의 물리적 크기 및 핀아웃 등을 정의
– 짧은 거리에서의 신호 전달 효율이 높음
– UART의 신호는 TTL(Transistor Transistor Logic) Level
– RS-232의 신호는 SP3232 등의 신호변환기를 거침
3434
RS-232 (2/3)
• Voltage level
– -15V ~ -3V : logic ‘1’ (Mark)
– -3V ~ 3V : not valid
– 3V ~ 15V : logic ‘0’ (Space)
3535
RS-232 (3/3)
• RS-232 connectors
– 9 pin connector
• RX단자와 TX단자 유의
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의 수신 확인
3737
모듈설명 - Sync 맞추는 법
• Synchronization
– 송신부와 수신부의 동기를 맞추기 위해 수행
– Synchronize 하는 방법
• 0x80 송신
• Start bit부터 Bit6까지 clock cycle 카운트
• Bit마다 clock cycle을 균등하게 배분
• 8로 나눈 나머지만큼 정해진 bit에 1 CLK씩 추가 배분하여 오차 최소화
(sampling point는 bit의 midpoint이므로 상관X)
CLK
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
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