# CoaXPress

Le CoaXPress (CXP) est un Protocole de communication asymétrique rapide de type Communication série. Il a été développé afin d’interfacer simplement des capteurs vidéo (device) avec du matériel de capture et d’enregistrement (host) en utilisant un seul câble coaxial, le rendant couramment utilisé en Vision industrielle. Ce standard permet également de servir d’alimentation pour le device.
La norme définit des taux de transferts de données sur la voie descendante (device vers host) allant jusqu’à 6.25 Gbit/s par câble en version 1.x et jusqu'à 12.5 Gbit/s en version 2.0. Le transfert des données de contrôle sur la voie montante (host vers device) est fixé à 20.833 Mbit/s en version 1.x et passe à 41.667 Mbit/s lorsque le taux de transfert sur la voie descendante est de 10 ou 12.5 Gbit/s. L’alimentation optionnelle sur le câble coaxial est de 24 V et peut fournir jusqu’à 13 W par lien au device. Le dernier avantage de cette norme réside dans sa possibilité d’utiliser plusieurs câbles coaxiaux en parallèle afin de transférer les données sur la voie descendante.

## Révisions du standard

| Code | Version | Date de révision |
| JIIA NIF-001-2010 | 1.0 | 6 décembre 2010 |
| JIIA CXP-001-2013 | 1.1 | 21 février 2013 |
| JIIA CXP-001-2015 | 1.1.1 | 29 décembre 2015 |
| JIIA CXP-001-2019 | 2.0 | 23 mai 2019 |

## Câbles et connecteurs

Le support de transmission pour le CoaXPress est le Câble coaxial (75 Ω). La distance maximale de transmission dépend principalement de la fréquence et de la qualité du câble. Les câbles RG11, RG6, RG59 ainsi que bien d'autres types peuvent être utilisés.
Le connecteur standard pour cette norme est un connecteur BNC 75 Ω. Il est également possible d'utiliser des connecteurs DIN 1.0/2.3 ainsi que des connecteurs Micro-BNC depuis la version 2.0 (ou aussi connu sous le nom HD-BNC). Diverses solutions ont également été testées mais ne sont actuellement pas officialisées par le consortium CoaXPress$^,$.

## Canal montant (uplink)

Le CoaXPress supporte un canal de communication montant du host vers le device. Cette voie montante utilise un débit fixe de 20.833 Mbit/s ainsi qu'un codage 8b/10b. À partir de la version 2.0 du standard, le débit passe à 41.667 Mbit/s dès que le débit descendant est de 10 ou 12.5 Gbit/s. Les données sont formatées sous forme de paquets :
* Emission de paquets de contrôles afin de contrôler le device
* Paquets de tests permettant de vérifier l'intégrité des liens
* Envoi d'un signal de trigger, avec une latence fixe de 3.4 µs à 20.833 Mbit/s et 1.7 µs à 41.667 Mbit/s
* Réponses aux events (messages asynchrones) et paquets triggers reçus sur le lien descendant

## Canal descendant (downlink)

Le CoaXPress possède un canal descendant dont le débit est variable, allant de 1.25 Gbit/s à 12.5 Gbit/s par lien. La multiplication du nombre de lien permet l'augmentation des taux de transferts. Le tableau ci-après montre quelques exemples de topologies CoaXPress.
| Version du standard | Nom | Débit par lien | Liens | Débit total | Distance maximale de communication |
| 1.0 à 2.0 | CXP1_X1 | 1.25 Gbit/s | 1 | 1.25 Gbit/s | Jusqu'à 212 m |
| 1.0 à 2.0 | CXP2_X1 | 2.5 Gbit/s | 1 | 2.5 Gbit/s | Jusqu'à 185 m |
| 1.0 à 2.0 | CXP3_X1 | 3.125 Gbit/s | 1 | 3.125 Gbit/s | Jusqu'à 169 m |
| 1.0 à 2.0 | CXP5_X1 | 5 Gbit/s | 1 | 5 Gbit/s | Jusqu'à 102 m |
| 1.0 à 2.0 | CXP6_X1 | 6.25 Gbit/s | 1 | 6.25 Gbit/s | Jusqu'à 64 m |
| 1.0 à 2.0 | CXP6_X4 | 6.25 Gbit/s | 4 | 25 Gbit/s | Jusqu'à 64 m |
| 2.0 seulement | CXP10_X1 | 10 Gbit/s | 1 | 10 Gbit/s | - |
| 2.0 seulement | CXP12_X1 | 12.5 Gbit/s | 1 | 12.5 Gbit/s | - |
| 2.0 seulement | CXP12_X4 | 12.5 Gbit/s | 4 | 50 Gbit/s | - |
| 2.0 seulement | CXP12_X8 | 12.5 Gbit/s | 8 | 100 Gbit/s | - |
Les données sont formatées sous forme de paquets :
* Réponses aux paquets de contrôles (lecture et écriture registres) et paquets triggers reçus sur le lien montant
* Paquets de tests permettant de vérifier l'intégrité des liens
* Transfert des données vidéos
* Envoi de triggers, signaux avec latence de propagation fixe pour un débit donné (1 source en version 1.x, 16 sources en 2.0)
* Emission d'un heartbeat à intervalle régulier, permettant de connaître le "temps local" sur un device
* Echange de message asynchrones via des events