Belajar Embedded Engineer - SoC & FPGA Basics
Episode 24 of 28

Belajar Embedded Engineer - SoC & FPGA Basics

Memasuki dunia logika yang dirancang sendiri: memahami Zynq sebagai SoC hybrid ARM + FPGA, dasar-dasar Verilog untuk mendesain hardware, dan alur kerja build-sintesis-place-rute, ditutup praktik blink LED pertama di FPGA

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Sejauh ini kalian menulis software yang berjalan di hardware jadi. Episode ini membuka kemungkinan yang lebih dalam: mendesain hardware itu sendiri — dan menggabungkannya dengan prosesor dalam satu chip. Dunia SoC/FPGA adalah tempat embedded engineer bertemu dengan engineering digital: alih-alih memprogram urutan instruksi, kalian mendesain rangkaian logika yang berjalan paralel.

Contoh paling relevan: Xilinx Zynq menggabungkan prosesor ARM (untuk menjalankan Linux, aplikasi, networking) dengan FPGA fabric (untuk logika kustom real-time). Di sinilah pipeline DSP dari episode 22 bisa berjalan paralel sepenuhnya, bukan sekuensial. Episode ini membangun dasar: apa itu FPGA, bahasa Verilog, dan alur desain.

FPGA: Logika yang Bisa Dirombak

FPGA (Field-Programmable Gate Array) adalah chip berisi jutaan sel logika kecil (LUT + flip-flop) yang bisa "diprogram" menjadi rangkaian apa pun. Perbedaannya dengan MCU:

AspekMCUFPGA
Model kerjaEksekusi instruksi sekuensialRangkaian paralel, semua "berjalan" bersamaan
Kecepatan per taskBergantung clock CPUParallelisme nyata, deterministik
Ketepatan timingSoftware (bisa jitter)Hardware (deterministik per siklus clock)
Siklus pengembanganCompile cepatSintesis + place & route (menit-jam)
Kasus pemakaianKontrol, komunikasi, IoTVideo, DSP paralel, protokol kustom

Bayangkan MCU sebagai koki yang memasak satu menu per waktu; FPGA sebagai dapur dengan 100 juru masak yang bekerja serentak. Untuk pekerjaan yang bisa dipecah paralel (filter banyak kanal, pemrosesan piksel, deteksi protokol), FPGA menang telak — itulah mengapa FPGA menguasai DSP berkecepatan tinggi, jaringan, dan komunikasi.

Zynq: ARM + FPGA dalam Satu Chip

Zynq (Xilinx/AMD) adalah contoh SoC hybrid paling populer untuk embedded:

100%

Dua bagiannya:

  • PS (Processing System) — prosesor ARM menjalankan Linux dan aplikasi (episode 10).
  • PL (Programmable Logic) — FPGA fabric tempat logika kustom "dipasang".
  • Jembatan antar keduanya: AXI bus — interface standar yang digunakan ARM dan FPGA untuk berbagi data.

Pola desain khas Zynq: tugas yang perlu fleksibilitas (aplikasi, protokol, UI) di PS; tugas yang butuh kecepatan/determinisme (filter, encode, sampling cepat) di PL. Ini contoh nyata arsitektur heterogeneous yang disebut di episode 2.

Verilog: Bahasa Mendesain Hardware

Verilog (dan VHDL) adalah bahasa deskripsi hardware. Berbeda dengan C yang mengeksekusi, Verilog menggambarkan rangkaian. Contoh blink paling sederhana:

blink.v
module blink (
    input  wire clk,      /* clock 12 MHz, misal */
    input  wire rst,
    output reg  led
);
 
    reg [23:0] counter;
 
    always @(posedge clk or posedge rst) begin
        if (rst) begin
            counter <= 24'd0;
            led     <= 1'b0;
        end else begin
            counter <= counter + 24'd1;
            if (counter == 24'd5_999_999) begin
                counter <= 24'd0;
                led     <= ~led;      /* toggle per ~1 detik (12MHz/6M) */
            end
        end
    end
 
endmodule

Konsep Verilog yang wajib dipahami di awal:

  • always block — deskripsi perilaku; dieksekusi saat clock (posedge) — inilah model "rangkaian tersinkron clock".
  • reg vs wirereg menyimpan state (flip-flop), wire menghubungkan tanpa state.
  • <= (non-blocking assign) — penugasan sinkron; semua register berubah bersamaan di tepi clock — inilah kunci paralelisme.
  • module — blok desain, seperti fungsi di C tapi berhubungan dengan pin fisik.

Kesalahan klasik pemula Verilog: memakai = (blocking) di always ber-clock → hasil berubah urutan-bergantung, tidak merepresentasikan hardware sebenarnya.

Alur Desain: Sintesis → Place & Route → Bitstream

FPGA tidak "di-compile" seperti C — ia di-synthesize:

Alur build FPGA
Verilog (.v) -> Sintesis -> Jaringan logika (netlist)
-> Place & Route -> Konfigurasi fisik sel LUT/FF
-> Bitstream (.bit) -> Dimuat ke FPGA
TahapFungsiWaktu
SintesisVerilog → netlist logikaDetik-menit
Place & RouteNetlist → posisi fisik selMenit-jam
BitstreamKonfigurasi finalDetik

Tool utama: AMD Vivado (untuk Zynq), Intel Quartus, atau Yosys (open source) untuk board kecil seperti iCEstick/Lattice. Board FPGA pemula yang paling populer dan murah: iCEstick (open toolchain, Yosys + icepack), atau Altera DE-series untuk laboratorium.

Alur praktik (pakai iCEstick + open toolchain Yosys, atau Vivado untuk Zynq):

  1. Tulis blink.v seperti contoh di atas, sesuaikan clock board (cek oscillator board — 12 MHz umum).
  2. Buat constraint file yang memetakan pin clock dan LED ke fisik board (.pcf untuk iCEstick).
  3. Build: yosys -p 'synth_ice40 -top blink -blif blink.blif' blink.v lalu nextpnr-ice40 --hx1k --json ... --pcf ... --asc ....
  4. Flash bitstream dan lihat LED berkedip — logika hardware pertama kalian hidup.
  5. Variasikan: ubah counter agar blink lebih cepat/lambat, dan amati efeknya di LED.

Tip

Jangan langsung membeli FPGA mahal. iCEstick (sekitar $25) dengan toolchain open source sudah cukup untuk belajar Verilog, sintesis, dan place & route dari nol. Jika tim kalian sudah memakai Zynq/Vivado, mulai dari contoh template resmi — dan tetap pelajari Verilog dasarnya dulu, karena tool akan terasa magis sebelum kalian paham bahasa deskripsinya.

Common Pitfalls

  1. Memikirkan Verilog seperti C — sekuensial vs paralel; always menggambarkan rangkaian, bukan loop.
  2. Blocking vs non-blocking assignment= di clock block merusak sinkronisasi.
  3. Clock domain crossing (CDC) — dua domain clock berbeda butuh synchronizer; abaikan = data korup.
  4. Pin constraint salah — sintesis berhasil, tapi LED tidak menyala.
  5. Lupa reset — flip-flop mulai dari nilai tak tentu.

Penutup

Inti yang harus dibawa pulang:

  • FPGA menjalankan logika paralel — lawan dari eksekusi sekuensial MCU.
  • Zynq = ARM (PS) + FPGA (PL) + AXI bus — arsitektur heterogeneous nyata.
  • Verilog mendeskripsikan rangkaian: always, reg, wire, dan non-blocking <=.
  • Alur build FPGA: sintesis → place & route → bitstream.
  • Mulai dengan board murah + toolchain open source (iCEstick + Yosys).

Di episode 25 selanjutnya kita turun ke bumi produksi: production & scalability — manufacturing, yield, dan scale-up dari prototipe menjadi ribuan unit. Semua yang kalian pelajari akan diuji di sini: desain yang mudah dibuat, tes yang terotomasi, dan biaya yang terkendali. Sampai jumpa di episode 25!

Belajar Embedded Engineer - SoC & FPGA Basics | Belajar Embedded Engineer