P2 Data Logger
Sommaire
- 1 Cahier des charges
- 2 Suivi de l'avancement du Projet
- 2.1 Semaine 1 (21/09/2015)
- 2.2 Semaine 2 (28/09/2015)
- 2.3 Semaine 3 (05/10/2015)
- 2.4 Semaine 4 (12/10/2015)
- 2.5 Semaine 5 (19/10/2015)
- 2.6 Semaine 6 (26/10/2015)
- 2.7 Semaine 7 (02/11/2015)
- 2.8 Semaine 8 (09/11/2015)
- 2.9 Semaine 9 (16/11/2015)
- 2.10 Avancement
- 2.11 Semaine 11 (30/11/2015)
- 2.12 Semaine 12 (07/12/2015)
- 2.13 Semaine 13 (14/12/2015)
- 2.14 Semaine 14 (04/01/2016)
- 2.15 Semaine 15 (11/01/2016)
- 2.16 Semaine 16 (18/01/2016)
- 2.17 Semaine 17 (25/01/2016)
- 2.18 Semaine 18 (01/02/2016)
- 2.19 Semaine 19 (08/02/2016)
- 2.20 Semaine 20 (15/02/2016)
- 2.21 Semaine 21 (22/02/2016)
- 3 Sources
Cahier des charges
Présentation générale du projet
Dénomination du sujet par les enseignants
Objectif | Réaliser une plate-forme de mesure de la consommation d'équipement électroniques |
---|---|
Description | La consommation des équipements électroniques est devenue un enjeu majeur puisque les équipements sont très souvent utilisés en situation de mobilité. La réduction de la consommation passe par la compréhension des sources de consommation que ce soit par le logiciel ou par le matériel.
Afin de comprendre les mécanismes de consommation, il est nécessaire de pouvoir mesurer le courant des différents composants d'un système. Dans ce projet, nous proposons la réalisation d'une plate-forme permettant la mesure de courant. Cette plate-forme devra être ouverte et facilement reconfigurable (ajout / retrait de voies de mesures, filtrage des mesures, ...) La plate-forme sera constituée de :
|
Contexte
Dans le cadre d'une réalisation de projet de fin d'étude, on se propose de réaliser un "data logger". Durant les semaines à venir, je vais travailler sur un dispositif qui stockera des données numériques envoyé depuis un convertisseur analogique numérique dans une barrette de RAM avant de les rendre accessible par une liaison RS232. Le but de se projet est de compléter le panel de technologie disponible pour un laboratoire qui possède une...
Objectif du projet
- stocker en RAM une série de donnée le plus rapidement possible
- construire interface permettant de recuperer les infomations via un RJ45 protocole Ethernet
- rendre modulaire le code en permettant de modifier facilement de la taille des mots d'entrée (passer de 8 bits à 10 puis 16 ...)
- rendre modulaire le code en permettant d'ajouter un fréquencemètre
- développer une carte support pour le LX45 maitriser les temps de propagations des signaux sur le typon, en direction de la barrette de RAM
Choix techniques : matériel, logiciels, sources
- Plateforme SPARTAN 6 (lx45) chez TRENZ Electronic TE0603 et TE0600 (fourni le 10 octobre 2015)
- Package (Xilinx): fgg484
- Datasheet
- Plateforme Xilinx Spartan-6 FPGA LX9 MicroBoard (ressource personnel)
- Plateforme zynq 7000 development board (fourni le 26 novembre 2015)
- OPENCORES.ORG
- Caracteristiques du LX45
- Logiciel XILINX ISE (overview)
Étapes du projet
Suivi de l'avancement du Projet
Semaine 1 (21/09/2015)
- Étude du cahier des charges.
- Réunion avec les enseignants responsables.
- Création du wiki.
- Présentation du sujet.
Semaine 2 (28/09/2015)
La board que m'ont fournie les encadrants se compose se compose d'une carte mère et d'une carte support. La carte mère, nommé TE0600 est composé d'un FPGA Xilinx SPARTAN 6 LX45. C'est le "cerveau" du projet qui vient se brancher sur une carte support qui me servira au développement (programmation, IOs, carte mémoire, alimentation, Ethernet...). Celle ci se nomme TE0603. Elles seront indissociable pendant toute la période de développement.
Caracteristiques SPARTAN 6 XILINX LX45
General
- consommation: 0.6A
- 45nm low power process technology with 6-input LUTs
- 1080MHz clock management tiles (2 DCM + 1 PLL)
- 320MHz Block RAM from 216 - 4824 Kbits
- Memory interface controllers blocks from 0 - 4
- 1.08Gbps SelectIO™ technology
- 390MHz DSP48A1 slices from 8 - 180
- Embedded processing
Spartan-6 Family:
- Spartan-6 LX FPGA: Logic optimized [ ✔ ]
- Spartan-6 LXT FPGA: High-speed serial connectivity [ ✘ ]
Designed for low cost
- Multiple efficient integrated blocks
- Optimized selection of I/O standards
- Staggered pads
- High-volume plastic wire-bonded packages
Low static and dynamic power
- 45 nm process optimized for cost and low power
- Hibernate power-down mode for zero power
- Suspend mode maintains state and configuration with multi-pin wake-up, control enhancement
- Lower-power 1.0V core voltage (LX FPGAs, -1L only) [ ✔ ]
- High performance 1.2V core voltage (LX and LXT FPGAs, -2, -3, and -3N speed grades)
Multi-voltage, multi-standard SelectIO™ interface banks
- Up to 1,080 Mb/s data transfer rate per differential I/O
- Selectable output drive, up to 24 mA per pin
- 3.3V to 1.2V I/O standards and protocols
- Low-cost HSTL and SSTL memory interfaces
- Hot swap compliance
- Adjustable I/O slew rates to improve signal integrity
High-speed GTP serial transceivers in the LXT FPGAs[ ✘ ]
- Up to 3.2 Gb/s
- High-speed interfaces including: Serial ATA, Aurora, 1G Ethernet, PCI Express, OBSAI, CPRI, EPON, GPON, DisplayPort, and XAUI
Integrated Endpoint block for PCI Express designs (LXT) [ ✘ ]
Low-cost PCI® technology support compatible with the 33 MHz, 32- and 64-bit specification.
Efficient DSP48A1 slices
- High-performance arithmetic and signal processing
- Fast 18 x 18 multiplier and 48-bit accumulator
- Pipelining and cascading capability
- Pre-adder to assist filter applications
Integrated Memory Controller blocks
- DDR, DDR2, DDR3, and LPDDR support
- Data rates up to 800 Mb/s (12.8 Gb/s peak bandwidth)
- Multi-port bus structure with independent FIFO to reduce design timing issues
Abundant logic resources with increased logic capacity
- Optional shift register or distributed RAM support
- Efficient 6-input LUTs improve performance and minimize power
- LUT with dual flip-flops for pipeline centric applications
Block RAM with a wide range of granularity
- Fast block RAM with byte write enable
- 18 Kb blocks that can be optionally programmed as two independent 9 Kb block RAMs
Clock Management Tile (CMT) for enhanced performance
- Low noise, flexible clocking
- Digital Clock Managers (DCMs) eliminate clock skew and duty cycle distortion
- Phase-Locked Loops (PLLs) for low-jitter clocking
- Frequency synthesis with simultaneous multiplication, division, and phase shifting
- Sixteen low-skew global clock networks
Simplified configuration, supports low-cost standards
- 2-pin auto-detect configuration
- Broad third-party SPI (up to x4) and NOR flash support
- Feature rich Xilinx Platform Flash with JTAG
- MultiBoot support for remote upgrade with multiple bitstreams, using watchdog protection
Enhanced security for design protection
- Unique Device DNA identifier for design authentication
- AES bitstream encryption in the larger devices
Faster embedded processing with enhanced, low cost, MicroBlaze™ soft processor Industry-leading IP and reference designs
General Description
Commerciale presentation
Spartan-6 FPGA Electrical Characteristics
Caractéristiques de TE0600
Industrial-grade Xilinx Spartan-6 LX FPGA micromodule (LX45 / LX100 / LX150)
- 10/100/1000 tri-speed Gigabit Ethernet transceiver (PHY)
- 2 x 16-bit-wide 1 Gb (128 MB) or 4Gb (512 MB) DDR3 SDRAM
- 128Mb (16 MB) SPI Flash memory (for configuration and operation) accessible through:
- 1Kb Protected 1-Wire EEPROM with SHA-1 Engine
- JTAG port (SPI indirect)
- FPGA configuration through:
- B2B connector
- JTAG port
- SPI Flash memory
- Plug-on module with 2 × 100-pin high-speed hermaphroditic strips
- Up to 52 differential, up to 109 single-ended (+ 1 dual-purpose) FPGA I/O pins available on B2B strips
- 4.0 A x 1.2 V power rail
- 1.5 A x 1.5 V power rail
- 125 MHz reference clock signal
- Single-ended custom oscillator (option)
- eFUSE bit-stream encryption (LX100 or larger)
- 1 user LED
- Evenly-spread supply pins for good signal integrity
- Other assembly options for cost or performance optimization available upon request.
Caractéristiques du TE0603
- Board power supply via screw terminals, DC jack
- JTAG header compatible with Xilinx parallel cable III, IV and USB cable HW-USB
- Small form factor: 115x70 mm
- Micro SD connector
- 5 Header connectors with up to 114 user IOs
- 2 Push-buttons for reset and user function
Semaine 3 (05/10/2015)
Étude de la carte TE0603
Je vais travailler avec la carte TE0603 en lui ajoutant une socket support pour ajouter une barrette de RAM. En effet, on peut configurer le FPGA pour que ces LUT se transforment en mémoire volatile. Cependant, la taille de ces mémoire reste limité au maximum à 512Mb configurable en 16 ou 32 bits. Mais le CAN branché en amont du FPGA fonctionne à une fréquence de 50MHz, on se rend vite compte que la mémoire RAM va se saturer même si la vitesse de la transmission en aval par le port Ethernet est élevé.
On trouve sur le site trenz-electronic.de des fichiers schematic et typon lisible sous Altium de la carte de TE0603. C'est de ce schéma que je vais démarrer pour réaliser la carte fille RAM.
- Ajouter le schéma
En étudiant de plus près le protocole de lecture et d'écriture, il semble possible de créer une carte fille avec juste le support de la barrette physique de RAM. C'est le FPGA qui va se charger de réaliser le "driver" pour accéder en écriture et en lecture les espaces mémoires.
Étude pour l'ajout de RAM
Je m'interroge sur les différentes technologies de RAM, en cherchant sur le net, on trouve des comparatifs et de brefs historiques. En voici des extraits:
Historique:
Double Data Rate (DDR) SDRAM starts making name in computer market around 2002 and is evolved from SDR (Single Data Rate) SDRAM. The slight difference between DDR and SDR is that DDR reads data on both the rising and falling edges of the clock signal, enabling a DDR memory module to transfer data twice faster as an SDR memory module.
After 2 years DDR made name in the market, DDR2 appears in mid-2004. DDR2 achieves a better speed than DDR in providing bandwidth up to 8.5 GB per second. The best thing about DDR2 is that theDDR2 based systems can use memory installed in pairs to run in "dual channel mode" to increase memory throughput even further.
Nowadays, DDR3 takes place of DDR2 in the computer market. DDR3 is believed to consume less power because it operates at lower voltages and can transfer data at rates up to 12.8 GB per second which is 4.3 GB per second faster than DDR2. DDR3 based systems can address memory modules in banks of 1, 2 or 3.
DDR1 RAM | DDR2 RAM | DDR3 RAM | |
---|---|---|---|
Nombre de pins | 184 | 240 | 240 |
Vitesse d'horloge | 100 MHz à 200 MHz | 100 MHz à 266 MHz | 100 MHz à 300 MHz |
Taux maximum de tranfers | 200 MT/s à 400 MT/s | 400 MT/s à 1066 MT/s | 800 MT/s à 2400 MT/s |
Tension d'alimentation | 2.5 V | 1.8 V | 1.5 V |
http://www.info.univ-angers.fr/~richer/ensl3i_crs4.php
Source: Frautte Nihilus & wiki
Semaine 4 (12/10/2015)
Shopping
Commandé le 12/10/2015:
- Connecteur DDR3 1.5€ (datasheet)
- Connecteur DDR2 2€ (datasheet)
- Connecteur DDR1 4.5€ (datasheet)
Après une brève discussion avec les encadrants, je choisis de commander un connecteur pour chaque technologie de RAM car je ne connais pas encore la complexité de la réalisation d'un driver pour ces mémoires. De plus, ces connecteurs sont particulièrement peu chers.
IP pour SDRRAM
- Étude de l'IP pour l'adressage RAM
On trouve plusieurs Ip pour adresser des mots mémoires à la carte RAM:
- hitechglobal
- opencore
- Schéma fonctionnel:
- Installation de l'ISE Xillinx, acquisition de la license.
Semaine 5 (19/10/2015)
- Fin de l'installation de l'ISE Xilinx
- Installation de Altium Designer
- Recherche sur l'utilisation de xilinx pour ajout d'IP
Ajouter un IP à un projet xillinx
Semaine 6 (26/10/2015)
- Création de l'empreinte sous Altium Designer pour le connecteur DDR1
Semaine 7 (02/11/2015)
- Utilisation d'une carte LX9 AVNET pour tester l'ISE xilinx.
- Création d'un compteur affiché sur les leds utilisateurs
- Recopie de valeurs issue d'un arduino UNO
Je rencontre des problèmes avec l'IP ethernet. Je n'arrive pas à le faire fonctionner correctement.
Semaine 8 (09/11/2015)
- Etude des lignes de propagations pour la conception de la carte électronique.
Cours sur les lignes de propagations
Semaine 9 (16/11/2015)
Il semble que le Spartan 6 possède des Memory Controller Blocks (MCBs) qui sont spécialement conçu pour adresser des DRAM (DDR, DDR2 et DDR3). Les MCBs ont une vitesse d'accès supérieur à 800 Mbit/s selon la datasheet du Spartan 6. On peut utiliser l'outil Memory Interface Generator (MIG) qui est disponible dans l'outil CORE Generator de ISE.
Etude des Memory Controller Blocks
Il y a trois fonctions principales du point de vue de l'utilisateur:
- Lire le port (unidirectionnel)
- Écrire sur le port (unidirectionnel)
- Lire et écrire sur le port (bi directionnel)
On peut voir la représentation du fonctionnement d'un Memory Controller Block (MCB)plusieurs blocks que l'on définit ainsi:
- Arbiter ou arbitre:
Il détermine quel port à la priorité pour accéder à la mémoire physique.
- Controller ou contrôleur:
Block de contrôle primaire qui convertit de simples requêtes utilisateur en de plus complexes instructions et séquences pour commmuniquer avec la mémoire.
- Datapath
Ce block porte le flux de données écrite et lue entre la mémoire physique et l'utilisateur.
- Physical Interface (PHY) ou interface physique:
Convertit les instructions du contrôleur en des relations temporelles et signaux adapté à la mémoire DDR pour communiquer avec elle.
- Calibration Logic:
Clalibre l'interface physique (PHY) pour avoir le meilleur rendement.
Avancement
- Recuperation de DDR1 au service informatique de Polytech.
- Test de conception d'un IP core pour la DDR.
- Installation de l'ISE Xilinx sur Zabeth03 dans la salle projet pour gagner du temps en compilation
Questions de la semaine
- Comment choisir l'horloge de son process?
Source de la semaine
Guide Xilinx pour le design avec les MCB (Chapitre 3)
Guide Xilinx pour le design avec l'outil MIG (page 9)
Semaine 11 (30/11/2015)
Semaine 12 (07/12/2015)
Semaine 13 (14/12/2015)
Semaine 14 (04/01/2016)
Semaine 15 (11/01/2016)
Semaine 16 (18/01/2016)
Semaine 17 (25/01/2016)
Semaine 18 (01/02/2016)
Semaine 19 (08/02/2016)
Semaine 20 (15/02/2016)
Semaine 21 (22/02/2016)
Sources
Fiche commerciale
Sous la main:
à voir
FPGA généralité