# PSoC

PSoC est l'acronyme de Programmable System on Chip, système électronique propriétaire de Cypress. Les circuits PSoC ont été introduits par Cypress au début des années 2000 et sont conçus pour remplacer à la fois le microcontrôleur et les circuits périphériques d'un système embarqué.
Comparé à un microcontrôleur 8 bits classique, le PSoC offre :
* architecture propriétaire Cypress de type Harvard, horloge jusqu'à 24 MHz, 4 Mips,
* mémoire flash jusqu'à 32 kio programmable in-situ ;
* mémoire SRAM (jusqu'à 2 kio) pour les données ;
* bloc de multiplication 8x8 avec accumulation sur 32 bits ;
* les PSoCs contiennent des blocs analogiques (majoritairement à capacités commutées) et numériques configurables par l'utilisateur permettant d'intégrer, entre autres :
** des convertisseurs analogique-numérique et numérique-analogique,
** des amplificateurs opérationnels et des amplificateurs d'instrumentation, des filtres et des comparateurs programmables,
** des compteurs et des timers,
** des UARTs supportant les communications RS232 full duplex,
** des contrôleurs de bus I2C et SPI,
Ce sont donc des SoCs mixtes analogiques / numériques.
Une deuxième particularité est le caractère entièrement configurable de ces circuits, non seulement au niveau des fonctions du matériel qu'on y implante que du type de signal affecté à chacune des broches du circuit intégré (entrée, sortie, analogique, numérique…)
Des bibliothèques de modules utilisateurs pré-configurés permettent d'implanter dans les PSoCs, grâce à l'environnement de développement intégré PSoC Designer (disponible gratuitement), les fonctions analogiques, numériques ou mixtes, simples ou complexes précitées. Cette implémentation, ainsi que celle des programmes développés, se fait in-situ par l'utilisateur, dans la mémoire flash. Les programmes interagissent avec les modules utilisateurs hardware, qu'ils contrôlent par l'intermédiaire d'APIs (Application Programming Interfaces) générés automatiquement à la fin de la phase de configuration matérielle. PSoC Designer permet aussi l'écriture et la mise au point des programmes (en assembleur ou en C).
La troisième originalité des PSoCs est leur reconfigurabilité dynamique. En effet, les informations de configuration, contenues dans la mémoire flash, sont chargées dans des registres SRAM à la mise sous tension. Ces registres sont modifiables par le programme applicatif qui peut y écrire directement ; cette reconfiguration va du simple changement de la valeur du gain d'un amplificateur à la modification du type des fonctions implémentées dans les blocs hardware et du type de signal affecté aux broches du circuit intégré. Cette possibilité trouve de nombreuses applications dans le domaine de la mise en forme des signaux issus de capteurs. Cypress propose également un environnement de développement graphique, PSoC Express 3.0, qui n'exige aucune programmation en langage C ou assembleur. Cet outil est intéressant pour développer de petites applications de manière très rapide, par exemple la mise en œuvre d’une liaison I2C. Il ne permet cependant pas de maîtriser le code généré, son implémentation en mémoire… Aux dires de Cypress, des déclinaisons nouvelles du concept PSoC sont prévues pour la fin de l'année 2008, qui incorporeront en particulier un processeur ARM Cortex et un convertisseur analogique-numérique pré-implémenté sur la puce, donc optimisé et plus rapide.