Comment utiliser le port HDMI sur FPGA (de base)

8

Deux questions.

J'ai un FPGA Xilinx Spartan 6 qui n'a que des entrées et des sorties HDMI. Existe-t-il une sorte de guide ou de code pré-écrit que je peux utiliser pour commencer à envoyer des images à l'écran? Je ne sais pas par où commencer et je n'ai pas pu trouver de ressources.

Deuxièmement, la raison pour laquelle je fais cela est parce que je veux utiliser et modifier le code Atari 2600 un gars implémenté sur un Spartan 3E avec VGA. Est-il même possible d'adapter facilement l'aspect vidéo de mon projet?

Toute aide, ressource ou conseil serait grandement apprécié!

ballaw
la source
S'agit-il d'un conseil de développement commercial? si oui, quel modèle et vérifiez les modèles de référence qui l'accompagnent.
davidd
Voici le tableau: digilentinc.com/Products/… Il n'est venu avec rien.
ballaw
@ballaw - Les produits Digilent bénéficient d'un très bon support. Faites défiler vers le bas de la page à laquelle vous venez de créer un lien et vous verrez un tas de documentation et des exemples de projets en ligne: i.stack.imgur.com/F0TgY.png . En ligne compte désormais comme «vient avec». Vous pouvez également aller chercher les fiches techniques pour d'autres parties de la carte comme le XC6SLX45 FPGA et le TMDS141RHAR HDMI buffer, elles sont ailleurs sur Internet.
Kevin Vermeer

Réponses:

12

La carte Atlys utilise des entrées TDMS, vous aurez donc besoin d'un décodeur HDMI qui prend ces entrées et produit VSYNC, HSYNC, DE et DATA. Xilinx détaille le processus d'encodage et de décodage DVI dans quelques notes d'application. Ceux-ci sont livrés avec un exemple de code, une connexion xilinx est requise:

L'exemple de code est dans Verilog, bien que la conversion du niveau supérieur en VHDL si vous préférez soit un exercice relativement trivial.

Voici un chiffre tiré de la première note d'application montrant la prémisse de base du récepteur:

de la note de l'application Xilinx

Étant donné que le Spartan 6 dispose d'un matériel SERDES intégré, ceux-ci peuvent être utilisés dans le cadre du processus de désérialisation. Il existe un processus de synchronisation qui récupère l'horloge et garantit que les canaux sont tous synchronisés. Enfin, le décodage 8b / 10b est appliqué pour produire les données du canal RVB.

Une fois les signaux vidéo récupérés, vous pouvez ensuite transférer ces signaux vers le traitement que vous souhaitez effectuer, ou vers un encodeur qui les enverra à nouveau des ports HDMI.

Si vous disposez de l'écran TFTMOD, le transfert des données vers l'écran est aussi simple que de connecter les signaux DE et DATA aux broches FPGA appropriées. Le manuel de référence de la carte TFT est utile pour les informations de synchronisation sur l'affichage, bien que j'ai trouvé que la synchronisation de sortie du désérialiseur était correcte.

Vous pouvez utiliser le fichier UCF de ce projet , pour les contraintes pour HDMI, et ce projet pour les contraintes MODTFT si vous utilisez cette carte.

La seule chose à noter est que l'exemple Xilinx ne gère pas les informations EDID. Si vous utilisez simplement la carte pour transférer des données, vous pouvez acheminer les lignes EDID et l'appeler un jour. D'autres scénarios peuvent nécessiter la gestion des données EDID sur le FPGA. Fondamentalement, c'est juste I2C. L' interface opencores I2C est assez solide, ou vous pouvez coder la vôtre. Pour autant que je sache, le tableau wikipedia sur le format de données pour EDID 1.3 est précis.

Stanri
la source
4

Juste pour compléter ce qu'une réponse précédente a expliqué:

Un émetteur DVI / HDMI peut être un bon point de départ car vous pouvez obtenir directement de la vidéo.

La transmission vidéo HDMI / DVI sur la liaison TMDS est logiquement divisée en étapes, comme illustré dans la figure 1: Conception de l'émetteur TMDS pour la mise en œuvre d'une interface vidéo TMDS dans le FPGA Spartan-6

entrez la description de l'image ici

  1. Encodeurs TMDS: convertissez les données de pixels d'une source vidéo, les données HDMI auxiliaires / audio et HSYNC et VSYNC en trois flux de symboles de 10 bits

  2. Les sérialiseurs (10: 5 Gear Box et OSERDES2 5: 1 Convert) effectuent en deux étapes une conversion parallèle-série de 10 bits sur les trois flux, puis les envoient sur trois canaux de paires de sorties différentielles (tampons TMDS).

Les deux étages nécessitent un circuit d'horloge pour générer (PLL) et distribuer (BUFPLL, BUFG) les signaux d'horloge (avec les fréquences de l'horloge de référence de pixel et ses multiples) correctement.

Bien sûr, le cœur de l'émetteur est le bloc Encoders. Vous pouvez commencer avec l'encodeur DVI en raison de sa simplicité par rapport à l'encodeur HDMI. HDMI et DVI ont de nombreux aspects en commun, notamment la liaison physique TMDS, l'algorithme d'encodage vidéo actif et les définitions des jetons de contrôle.

La note d'application fournit également 2 modèles. Un simple mais bon pour commencer est la "génération de barres de couleur SMPTE HD avec synchronisation vidéo programmable". Il envoie une vidéo de générateur de barre de couleur à travers de nombreux modes d'écran qui peuvent être sélectionnés par les interrupteurs à glissière. Cette conception est utile car nous pouvons changer le générateur de barre de couleur avec une autre source vidéo et toujours pouvoir obtenir de la vidéo en gardant le bloc émetteur d'origine.

J'espère que ça aide!

L30nardo SV.
la source
2
Les réponses de lien uniquement sont déconseillées car si Xilinx réorganise son site à l'avenir et que le lien devient mort, il ne sera d'aucune utilité pour les futurs visiteurs. Peut-être pourriez-vous ajouter quelques détails supplémentaires sur l'approche générale décrite dans la note d'application?
PeterJ
Merci, vous avez tout à fait raison. J'ai ajouté plus de détails à ce sujet.
L30nardo SV.
3

Voici le texte d'un modèle de référence que vous pouvez télécharger depuis la page du forum à laquelle vous avez lié:

DSD-0000326 13/12/11 Ce fichier zip contient un projet de démonstration EDK qui montre l'utilisation de HDMI sur la carte Genesys. Il accepte une entrée HDMI, met en mémoire tampon les trames d'entrée dans la mémoire, puis sort le tampon vers un autre port HDMI. Ceci est implémenté à l'aide du bus PLB. Télécharger

Vous pouvez également consulter les conceptions de référence fournies avec le kit de traitement vidéo industriel Xilinx spartan 6. http://www.em.avnet.com/en-us/design/drc/Pages/Xilinx-Spartan-6-FPGA-Industrial-Video-Processing-Kit.aspx (cliquez sur le lien des fichiers de support, connexion avnet requise ).

Il existe probablement plus de modèles de référence pour différents fpgas.

À moins que vous n'implémentiez l'audio ou le cryptage, hdmi est fondamentalement le même que dvi.

davidd
la source
Merci. Je l'ai vu mais je ne sais pas vraiment comment l'utiliser car il utilise EDK que je n'ai pas parce qu'il n'est pas gratuit. Serait-ce une simple question d'utiliser les fichiers vhd qu'il contient? J'en doute car il y a beaucoup d'autres choses dans le téléchargement, la plupart dont je n'ai aucune idée de ce qu'elles sont.
ballaw