Slide 1

Slide 1 text

WTFPGA?! Дмитрий Недоспасов DC7499

Slide 2

Slide 2 text

• Закончил аспирантуру TU Berlin, тема новые виды анализа чипов • Работаю совместно с Olivier THOMAS и Texplained SARL во Фрации • Фрилансер и тренер “IC RE 101” и “Keep it Synple Stupid” • Преподаю “Hardware Security” в TU Berlin • Буду разрабатывать конкурента Yubikey • Twitter: @nedos
 Email: [email protected] Кратко обо мне...

Slide 3

Slide 3 text

Что такое FPGA?

Slide 4

Slide 4 text

WTFPGA?! • FPGA - Программируемая Пользователем Вентильная Матрица. • Позволяет реализовать зачет конфигурируемых логических элементов логическую схему. • Зачет этого возможно реализовать логические и комбинаторные и сек. логические схемы. • С помощью тактового сигнала возможно очень точно описать поведение логической схемы.

Slide 5

Slide 5 text

Дизайн Simluation Synthesis Place and Route RTL RTL HDL RTL RTL RTL Schematic RTL RTL Bitstream

Slide 6

Slide 6 text

Схемотехника Simluation Synthesis Place and Route RTL RTL HDL

Slide 7

Slide 7 text

HDL • Логические схемы не “програмируют” их “описывают” (HDL - Hardware Description Language). • Языки HDL описывают как меняется состояние схемы и сигналов в зависимости от состояния других сигналов или в следующем тактовом цикле. • В императивных языков все выполняется в последовательно, в HDL всё выполняется паралельно. • Есть множество языков, самые популярные это Verilog и VHDL.

Slide 8

Slide 8 text

Конечный Автомат Figure 11: UART Timing Diagram UART START UART DATA UART STOP Default assignments valid <= 1’b0; etu cnt <= (etu cnt + 1); state <= state; bit cnt <= bit cnt; data out <= data out; etu half state <= ‘UART DATA; etu cnt <= 9’d0; bit cnt <= 3’d0; data out <= 8’d0; din == 1’b1 etu cnt <= 9’d0; etu full etu cnt <= 9’d0; data out <= {din, data out[7:1]}; bit cnt <= (bit cnt + 1); bit cnt == 3’d7 state <= ‘UART STOP; etu full etu cnt <= 9’d0; state <= ‘UART START; valid <= din; Figure 12: UART receiver state machine.

Slide 9

Slide 9 text

RTL Схема and4b3 rx_data[7]_GND_1_o_equal_2_o<7>1 I0 I1 I2 I3 O and4b4 rx_data[7]_GND_1_o_equal_2_o<7>2 I0 I1 I2 I3 O and2 rx_data[7]_GND_1_o_equal_2_o<7>3 I0 I1 O rx_data[7]_GND_1_o_equal_2_o<7>_imp:1 rx_data[7]_GND_1_o_equal_2_o<7>_imp rx_data(0) rx_data(1) rx_data(2) rx_data(3) rx_data(4) rx_data(5) rx_data(6) rx_data(7) rx_data(7)_GND_1_o_equal_2_o and2b2 _n00851 I0 I1 O or2 I0 I1 O and2b1 I0 I1 O Madd_bit_cnt[2]_GND_2_o_add_13_OUT1 Madd_bit_cnt[2]_GND_2_o_add_13_OUT1 DataA(2:0) DataB(2:0) Result(2:0) or2 _n0094<1>1 I0 I1 O Mmux_etu_cnt[8]_GND_2_o_mux_6_OUT1 Mmux_etu_cnt[8]_GND_2_o_mux_6_OUT1 Data0(8:0) Data1(8:0) Sel(0) Result(8:0) inv din_GND_2_o_equal_5_o1 I O Mmux__n00821 Mmux__n00821 Data0(2:0) Data1(2:0) Sel(0) Result(2:0) inv _n0094_inv1 I O Mmux_GND_2_o_etu_cnt[8]_mux_10_OUT1 Mmux_GND_2_o_etu_cnt[8]_mux_10_OUT1 Data0(8:0) Data1(8:0) Sel(0) Result(8:0) Mmux_etu_cnt[8]_GND_2_o_mux_20_OUT1 Mmux_etu_cnt[8]_GND_2_o_mux_20_OUT1 Data0(8:0) Data1(8:0) Sel(0) Result(8:0) Madd_etu_cnt[8]_GND_2_o_add_3_OUT1 Madd_etu_cnt[8]_GND_2_o_add_3_OUT1 DataA(8:0) DataB(8:0) Result(8:0) fde C CE D Q Mmux_state[1]_etu_cnt[8]_mux_28_OUT1 Mmux_state[1]_etu_cnt[8]_mux_28_OUT1 Data0(8:0) Data1(8:0) Data2(8:0) Data3(8:0) Sel(0:1) Result(8:0) and3 bit_cnt[2]_PWR_2_o_equal_15_o<2>1 I0 I1 I2 O etu_half<8>_imp etu_half<8>_imp etu_cnt(0) etu_cnt(1) etu_cnt(2) etu_cnt(3) etu_cnt(4) etu_cnt(5) etu_cnt(6) etu_cnt(7) etu_cnt(8) etu_half C D bit_cnt(2)_PWR_ uart_rx:1 rx_usb clk din rst top_sergio:1 clk rx target_rx Simluation Synthesis Place and Route RTL RTL RTL Schematic

Slide 10

Slide 10 text

Конфигурационный Файл Simluation Synthesis Place and Route RTL RTL Bitstream

Slide 11

Slide 11 text

Железо

Slide 12

Slide 12 text

Papilio Pro Header FPGA FTDI

Slide 13

Slide 13 text

ARM Cortex M3 UART JTAG LPC1343

Slide 14

Slide 14 text

Comms FTDI TtyUSB0 TtyUSB1 FPGA JTAG UART UART ARM Cortex M3 UART reset

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

ПИН

Slide 17

Slide 17 text

Пароль

Slide 18

Slide 18 text

Password

Slide 19

Slide 19 text

Спасибо за внимание