FX2LP contrôleur USB : CY7C68013 1793802 23949897 2007-12-14T11:01:30Z MMBot 37832 Bot : Remplacement de texte automatisé (-</ *[Bb][Rr]> +<br/>) Le '''FX2LP''' (CY7C68013A/14A) de Cypress est un [[Contrôleur (informatique)|contrôleur]] [[USB]] couramment utilisé pour transférer des données entre un [[Circuit logique programmable|FGPA]] et un [[Compatible PC|PC]], c’est une version basse puissance du FX2 (CY7C68013). Il est fortement intégré et comprend : * un émetteur récepteur USB 2.0 * un moteur d'interface [[Communication série|série]] (SIE) * un [[microcontrôleur]] [[8051]] amélioré * une interface périphérique programmable (GPIF) == Datasheet == Disponible sur le site de Cypress : {{Lien web |url= http://www.cypress.com/portal/server.pt?space=CommunityPage&control=SetCommunity&CommunityID=209&PageID=259&fid=14&rpn=CY7C68013A&ref=pfm |titre=CY7C68013A/14A }} == Interface de communication : CyConsole == Pour communiquer avec un [[Compatible PC|PC]], il est nécessaire d’avoir une interface de communication, pour [[Windows]] c’est la CyConsole (Cypress USB Console), disponible sur le site de Cypress à partir de ''SuiteUSB 1.0 - USB Development tools for Visual C++ 6.0 (2)'' sous le nom USBDevStudio_1703.exe : {{Lien web |url= http://www.cypress.com/portal/server.pt?space=CommunityPage&control=SetCommunity&CommunityID=285&PageID=552&r_folder=Software%20and%20Drivers&r_title=SD1077&ref=prt |titre=CyConsole }}<br /> Une fois installé une documentation illustrée présentant l’[[interface]] (Users’Guide) '''CyConsole.pdf''' est disponible dans ''C:\Program Files\Cypress\USB DevStudio\CyConsole''<br /> '''ATTENTION : Ne pas oublier de modifier le CyUSB.inf pour que le FX2LP soit reconnu (cf : Part 3 du Users’Guide)''' == Driver : CyUSB.sys == A l’installation de l’interface de communication CyConsole, le [[Pilote informatique|driver]] CyUSB.sys se trouve dans ''C:\Program Files\Cypress\USB DevStudio\Driver'' == Schéma bloc == [[Image:FX2LP.png|thumb|right|500px|Schéma Bloc du FX2LP]] Plus précisément le FX2LP se compose de : <br /> :* '''8051''' : Microcontrôleur Intel<br /> :* '''SIE''' : Smart Interface Engine<br /> :* '''GPIF''' : General Programmable Interface<br /> :* '''FIFO''' : First In First Out<br /> :* '''I2C''' : Inter Integrated Circuit bus<br /> :* '''ECC''' : Error Correcting Codes<br /> :* '''USB2.0''' : Transciever<br /> :* '''RAM''' : Random Access Memory<br /> :* '''PLL''' : Phase-Locked Loop<br /><br /> <u>Signaux externes :</u> <br /> '''D+/D-''' : reliés au connecteur USB<br /> '''Horloge externe''' : mettre un oscillateur de 24 Mhz<br /> '''Adresses (16) / Données (8)''' : permet de connecter une mémoire externe<br /> '''SCL / SDA''' : permet d'ajouter une EEPROM I2C<br /> '''Additional I/O (24)''' : sert à programmer les interruptions, timers et USARTs du 8051<br /> '''Addresses (9) / RDY(6) / CTL(9)''' : signaux de contrôle du GPIF<br /> '''(8)/(16)''' : broches multiplexées <br /> ::::::<span style="font-size: 180%; border: ">&rarr;</span> soit PB(8)+PD(8): ports d'entrée/sortie bidirectionnels <br /> ::::::<span style="font-size: 180%; border: ">&rarr;</span> soit FD(16): bus de données bidirectionnel GPIF/FIFOS<br /><br /> <u>Différence entre les boîtiers (packages) :</u> <br /> ;56 pins : Il lui manque le [[Bus informatique|bus]] d’adresses et de données du [[microcontrôleur]] (permet de connecter une [[Mémoire informatique|mémoire]] externe), il comprend uniquement 2 signaux RDY (ready) et 3 pour le CTL (control) du GPIF, il n’a pas de port E et C.<br /> :Pour le [[Microcontrôleur]], le 56 pins n’a pas accès aux 2 [[USART]]s, aux 3 [[Timer (microcontrôleur)|timer]]s et aux 2 signaux d’[[Interruption (informatique)|interruption]] INT4 et INT5#.<br /> :Le 56 pins est suffisant pour la majorité des applications USB.<br /> ;100 pins : En plus du 56 pins, il comprend 4 signaux RDY et 3 CTL pour le GPIF, le port C et E. Il gère aussi les [[USART]]s, [[Timer (microcontrôleur)|timer]]s, et [[Interruption (informatique)|interruptions]].<br /> ;128 pins : En plus du 100 pins, il a un [[Bus informatique|bus]] d’adresses et de données pour utiliser une [[Mémoire informatique|mémoire]] externe.<br /> Le schéma bloc du FX2LP montre la version complète du composant (128 pins).<br /> === Le Microcontrôleur === C'est un [[Intel 8051]] amélioré. Il comprend : * 3 clocks possibles : 48 MHz, 24 MHz, ou 12 MHz * 256 octets de [[Mémoire vive| RAM]] * 3 [[Timer (microcontrôleur)|timer]]s/compteurs * 2 [[USART]]s * un système d’[[Interruption (informatique)|interruptions]] étendu * 2 [[Pointeur (programmation)|pointeurs]] de données Son rôle :<br /> Applique le [[Protocole de communication|protocole]] [[USB]] de niveau élevé en faisant des demandes de requêtes à l’hôte ([[Compatible PC|PC]]), il s’occupe aussi du [[Protocole de communication|protocole]] [[I2C]].<br/> Disponible sans reprogrammation, pour une utilisation standard du FX2LP.<br /> Ce n’est pas lui qui s’occupe du transfert [[USB]] (trop rapide pour lui), il sert à programmer l’[[interface]], c’est les [[First in, first out|fifos]] qui vont s’occuper de transférer directement les données entre le FX2LP et l’[[interface]] externe.<br /> Pour avoir plus de détails sur la configuration des [[Registre (informatique)|registres]] et le fonctionnement du [[Microcontrôleur]] : [http://download.cypress.com.edgesuite.net/design_resources/technical_reference_manuals/contents/ez_usb_r___technical_reference_manual__trm__14.pdf EZ-USB TRM (Technical Reference Manual)]. === SIE === C'est un moteur d'interface intelligent (Smart Interface Engine) qui décode et encode les données sur D+/D-.<br /> Il lit les signaux differentiels D+/D-, en extrait les données et envoie un paquet d'aquitement (ACK) pour signaler à l'hôte (PC) qu'il a bien reçu les données. <br /> Il procède en sens inverse pour envoyer des données à l'hôte : il lit les données, les met au format USB et les envoie sur D+/D-.<br/> === GPIF === C'est une interface programmable (General Programmable Interface) qui permet de générer des signaux de contrôle (CTL), des adresses (GPIFADR) et des données (FD) pour commander un périphérique externe (ASICs, DSPs...).Il peut aussi attendre un évènement externe sur les broches RDY.<br /> Ces signaux peuvent être programmés par l'utilisateur en modifiant les registres du 8051.<br /> Ainsi le FX2LP fonctionne en mode Maitre (Master). Le GPIF peut être synchronisé par l'horloge interne (30/48 MHz) ou par une horloge externe sur IFCLK. === FIFO === === I2C === Il est possible d’ajouter une [[Electrically-erasable programmable read-only memory|EEPROM]] [[I2C]]. Sa [[fréquence]] de fonctionnement sera de 100 ou 400 kHz. L’[[Electrically-erasable programmable read-only memory|EEPROM]] communique avec le [[Intel 8051|8051]] par l’intermédiaire de 2 signaux SCL (clk) et SDA (données).<br /> Le FX2LP gère automatiquement la [[Mémoire informatique|mémoire]] [[I2C]]. Celle ci est programmable par l'[[USB]]. Si le circuit détecte un [[Chargeur d'amorçage|boot loader]] (0xC0 ou 0xC2 sur le premier octet), alors il charge dans sa [[Mémoire vive|RAM]], le [[Programme informatique|programme]] contenu dans la [[Mémoire informatique|mémoire]] [[I2C]], puis l'exécute. === PLL === C’est une boucle à verrouillage de phase (Phase-Locked Loop), elle sert à multiplier ou diviser la fréquence (24 MHz) :<br /> :* pour le microcontrôleur 8051 :&nbsp;&nbsp;&nbsp;24MHz*2 = 48MHz ::::::::: 24MHz*1 = 24MHz ::::::::: 24MHz*0.5 = 12MHz ::La valeur du registre CLKSPD1:0 détermine la fréquence d’utilisation du 8051.<br /> :* pout l’émetteur récepteur USB : 24MHz*20 = 480MHz<br /> == Enumération == L’énumération est une étape qui permet d’identifier et de configurer le [[Périphérique informatique|périphérique]] qui vient juste d’être branché sur le bus [[Universal Serial Bus|USB]].<br /> Pendant l’énumération le [[Périphérique informatique|périphérique]] fournit à l’hôte ([[Compatible PC|PC]]) une suite de descripteurs qui permettent son identification complète. L’hôte assigne une adresse unique au [[Périphérique informatique|périphérique]] (adressage dynamique) et configure le [[Périphérique informatique|périphérique]]. Le FX2LP dispose déjà de l'énumération, aucun [[Programme informatique|programme]] n'est nécessaire, on passe directement au transfert des données. == Modes et registres par défaut == {| class="wikitable" |+ Valeur des registres par défaut pour le 56 pins ! CONFIGURATIONS ! REGISTRES |----- | CPU Clk = 12 MHz | CLKSPD1:0 = 00 |-{{ligne grise}} | FIFO/GPIF Clk = 30 MHz interne | IFCLKSRC = 1 <br/> 3048MHZ = 0 |----- | Interface Mode (Ports/FIFO/GPIF) = Ports | IFCFG1:0 = 00 |-{{ligne grise}} | Endpoint valides | VALID = 1 |----- | Endpoint en INPUT | DIR = 1 |-{{ligne grise}} | Type de transfert : en block (BULK) | TYPE1:0 = 10 |----- | Taille des Buffers Endpoint = 512 octets | SIZE = 0 |-{{ligne grise}} | Endpoint doublement bufferisé | BUF1:0 = 10 |----- | INT0 et INT1 ne sont pas valide sur le port A | INT1:0 = 00 |-{{ligne grise}} | I²C Clk = 100KHz | 400KHZ = 0 |----- | Ports A, B et D en INPUT | OEA = 0 <br /> OEB = 0 <br /> OED = 0 |-{{ligne grise}} |} == Voir aussi == === Articles connexes === * [[USB]] * [[Microcontrôleur]] === Liens externes === *{{en}} [http://www.cypress.com/ Site du constructeur] *{{en}} [http://www.usb.org/developers/docs/ Norme USB2] {{Portail informatique}} [[Catégorie:Connectique]]