lundi 10 mars 2014

project PICvision

Il y a quelques semaines je suis tombé sur le projet Hackvision. Il s'agit d'une console de jeux rétro très économique et que chacun peut fabriquer chez lui sans avoir à utiliser de technologie de montage en surface. C'est donc à la porté de tous. Elle peut aussi être achetée toute assemblée chez Robotshop. Cette console est conçu pour se brancher sur un téléviseur avec une entrée composite NTSC ou PAL. Il s'agit d'un signal monochrome.

Le AtMega328P-PU utilisé ne possède que 2Ko de RAM donc la résolution vidéo est limitée à 136x96 pixels. En voyant ça j'ai décidé de faire une console semblable mais en utilisant un MCU PIC. Mais il n'y a pas de raison de se limiter à un MCU 8 bits. Microchip offre des MCU 16 bits et 32 bits en format PDIP-28. J'ai hésité entre utiliser un PIC24F et un PIC32MX. Puisqu'en fin d'année 2013 j'ai écris quelques articles de présentation des PIC24 j'ai finalement opté pour un PIC24FJ64GA002-i/p.

Il s'agit d'un projet open source sous licence GNU GPLv3 pour le code source et Creative Commons CC BY-SA pour les autres documents . Tous les fichiers sont disponibles sur https://github.com/Picatout/PICvision

Comparaison entre Hackvision et PICvision

Comparaison des microcontrôleurs:

paramètreAtMeag328PPIC24FJ64GA002
disponible en format PDIP-28ouioui
mémoire flash32Ko64Ko
mémoire RAM2Ko8Ko
temps de cycle cpu minimum50nsec62,5nsec
minuteries2 x 8 bits, 1 x 16 bits3 x 16 bits
périphériques OC (PWM)65
périphériques SPI12
périphériques I2C12
prix unitaire (digikey.ca)3,87CAN$4,40CAN$

comparaison des consoles:

paramètreHackvisionPICvision
assemblagefacile sur carte de prototypagefacile sur carte de prototypage
résolution136x96216x216
sortie vidéocomposite NTSC/PALcomposite NTSC/PAL
sortie audiomonophonique, tonalités, et DAC PWMmonophonique, tonalités, bruit blanc, DAC PWM
contrôleursboutons sur carte
optionnel: 2 gamepads NES/SNES
optionnel: nunchuck
connecteurs pour 2 gamepads SNES
optionnel Nunchuck sur breakout I2C.
interfaces libre en breakout1 x I2C peut-être utilisé pour un Nunchuck1 x I2C peut-être utilisé pour un Nunchuck
1 x SPI peut-être utilisé pour carte SD

schématique

Le schéma électronique est simple et le montage sur carte à bandes peut-être réalisé en quelques heures. Dessiné sur KiCAD les fichiers sont disponibles sur le github. Voici un aperçu du schéma et du plan de montage sur carte à bandes VECTOR electronics modèle 8022. Il s'agit d'une carte de 3" x 3,5" (7,6cm x 8,9cm).

Le MCU fonctionne sous une tension de 3,3 volt et c'est le régulateur LDO µA78M33 qui abaisse le voltage d'entrée à ce niveau.

Le microcontrôleur fonctionne à sa vitesse maximale de 32Mhz. Le crystal est à 8Mhz mais cette fréquence est multipliée par 4 par le PLL interne du MCU. Les PIC24 ont un cycle système de la moitié de la fréquence de l'oscillateur donc ici on a 16Mhz ou 62,5nsec par cycle machine.

Le signal vidéo composite est constitué d'un signal de synchronisation dont la sortie est sur la broche 16 et d'un signal contenant la composante vidéo proprement dite sur la broche 14. Un cavalier sur la broche 23, connecteur P4, permet de sélectionner entre les formats NTSC et PAL. La présence du cavalier est détectée au démarrage il doit donc être installé avant la mise sous tension. Notez qu'en ce qui concerne le signal vidéo monochrome composite PAL et SECAM sont identiques. La sortie vidéo est sur connecteur RCA phono. En Europe il faudrait probablement utiliser un connecteur SCART.

En ce qui concerne les contrôleurs SNES les broches sont communes aux 2 contrôleurs sauf la broche data. Pour le contrôleur 1 l'entrée data est sur la broche 2 du MCU et pour le contrôleur 2 sur la broche 3 du MCU. Les connecteurs P5 et P6 font le pont entre les connecteurs SNES et la carte.

Il y a 2 broches de sortie pour l'audio. La broche 21 appelée NOISE sur le schéma est une sortie bruit blanc produite avec le générateur pseudo-hasard. La broche 17 permet soit de sortir des ondes carrées, soit d'utiliser un périphérique output compare comme convertisseur numérique/analogique par PWM. Les résistances R6 et R7 et les condensateurs C7 et C11 forme un filtre passe-bas qui coupe les fréquences au dessus de 7Khz. La sortie audio est faite sur un connecteur RCA phono.

Les résistances R3 et R5, le condensateur C4 et la bouton momentané SW2 forme le circuit de réinitialisation du microcontrôleur.

P1 est le connecteur pour brancher le programmeur du Pickit2 utilisé pour la programmation du MCU.

P2 est un connecteur breakout pour le périphérique SPI2 du MCU. Cette interface n'est pas utilisée dans cette version de PICvision. Elle pourrait servir pour interfacer une carte SD.

P3 est un connecteur breakout pour le périphérique I2C2 du MCU. Cette interface n'est pas utilisée dans cette version de PICvision mais pourrait servir pour brancher un contrôleur Nintendo Nunchuck.

Plan de montage

J'ai photographié la carte Vector electronics modèle 8022 et j'ai éditer la photo dans paint pour faire mon plan de montage. Le résultat est le suivant.


Légende:
  • Trait noir indique une coupure dans la bande.
  • trait gris pâle indique la position d'un composant ou d'un pont entre 2 bandes.
  • trait rouge indique les ponts joignant les segments de bande vdd (3,3volts).

Liste matériel

test TVout

J'ai créé un programme test pour l'unité TVout.c Il s'agit d'une anneau qui rebondi sur les bords de l'écran. Pour le développement j'utilise un petit moniteur LCD de 5 pouces qui accepte les signaux composite NTSC et PAL.

Dans le prochain article je vais détailler le montage sur la carte de prototypage.


Mise à jour 2015-09-06

Il existe maintenant une version 2 de CHIPcon. J'ai remplacé le clavier hexadécimal par un joystick. Mais le plus gros du travail a été fait au niveau logiciel aussi bien sur le firmware de la console que sur les outils de développement.

  • Plusieurs bogues ont étés corrigés.
  • La documentation a été refaite.
  • La machine virtuelle a été augmentée par l'ajout de plusieurs code machine.
  • La liste des jeux en firmware a été modifié entre autre j'ai créé un jeu appellé octopacman.

Aucun commentaire:

Enregistrer un commentaire