Redstone Multiplicateur 8/16 bits en Redstone

[GISED] Link

Torches, poudre et repeaters. What else ?
4 Mars 2012
341
76
140
29
VNSA, 2740 Moutier
vnsa.ch


Multiplicateur 8/16 bits
Multiplicateur 8/16 bits

94497220140907213618.png


Caractéristiques :
  • Multiplie deux nombres de 8 bits (non signés) entre eux (soit deux nombres entre 0 et 255, et un résultat de 0 à 35025)
  • Multiplie deux nombres signés de 4 bits et donne un résultat correct sur 8 bits (le nombre doit être complémenté sur les 8 bit et non pas sur seulement 4 !!!)
  • Le résultat est sur 16 bits (ou 2 x 8 bits)
  • Taille [L x l x h] : 31 x 22 x 12 cubes
  • Vitesse : maximum 9,5 secondes, est moins élevé si le résultat tient sur moins de 8 bits
  • Même si j'avoue que 9.5 seconde c'est pas super rapide, il faut savoir qu'une multiplication, en logique combinatoire, dure 6 secondes
  • Fonctionne de manière séquentiel (résultat temporaire dans un registre)
  • Il y a une sortie qui indique quand le résultat est terminé, ce qui est permet de diminuer le temps d'attente dans une ALU dans le cas où l'on exécute une petite multiplication.
  • Pour vérifier le résultat, je vous conseil d'utiliser la calculatrice windows en mode "programmeur" (Alt+3)
Page de téléchargement : <le lien est en cours de création . . .>
Testez-le ! Rdv sur
thundered.nitroserv.eu (version : 1.7 - 1.7.5)
La multiplication peut très bien se faire en logique combinatoire, simplement en ajoutant autant d’additionneur complets que nécessaire (ici, il en faudrait 8). Vous imaginez du coup la taille nécessaire pour une simple multiplication. Cependant cela reste plus rapide (environ 6 secondes estimé avec des full adder conventionel).
C'est donc sans crainte que je m'avance à dire que ce système est l'un des meilleurs (taille x vitesse) multiplicateur.
pour les screens :
94497220140907213618.png

Vue d'ensemble

32025720140907213630.png

Vue de côté
80898620140907213750.png


80898620140907213750.png

Vue des 2 entrées de 8 bits

80096420140907213654.png

En jaune, le registre à décalage, ou la clé pour une multiplication compact !

55832120140907213729.png

Et finalement la vue sur la sortie, avec les 8 bits du haut qui sont les bits de poids faible et les 8 du dessous qui sont ceux de poids fort. Attention à l'ordre.
Ici une petite explication :
Laissez-moi le temps de la faire ^^
A plus tard pour un nouveau circuit !
 
Dernière édition:
Voilà voilà, une meilleur version est en cours de réalisation. J'ai simplement changé mon full adder (qui était l'ICA de Grizdal) par un autre plus rapide. Du coup, vu que le nouveau est 3 tics plus rapide, je peux gagner 3 ticks par cycle, comme il y a 8 cycle, ça fait 3*8 = 2,4 secondes. Si je fais 9,5 - 2,4, = ~ 7 secondes. Ce commence a vraiment devenir intéressant. Il est même possible que je fasse une version cheaté sans registre tampon (donc le résultat temporaire va direct à l'entrée du full adder). Ça va être marrant XD.

Quoi qu'il en soit, atteindre 6 secondes pour une version séquentiel risque d'être bien difficile...
 
Vraiment ingénieux on aura peut être un pc redstone bientot :p
Et si on veux faire du 64bit mouhahaha ^^
 
ben PC en redstone ça a déjà été fait, enfin plutot des processeur pas des ordinateur personnel entier, la redstone est pas assez rapide pour ça ^^

sinon bien joué pour l'optimisation :)
 
Aha .... Ben j'espère que mon télégraphe pourra vraiment se rapprocher de cette dimension "pc" de la CPU. Avec mon écran, je pourrai faire du "printf" (imprimer un text), mettre une variable à l'écran, "scanf" un nombre ou un char (ou droit un tableau de char ?). A voir. Je construis petit à petit (à l'image de ce multiplicateur) les composants de ma CPU... Et surtout je construis le jeu d'instruction qui sera l'un des plus grand de minecraft avec ses 255 instructions possible (adressage immédiat, indexé, les constantes, ce qui concerne l'écran, etc..).

Oui mon jeu d'instruction sera grand, c'est pour avoir plus d'opérations câblés et ainsi diminuer le nombre d'instructions nécessaire pour les programmes (la clk aura une fréquence plus lente que les autres CPU, mais il faudra moins de cycles pour les opérations). Je mise sur ça.

sinon bien joué pour l'optimisation :)
Merci, mais c'est surtout grâce aux meilleurs composants de la communauté que cela est possible.

ps. Ce sera pas un invite de commande ! 256 octets ça suffit pas pour un OS XD
 
CPU est masculin c'est la traduction française qui est feminin ^^
après il va falloir une modification du telegramme pour pouvoir l'utiliser comme peripherique d'un CPU mais ça c'est le plus facile :)

y a une grande difference entre l'affichage d'un texte et l'affichage d'un texte via printf , pareil pour scanf,
compare pas avec les fonctions en C parceque c'est bien different de ce que tu pourra faire avec un CPU sur minecraft x)
arrive déjà à depasser 50-60 instructions differentes tu va voir le nombre d'instructions de base n'est pas très elevé
et d'ailleurs ce n'est pas parcequ'un jeu d'instruction est plus grand que cela diminue forcement le nombre d'instruction pour un programme ni que ça augmente le nombre d'operation cablé xD

de toute façon un processeur capable de faire tourner un OS tournerai tellement lentement qu'il te faudrai genre plusieurs 20aines de secondes par instruction >_<

tu peut pas test je suis experimenté dans le domaine des micro-architecture :P
 
Alors, on va s'amuser ! ^^

Tout d'abord, je vois que tu cherches trop à comparer ce que je fais avec des vrais CPUs/microcontrôleurs alors que c'est un peu inutile. Quand je parle de grand jeu d'instruction et tout le reste, je compare surtout à tou(te)s les CPU que j'ai pu voir sur planetminecraft, minecraftforums, ici ou encore sur le serveur OpenRedstoneIngeneers (ORE). Et tu vas voir plus bas que ce que j'ai dit a tout son sens (même si j'ai vulgarisé certaine chose de manière sur-extrême) une fois placé dans ce contexte.

"CPU est masculin c'est la traduction française qui est feminin " : Au féminin ça donne une dimension d'affection ... C'est chou :flowerred:

"y a une grande différence entre l'affichage d'un texte et l'affichage d'un texte via printf"
Et si j'exclu la librairie standard et que je définis moi-même la fonction printf ? #ChipoteurDeMesDeux Surtout que sur de l'embarqué... ça existe pas vraiment XD. Mais pour un connaisseur, un putchar ou qqch dans le genre serait plus approprié. Mais vu que je m'adresse à des gens qui n'ont de loin pas tes/nos connaissances, j'essaie tant bien que mal de leur donner des trucs qu'ils peuvent comprendre (j'essaye...).

"c'est bien different de ce que tu pourra faire avec un CPU sur minecraft"
Du fait que dans minecraft on peut tout faire avec BEAUCOUP de temps ...

"et d'ailleurs ce n'est pas parcequ'un jeu d'instruction est plus grand que cela diminue forcement le nombre d'instruction pour un programme..."
Dans l'absolu tu as parfaitement raison. Avec 16 instructions on peut sans problème faire la suite de Fibonacci. Cependant, vu que la majorité des CPU que j'ai vu(e)s n'ont que 16 instructions, lorsque tu veux procéder à une multiplication, tu devras faire une boucle et tout et tout... De plus, les possibilités d'adressage reste ultra limité en 4 bit, et c'est là que je compte gagner du temps/de la place.

"...ni que ça augmente le nombre d'operation cablé xD"
Cela dépends surtout de la façon dont tu le fais. Et comme c'est moi qui le fait, je sais que j'aurai plus d'instructions câblés.

"tu peut pas test je suis experimenté dans le domaine des micro-architecture :p"
Le meilleur pour la fin ... avec la magnifique faute de conjugaison qui crédibilise le tout (et les autres aussi)...

Je ne remets nullement en doute tes compétences que je reconnais (avec tes tutos). C'est d'ailleurs sympa d'apporter des précisions. Mais parce que tu t'es permis de mettre cette petite phrase à la fin que je me devais de me justifier.

Si jamais j'ai des connaissances en VHDL, Assembleur (sur du freescale), C, C++, Perl, Linux, LabView, Réseau, Java, électronique analogique (ampli op.), automation (ma formation initiale) = CEI 61131-3 = ST (Pascal), ladder, fbd, sfc, cfc.
Que c'est cool d'étaler sa vie XD. C'est vrai que du coup je suis pas un expert dans quelconque de ces langages, mais à l'avenir tu feras attention avant de corriger mes postes. Et s'il te plaît, si tu le fais, soigne ton orthographe XD.
 
Dernière édition:
calme j'essayais psa du tout de corriger ton post hein :o x)

oui j'ai pas pensé au "de minecraft" quand tu parlais de grand jeu d'instruction :x

en fait comme je pensais plus à un processeur > 16bit , quand je pensais à faible jeu d'instruction j'etait plutot dans la trentaine d'instruction du coup oui 16 instruction c'est très très faible

"...ni que ça augmente le nombre d'operation cablé xD"
Cela dépends surtout de la façon dont tu le fais. Et comme c'est moi qui le fait, je sais que j'aurai plus d'instructions câblés.
donc j'imagine que ça va pas etre des instructions microcodées, tu va utiliser des comparateur ou autre chose pour decoder tes instructions ?

Je ne remet nullement en doute tes compétences que je reconnais (avec tes tutos).
ces videos ne sont plus du tout representative de mes connaissances , c'etaient que les bases, j'ai voulu refaire des video
sur logisim avec les derniers processeurs que j'ai realisé mais je n'ai pas pu...

je vais pas non plus etaler mes connaissances dans divers languages et en micro architecture, je prefere montrer que de blablater dans le vide et etaler ça comme de la confiture, enfin en gros si t'a besoin d'aide au niveau architecture (pas minecraft je sais plus faire grand chose xD), je suis dispo ^^

sinon desolé je voulais vraiment pas que tu prenne ça comme une correction de ton post :/
l'orthographe avec quelques verres de muscat c'est difficile xD