πŸ“Œ Embedded FPGA (eFPGA)

Embedded FPGA eFPGA β€” это программируСмая Π»ΠΎΠ³ΠΈΠΊΠ°, встроСнная Π² состав SoC ΠΈΠ»ΠΈ ASIC, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΡΡ‚ΠΎΠΌΠ½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ схСму Π±Π΅Π· нСобходимости внСшнСго FPGA.

🧠 Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

eFPGA β€” это ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ IP-Π±Π»ΠΎΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ SoC, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ схоТий с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ FPGA:

  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ массив LUT, Flip-Flops, Routing Matrix, BRAM, DSP Blocks
  • ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ шинам SoC: AXI, NoC, O bus
  • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ Π²ΠΎ врСмя выполнСния
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈΠ»ΠΈ внСшниС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· SPI Flash)

eFPGA ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ частично ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ.

βš™οΈ Π“Π΄Π΅ примСняСтся

ΠžΠ±Π»Π°ΡΡ‚ΡŒΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ примСнСния
SoC / ASICВстраиваниС кастомных интСрфСйсов
Digital Signal Processing DSPБпСцифичСскиС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, FFT, MAC
CryptographyАппаратноС ускорСниС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ
NetworkingPacket Classification, Firewall
AI AcceleratorsРСализация нСйроядра ΠΈΠ»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° SIMD
Reconfigurable ComputingДинамичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹

πŸ’» ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (описаниС Π² HDL)

module efpga_custom_block(input clk, input [7:0] in, output [7:0] out);
  assign out = in ^ 8'hFF; // инвСрсия Π²Ρ…ΠΎΠ΄Π°
endmodule

πŸ“ Устройство eFPGA (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ FPGA)

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
LUTРСализация логичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
CLBΠ“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ рСгистров
Routing MatrixБвязь ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ
BRAMΠ›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ
DSP BlocksΠ£ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΠΈ, сумматоры
IO BlocksΠ’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ соСдинСния с SoC
Configuration InterfaceΠ—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° битстрима

🧩 БвязанныС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

βœ… ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ SoC Π±Π΅Π· дорогостоящСго пСрСпроСктирования

  • Π­Π½Π΅Ρ€Π³ΠΎΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ Ρƒ внСшнСго FPGA

  • МСньшая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°: соСдинСниС ΠΏΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ шинам

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° частичной Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

❌ НСдостатки

  • МСньшая ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΠΈ, Ρ‡Π΅ΠΌ Ρƒ дискрСтного FPGA

  • ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ количСство рСсурсов

  • Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ лицСнзирования ΠΎΡ‚ IP-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ²