programmation du CPLD avec un ByteBlaster ?

General discussion forum - for all that doesn't fit in any other category.
Post Reply
ricospirit
Posts: 17
Joined: Mon Dec 03, 2007 10:01 am

programmation du CPLD avec un ByteBlaster ?

Post by ricospirit »

bonjour,

pour pouvoir programmer mon HxC, j'ai commencé par réaliser un ByteBlaster afin de pouvoir programmer le CPLD. J'ai donc suivi le schéma suivant : http://www.positron-libre.com/electroni ... e-jtag.htm
qui présente l'intérêt de fournir un bô typon tout propre ;)

Je dispose maintenant d'un maginfique programmteur ByteBlaster, avec un connecteur HE10 sur lequel je peux récupérer les signaux TCK, TDO, TMS, TDI.

Bien. Et maintenant, j'en fais quoi de ces signaux ??? sur quels pin du CPLD dois-je brancher quel signal du ByteBlaster ?
Pour la programmtation du CPLD, faut-il alimenter l'interface HxC en connectant une alimentation sur le connecteur USB, ou ne faut-il rien brancher d'autre que la sonde ByteBlaster ?

Une dernière question, qui n'a rien à voir : Le projet est en GPL, aussi les sources du CPLD sont fournits, tout comme els schémas. Par contre, on n'a ni fichier Gerber, et surtout, je n'ai pas trouvé les sources du software coté PC ? serait-il possible de les avoir ? J'aimerais assez en faire un portage sous Linux ;)

ricospirit
Posts: 17
Joined: Mon Dec 03, 2007 10:01 am

Re: programmation du CPLD avec un ByteBlaster ?

Post by ricospirit »

Je me réponds à moi-même...
J'ai achevé ce soir le montage de la carte HxC, voici quelques photos :

Image
Image
Image

Et j'en suis donc à la programmation du CPLD, et là ca se gâte :

- j'ai installé quartus 2 web edition, je me suis enregistré sur leur site, et j'ai validé ma license sur mon péssé,
- j'ai installé le driver byteblaster, le service système est bien installé et tourne bien

Dans le menu "programmer" de Quartus 2, lorsque je clique sur "auto detect" il me répond "unable to scan device chain? Can't scan JTAG chain"
Ensuite, si je charge le fichier .pof et que je tente de flasher le CPLD, voila ce que Quartus me répond :

Code: Select all

Info: Started Programmer operation at Tue Dec 18 00:24:47 2007
Info: Unrecognized device
Error: JTAG ID code specified in JEDEC STAPL Format File does not match any valid JTAG ID codes for device
Error: Operation failed
Info: Ended Programmer operation at Tue Dec 18 00:24:48 2007
voici comment j'ai connecté la sonde JTAG :
4 -> VCC
2, 10 -> GND
1 -> 62 du CPLD
3 -> 71 du CPLD
5 -> 23 du CPLD
9 -> 14 du CPLD

La bonne nouvelle, c'est que la partie USB a été tout de suite reconnue au 1er branchement :) Reste plus qu'à programmer ce satané CPLD, et toute aide sera la bienvenue !

ricospirit
Posts: 17
Joined: Mon Dec 03, 2007 10:01 am

Re: programmation du CPLD avec un ByteBlaster ?

Post by ricospirit »

Je me réponds à moi-même... une fois de plus !
voici comment j'ai connecté la sonde JTAG :
4 -> VCC
2, 10 -> GND
1 -> 62 du CPLD
3 -> 71 du CPLD
5 -> 23 du CPLD
9 -> 14 du CPLD
En fait, je me suis trompé en repérant la broche 71 sur le support PLCC... Forcément, une fois cette erreur corrigé, la sonde ByteBlaster a beaucoup mieux fonctionné !

Bref, mon interface est maintenant fonctionnelle, je viens de la tester sur mon Amiga 1200 :)
Allez, demain je teste avec le CPC :))

Jeff : un grand merci !

Jeff
Site Admin
Posts: 8093
Joined: Fri Oct 20, 2006 12:12 am
Location: Paris
Contact:

Re: programmation du CPLD avec un ByteBlaster ?

Post by Jeff »

excellent !

un grand merci a toi pour avoir testé l'interface sur Amiga 1200!

Jeff
Site Admin
Posts: 8093
Joined: Fri Oct 20, 2006 12:12 am
Location: Paris
Contact:

Re: programmation du CPLD avec un ByteBlaster ?

Post by Jeff »

et désolé de ne t'avoir pas répondu plus tôt, je n'étais pas présent sur le forum ces derniers temps.

ricospirit
Posts: 17
Joined: Mon Dec 03, 2007 10:01 am

Re: programmation du CPLD avec un ByteBlaster ?

Post by ricospirit »

Jeff wrote:excellent !

un grand merci a toi pour avoir testé l'interface sur Amiga 1200!
Parce que tu doutais que ca fonctionne avec ??? :wink:

En revanche, j'ai testé quelques disques au format ipf, et certains ne sont pas passés... Je ne sais pas si ce sont les ipfs qui sont foireux, ou un bug de l'émulateur...
Il y a moyen d'avoir des logs pour diagnostiquer un problème ?

Au fait, tu n'as pas répondu à ma demande de sources pour le soft de pilotage : veux-tu bien les rendre disponibles ? (PS: j'aime beaucoup ton menu "about" ;)

Par contre, un truc qui aurait été cool, c'est que l'émulateur puisse emuler plusieurs lecteurs de disquettes en même temps : ca eviterait des message du genre "insert disk X" pour les softs qui tiennent sur plusieurs disques !
Je suppose qu'au niveau hardware c'est possible, puisque les signaux DSx sont gérés. il suffirait peut-être de simplement remanier un peu le soft ?
A moins que la gestion des pages mémoire sur le CPLD pose problème ?

ricospirit
Posts: 17
Joined: Mon Dec 03, 2007 10:01 am

Re: programmation du CPLD avec un ByteBlaster ?

Post by ricospirit »

Jeff wrote:et désolé de ne t'avoir pas répondu plus tôt, je n'étais pas présent sur le forum ces derniers temps.
aucun problème, l'essentiel etant que je m'en sois sorti :)

Et puis, encore merci pour ce supet projet !

Jeff
Site Admin
Posts: 8093
Joined: Fri Oct 20, 2006 12:12 am
Location: Paris
Contact:

Re: programmation du CPLD avec un ByteBlaster ?

Post by Jeff »

Parce que tu doutais que ça fonctionne avec ???
non , mais ça n'avait jamais été testé sur Amiga 1200!
En revanche, j'ai testé quelques disques au format ipf, et certains ne sont pas
passés... Je ne sais pas si ce sont les ipfs qui sont foireux, ou un bug de
l'émulateur...
Il y a moyen d'avoir des logs pour diagnostiquer un problème ?
Pour les ipf il y a plusieurs truc a savoir:
l'interface n'émule les disquettes en bitrate constant uniquement. Ceci signifie que les jeux utilisant des protections basé sur les variations de densité de bit on de forte chance de ne pas démarré.
Ceci dit je suis aussi tombé sur des images qui posent problèmes et qui ne semblaient pas utiliser de bitrate variable (comme prince of persia). Il y a donc probablement un bug a ce niveau là, que je dois investiguer.
De plus Il faudrait effectivement que je mette un message de warning lors d'un chargement d'une image a bitrate variable.
Au fait, tu n'as pas répondu à ma demande de sources pour le soft de pilotage :
veux-tu bien les rendre disponibles ? (PS: j'aime beaucoup ton menu "about"
Oui c'est prévu. en fait je suis en train (a petit pas) de restructurer et de réécrire le soft pour facilité le portage. Tant que ce travail ne sera pas terminé

je ne pense pas que les sources soient utiles a quelqu'un d'autre. Patience c'est pour bientôt ;-)
Par contre, un truc qui aurait été cool, c'est que l'émulateur puisse émuler
plusieurs lecteurs de disquettes en même temps : ça éviterait des message du genre
"insert disk X" pour les softs qui tiennent sur plusieurs disques !
Je suppose qu'au niveau hardware c'est possible, puisque les signaux DSx sont gérés. il suffirait peut-être de simplement remanier un peu le soft ?
A moins que la gestion des pages mémoire sur le CPLD pose problème ?
En fait le problème se situe plutôt coté cpld et gestion position tête de lecture:
A l'heure actuelle c'est le cpld qui gère la position de de la tête de lecture et le signal associé track00. La position de la tête de lecture est simplement stocké dans un registre 7 bits dans le CPLD. Sa valeur est envoyé régulièrement au pc pour demander un nouveau paquet.
Pour pouvoir gérer plusieurs 2 lecteurs il "suffirait" de rajouter un autre registre pour contenir la position de la tête du deuxième lecteur mais malheureusement le cpld MAX7128 est déjà saturé (~127 macrocell/128).
L'autre piste serait de donner la gestion de la position au pc, en envoyant à celui-ci uniquement un déplacement relatif (un peu comme la gestion de déplacement d'une souris), et non plus la position absolue. mais avec ce système, la gestion du signal Track00 pose problème : ce signal est censé tomber a 0 lorsque la tête de lecture de se trouve en position 0. La latence de l'usb fait que gérer ce signal a partir du pc me semble difficile.

Solution de facilité : on peut aussi imaginer une modification de l'ihm pour pouvoir changer de disquette de façon rapide.

voila
jf

ricospirit
Posts: 17
Joined: Mon Dec 03, 2007 10:01 am

Re: programmation du CPLD avec un ByteBlaster ?

Post by ricospirit »

Jeff wrote: En fait le problème se situe plutôt coté cpld et gestion position tête de lecture:
A l'heure actuelle c'est le cpld qui gère la position de de la tête de lecture et le signal associé track00. La position de la tête de lecture est simplement stocké dans un registre 7 bits dans le CPLD. Sa valeur est envoyé régulièrement au pc pour demander un nouveau paquet.
Pour pouvoir gérer plusieurs 2 lecteurs il "suffirait" de rajouter un autre registre pour contenir la position de la tête du deuxième lecteur mais malheureusement le cpld MAX7128 est déjà saturé (~127 macrocell/128).
ca c'est con :( y'a aucune possibilité d'optimisation de ce coté je suppose ?
le VHDL m'est totalement etranger, mais je suppose que c'est Quartus qui fait sa soupe pour remplir les macrocells et qu'on ne peut pas y faire grand chose ?
L'autre piste serait de donner la gestion de la position au pc, en envoyant à celui-ci uniquement un déplacement relatif (un peu comme la gestion de déplacement d'une souris), et non plus la position absolue. mais avec ce système, la gestion du signal Track00 pose problème : ce signal est censé tomber a 0 lorsque la tête de lecture de se trouve en position 0. La latence de l'usb fait que gérer ce signal a partir du pc me semble difficile.
tu peux peut-être envisager à ce moment là un hack sur le hardware, un rajoutant un compteur multiplexé externe ?
Solution de facilité : on peut aussi imaginer une modification de l'ihm pour pouvoir changer de disquette de façon rapide.
oui, c'est aussi une possibilité : un truc très graphique où l'on préchargerait plusieurs images que l'on pourrait "swapper" d'un simple clic ! ca serait déjà pas mal effectivement !

Jeff
Site Admin
Posts: 8093
Joined: Fri Oct 20, 2006 12:12 am
Location: Paris
Contact:

Re: programmation du CPLD avec un ByteBlaster ?

Post by Jeff »

ca c'est con y'a aucune possibilité d'optimisation de ce coté je suppose ?
le VHDL m'est totalement etranger, mais je suppose que c'est Quartus qui fait sa soupe pour remplir les macrocells et qu'on ne peut pas y faire grand chose ?
oui c'est grosso modo ça, mais les optimisations peuvent éventuellement se faire en restructurant l'archi du cpld. ceci dit il me semble difficile d'ajouter un deuxième compteur. Sur cpld 1 bit d'un registre = 1 macrocell. le cpld max7000 est de nos jour un petit cpld.

On peut imaginer autre chose : garder un seul compteur pour les deux lecteur. Lors d'un passage d'un lecteur a un l'autre l'Amiga se "recalibrera" sur la bonne piste.

Autre solution : utiliser un deuxième émulateur en // ;-).


tu peux peut-être envisager à ce moment là un hack sur le hardware, un rajoutant un compteur multiplexé externe ?
Autant passer sur un MAX II: c'est 5 fois plus gros, 4 fois moins cher.

L'inconvénient c'est que c'est du cms 100 broches a 0.5mm.
oui, c'est aussi une possibilité : un truc très graphique où l'on préchargerait plusieurs images que l'on pourrait "swapper" d'un simple clic ! ca serait déjà pas mal effectivement !
On va commencer par là je pense ;-).

Giants92
Posts: 156
Joined: Mon Oct 30, 2006 1:19 pm
Location: 78
Contact:

Post by Giants92 »

Yup,


J'ai trouvé en surfant une image bien sympatique
Bien pratique pour eviter de se gourer.

Image

jbfairlight
Posts: 41
Joined: Sun Feb 17, 2008 10:22 pm
Location: Ile de France
Contact:

Post by jbfairlight »

Un site ou il y a une description d'un interface pour câble JTAG :
http://www.positron-libre.com/electroni ... e-jtag.htm

Jeff
Site Admin
Posts: 8093
Joined: Fri Oct 20, 2006 12:12 am
Location: Paris
Contact:

Post by Jeff »

jbfairlight wrote:Un site ou il y a une description d'un interface pour câble JTAG :
http://www.positron-libre.com/electroni ... e-jtag.htm
Alors moi en fait je ne me suis pas "emmerder" :
Le port parallel étant en 5V TTL comme le CPLD MAX EPM7128, j'ai simplifié mon interface de prog:
Au final il reste 4 fils + 1 masse directement cablés sur le port parrallel a savoir :
TCK sur la pin 2 du port //
TMS sur la pin 3 du port //
TDO sur la pin 11 du port //
TDI sur la pin 8 du port //
et un fil entre la broche 7 et 10 pour la detection de la présence du
"programmateur" ;-).
Sans oublier la masse que vous pouvez prendre de la broche 18 a 25.

au final ça donne (sans les resistances):
Image

Un site qui présente le "truc" (en bas de page):
http://opencollector.org/history/freeco ... aster!.htm

voila

Post Reply