Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 08 Déc 2025, 05:27

Index du forum » Hardware

Le fuseau horaire est UTC+1 heure


Gate Array Timmings !

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 1 sur 2
 [ 29 message(s) ]  Aller vers la page 1, 2  Suivant
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
Megachur
 Sujet du message : Gate Array Timmings !
Message Publié : 31 Mars 2014, 20:15 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Je suis en train de me faire un simulateur CRTC / Gate Array / Z80 (je pensais pas devoir faire toutes les instructions au départ, mais si ;-)) pour tester certains effets.

je simule donc l'appel au GA à 16 Mhz (CK = clock) en gros comme cela :

GA_CK Z80_CK CRTC_CK RAM_VIDEO AY_CK (todo)
0 / 0Z80 / 0CRTC / 0RAM (wait CPU=true) at MA+0
1
2
3
4 / 1Z80 (wait if read/write RAM)
5
6
7
8 / 2Z80 / / 1RAM (wait CPU=true) at MA+1
9
10
11
12 / 3Z80 (wait if read/write RAM)
13
14
15
(16Mhz) (4Mhz) (1Mhz) (1Mhz)

+ l'extra wait rajouter par AMSTRAD avec le GA si on fait un I/O Port read or write en CPU_CK=1 !!!

D'après les essais que j'ai pu faire, c'est le timming le mieux : celui qui donne un timming à 3,3Mhz pour le Z80 (64 nops par ligne) et permet l'affichage avec CRTC !

pour l'AY je ne sais pas du tout où le positionner en terme d'appel !

je ne suis pas peu fier d'avoir pu simuler ainsi le pb d'affichage évoquer par Grim (VRAM Rasterization timings du 40010 sur http://www.grimware.org/doku.php/documentations/devices/gatearray !!! Il m'a suffit de décaler d'un cycle d'horloge l'appel au CRTC !

Mon gros problème c'est que je n'ai aucun moyen de vérifier si ce timming est exacte sur un 'vrai' cpc car je ne n'ai pas d'oscilloscope !!!

Est-ce que quelqu'un peu m'aider à valider ce timming d'appel des différents composants par le Gate array ? Il est possible que les appels soit différents selon les GA (ou l'ASIC) ?!

Je vous remercie par avance de votre aide et de votre passion cpcienne ;-) !!! :biere: :biere: :biere: :biere: :biere: :biere:


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 31 Mars 2014, 20:38 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Euh, je viens de voir cela sur la page de Grim :
Code :
    If the counter>=32 (bit5=1), then no interrupt request is issued and counter is reset to 0.
    If the counter<32 (bit5=0), then an interrupt request is issued and counter is reset to 0.


il me semble que c'est l'inverse non ? cf http://cpctech.cpc-live.com/docs/gaint.html ???


Haut
 Profil  
 
Lone
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 31 Mars 2014, 21:52 
Hors-ligne
Rulezzzz
Rulezzzz

Inscription : 25 Fév 2013, 13:56
Message(s) : 648
Localisation : Ardèche
Oui je confirme, c'est une erreur.


Haut
 Profil  
 
fano
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 01 Avr 2014, 13:04 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 15 Août 2008, 13:00
Message(s) : 968
Localisation : Troyes, France
Megachur a écrit :
je simule donc l'appel au GA à 16 Mhz (CK = clock) en gros comme cela :

GA_CK Z80_CK CRTC_CK RAM_VIDEO AY_CK (todo)
0 / 0Z80 / 0CRTC / 0RAM (wait CPU=true) at MA+0
1
2
3
4 / 1Z80 (wait if read/write RAM)
5
6
7
8 / 2Z80 / / 1RAM (wait CPU=true) at MA+1
9
10
11
12 / 3Z80 (wait if read/write RAM)
13
14
15
(16Mhz) (4Mhz) (1Mhz) (1Mhz)
Salut ! il me semble que ce n'est pas tout à fait exact, je t'invite à les lire quelques messages sur cette thread (http://www.cpcwiki.eu/forum/programming/crtc-help/msg69368/#msg69368) qui sont assez interessants à ce sujet.

_________________
"NOP" tel est le programme parfait ! court, rapide, lisible et sans bugs (connus)


Haut
 Profil  
 
Plissken
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 01 Avr 2014, 14:04 
Hors-ligne
Rulezzzz
Rulezzzz
Avatar de l’utilisateur

Inscription : 13 Nov 2007, 16:09
Message(s) : 911
Localisation : Gallifrey
Tu pourrais expliquer ce que tu entend par simulateur ?

Une émulation du hardware ?

_________________
Tout le monde il es beau,tout le monde il est gentil .


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 01 Avr 2014, 19:47 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Plissken a écrit :
Tu pourrais expliquer ce que tu entend par simulateur ?

Une émulation du hardware ?


oui ! :kissed:


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 01 Avr 2014, 19:58 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
fano a écrit :
Salut ! il me semble que ce n'est pas tout à fait exact, je t'invite à les lire quelques messages sur cette thread (http://www.cpcwiki.eu/forum/programming/crtc-help/msg69368/#msg69368) qui sont assez interessants à ce sujet.


j'ai regardé le sujet... mais je ne suis pas sûr qu'il soit aussi avancé que moi... ;-) je vais jeter un oeil (aie!!!) sur le code de jemu z80 !

il parle pas du timming CRTC, c'est dommage !

Merci d'avance de m'aider sur ces timmings du GA (le gardien du clock-clock) -> CRTC / READ MA / Z80 / AY ?


Dernière édition par Megachur le 02 Avr 2014, 17:47, édité 1 fois.

Haut
 Profil  
 
Overflow
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 01 Avr 2014, 20:54 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 05 Oct 2010, 17:55
Message(s) : 84
Megachur a écrit :
Euh, je viens de voir cela sur la page de Grim :
Code :
    If the counter>=32 (bit5=1), then no interrupt request is issued and counter is reset to 0.
    If the counter<32 (bit5=0), then an interrupt request is issued and counter is reset to 0.


il me semble que c'est l'inverse non ? cf http://cpctech.cpc-live.com/docs/gaint.html ???


Je confirme aussi, c'est l'inverse.

Et somme tout c'est assez embêtant, je m'explique:
pour un effet de démo commençant en haut de l'écran,
et requérant une synchro au NOP-cycle près,
généralement on attend l'interruption à la VBL
par HALT, avec un code similaire à EI:RET en RST#38

Ce même effet maintenant, disons qu'on le veuille plein-écran;
on est généralement en DI sur les quelques 272 lignes de l'écran visible;
et c'est là que le bât blesse: "en bas" de l'écran, y'a pas 32 lignes;
donc un EI éventuel (ou le out équivalent à resetter le compteur) après l'écran visible
ne permettra pas au dit compteur d'attendre 32 ou plus;
donc (on y arrive), pas d'interruption de générée à la VBL
et au final, pas possible avec HALT de se synchroniser à la VBL.

C'est un des trucs assez ch... qui a nécessité dans YAP! par exemple
d'envoyer ce fameux OUT pour resetter le compteur "vers le bas" de l'écran visible.
Y'a sans doute d'autre moyen de faire, comme la DTC:
pas de synchro, tout tourne pile poil en 1 VBL. Respect!

---

Sinon, à propos des timings: joker! :)

_________________
Demomaker à la retraite.
CPC en 2012, MSX en 2015, CPC Pâques 2017
et puis un petit truc sur GX4000 en novembre 2017 à l'Alchimie mais chut! c'est un secret.


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 02 Avr 2014, 17:46 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
ça me fait penser également au timming de nos chers CTM 64x ! est-ce qu'ils sont au standard PAL exactement ?

et sinon quel est leur timming de hsync et vsync ?

je m'explique, en gros pour l'instant je fais cela :

soit je prends la synchro venant du CRTC (via le GA), je compte la synchro (pas d'affichage), et je réaffiche.
si je reste plus de deux lignes en synchro continue (après deux hsync), je suis en VSYNC (c'est parti pour n lignes de synchro verticale). Y'a qu'un signal venant du GA vers le moniteur !
pour la synchro imposé par le moniteur :
si je dépasse un certains x par ligne, je déclenche la synchro du moniteur. pour l'instant, j'ai mis les valeurs standard du PAL : HSYNC BEGIN (PAL Standard : 4.7 +- 0.1 us) et // HSYNC END (PAL Standard : 12.05 +- 0.25 us) soit en timming GA : 32 et 192 environ !
si je dépasse un certains n lignes, je déclenche la synchro du moniteur.//312.5 - 26 lines vsync standard pour le PAL. (j'ai pas encore codé l'interlace, juste un speudo interlignes)
avec ces timmings j'ai certains programmes qui utilise le CRTC (même en basic) où je dois régler le VHOLD pour que l'écran soit stable...
du coup, je me dis que les moniteurs CTM sont peut-être un poil plus tolérant sur la durée de VSYNC ?

autre question, j'ai compris qu'il ne pouvait y avoir qu'une VSYNC par frame !

:magic:

Merci à tous de votre aide, et en particulier notre maître du CRTC à la retraite : Overflow !!! ;-) pour l'instant aucune de tes démos ne tournent sur mon machin... j'ai encore à faire progresser mon simulateur !


Haut
 Profil  
 
Lone
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 04 Avr 2014, 10:15 
Hors-ligne
Rulezzzz
Rulezzzz

Inscription : 25 Fév 2013, 13:56
Message(s) : 648
Localisation : Ardèche
Hello,

Voila des problématiques qui me parlent...

Actuellement, je ne suis pas sur de comment sont les timings du moniteur : J'ai développé un algo de type "usine a gaz", qui permet de faire marcher la plupart des trucs (mais que je considère comme à revoir).

Par contre, concernant le VSync, le signal peut être généré plusieurs fois par frame. Si un seul doit être correctement positionné (timé) pour avoir un écran stable, on peut en avoir un autre en plein milieu. La partie 6 de "The demo" en présente un, notamment, mais le fond de l'écran étant noir, elle ne se voit pas. Par contre, quand on reload plusieurs fois le SNA en pj, on se rend compte que, de temps en temps, les deux parties d'écran sont inversées : Le moniteur s'est calé sur l'une ou l'autre de ces zones de synchro.

Concernant les timings de Hsync : C'est un peu complexe et apparemment assez flexible : Quelques demos proposent des frequences horizontales de 65 us, et d'autres font varier la position du signal HSync (la partie 5 de the demo, je crois - Dans cette megademo, on a décidement tout pour tester en profondeur un emulateur !). Il semble dans ces cas que le moniteur se recale correctement également.


Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.


Haut
 Profil  
 
TotO
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 04 Avr 2014, 12:33 
Hors-ligne
VIP
VIP

Inscription : 13 Jan 2010, 14:25
Message(s) : 2282
Utiliser un émulateur pour tester des comportements de VSync, c'est un peut une blague en fait ? :sweatingbullets:

Ce signal doit être généré par le CRTC toutes les 20ms en 50Hz. (19968μs exactement, d'après Grimware)

Lorsque le canon à électron a fini de balayer l'écran, il remonte sans rien afficher (Vblank) puis est "retenu" (Vhold) le temps de recevoir de la part du CRTC le signal de synchronisation. (VSync)
Si Vsync n'est pas envoyé durant cet instant, alors c'est le moniteur qui déclenche automatiquement en fonction de Vhold... Ce qui va provoquer un effet de déchirement de l'image (tearing), car l'affichage n'est plus synchronisé avec le CPC.

Le GA ne génère pas la VSync, mais la reçoit de la part du CRTC et se synchronise dessus. (génération de 6 interruptions chaque frame, soit toutes les 52 rasterlines)

Si Vsync n'est pas déclenchée au bon moment, ça peut provoquer des affichages hasardeux.
Le mieux étant de potasser les datasheets des différents CRTC.

_________________
Cent Pour Cent


Haut
 Profil  
 
markerror
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 05 Avr 2014, 07:28 
Hors-ligne
VIP
VIP

Inscription : 04 Sep 2007, 19:43
Message(s) : 739
Bonjour,

Concernant la partie de Naminu dans The Demo, elle se comporte aussi comme cela sur un vrai CPC. De temps en temps, les deux écrans sont inversés.


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 05 Avr 2014, 17:25 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Pour ceux que ça intéresse, j'ai trouvé ce doc très bien fait (quoique un poil technique quand même ;-)) : http://www.rennes.supelec.fr/ren/perso/ ... tv_opt.pdf

@TotO : effectivement tu as tout juste... mais ce que je disais c'est que c'est le GA qui envoi le signal de SYNC (=crtc.HSYNC|CRTC.VSYNC) au moniteur par un seul fil !
donc il faut compter...
soit c'est une hsync (au bout d'un certains compteurs) puis une fin de hsync. à la fin de la hsync, il faut rajouter le h-hold !
soit si le signal reste actif plus de deux lignes (1024*2 en compteur GA ou 64us*2) alors on considère que c'est une vsync. à la fin de la vsync, il faut rajouter le v-hold !

bon, c'est expliqué dans le pdf. ;-)

-> J'espère qu'un passionné de cpc qui a un oscillo et un cpc sous la main pourra me confirmer les timmings GA/CRTC/RAM/CPU ? :biere:


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 06 Avr 2014, 07:26 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Lone a écrit :
Hello,

Voila des problématiques qui me parlent...

Actuellement, je ne suis pas sur de comment sont les timings du moniteur : J'ai développé un algo de type "usine a gaz", qui permet de faire marcher la plupart des trucs (mais que je considère comme à revoir).

Par contre, concernant le VSync, le signal peut être généré plusieurs fois par frame. Si un seul doit être correctement positionné (timé) pour avoir un écran stable, on peut en avoir un autre en plein milieu. La partie 6 de "The demo" en présente un, notamment, mais le fond de l'écran étant noir, elle ne se voit pas. Par contre, quand on reload plusieurs fois le SNA en pj, on se rend compte que, de temps en temps, les deux parties d'écran sont inversées : Le moniteur s'est calé sur l'une ou l'autre de ces zones de synchro.

Concernant les timings de Hsync : C'est un peu complexe et apparemment assez flexible : Quelques demos proposent des frequences horizontales de 65 us, et d'autres font varier la position du signal HSync (la partie 5 de the demo, je crois - Dans cette megademo, on a décidement tout pour tester en profondeur un emulateur !). Il semble dans ces cas que le moniteur se recale correctement également.


je comprends que lorsque le GA envoie le signal de SYNC correspondant à la VSYNC (issu du CRTC), le moniteur se mets en VSYNC... cependant, il ne fait le retour à zéro (x=0 et =0) que lorsqu'il a dépassé son compteur de ligne max (ex pour 312,5 lignes, 288 lignes+24,5 lignes pour le retour) ?


Haut
 Profil  
 
Lone
 Sujet du message : Re: Gate Array Timmings !
Message Publié : 06 Avr 2014, 20:01 
Hors-ligne
Rulezzzz
Rulezzzz

Inscription : 25 Fév 2013, 13:56
Message(s) : 648
Localisation : Ardèche
Excellente question, qui nécessiterait sans doute un oscillo pour avoir la réponse :

Soit c'est effectivement ce qui se passe, soit c'est le GA qui, pendant la durée ou il génère le vsync, va "couper" l'envoi des données pendant ce laps de temps (26 lignes si je ne m'abuse ?)

Côté moniteur, n'oublions pas non plus que nous ne sommes pas dans le domaine de l’électronique numérique, il doit s'agir plus de niveau que de compteurs, concernant la vsync, entre autre.

La documentation concernant le CRTC (et le VDU sur ce point précis) de Pierre Guerrier est d'ailleurs très instructive .


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 2
 [ 29 message(s) ]  Aller vers la page 1, 2  Suivant

Index du forum » Hardware

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 46 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.