La
HP48 coté hardware
Mise
à jour: 8 avril 2010
http://matthieu.weber.free.fr
La HP48 est la suite d'une nombreuse série de calculateurs HP. . .
DATE DE COMMERCIALISATION
- : 1993 (G,Gx)
PROCESSEUR
: 4 BITS, cadencé à 2Mhz pour la S et à 4Mhz pour la G
NOMBRE DE FONCTIONS
- : Plus de 2000
NOMBRE DE TOUCHES DU CLAVIER
- : 49 Merci à Geoffrey pour m'avoir siganlé une erreur à ce sujet!
MÉMOIRE RAM TOTALE ADRESSABLE
- : De 32 Ko à 4Mo (!)
MÉMOIRE ROM ADRESSABLE
- : 512 Ko
DERNIÈRE VERSION COMMECIALISEE
- : HP 48 VERSION R (Tapez VERSION dans la pile)
CONSOMMATION ÉLECTRIQUE
- : Quelques µA en veille, et 30 mA max, allumée et en effectuant un calcul
TENSION D'ALIMENTATION
- : 4,5 V DC convertis en 5 V DC par une alimentation à découpage de type "boost"
Le "Saturn" ou le NEC D3004GD est le processeur central 4 bits qui donne vie à la HP 48; c'est lui qui contrôle tout, enfin presque ! Il est cadencé à 2 Mhz sur la HP 48 S, et à 4 Mhz sur la HP 48 G/ 49 G. Pour ce qui veulent en savoir plus, voici une documentation sur l'organisation interne, (registres, bus etc.).
Le SATURN possède 18 registres répartis en 9 types :
- 4 registres de calculs.
- 2 pointeurs.
- 5 registres de sauvegarde.
- 8 bits de hard status.
- 16 bits de flag.
- 2 registres OUT et IN.
- 1 Pile. (stack)
- 1 Pointeur de registre.
- 1 program counter. (PC)
Les registres de calculs sont des registres de 64 bits. Le Saturn en possède 4. Ils sont généralement nommés par les assembleurs Saturn A, B, C et D. Ce sont les seuls registres sur lesquels on peut faire des calculs (presque dignes de ce nom ). Ils ne sont pas équivalents. C'est-à-dire que certaines instructions ne marchent qu'avec certains registres et pas avec d'autres.
- Les registres :
Le Saturn possède également 2 registres de 20 bits appelés pointeurs : D0 et D1. Ces registres contiennent une adresse (bien que l'on puisse s'en servir comme compteur ou comme registre de sauvegarde). Ces registres servent à faire des accès mémoire, c'est-à-dire à lire et écrire des données en mémoire. Le processeur possède également 5 registres de sauvegarde. Ce sont des registres 64bits comme les registres de calcul. Ils sont nommés R0, R1, R2, R3 et R4. Toutefois, on ne peut pas faire de calcul dessus. Les seules instructions opérant sur eux sont des affectations et des lectures.
Il existe un registre nommé "Hard status". Ce n'est pas exactement un registre. Ce sont plutôt 8 bits d'état du processeur, les voici :
- Carry: Modifié par toute opération mathématique (indique si une opération a généré ou non une retenue ou qu'un test a provoqué un saut). On peut le tester par programme.
- Inton: Ce bit interdit ou permet les interruptions clavier masquables.
- Shutdn: Ce bit indique que le Saturn est en mode "SHUTDOWN", c'est-à-dire en mode veille. ce bit n'est pas testable, on ne peut que le mettre à 1.
- Int: Ce bit indique que le Saturn est en train de traiter les interruptions. On peut le mettre à 0 par RTI mais cela effectue aussi un retour de sous-programme. On ne peut pas le tester.
- Sb: Signifiant bit, indique qu'un décalage à droite à provoquer la perte d'un bit. On peut le tester et le mettre à 0.
- Mp: Module Puled (carte enfile) mis à 1 par la mise d'une carte dans la machine. On peut le tester et le mettre à 0.
- Sr: Service requerras, mis à 1 en cas de 'panne' détectable par un des chips de la HP (on ne s'en sert pas). On peut le tester et le mettre à 0.
- Xm: Carte enlevée. L'inverse de SR. On peut le tester et le mettre à 0.
La HP possède 16 "bits de flag" nommés ST 0 à ST 15. Ils sont testables et affectables séparément. Ils sont appelés bits de flag ou drapeau. Ils servent au programmeur pour sauvegarder non pas une valeur mais un 'état' par exemple qu'une touche était déjà appuyée au passage précédent. les flags 12, 13, 14 et 15 sont utilisés par les interruptions. Le registre OUT est un registre de 12 bits. Seuls les bit 0 a 8 et 11 sont utilisés. Les bits 0 a 8 servent pour les tests clavier, le bit 11 sert pour le buzzer. Le registre IN est un registre 16 bit. toutefois seul les bits 0 à 5 et le bit 15 sont utilisés pour le test du clavier.
La pile système (memory stack) ou RSTK est un registre à décalage de 8 fois 20 bits. Elle est faite pour contenir les adresses de retour de sous-programme. On en déduit que l'on ne peut emboîter plus de 8 sous-programmes.
Le pointeur de registre appelé P est un registre 4 bits qui sert principalement à définir la 'place' des champs P et PW. Il peut aussi servir de registre de transfert ou de compteur. Le registre "Program counter" (PC) à une taille de 20bits. Ce registre très particulier contient l'adresse exécution de la prochaine instruction.
Il contient l'adresse ou le Saturn va lire la prochaine instruction à exécuter. Sa modification conduit à continuer le programme en un autre lieu.
Voyons donc le détail d'un des types "d'établis" à notre disposition : les registres 64bits. Le Saturn dispose de 9 registres 64 bits c'est-à-dire encore 9 registres de 16 quartets. Ces registres sont de plus divisés en 9 champs. C'est-à-dire que chaque registre est divisé en 9 zones de tailles distinctes se recouvrant plus ou moins.
Voici le petit schéma qui vaut mieux que ce long discours.
F E D C B A 9 8 7 6 5 4 3 2 1 0
-P-(Ici pour P=9)
<--------WP--------->
<--------------W---------------->
-S-<------------M--------><--X-->
<----A--->
-XS---B-
Le registre est représenté en 1ère ligne, sous la forme de ses 16 quartets numérotés de 0 à 15 en hexadécimal. Ensuite vient le champ P. Sa position est variable. Il couvre le quartet de valeur P. Ce qui explique son appellation de P (pointeur de registre). Il y a le champ WP qui s'étend du quartet 0 au quartet P. Pour P=9, il couvre les quartets 0 à 9. Puis le champ W (Wide) qui couvre tout le registre. Surtout utilisé lors de copie de mémoire ou d'affichage graphique. Le champ S (Sign) qui couvre le dernier quartet du registre. Généralement utilisé comme compteur ou comme indicateur de signe lors du travail sur les réels.
Le champ M (Mantisse) rarement utilisé, qui sert à stoker la mantisse d'un réel ou un réel en virgule fixe. Le champ X (Xposent) utilisé principalement pour optimisation ou affichage graphique. Le champ A (Adresse) le plus utilisé de tous, comme compteur, adresse ... Le champ XS (Xposent sign) utilise sur HP71 pour stoquer le signe de l'exposant, généralement utilisé comme compteur comme le champ S. Et enfin le champ B (Byte) de 2 quartets, c'est-à-dire un octet, le deuxième en fréquence d'utilisation après le champ A, il sert de compteur et pour le travail sur des chaînes de caractères.
Ces utilisations sont bien sûr données à titre d'exemples, on peut si l'on veut utiliser le champ W comme compteur, mais c'est aberrant car cela veut dire que l'on a à boucler près de 10^18 fois, ce qui prendrait près d'un an sur HP. Il faut choisir le champ le plus adapté au calcul à effectuer, de manière à gagner en temps et en registres utilisés. Utiliser les registres à bon escient permet de faire jusqu'à quatre (ou plus) calculs en même temps sans avoir sans cesse à faire de lents échanges avec la mémoire.
Lorsque l'on utilise une instruction assembleur travaillant sur un champ particulier d'un registre 64 bits, il faut le préciser à l'assembleur, ceci se fait en indiquant à la suite de l'instruction le champ de travail A=A+A A (lire A égal A plus A champ A). Lorsque l'on veut parler du contenu d'un champ d'un registre 64bits, on dit "A champ M contient", ou "le champ M de A contient", mais j'utilise principalement "Am :" qui est une notation abrégée plutôt pratique. Le champ y est écrit en minuscule et le registre en majuscule.
C'est l'interface E / S de la H.P.
On trouve le schéma du numéro des broches dans le manuel livré avec la calculatrice. C'est une liaison compatible RS232 (celle des P.C., ce qui rends son exploitation possible sans trop de soucis pour commander des actionneurs par exemple ! ! Le schéma de l'interface est décrite quel que part sur le site (http://matthieu.weber.free.fr), se référer au menu principal.
Voici ses caractéristiques (Voltages et protocoles 100% compatibles RS-232 classique):
- 4 broches TX, RX, GND, Blindage(GND).
- 1 bit de start.
- 8 bits de données.
- 2 bits de stop.
- Contrôle de parité (paire, impaire ou aucune).
- Vitesse de transmission : 1200 à 9600 bauds.
- Traduction de caractères ASCII : (voir le manuel de l'utilisateur...)
- Le port série infra-rouge :
C'est l'interface E / S de la H.P.
Le port infrarouge à les mêmes caractéristiques que le port câble, d'un point de vue protocole. L'émission est réalisée avec une LED infrarouge à haut rendement, dont le courant est limité par un pont de 2 résistances situé sous le quartz, pour ne pas vider trop vite les piles ! ! La réception est quand à elle réalisée grâce à un phototransistor.
Accessoirement, on peu se servir de ce port pour télécommander des TV, chaînes HI - FI... grâces à certains programmes comme MEGAZAP. La portée de l'ensemble se situe autours de 30cm (HP---HP) à plus de 2m (entre la HP et une TV (sensible en réception, style Philips par ex.)).
- Les deux gestionnaire de l'écran L.C.D. :
TYPE : SED1181F (Japan)
Ils doivent à eux 2, gérer l' écran L.C.D.
Chacun d'eux gère 64 colonnes
. . . Je n'ais pas plus d'infos sur eux ! !
- L'écran L.C.D. :
Ecran de type Liquid Crystal Display, de technologie Super Twisted Nematic (Nématique Super Torsadé, une des dernières avancées technologies en matière d'afficheurs LCD, qui permet, en autre, un fort contraste...). Il composé d'une matrice de 64 lignes x 131 colonnes, soit un total de 8384 pixels, plus 7 indicateurs système en haut de l'afficheur.
- Le quartz :
Le quartz est un cylindre en aluminium contenant un cristal de quartz, taillé d'une certaine manière de façon à ce qu'il oscille à une fréquence donnée. Sa précision est de l'ordre de 20ppm, c'est à dire que l'horloge interne dérive au maximum de 1,5 secondes par jour environ (cas extrème).
Le quartz a des propriétés pézio-électriques, c'est à dire qu'une action mécanique sur le cristal provoque un courant électrique, et à l'inverse, si un courant électrique traverse le cristal, il va se déformer. En utilisant la résonance mécanique d'un certain volume de quartz, on obtiens un oscillateur très stable. (Le quartz est alors assimilable à une inductance dans un circuit oscillateur).
Dans la HP ce quartz gère la vitesse de cadencement du Saturn, la vitesse de transmission du port, et bien sur l'horloge... Sa fréquence est de 32,768 KHz (le même type que dans les montres et les horloges) un multiplieur augmente sa fréquence pour "coller" avec celle du Saturn, on apelle cela un muliplicateur PLL (Phase Lock Loop). On en trouve dans les microicontrolleurs PIC notamment.
- Le buzzer (ou beep) :
Il est fait à partir d'une capsule pézio-électrique très mince que l'on retrouve un peu partout et notamment dans les montres... Le ressort sert de contact lors de la fermeture de la HP (le BIP se trouvant sur la coque arrière de la HP). L'autre contact est établis grace au blindage métallique.
- Le connecteur d'extension de 40 broches :
Il permet la connection à la HP 48 GX des cartes de mémoire et d'autres extensions, telle que des interfaces E/S professionnelles... On y trouve aussi dessus des connections au bus vidéo permettant, enfin je pense de connecter un autre écran graphique... (Je sais que cela s'est déjà fait ! ! ! ).
SCHÉMA DE CABLAGE :
Sens du brochage : broche 1 = piste la plus proche du gros condensateur de sauvegarde de l'alimentation.
BROCHE N° :
SIGNAL :
BROCHE N° :
SIGNAL :
1
+VCC 5V (que si la HP est allumée)
21
Carte présente (active = si signal haut ( 5V ) )
2 et 2 bis
Mesure de l'état de la pile des 2 cartes RAM
22
Validation des sorties (output enable ) 0 = actif
3
Bus d'adresse 0
23
Bus de données 1
4
Bus d'adresse 1
24
Bus de données 2
5
Bus d'adresse 2
25
Bus de données 3
6
Bus d'adresse 3
26
Bus de données 4
7
Bus d'adresse 4
27
Bus de données 5
8
Bus d'adresse 5
28
Bus de données 6
9
Bus d'adresse 6
29
Bus de données 7
10
Bus d'adresse 7
30
Bus de données 8
11
Bus d'adresse 8
31
Bus vidéo
12
Bus d'adresse 9
32
Bus vidéo
13
Bus d'adresse 10
33
Bus vidéo
14
Bus d'adresse 11
34
Bus vidéo
15
Bus d'adresse 12
35
Bus vidéo
16
Bus d'adresse 13
36
Bus vidéo
17
Bus d'adresse 14
37
Protection en écriture des RAM
18
Bus d'adresse 15
38
Carte mémoire présente (actif = 5V )
19
Bus d'adresse 16
39
Type de carte mémoire ( 0V = RAM ; 5V= ROM )
20
Autorisation d'écriture/lecture (R/W) 0 V = actif
40
MASSE ( 0 V )
Remarque : La HP 48 est un processeur 4 BITS, son bus de donnée, (les fils ou transitent les mots binaires) ne devrait don être composé de 4 fils, or dans le tableau, on se rends compte, que ce bus fait 8 fils. C'est parce que la HP utilise un multiplexeur pour adresser les RAM, qui travaillent exclusivement avec des mots de 8 bits.
Remarque : Le bus d'adresse du Saturn comporte 16 FILS : Il peut donc adresser (c'est à dire sélectionner) au maximum 2^16 mots de 8 bits (Octets) c'est à dire 64 Ko (65536 octets). Pour pouvoir gérer jusqu'à 4 Mo de mémoire plus les 512Ko de sa ROM, elle utilise un bus de contrôle qui permet de sélectionner certaines parties de la mémoire... la partie sélectionnée devient "active", alors que les autres restes cachées. Il faut en tenir compte lors de la programmation ! .
- L'alimentation à découpage (boost) :
La HP est alimenté en 5V DC, et de façon permanente pour les circuits mémoires RAM; Pour réduire le nombre de piles nécessaires pour obtenir une tension suffisante à l'alimentation des circuits, HP utilise une alimentation à découpage qui convertie les 4,5 V fournis par les piles en 2xVbatt (soit en gros 9 V) nécéssaires pour la liaison série compatible RS232 (tout au moins pour la valeur positive, car il ne semble pas y avoir de "-10V").. Le Saturn re-fabrique à partir de la une tension de 5V VCC(ON), ainsi qu'un autre +5V permanent qui est la tension de sauvegarde des RAM (maintenue, lorsque les piles sont retirées par un condensateur. Cette alimentation à découpage de type "boost" (ou survolteur) est composée d'une bobine (On la vois en bleu sur la photo) et d'un transistor qui est commandé à une grande fréquence (je pense vers les de 10 à 15 KHz), la self emmagasine de l'énergie pendant les phases de conduction du transistor et permet ainsi d'élever la tension de 3,2 -- 4,5 V aux 9 V requis ! (Merci Pierre SCHMIDT le complément d'infos).
Je suppose que c'est elle qui crée le petit bruit (sorte de sifflement, ou de souffle) que l'on entends lorsque l'on approche son oreille d'une HP 48 en marche ! !
http://matthieu.weber.free.fr