P2 Data Logger

De Wiki d'activités IMA
Révision datée du 16 février 2016 à 15:29 par Avinot (discussion | contributions) (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 :

  • Un FPGA permettant de contrôler le système,
  • Des voies de mesures de courant embarquant un capteur et un convertisseur analogique / numérique,
  • Une mémoire RAM de stockage des données,
  • Une interface permettant de gérer la plate-forme et de récupérer les données.


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

Étapes du projet

Le projet va se dérouler en plusieurs étapes.
1)Etude des plates-formes de programmation


2)Etude de la problématique
3)Proposition de solutions et argumentaire

Choix techniques : matériel, logiciels, sources

Suivi de l'avancement du Projet

Semaine 1

  • Étude du cahier des charges.
  • Réunion avec les enseignants responsables.
  • Création du wiki.
  • Présentation du sujet.


1)Etude des plates-formes de programmation

TE0600 & TE0603

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
SPARTAN 6 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
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
TE0603
  • Other assembly options for cost or performance optimization available upon request.

Datasheet TE0600

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

Datasheet TE0603

É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.

Gerber TE0603

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.

2)Etude de la problématique

É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:

Différents types de barrette de RAM

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.

Comparatif des performances de DDR* RAM
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

IP pour SDRRAM

Schéma fonctionnel du driver pour DDR RAM
  • Étude de l'IP pour l'adressage RAM

On trouve plusieurs Ip pour adresser des mots mémoires à la carte RAM:






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

Représentation du fonctionnement d'un Memory Controller Block (MCB)

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.

3)Proposition de solutions et argumentaire

Récuperation et affichage des données avec la pateforme ZYBO

Voici une liste de matériel pour réaliser cette solution:

  • Plateforme ZYBO
  • Alimentation 5V 3A
  • Carte microSD 4Gb (2Gb minimum)
  • Cable RJ45
  • Linux type Debian

Voici les différentes étapes à réaliser pour récupérer et afficher les données venant des GPIOs:

Téléchargement et installation

a°)Telecharger et installer Vivado WebPack de la version la plus récente. (Xilinx)
b°)Télecharger depuis Zybo Resource Center le fichier zybo_base_system.zip.
c°)Télecharger depuis ce lien les ZYBO board files et placer le dossier source /new/zybo/ dans C:\Xilinx\Vivado\2015.4\data\boards\board_files
d°)Télecharger les fichiers xillinux-eval-zybo-1.3c.zip et n'en extraire que le dossier bootfiles dans le dossier de travail
e°)Télecharger le fichier xillinux-1.3.img.gz et extraire son contenu dans le dossier de travail

Création d'une carte bootable sur ZYBO

Dans la suite du tutoriel, je vais présenter comment obtenir le fichier .bit qui permet d'obtenir un accès aux différents ports du FPGA comme les switches, les leds, le HDMI etc. Si vous voulez prendre un fichier tout fait, je vous propose le mien qui est déjà compilé et fonctionnel. On le trouvera dans ce Fichier:Pack bit.zip avec un imprim'écran qui montre les registres lié aux différentes interfaces. Ce fichier image est très important pour la partie "récupération" des données. Si vous utilisez ce fichier .zip, sautez directement au point .
f°)Ouvrir avec le logiciel Vivado zybo_base_system\source\vivado\hw\zybo_bsd\zybo_bsd.xpr

g°)Sur la gauche de l'écran, sous IP integrator, choisir Open Block Design
g°)

h°)Supprimer l'IP pour adresser les LEDS
h°)

i°)On va créer un nouvel IP, tool->Create and Package IP...; next; name-> myLed; next

j°)La fenêtre suivante permet d'ajouter des interfaces. On va créer une interface AX14 pour le peripherique myLed.
j°)
  • Interface type ->Lite
  • Mode ->Slave
  • data width ->32 bits
  • number of registers ->4
  • Name->S00_AXI

k°)La fenêtre suivante permet de choisir l'option "edit IP"
l°)
m°)
n°)
o°)
p°)
q°)
r°)
s°)
t°)
u°)

Modif en cours

DDR connecteur datasheet.png
  • Création de l'empreinte sous Altium Designer pour le connecteur DDR1






Modif en cours

LX9.jpg
  • 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.






Shopping

Sources

Fiche commerciale TE0600
FPGA généralité
Guide Xilinx pour le design avec les MCB (Chapitre 3)
Guide Xilinx pour le design avec l'outil MIG (page 9)
Cours sur les lignes de propagations