840 likes | 1.05k Views
Logique programmable avancée. Projet PTIPO. ( P ré T raitement d ’ I mage de PO teau). Avertissement. Cette présentation ainsi que les fichiers mentionnés se trouvent sur le campus numérique, espace S8 EE – Logique programmable avancée :. http://campus.eseo.fr/course/view.php?id=424.
E N D
Logique programmable avancée Projet PTIPO (Pré Traitement d’Image de POteau) Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Février 2014
Avertissement Cette présentation ainsi que les fichiers mentionnés se trouvent sur le campus numérique, espace S8 EE – Logique programmable avancée : http://campus.eseo.fr/course/view.php?id=424 Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Février 2014
Thème : traitement d’image temps réel Le flot de pixels délivré par un capteur d’image va être traité à travers une cascade d’unités fonctionnelles visant à fournir successivement : Une image couleur L’information de luminance Une image binarisée selon un seuillage adaptatif par moyennage local de la luminance Le gradient horizontal de l’image binarisée Un moniteur VGA permettra de contrôler la conformité du traitement en chaque point de la chaîne. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Objectif du traitement Effectuer un prétraitement de l’image de manière à y faire apparaître les contours verticaux. Ce prétraitement permet par exemple la détection automatique et identification d’objets portant un motif adapté (ex. : code à barres) Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Anneaux périodiques alternativement noirs et blancs (4 anneaux noirs au minimum) Anneau rouge Code barre d’identification sur 4 bits (ici 1001, soit poteau n° 9). La périodicité des bits du code barre est la même que celle des anneaux qui le précèdent. Exemple d’objet à détecter : piquet codé Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Sens de scrutation Détection d’un piquet codé X Y Lorsque l’analyseur détecte sur une ligne de l’image des transitions périodiques en nombre suffisant avec une plage rouge, on présumera de la présence d’un piquet codé, dont le code à 4 bits peut être lu après mesure de la période spatiale des transitions lors de la détection. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Valeur ajoutée : Configuration d’une PLL pour synthèse de fréquence Configuration d’un capteur d’image par bus I2C Utilisation de blocs de RAM embarquée Exploitation d’une matrice de Bayer Résolution de contraintes de timing … et du traitement d’image temps réel avec un FPGA Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Structure générale du système Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Liaison série LVDS Interface CAMERA 2 Désérialiseur + visualisation Bus I2C Carte SPARTAN3 2 Ecran de contrôle switches de configuration Capteur Architecture globale du système Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Caméra série Ecran VGA de contrôle Montage du système Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Câble RJ45 (à ne pas connecter au réseau Ethernet !) Support de lentille pour objectif à monture C Capteur CMOS La caméra Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
La caméra, caractéristiques La caméra est équipée d’un capteur couleur CMOS MT9V032L12STC conçu par Micron, dont les principales caractéristiques sont : Format Wide VGA à pleine résolution : 480 (V) x 752 (H) Taille des pixels : 6 µm x 6 µm Matrice de filtres colorés de Bayer Sortie parallèle 12 bits Sérialiseur intégré : sortie LVDS série 10 bits Configurable par bus I2C Seule la sortie série est utilisée. La caméra est cadencée à 27 MHz, ce qui permet un débit de l’ordre de 60 trames par seconde à pleine résolution. Elle est alimentée en 3.3 V. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
La caméra, composant I2C esclave La caméra est matériellement configurée pour être reconnue sur le bus I2C avec l’adresse esclave "1011100" Le débit du bus I2C peut atteindre 400 kbits/s. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Le système SERDES (SERializer-DESerializer) Convenablement configuré (via son bus I2C), le capteur produit un flot de pixels codés sur 8 bits (+ 2 bits pour la synchro) et transmis par son sérialiseur intégré. A 27 MHz, cela correspondra à un débit de 270 Mbits/s. Electriquement, la transmission se fait en mode LVDS (Low Voltage Differential Signaling) permettant une longueur maximum de câble de 8 mètres. Un circuit désérialiseur reçoit le flux série. Piloté par un oscillateur local 27 MHz (asynchrone de celui de la caméra), le circuit fournit les pixels désérialisés sous forme de mots de 8 bits ainsi que les bits de synchronisation Line Valid (LV) et Frame Valid (FV). Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
8 LVDS_POS DATA [7:0] LVDS_NEG FV LV REFCLK RCLK LOCK_N RF_N Liaisons avec la caméra Liaisons avec la carte Spartan 3 Configuration locale (0 ou 1) Le désérialiseur SN65LV1212 Désérialiseur Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
La PLL du désérialiseur REFCLK RCLK Désérialiseur LOCK_N Le circuit possède en interne une PLL qui va se verrouiller sur l’horloge de transmission TCLK incluse dans les signaux LVDS. Elle a besoin pour cela d’une horloge locale de référence REFCLK à peu près de même fréquence (+/- 5%) que celle de l’oscillateur local de la caméra. Le verrouillage de la PLL est signalé par la sortie LOCK_N à l’état bas. Lorsque la PLL est verrouillée, le circuit délivre l’horloge restaurée RCLK, synchrone de celle de la caméra et donc des pixels délivrés. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Désérialiseur : les horloges Désérialiseur REFCLK RCLK RF_N Comme la caméra est cadencée à 27 MHz, la carte Spartan 3 devra produire une horloge locale REFCLK à peu près de même fréquence, donc de 27 MHz (+/- 5%). L’horloge restaurée RCLK (asynchrone de REFCLK) servira à cadencer tout le domaine synchrone propre au traitement des pixels. L’entrée RF_N permet de choisir le front de RCLK (rising or falling) qui servira à échantillonner les pixels. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
RCLK (RF_N=1) RCLK (RF_N=0) Le signal RF_N (strap R/F) Le signal RF_N, ajustable manuellement à 0 ou 1, permet de choisir la phase de l’horloge RCLK par rapport au flux DATA délivré par le deserializer. DATA strap Par défaut, on utilisera le mode RF_N = 1. Cependant, en cas de dysfonctionnement, on pourra toujours tester le mode RF_N=0. Groupe ESEO – D.Genet – R. Perdriau – G. Savaton - Logique programmable avancée – Avril 2009
Blanking trame 16,66 ms (60Hz) Blanking ligne 32 µs Les signaux de synchronisation FV et LV 8 LVDS_POS DATA [7:0] Désérialiseur LVDS_NEG FV LV Par défaut, FV (Frame Valid) et LF (Line Valid) auront les formes suivantes : FV LV Ligne 479 Ligne 478 Ligne 1 Ligne 0 Ligne 2 Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
QUARTZ REFCLK RAZ CAM_RESET_N SDA SCLK LOCK_N RCLK LED_PLL_LOCK FV LED_DES_LOCK LV LED_CAM_READY DATA 8 H_SYNC V_SYNC SW 8 RVB 3x4 Signaux internes à la carte S3 Signaux d’échange avec l’interface (connecteur d’extension A2) Architecture du système de traitement : vue externe Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Architecture interne : domaines synchrones Le système doit pouvoir initialiser ou modifier la configuration de la caméra par son bus I2C, indépendamment du verrouillage du désérialiseur. Domaine synchrone de CLK25, horloge 25 MHz obtenue par prédivision par 2 de QUARTZ (50 MHz). Le système doit traiter les pixels délivrés par la caméra en synchronisme avec l’horloge de celle-ci. Domaine synchrone de RCLK, horloge caméra 27 MHz restaurée par le désérialiseur. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Le domaine « traitement d’image » doit être cadencé uniquement par RCLK, y compris la visualisation. ! Architecture interne : domaines synchrones QUARTZ 50MHz RCLK 27 MHz REFCLK 27 MHz CLK25 25 MHz /2 DCM Caméra Traitement d’image Config. I2C Groupe ESEO – D.Genet – R. Perdriau – G. Savaton - Logique programmable avancée – Avril 2009
REFCLK CLK25 PREDIV LED_PLL_LOCK QUARTZ PLL RAZ SDA LOCK_N SCLK CTRL_CAM CAM_RESET LED_CAM_READY LED_DES_LOCK Signaux internes à la carte S3 Signaux d’échange avec l’interface (connecteur d’extension A2) Architecture interne : domaine CLK25 (25 MHz) Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
LV LV_PULSE H_SYNC V_SYNC CTRL_WVGA FV_PULSE FV X BLANK X Y Y PIX_COL RVB DATA LUMINANCE P_RVB BAYER 3x4 8 SW[2..6] PIX_GRAD GRADIENT Architecture interne : domaine RCLK (27 MHz) SW0 SW1 Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Développement Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Etapes du développement Après avoir créé un projet PTIPO incluant le source canevas PTIPO.vhd : Construction d’une PLL 27 MHz Construction du contrôleur CTRL_CAM (utilise le bus I2C) Construction du filtre inverse de BAYER Construction du générateur de GRADIENT Chaque étape sera validée par visualisation soit des leds de contrôle, soit de l’image produite sur moniteur VGA. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Génération de la PLL 27 MHz Les versions 8.2 et plus de l’outil ISE de Xilinx intègrent dans leurs accessoires un générateur de code (CORE Generator) configurant de façon interactive les ressources spécialisées offertes par le FPGA cible, telles que les DCM (Digital Clock Manager) ou les blocs RAM. Activation : Démarrer -> Tous les programmes -> Xilinx ISE Design Suite 12.3 -> ISE Design Tools -> 64-bit Tools -> CORE Generator Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Génération de la PLL 27 MHz Désignation de la cible : Sélection de la ressource à configurer Dans la fenêtre de droite demander « Customize and Generate » Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Après avoir accepté les paramètres de setup, configurer la PLL avec : CLKIN interne de 25 MHz Sorties sélectionnées : CLK0, LOCKED et CLKFX Le reste est inchangé. Attention : la capture d’écran ci-contre est la vue par défaut et non l’objectif à atteindre. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Accepter les buffers pour les sorties sélectionnées. Dernière étape : configuration de la fréquence de sortie (27 MHz). Valeur des modulos M & D ? Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Instanciation de PLL27 et validation. Après avoir terminé la configuration de l’IP "pll27", on dispose du code du component "pll27.vhd" que l’on instanciera au niveau supérieur du projet, conformément à l’architecture prévue pour le domaine CLK25. Test : La led LED_PLL_LOCK doit s’allumer. Une mesure de la fréquence de REFCLK à l’oscilloscope doit donner 27 MHz. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Contrôleur caméra CTRL_CAM Ce contrôleur intervient au démarrage du système et doit produire une séquence d’initialisation assurant successivement : Le reset de la caméra par CAM_RESET L’envoi des commandes par le bus I2C La signalisation par LED_CAM_READY du succés de l’opération. Un component I2C_MASTER sera importé et instancié dans ce contrôleur. Il assurera la communication avec le capteur de la caméra via les signaux SDA et SCL, conformément au protocole du bus I2C. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
LOCK_N CAM_RESET CAM_READY CTRL_CAM : vue externe SDA (inout) SCLK (inout) CTRL_CAM RAZ CLK Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
SLAVE_ADDRESS : "1011100" MODE : 2 24 REG_I2C SDA 4 WORD_I2C 8 CW SCLK I2C_ MASTER DATA_ TO_I2C 16 ETAT TIMER START BUSY SEQUENCEUR LOCK_N CAM_RESET CAM_READY CTRL_CAM : architecture interne Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
SDA 8 SCLK REG_2C I2C_ MASTER 16 16 DATA_TO_I2C DATA_FROM_I2C (nc) START BUSY ERROR (nc) CTRL_CAM : Component I2C_MASTER C’est un component destiné à contrôler un composant configurable par bus I2C, un peu allégé par rapport à la norme du protocole. SLAVE_ADDRESS : "1011100" (paramètres génériques) CLK_FREQUENCY_MHZ : 25 MODE Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
CTRL_CAM : I2C_MASTER, fonctionnement -------------------------------------------------------- -- Capable de lire ou écrire des mots de 8 ou 16 bits -- 5 modes possibles -- 0 : envoi d'un octet de commande -- 1 : envoi d'un octet de commande + 1 octet de donnée -- 2 : envoi d'un octet de commande + 1 mot de 16 bits de donnée -- 3 : envoi d'un octet de commande + lecture de 1 octet de donnée -- 4 : envoi d'un octet de commande + lecture de 1 mot de 16 bits de donnée -- -- Démarre sur impulsion START -- L'octet de commande peut être en fait le numéro de registre I2C dans lequel -- serait alors écrite la donnée DATA_TO_I2C -- Met la sortie BUSY à 1 tant que l’opération lancée n’est pas terminée. -------------------------------------------------------- Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
CTRL_CAM : Unités fonctionnelles (1) WORD_I2C C’est une mémoire contenant la séquence des commandes I2C à envoyer. Elle est formée de mots de 24 bits, concaténation de l’octet numéro de registre (REG_I2C) et de la donnée de 16 bits à y écrire (DATA_TO_I2C). Sa description peut correspondre au process suivant : P_WORD_I2C : process(CW) begin case (CW) is -- octet de poids fort : adresse registre à modifier -- octets suivants : donnée à écrire when 0 => WORD_I2C <= x"B3" & x"0000"; -- LVDS validation when 1 => WORD_I2C <= x"B1" & x"0000"; -- LVDS power up when 2 => -- mots suivants ……………… when others => WORD_I2C <= x"00" & x"0000"; -- mot de cloture end case; end process P_WORD_I2C; Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
CTRL_CAM : Unités fonctionnelles(2) CW C’est un compteur 4 bits (pour une séquence maximale de 15 pas) destiné à adresser la mémoire WORD_I2C. REG_I2C et DATA_TO_I2C Registres respectivement numéro de registre I2C et mot à écrire dans ce registre. Actualisés par WORD_I2C sous le contrôle du séquenceur. TIMER Générateur d’intervalles de temps : RESET_TIME : délai pour le reset de la caméra (~ 500 ms) WARM_TIME : délai de démarrage du contrôleur I2C de la caméra (~ 20 périodes de CLK25) LOCK_TIME : délai pour obtenir le verrouillage du désérialiseur sur un pattern envoyé par la caméra (~ 40 ms) Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
0 CS_TIMER CS_CW 1 1 EN_TIMER CAM_RESET TIMER = RESET_TIME 2 CS_TIMER 1 3 EN_TIMER TIMER = WARM_TIME 4 CS_TIMER WORD_I2C /= 0 WORD_I2C = 0 5 EN_REG_I2C EN_DATA_TO_I2C 9 CAM_READY 1 LOCK_N = '1' 0 6 START EN_CW 1 Lexique des commandes : CS_CW et EN_CW : respectivement clear et validation synchrone du compteur CW . CS_TIMER et EN_TIMER : respectivement clear et validation synchrone du compteur TIMER. EN_REG_I2C et EN_DATA_TO_I2C : actualisations synchrones des registres désignés. START : ordre de lancement d’une commande I2C. 7 BUSY = '0' 8 EN_TIMER Quand CW = pas de l’envoi du pattern de synchro + 1, on attend environ 40ms (LOCK_TIME), sinon on continue. CAM_READY : signalisation caméra prête CTRL_CAM : séquencement Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
CTRL_CAM : Séquence I2C Rechercher dans la documentation du capteur les commandes I2C à faire successivement pour chaque valeur de CW : 0 : Valider le mode LVDS série 1 : Alimenter le port LVDS 2 : Activer « soft reset » 3 : Désactiver « soft reset » 4 : Activer la génération d’un motif de synchronisation (registre LVDS internal sync). 5 : Désactiver ce mode (le délai LOCK_TIME est géré dans le séquenceur) 6 : Mettre la production de LINE_VALID en mode continu (pas d’interruption pendant le blanking vertical). 7 : Ajuster le blanking horizontal de manière à ce que la durée d’une ligne soit égale à 32 µs, compte tenu de la fréquence pixel et du nombre de pixels visibles (752). Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
CTRL_CAM : Développement Coder la description du contrôleur, avec instanciation du component I2C_MASTER. En particulier, le process P_WORD_I2C intègrera tous les mots I2C déterminés précédemment. Instancier CTRL_CAM dans le domaine CLK25 du top level du projet. Tester On pourra valider le test par observation du bon achèvement de la configuration par LED_CAM_READY, ainsi que par le verrouillage du désérialiseur (LED_DES_LOCK) En sus, les signaux LV et FV pourront être contrôlés à l’oscilloscope. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
LV LV_PULSE H_SYNC V_SYNC CTRL_WVGA FV_PULSE FV X BLANK Y DATA RVB P_RVB 8 3x4 Domaine RCLK (27 MHz) : visualisation brute Les pixels bruts peuvent être contrôlés par affichage sur écran VGA Cette visualisation nécessite de produire à partir de la caméra les signaux de synchronisation H_SYNC et V_SYNC, ainsi que le blanking. On importera pour cela un contrôleur CTRL_WVGA, lui-même contrôlé par les fronts montants de LV (LV_PULSE) et FV (FV_PULSE). Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
10 X Y CS EN FV_PULSE 10 Décodeur V_SYNC Compteur Y 10 bits V_SYNC Décodeur BLANK BLANK LV_PULSE CS Compteur X 10 bits RCLK (27MHz) Décodeur H_SYNC H_SYNC Contrôleur WVGA : architecture du component Les compteurs X et Y sont remis à zéro de façon synchrone par LV_PULSE et FV_PULSE. Y est validé par LV_PULSE. Leur état permet de produire par décodage asynchrone les signaux de synchronisation compatibles avec un écran VGA ainsi que le blanking. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Visualisation brute : développement Dans le top level du projet : Coder les process et instructions produisant les signaux FV_PULSE et LV_PULSE Importer et instancier CTRL_WVGA Coder un process synchrone P_RVB utilisant directement les 4 MSB du signal DATA issu du deserializer. On y utilisera simplement une triple concaténation telle que : RVB <= DATA(7 downto 4) & DATA(7 downto 4) & DATA(7 downto 4); (ne pas oublier le conditionnement par le blanking) Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Visualisation brute : résultats L’image est matricée : on n’a pas tenu compte de la matrice de filtres colorés qui recouvre le capteur. L’image a peu de niveaux de gris : on n'a pris que les 4 bits de poids fort pour la visualisation de contrôle. L’image est un peu comprimée dans le sens horizontal : normal, on affiche 752 pixels (WVGA) sur un écran VGA (au lieu de 640). Il est impératif de réussir cette étape avant de passer à la suite du projet ! Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
0 1 0 1 0 1 X(0) 0 1 0 1 0 1 Y(0) La couleur : matrice de Bayer La partie sensible de la puce du capteur de la caméra est recouverte par une matrice de filtre colorés, dite matrice de Bayer Chaque pixel est recouvert par un filtre rouge, vert ou bleu selon ce modèle : La restitution de la couleur réelle de chaque pixel passera par une interpolation sur un voisinage 3x3, dont le calcul variera selon la parité de X et Y. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
DATA PIX_COL 8 BAYER RVB 3x8 LUMINANCE FV_PULSE LV_PULSE 8 P_RVB 3x4 X Y SW3 SW4 SW0 SW1 Interpolateur de Bayer Le flot DATA issu du désérialiseur va traverser un component BAYER dont voici la vue externe : (choix) (ajustement) Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
P_MAT 8 8 MAT R Opérateur de calcul DATA0 8 8 V DATA1 8 3x8 8 B DATA2 3x8 PIXEL_COLOR PARITE Interpolateur de Bayer: principe Pour chaque pixel présenté à l’interpolateur, l’opérateur de calcul a besoin d’une matrice 3x3 MAT correspondant à un voisinage de 9 pixels pour calculer les composantes couleur : DATA0 : pixel courant, d’abscisse X DATA1 : pixel d’abscisse X retardé de 1 ligne DATA2 : pixel d’abscisse X retardé de 2 lignes Les retards ligne seront implémentés à l’aide des blocs RAM du FPGA Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
X Y DATA pixel_color 1 2 0 MAT 3x3 OP BUFF1 (3x8) WE1 BUFF2 1 2 0 WE2 luminance BUFF3 Calcul luminance WE3 2 1 0 FV_PULSE LV_PULSE CS EN BUF_SEL %3 Interpolateur : architecture interne Une barrière synchrone sur le chemin de DATA à MAT est nécessaire pour compenser la latence des buffers Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009
Interpolateur : unités fonctionnelles (1) BUFF1, BUFF2 et BUFF3 : blocs mémoire adressés par l’abscisse X. A chaque nouvelle ligne, une mémoire est mise en écriture pendant que les deux autres alimentent la matrice 3x3 MAT. On prendra des blocs de 1 Ko. BUFF_SEL : compteur synchrone modulo 3, validé sur LV_PULSE et mis à zéro sur FV_PULSE. Il sert à sélectionner de façon circulaire : Un bloc mémoire en écriture Les blocs mémoire en lecture pour alimenter MAT MAT : matrice de 3x3 registres à décalage synchrones 8 bits, alimentée par les pixels directs et retardés. On utilisera le type integer pour faciliter les calculs ultérieurs. Groupe ESEO – D.Genet - R. Perdriau - G. Savaton - Logique programmable avancée – Avril 2009