P2 Data Logger : Différence entre versions

De Wiki d'activités IMA
(Étude de la carte TE0603)
(LX9 MicroBoard)
Ligne 123 : Ligne 123 :
 
*Plateforme Xilinx Spartan-6 FPGA LX9 MicroBoard (ressource personnel)
 
*Plateforme Xilinx Spartan-6 FPGA LX9 MicroBoard (ressource personnel)
 
C'est une plate-forme de développement à faible coût qui permet de travailler avec un SPARTAN 6  et MicroBlaze. Elle possède plusieurs entrées sorties (moins que la TE0600), des leds, un interrupteur et 4 switch très fragiles et un port Ethernet. Cette board vient de mes ressources personnelles mais le modèle étant simple et assez répandu, on trouve beaucoup de tutoriel explicatif sur internet.
 
C'est une plate-forme de développement à faible coût qui permet de travailler avec un SPARTAN 6  et MicroBlaze. Elle possède plusieurs entrées sorties (moins que la TE0600), des leds, un interrupteur et 4 switch très fragiles et un port Ethernet. Cette board vient de mes ressources personnelles mais le modèle étant simple et assez répandu, on trouve beaucoup de tutoriel explicatif sur internet.
<br>
 
 
<br>
 
<br>
 
<br>
 
<br>

Version du 22 février 2016 à 09:23

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 des étapes du Projet

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


Pour plus de détails:
Fichier:Caracteristiques SPARTAN 6 XILINX LX45.pdf
General Description
Commerciale presentation
Spartan-6 FPGA Electrical Characteristics

Caractéristiques de TE0600
TE0600
TE0603
Gerber TE0603

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.

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
ZYBO

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.

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.



ZYBO

C'est une plate-forme de développement d'usage général. Celle-ci intègre un port HDMI, plusieurs ports USB dont un pour la programmation, plusieurs switch, plusieurs boutons poussoirs, un slot pour carte SD et surtout 512Mb de DDR3. Cette carte possède comme autre avantage qu'elle peut booter sur un linux via la carte SD. Ainsi, on peut se connecter en SSH/SCP sur la machine et interagir, émettre et recevoir des données en grande quantité. Je pense que le ZYNQ 7000 est un FPGA très avantageux pour faire du système embarqué.


LX9 MicroBoard

AVNET LX9 MicroBoard
  • Plateforme Xilinx Spartan-6 FPGA LX9 MicroBoard (ressource personnel)

C'est une plate-forme de développement à faible coût qui permet de travailler avec un SPARTAN 6 et MicroBlaze. Elle possède plusieurs entrées sorties (moins que la TE0600), des leds, un interrupteur et 4 switch très fragiles et un port Ethernet. Cette board vient de mes ressources personnelles mais le modèle étant simple et assez répandu, on trouve beaucoup de tutoriel explicatif sur internet.




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

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.

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
g°)
h°)
j°)
l°)
l°)
l°)

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
h°)Supprimer l'IP pour adresser les LEDS
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.

  • 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°)Dans le projetct manager, ouvrir "myLed_V1..." et ajouter à la ligne 18 :

output wire [3:0] led, 

et à la ligne 400 :

 assign led=slv_reg0[3:0];

m°)
n°)
o°)
p°)
q°)
r°)
s°)
t°)
u°)

Fichiers supplémentaires

DDR connecteur datasheet.png
  • Empreinte sous Altium Designer pour le connecteur DDR1








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
Frautte Nihilus
Wikipédia DIMM