Cours detaille : Programmation FPGA / SoC
1. Introduction aux FPGA et SoC
- FPGA (Field Programmable Gate Array) est un circuit logique programmable utilise pour des
traitements paralleles rapides.
- SoC (System on Chip) combine un processeur (ARM), des peripheriques et un FPGA sur un
meme circuit.
- Exemples de SoC : Xilinx Zynq-7000, Intel Cyclone V SoC.
2. Langages de Description Materielle (HDL)
- VHDL (VHSIC HDL) et Verilog sont les deux langages standards pour la description de circuits
logiques.
- VHDL est fortement type, proche du langage ADA, adapte a des designs structures.
- Verilog est plus simple syntaxiquement, inspire du C.
Exemple Verilog simple (clignotement LED):
module blink_led(input clk, output reg led);
reg [23:0] counter = 0;
always @(posedge clk) begin
counter <= counter + 1;
if(counter == 24'd10000000)
led <= ~led;
end
endmodule
3. Environnement de Developpement
- Xilinx Vivado (pour FPGA Zynq, Artix, etc.)
- Intel Quartus Prime (pour FPGA Cyclone, MAX10)
- ModelSim ou Vivado Simulator pour la simulation
Etapes :
1. Creation du projet
2. Ecriture du code HDL (VHDL/Verilog)
3. Synthese et implementation
4. P&R (Placement and Routing)
5. Bitstream generation
6. Telechargement sur FPGA via JTAG/USB
4. Programmation SoC (Zynq)
- Zynq contient un processeur ARM Cortex-A9 + FPGA.
- Les peripheriques peuvent etre connectes via bus AXI.
Design typique :
1. Creation dun bloc IP personnalise (en HDL)
2. Connexion via AXI-Lite a lARM
3. Generation de Device Tree, FSBL, etc.
4. Developpement logiciel (bare-metal ou Linux)
Logiciel de controle : Xilinx SDK / Vitis (C/C++)
Exemple : UART ou PWM controle depuis ARM, logique de traitement dans FPGA.
5. Traitement du Signal et Interfaces
- Implementation de filtres FIR/IIR, FFT sur FPGA
- Modulations QPSK, 8PSK, 16APSK pour DVB-S2
- Interfaces : SPI, UART, I2C, AXI4, GPIO
- Outils : Simulink HDL Coder, MATLAB, Vitis HLS (C-to-HDL)
Exemple : creation d'un filtre passe-bas en HDL + controle via ARM.
6. Ressources et Projets
- Cartes populaires : Digilent Zybo Z7, ZCU104, Terasic DE10-Nano
- Projets open source : LiteX, PYNQ, OpenCores
- Tutoriels recommandes :
* Xilinx "Zynq Book" ([Link]
* Digilent Projects ([Link]
* Awesome FPGA GitHub list
Recommandation : creer un projet LED + PWM + UART en integrant ARM + logique FPGA.