-F1FAU- Descriptions radioamateurs.

Interface USB entre un PC et un modulateur QPSK.

Auteur: : F1FAU
Créé le : le 20/10/2009
Modifié le : le 19/12/2012

1ere partie description de la carte.

Logiciel de commande : Photo du programme de commande. . . . Interface USB : Photo de l'interface USB.

Introduction.
En début d’année 2008 nous avons décrit un lecteur de fichier IQ, autonome, équipé d’un disque dur. Cette réalisation était destinée à la transmission de fichiers vidéo numérique au format MPEG 2. A l’automne 2008 le projet de télévision numérique « en temps réel » a démarré par l’étude d’une interface de liaison USB vers un port parallèle, entre un ordinateur et un modulateur QPSK. Le lecteur été modifié pour mener des tests qui ont montré la nécessité d’augmenter la capacité des mémoires pour garantir un flux régulier. Notre interface n'effectue aucun traitement sur les données, cette tâche est confiée exclusivement à l’ordinateur équipé d’une carte d’acquisition PVR 150 de chez HAUPPAUGE et du logiciel développé par Christian. Cette formule est très économique car aucune puce spécialisée n’est utilisée.

Après le développement « hard » F1FAU a étudié entièrement un « soft » sous la forme d’un programme rapide permettant, avec un ordinateur, de transposer le format MPEG au format I/Q. Christian a réussi ce challenge seul en 8 mois. Désormais il est possible de produire et de transmettre en temps réel des images numériques avec un débit de 1024 kilo symbols par seconde.

Le logiciel qui est mis ici en téléchargement tourne exclusivement sous Windows. Vous l’utiliserez pour faire les essais de la carte et transmettre des vidéos en différé. Pour démarrer en « live ». il faudra attendre la suite dans une seconde partie à venir et télécharger le nouveau logiciel qui tourne sous LINUX. La solution pour faire fonctionner la carte PVR 150 en temps réel avec l’OS de Microsoft n’a pas été trouvée. La solution F1FAU ne prêtant pas être définitive; des interfaces plus sophistiquées capable de traiter les données seront décrites dans le futur par des amateurs, elles existent peut être déjà !

Présentation & synoptique de la carte.
La carte d’interface est munie d’un port USB en entrée et d’un port parallèle (LPT) en sortie pour être connectée entre un ordinateur et un modulateur QPSK. Le tampon mémoire de 128 Ko est assez conséquent pour maintenir un flux constant et régulier à l’entrée du modulateur. Le débit moyen sur un port USB est très élevé mais présente des ruptures de flux dont la durée de plusieurs millisecondes est, en l’absence d’un tampon mémoire, totalement incompatible avec un fonctionnement stable de la chaine numérique. La structure de l’interface ressemble à celle du lecteur à disque dur et les principaux composants utilisés sont : un contrôleur USB FT245, deux mémoires de 128 Ko et deux PIC 16F628.

Avant de réaliser une carte définitive des essais préliminaires ont été effectués pour vérifier la régularité du flux entre un PC et un modulateur et ainsi valider le schéma définitif. La nouvelle carte est équipée de 2 mémoires de 128 Ko chacune dont l’ensemble reproduit un mode FIFO ce qui signifie : first in - first out. L’emploi de mémoires FIFO dédiées n’a pas été possible car nous n’en avons pas trouvé avec une capacité suffisante et par ailleurs, connaissant le prix des FIFO de 16 Ko nous imaginions un coût élevé pour des FIFO de 128 Ko !

L’OM M0DTS, a développé une interface avec une mémoire FIFO de 1 Ko , dont la réalisation est visible sur son site mais nous ne savons pas comment son montage se comporte. Notre circuit est en conséquence plus compliqué, mais avec une capacité mémoire de 128 Ko, la régulation du débit entre l’entrée et la sortie est efficace.

Synoptique de la réalisation (Cliquer sur l'image pour agrandir) : Photo des cavaliers

Réalisation de l’interface USB.
La carte est réalisée avec des composants classiques et répandus le plus souvent disponibles dans nos stocks hormis quelques CMS comme le FT 245 (contrôleur USB qui n’est disponible que dans cette version et quelques résistances et condensateurs au format 1206 l'entourant.) En cas de mauvais fonctionnement la localisation du problème peut être difficile. Aussi il est fortement conseillé de monter tous les circuits intégrés sur support pour pouvoir les retirer au besoin.

Concernant l'Eeprom IC14 93LC46P, celle ci n'est pas nécessaire, elle a été prévue sur la carte lors des tests.

Schéma et fonctionnement de la carte.
Le micro processeur IC2 est véritablement le chef d’orchestre sur cette carte. Ce PIC génère les deux signaux H/PIC et M/K et en leur absence la carte ne démarre pas. Ces signaux apparaissent lorsque le signal ACK venant du modulateur QPSK est présent à l'entrée sur la broche RA0 de IC2. Quand M/K est à l’état 1 la mémoire IC4 est en lecture et la mémoire IC3 en écriture. Cet état correspond a l’envoi des données, présentes dans IC4, vers le modulateur QPSK et au chargement de la mémoire IC3 reliée au contrôleur USB - U1. Inversement, quand M/K est à 0 la fonction des mémoires et des circuits sont inversés. Le signal H/PIC incrémente le compteur d'adresse associé a la mémoire en lecture.

Oscillogrammes IC2 (Cliquer sur l'image pour agrandir) : Photo des cavaliers

Le PIC IC1 réalise le chargement des données en provenance du PC vers la mémoire libre (l’autre mémoire est alors en mode lecture). Le PIC IC1 surveille le signal MEM (MEM est le signal M/K inversé par la porte IC11C) et à chaque changement d'état de MEM, il récupère un nouveau bloc de données de 128 Ko. Le transfert de ce bloc dans la mémoire doit être effectué en un temps inférieur a 512 ms (avant la permutation des mémoires). En réalité ce transfert requiert environ 300 ms. La mémoire connectée au modulateur QPSK est quant à elle lue en 512 ms ce qui laisse un temps d'environ 200 ms pour absorber les irrégularités du flux en écriture.

Oscillogrammes IC1 (Cliquer sur l'image pour agrandir) : Photo des cavaliers

Les circuits IC5 & IC16 sont les compteurs d'adresses de la mémoire IC3. Les circuits IC6 & IC15 sont les compteurs d'adresses de la mémoire IC4. Les circuits IC7 à IC10 aiguillent des données en lecture et écriture des mémoires. Les circuits IC11, IC12 et IC13 aiguillent les signaux de contrôle qui permutent les mémoires.

Signaux traités par IC2 (ACK, H/PIC et M/K).
ACK est généré par le modulateur QPSK, sous la forme d’un signal carré qui change d'état toutes les 3.90625 us. Pendant ce laps de temps un octet est envoyé au modulateur (voir Oscillogramme). Toutes les secondes 256 Ko sont envoyés au modulateur QPSK ce qui correspond à un débit réel de 2048 Kbit/s et à débit symbole I & Q de 1024 KS/s.

H/PIC incrémente les compteurs d'adresses de la mémoire en phase de lecture. Ce signal a la forme d’une impulsion d'environ 130 ns, envoyée entre 0.6 et 1 us après le changement d'état du signal ACK.

M/K délivre le signal de permutation lecture/écriture des mémoires. Il s’agit d’un signal carré qui change d'état toutes les 512 ms. Pour générer ce signal IC2 compte le nombre de transition du signal ACK envoyé par le modulateur QPSK. Les mémoires ont 11 bits d’adresse ce qui fait une capacité de 131072 octets par mémoire. Pour un débit réel de 2048 Kbit/s les adresses changent toutes les 3.90625 us donc, pour envoyer les 131072 octets, il faut exactement 511967 us. En l’absence du signal ACK, provenant du modulateur, le signal M/K et H/PIC est figé et la carte ne démarre pas. C’est un point important à vérifier si vous avez des problèmes à la mise en route !

Signaux traités par IC1 (CLK, RAZ, ECR, MEM et bus de contrôle du FT245).
Interface connectée au PC avec un transfert en cours : Après le changement d'état de MEM, IC1 envoie une impulsion positive sur RAZ pour remettre à zéro le compteur d'adresse de la mémoire en mode remplissage. Ensuite IC1 positionne ECR à l’état 1 pour mettre la mémoire en écriture pour une durée d'environ 300 ms correspondant au temps approximatif de remplissage. Une fois la mémoire remplie, ECR est remis à 0. IC1 génère alors un nouveau « pulse » sur RAZ pour remettre le bus d’adresse de la mémoire à 0 et IC1 se met en attente du prochain changement d'état de MEM.

Le signal CLK incrémente les compteurs d'adresse de la mémoire en position écriture. Chaque octet est mémorisé au changement d'adresse par l'envoi d'une impulsion sur CLK. Il n’est pas utile de d’entrer dans le détail de la gestion du FT245. Le PIC IC1 sait si l'interface est connectée au PC en vérifiant la présence d'octets dans le buffer de la puce USB. Les signaux, CLK, RAZ et ECR sont figés à zéro quand aucun transfert n'a lieu (Interface déconnectée du PC).

Téléchargement schémas, typons et fichiers pics.

Aperçu schemas, implantation et typons.

Sch. 1/2 : Photo de Sch. 1/2 . Sch. 2/2 : Photo Sch. 2/2 . Implantation : Photo implantation

Cuivre côté composants : Photo côté cuivre . Cuivre côté soudures : Photo cuivre côté soudures

Ces deux montages sont disponibles en kit sur le site de F1GFF.

Pour créer le fichier de la mire et des séquence vidéo nous avons édités des tutoriaux visible sur le site.

Pour plus de détails sur la théorie de l'émission en numérique, je vous invite a consulter le site de F4DAY.

Nomenclature de la carte.

Condensateurs céramiques CMS 1206 :
C12, 14 1nF
C23, 24 27pF
C25 33nF

Condensateurs multicouches CMS 1206 :
C1..11, 13, 15, 16, 18, 20, 26..34 100nF

Condensateurs chimiques :
C17, C22 10uF Radial 2,54
C21 22uF Radial 5,08
C19 47uF Radial 5,08

Résistances CMS 1206 5% :
R1 1k5
R3, R4 27
R7, R15 4k7
R8, R17 10k
R9, 470
R10 2k2

Quartz HC18-V :
Q1 6Mhz

Oscillateur quartz DIL 08
QG1, 32Mhz
QG2, 32Mhz

Circuits intégrés :
IC1 PIC16F628A
IC2 PIC16F628A
IC3, IC4 TC551001
IC5, IC6 74HCT4040N
IC7..10 74HC541N
IC11 74HCT00N
IC12 74HCT157N
IC13 74HCT08N
IC14 93LC46P (Eeprom facultatif)
IC15, IC16 74HC4024N
U1 FT245BL CMS FTDI USB
U2 LM7805 TO220

Divers :
2 Supports CI Tulipe 32 broches
4 Supports CI Tulipe 20 broches
2 Supports CI Tulipe 18 broches
3 Supports CI Tulipe 16 broches
4 Supports CI Tulipe 14 broches
1 Support CI Tulipe 8 broches
1 Connecteur USB CI
1 Connecteur HE10 mâle 26 points
1 Circuit imprimé Double Face FR4 150 x 100 mm

Pour Tester le fonctionnement de la carte interface
-Télécharger le fichier : VIDEO_DATV.rar (6Mo décompacté)
Le décompacter à la racine du disque C:
On obtient les 3 dossiers suivants:
- C: / VIDEO_DATV
- C: / VIDEO_DATV / Driver_FT245
- C: / VIDEO_DATV / WinTvCap30fBin

Le dossier « C: / VIDEO_DATV » (Lecteur DATV) contient :

DATV_DVB-S_Pb.exe      (Lecteur de fichier MPEG exécutable Windows)
Video.mpg (Fichier vidéo de test de 1 minute)

Le dossier C: / VIDEO_DATV / Driver_FT245 (Pilote de l'interface) contient 2 dossiers :

Driver FT245 win 98-me (les pilotes du  FT245 pour Win. 98 et Win. Millenium)
Driver FT245 win XP (les pilotes du FT245 pour Win. XP)

Le dossier C: / VIDEO_DATV / WinTvCap30fBin (Enregistreur vidéo) contient :

Record.bat             (Batch de lancement d’un enregistrement)
Register.bat (Enregistrement du fichier ax dans la base de registre)
Unregister.bat (Supression du fichier ax de la base de registre)
WinTvCap30.exe (Enregistreur en ligne de commmande pour WinTV PVR)
WinTVCap30.ini (Fichier des paramétres d'encodage)
WinTvCap30.log (Fichier log généré par WinTvCap30.exe )
wintvcap.htm (Documentation de Wintvcap)
WinTVCapWriter.ax (Filtre direct show)
Sources (Dossier contenant les sources de WinTVCap)

Mise en route – Essais rapides de la carte
Après installation des pilotes du FT245, pour lancer la lecture du fichier Video.mpg, vous devrez lancer l’exécutable « DATV_DVB-S_Pb.exe » puis cliquer sur le bouton « START ». Le fichier Video.mpg (6Mo) contient une petite séquence vidéo de 1 minute qui a été générée avec la carte d’acquisition PVR 150. Les paramètres d’encodage ont été choisis pour un débit symbole de 1024 KS/s, et sont identiques au fonctionnement du flux en live.

L’interface et le modulateur QPSK doivent être mis sous tension ensemble pour éviter un plantage. Si le modulateur QPSK est alimenté en dernier le PIC reçoit du courant via le bus de donnée et ne démarre pas correctement.

Installation des pilotes de l’interface sur un PC windows
Brancher la carte interface, attendre que XP la reconnaisse et ouvre automatiquement l'assistant « nouveau périphérique ». Il vous propose de rechercher les drivers dans un répertoire. Vous sélectionnerez « C: / datvlive / Driver_FT245 ». Windows XP procède alors à l’installation et celle-ci terminée, votre interface est opérationnelle.

Dès à présent, vous pouvez démarrer la lecture du fichier MPEG de test ou un autre crée par vos soins. Les images seront reçues sur un écran vidéo branché au démodulateur numérique satellite.

Lorsque vous aller créer votre propre fichier MPEG avec la PVR 150 et le transmettre vous devez savoir que notre programme « DATV_DVB-S_Pb.exe » ne lit que le fichier nommé « Video.mpg » placé dans le même répertoire que l'exécutable.

Avec l'arborescence présente dans l'archive, le batch d'enregistrement place automatiquement « Video.mpg » au bon endroit.

Lecture du fichier vidéo de test
Avant de lancer le programme « DATV_DVB-S_Pb.exe » vous devrez vérifier que l'interface est connectée à la fois à l'ordinateur et au modulateur QPSK. Souvenez vous qu’en l'absence du signal ACK issu du modulateur le programme de transfert ne démarre pas.

Ce point acquis, vous devez cliquer sur « START » sans changer aucun des paramètres affichés afin de voir les images sur l’écran de votre démodulateur.

Nous avons fait nos essais avec une machine cadencée à 2 Giga Hertz.

Fabrication du fichier vidéo MPEG nommé « video.mpg » avec la « WinTV PVR-150 »
« WinTVcap » est un petit logiciel récupéré sur le net dont l’utilisation se fait en ligne de commande. Ce logiciel conjugué a l'encodeur « hard » présent sur la PVR-150, utilise avantageusement très peu de ressource sur le PC.

Avant de lancer un enregistrement, Vous installerez les pilotes de la carte d'encodage et pour ce faire vous devez vous reporter au paragraphe installation dans le fichier wintvcap.htm.

Le démarrage d'un enregistrement se fait en double cliquant sur le batch « Record.bat » qui fabrique ou écrase le fichier « video.mpg » se trouvant dans le répertoire « C: / VIDEO_DATV »

Dans le fichier batch présent dans l'archive, la durée d'enregistrement est de 1 minute. Vous pouvez modifier ce paramètre pour augmenter la durée, il apparaît à la fin de la ligne de commande.

Le fichier WinTVCap30.ini contient les principaux paramètres d'encodage notamment le standard PAL / SECAM, le modifier dans le paragraphe [SETUP] a la ligne CountryCode ( PAL=31 SECAM=33 ), Le fichier « .ini » présent dans l'archive est par défaut paramétré en mode PAL, les autres paramètres sont parfaitement adaptés à notre logiciel de transmission, aussi et vous ne devez les modifier qu'en connaissance de cause.

Si par hasard, l'enregistreur ne fonctionne pas, en consultant le fichier « WinTvCap30.log » vous saurez où le programme est bloqué et vous pourrez agir en conséquence.

Obtenir les composants pour construire la carte interface
Le circuit imprimé à trous métallisés et les 2 processeurs PIC programmés seront disponibles auprès d’Amand CAUQUELIN joignable à l’adresse : acauquelin@laposte.net. Pour obtenir un prix de fabrication intéressant. il faut commander au moins 30 pièces. Aussi avant toute commande nous dresserons une liste des Oms intéressés. Ci-dessous le prix des composants et la liste des inscrits.

Télécharger le fichier Prix des Composants (Fichier PDF)

Télécharger le fichier Liste des inscrits (Fichier PDF)Fichier mis à jour le : 13 12 2009.

Conclusion
L’interface permet aujourd’hui la transmission d’images numériques en différé sous Windows. Vous pouvez déjà créer vos fichiers MPEG depuis un ordinateur et les transmettre. Pour un envoi en temps réel, il faut attendre la description de la chaine logicielle qui fonctionne exclusivement sous LINUX. Le développement du projet « DATV en live » est l’œuvre solitaire de F1FAU durant 8 mois. Prés de 1200 heures de travail acharné et ininterrompu ont été nécessaire. Pour donner un aperçut, le logiciel sous LINUX qui code MPEG to TS fait prés de 5000 lignes. De plus le programme qui code TS to I/Q, initialement développé en « Visual basic » à été entièrement réécrit en assembleur ! L’exploitation du système « live » sous Windows était initialement recherchée, mais Christian n’a pas trouvé la solution pour une lecture écriture simultanée dans un fichier des données MPEG. Au contraire il n’y a aucune difficulté sous LINUX qui est bien documenté. Cependant, pour ne pas avoir un fichier qui grossit sur le disque dur au final le flux MPEG est véhiculé via un « tube » correspondant à un mode particulier de fonctionnement de la RAM du PC.

Rolf F9ZG est équipé depuis quelques mois et a testé le système avec succès. Dès que nous auront publié la seconde partie, courant décembre, vous pourrez à votre tour installer LINUX Ubuntu version 8.04 (Hardy Heron) et la carte PVR 150 sur l’ordinateur de votre choix et avec le logiciel dédié, vous entrerez de plein pied dans l’univers du numérique en temps réel.

A suivre…

Code et Design par F1FAU. 2012.
N'hésitez pas à me contacter si vous avez des questions !