DDR_Memory - Kasimashi/Systemes-embarques GitHub Wiki

Mémoire DDR (Double Data Rate)

La mémoire DDR est un type de mémoire vive (RAM) utilisée dans les ordinateurs et autres appareils électroniques pour stocker temporairement les données en cours d'utilisation. Elle est une évolution des mémoires SDR (Single Data Rate), offrant des performances accrues.

Types de DDR

Type Année d'introduction Vitesse (MT/s) Tension (V) Remarques
DDR 2000 200-400 2.5 Première génération DDR
DDR2 2003 400-1066 1.8 Plus rapide et moins énergivore que DDR
DDR3 2007 800-2133 1.5 Latence améliorée, consommation réduite
DDR4 2014 1600-3200 1.2 Plus haute densité et bande passante
DDR5 2020 4800-8400 1.1 Supporte des vitesses très élevées et meilleure efficacité énergétique

Caractéristiques principales

  • Double Data Rate : Transfert de données sur les fronts montant et descendant de l'horloge, doublant ainsi le débit par rapport à SDR.
  • Bande passante : Dépend de la fréquence et du bus mémoire.
  • Latence CAS (CL) : Temps en cycles d’horloge pour accéder à une donnée spécifique.
  • Tension : Réduction progressive pour diminuer la consommation énergétique.
  • Facteur de forme : DIMM (ordinateurs de bureau), SO-DIMM (ordinateurs portables).

Différences clés entre les générations

  • DDR vs DDR2 : DDR2 utilise des bus internes plus rapides et une tension plus basse.
  • DDR2 vs DDR3 : DDR3 a une densité plus élevée et une latence légèrement augmentée mais un débit supérieur.
  • DDR3 vs DDR4 : DDR4 augmente la fréquence et réduit la consommation, introduit des modules plus grands.
  • DDR4 vs DDR5 : DDR5 offre un débit presque doublé, des canaux doubles par module et une meilleure gestion de l'énergie.

Conseils pratiques

  • Vérifier la compatibilité avec la carte mère et le processeur.
  • Plus la fréquence est élevée et la latence faible, meilleures sont les performances.
  • DDR4 et DDR5 ne sont pas rétrocompatibles.
  • Pour les jeux et applications exigeantes, privilégier la fréquence et la capacité plutôt que la latence seule.

Relier une mémoire DDR à un microcontrôleur

Relier une mémoire DDR à un microcontrôleur classique n’est pas trivial, car la DDR fonctionne à des vitesses très élevées et nécessite un contrôleur mémoire spécialisé.

1. Problèmes principaux

  • Double Data Rate : transfert de données sur les fronts montant et descendant de l’horloge.
  • Timing critique : setup/hold times, latence CAS, refresh, etc.
  • Bus large : 16, 32 ou plus de bits de données + adresse + contrôle.
  • Microcontrôleurs classiques (Arduino, STM32 classiques, ESP32) n’ont pas de contrôleur DDR intégré.

⚠️ Impossible de connecter une DDR “brute” directement à un MCU classique.

2. Solutions possibles

a) Microcontrôleur / SoC avec contrôleur DDR intégré

  • Exemples : STM32H7, ESP32-S3, Raspberry Pi, FPGA avec IP DDR.
  • Signaux principaux :
    • DQ[0..N] : bus de données
    • ADDR[0..M] : bus d’adresse
    • BA[0..2] : banques
    • CK, CK# : horloge différentielle
    • CS#, RAS#, CAS#, WE# : contrôle
    • DQS : strobe de données
  • Recommandation : respecter scrupuleusement le datasheet pour le routage et la longueur des traces.

b) Module DDR avec interface mémoire prête à l’emploi

  • DDR3 sur module breakout pour FPGA ou MCU avec contrôleur externe.
  • Accessible via QSPI, FMC ou AXI.

c) Alternatives plus simples pour MCU classiques

Type de mémoire Facilité Débit Remarques
SDRAM / PSRAM Facile Moyen Compatible avec MCU via contrôleur externe
SRAM parallèle Très facile Faible à moyen Simple, pas besoin de timing complexe
QSPI / SPI Flash Très facile Faible Bon pour stockage, pas pour traitement rapide

3. Conclusion

  • Les microcontrôleurs classiques ne peuvent pas gérer la DDR directement.
  • Pour la DDR, il faut un contrôleur DDR intégré (MCU haut de gamme ou FPGA).
  • Pour un MCU classique, privilégier SDRAM, PSRAM ou SRAM pour une intégration simple et fiable.

💡 Astuce : Pour un projet pratique, commencer par SDRAM sur STM32 avec FMC est beaucoup plus simple et pédagogique que de tenter une DDR brute.