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é!
Réponses:
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:
É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.
la source
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
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
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!
la source
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é:
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.
la source
Le tutoriel suivant, utilisant un miniSpartan6, est très détaillé et mérite le détour: http://zerocharactersleft.blogspot.com/2015/04/diy-fpga-based-hdmi-ambient-lighting.html
la source