CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

electronique et logique

lit3l
lit3l
Niveau 10
25 novembre 2008 à 12:27:22

Bonjour,
je recherche un logicielle permettant la creation de circuit logique (schéma logique, équations logiques etc)et circuit électronique (inutile que se soit très compliquer ou très complet).
Quelque chose adapter au programme de première S en génie électronique ...
Si possible Gratuit/Ouvert/compatible linux.

Merci d'avance :)

godrik
godrik
Niveau 30
25 novembre 2008 à 13:40:48

mmm, j'utilisais un truc qui s'appelle diglog quand j'étais en license pour faire un processeur.
mais je ne sais pas si ca répond a tes besoin

dnob700
dnob700
Niveau 10
25 novembre 2008 à 16:59:13

Si tu veux un truc en mode graphique où tu pose des portes logiques que tu relie entre elle, tu peut, sous linux utiliser klogic, xcircuit ou ksimus (certains sont plus simplet et d'autre plus complet, essaye les, ils sont dans les paquets debian et ubuntu et probablement dans d'autre distrib aussi).

Si tu veux un truc où tu écris des programmes en mode texte qui tu compile et exécute ensuite. Tu peut utiliser verilog, que je ne connais pas mais qui est utilisé par l'industrie, donc ça doit être un standard.

Ou alors, j'ai écrit un compilo de circuit électronique qui est plus simple (très probablement) que verilog mais avec lequel on peut quand même faire plein de chose (j'ai écrit un processeur complet avec).

Il y a des paquets debian (ou ubuntu) là :
pour 64 bits : http://svn.quare.fr/viewvc/projets/trunk/netlist/netlist_1.0.0-1_amd64.deb?view=co
pour 32 bits : http://svn.quare.fr/viewvc/projets/trunk/netlist/netlist_1.0.0-1_i386.deb?view=co
Ou les sources là : http://svn.quare.fr/viewvc/projets/trunk/netlist/netlist-1.0.0/

Bien entendu, il n'y a pas de mode d'emploi, mais il y a des exemples et je peut répondre à tes questions si tu veux.

lit3l
lit3l
Niveau 10
25 novembre 2008 à 20:08:02

Merci a vous deux je vais me renseigner plus sur tout ceci, en particulier ton logicielle dnob700, il n'y a pas besoin de la puissance de verilog de toute manière, et même un processeur est a 100 000 lieux de ce que je peux faire :)
J'ai télécharger la et j'essaye de comprendre comment sa marche : je suis tres loin du compte, tout d'abord parce que je n'ai pas toutes les connaissances nécessaires (c'est la première foi que je fais de l'électronique, j'était plus sur la programmation pure et dure) :-(

Pourrait tu me montrer quelques exemple tres simple, pour bien comprendre la syntaxe et le fonctionnement de cette outil ?
Par exemple j'ai essayer le adder.nl (pour faire des test et comprendre l'outil), seulement sans mode d'emploi j'ai eu aucune idée de comment le lancer j'ai essayer de passer le fichier en argument dans la commande mais rien ne semble aller.

Enfin voila encore merci, et au passage bravo pour ton logicielle qui parait être plutot aboutie :)

dnob700
dnob700
Niveau 10
25 novembre 2008 à 21:36:26

Il y a quand même une toute petite aide qui est de faire l'appel "netlist --help". Et tu peut aussi regarder le script test qui est sur le repository (mais peut-être pas dans le package, je ne suis pas très bon pour faire des .deb)

Globalement, il faut faire par exemple :

netlist -i adder.nl -cycle 16 -v 3

-i donne le fichier d'entrée (sinon c'est l'entrée standard par défaut).
-cycle donne le nombre de cycle de simulation à faire (ça simule des circuit dit "synchrone", ce qui est à la fois une fonctionnalité et une limitation, mais c'est généralement ce par quoi on commence en cours)
-v donne le degré de verbosité, le paramètre est un masque de bit des valeurs suivantes (qui sont toutes activée par défaut) :
1 : erreur de compilation
2 : sortie du programme
4 : warning de la compilation
8 : info de la part du compilo (le nombre de porte du circuit)
16 : Affirme que le programme est valide si c'est le cas

Les valeur au delà ne sont pas activée par défaut et sont plutôt utile pour du débogage.

Il y a d'autre options (par exemple -c qui permet de produire un exécutable natif à partir d'un circuit (mais il y a quelques petites choses qui ne peuvent pas être compilé avec cette option)), mais moins utiles.

Pour ce qui est de la syntaxe des fichiers sources, il faut regarder les exemples, globalement on définit une fonction avec :

(r1,r2,...) = NomFct(e1,e2,...)
{
code
}

r1,r2 etc. sont le nom des variables de sorties (il peut y en avoir un nombre quelconque), NomFct est le nom de la fonction et e1,... les variables d'entrée.

Comme le seul type de variable est le bit, il n'y a pas besoin de déclarer les variables dans le corps des fonction. La fonction renvoie la valeur qu'on ses variables de sortie à la fin de son exécution.

Il y a deux type de fonction, celle dont le nom commence par une lettre, qui sont des fonctions normales, qui peuvent être appelé n'importe où. Et celle dont le nom commence par un '$' qui sont ce que j'appelle des "composant". Quand un programme est exécuté, chaque composant est appelé par le compilateur à tour de rôle (en quelques sorte, ils jouent le rôle de la fonction main).

L'ordre des fonctions n'a pas d'importance (si tu définit deux fonctions avec le même nom, la seconde efface la première et une fonction peut appeler une autre fonction définit après elle).

Par contre, l'ordre des composant à de l'importance car un composant ne peut appeler un autre composant (directement ou au travers de fonction) que si celui-ci a été défini avant et donc exécuté avant. Car l'appel d'une composant, contrairement à une fonction ne provoque pas son exécution, mais récupère juste ça valeur (en terme de circuit, le circuit correspondant à une fonction peut être dupliqué de nombreuses fois, mais pas ceux des composant).

Sauf que pour appeler un composant donné, par exemple $Truc, tu peut faire soit "$Truc()" (un composant ne peut pas avoir de paramètre) ce qui renvoie la valeur à laquel truc a été évalué durant ce cycle, soit "@Truc()" (et ça tu peut le faire depuis n'importe où, même dans un composant déclaré avant Truc) et ça te renvoie la valeur de $Truc au cycle précédant.

J'ai dit qu'il n'y a que des bits comme type de variable, mais il y a aussi des tableaux.

Comme tu peut écrire :

a,b,c = (f,g,h) ou (i,j,k);

Il y a un raccourci qui est :
a[3] = b[3] ou c[3];

Et là, a[3] est remplacé par (a1,a2,a3), de même pour b et c (vraiment remplacé, ça veut dire que plus tard dans la fonction tu peut utiliser la valeur de a2 par exemple). Donc a[5] est le tableau de 5 cases dont les cases s'appellent a1,a2,a3,a4 et a5, mais ce n'est pas la cinquième valeur de a.

Ce qui nous mène au fait qu'en dehors des fonctions tu peut définir des variables par :
a = 0b1; ce qui fait que a va valoir 1 toujours (et donc ce n'est pas très utile).
b[3] = (0b1,0b0,0b0); (ce qui définit un tableau)
c = 0b10011; ce qui est plus intéressant car comme ça, la variable c va prendre à chaque cycle l'une des valeurs (1, puis 0, puis 0, puis 1, puis 1, puis on recommence).

Il y a d'autre possibilité et je m'aperçois que ma grammaire est un peu stricte et qu'il serait facile d'autoriser plus de chose, mais je ne suis pas sûr que je le changerais.

D'autre part, une variable globale ne peut pas être modifié, car une affectation dans une fonction crée automatiquement une variable locale (qui masque la variable globale).

Bon, il y a plein d'autre chose, particulièrement, tu peut écrire au lieu de a[8] juste a[] ce qui crée un tableau de la taille du mot du circuit et tu définit la valeur du mot avec la commande <byte 5> par exemple (donc a[] est exactement égale à a[5]). A noter que cette commande a un effet sur tout le programme où qu'elle soit (le mot est le même partout, même si cette commande est à la fin du fichier), et tu peut faire a[[]] pour avoir un tableau du double de la taille d'un mot.

Et il y a encore d'autre chose, mais pour commencer, ça doit suffire, les exemples de syntaxes sont parlant pour savoir quels opérateurs existent (à noter que &&, || et ?? sont des versions paresseuses des opérateur &, | et ?, donc un programme s'exécute plus vite avec ceux-là, mais il y a des restrictions comme le fait qu'il ne peut pas y avoir de registre dans un sous circuit derrière un opérateur paresseux (sinon, si un registre n'est pas appelé à chaque tour, le circuit n'a plus de sens))

Il faut noter aussi que tout ça est "sûre" : il ne peut pas y avoir d'erreur d'exécution, car le programme est statiquement vérifié pour satisfaire aux contraintes d'un circuit logique (pas de boucle, les registres sont toujours appelé, tout les membres des opérateurs ont la même longueur, etc.) Et, un truc sur lequel j'ai mis pas mal d'attention, c'est que les messages d'erreurs sont censé être assez explicite (sauf pendant le parsing malheureusement, où je ne donne que la liste des derniers symboles lus, ce qui n'est pas terrible).

Bon, j'ai un peu oublié ce que ça peut faire, mais si tu as d'autre questions, je peut regarder.

lit3l
lit3l
Niveau 10
29 novembre 2008 à 08:54:27

Alors, j'ai été pas mal occupé c'est derniers jours, mais j'ai eu le temps d'essayer diglog, et c'est vraiment sa que j'avait besoin. Sa correspond parfaitement (a part qu'il doit avoire 10ans mais bon ...)
Je vais rester éloigner des compilo en mode texte, sa se rapproche trop de la programmation et on a pas la même impression que quand on utilise quelque chose de graphique. :(

Alors si quelqu'un a une idée de vers quoi se tourner, sinon merci pour tout ! :)

godrik
godrik
Niveau 30
29 novembre 2008 à 11:49:59

J'ai bien diglog moi.
Ca a une interface old-school a la xfig! Et ca, c'est bien!

Faites comme moi, dites non, au widget toute moche et au interface incomprehensible a la inkscape!

lit3l
lit3l
Niveau 10
29 novembre 2008 à 16:22:20

Ouai mais un petit peut de modernité par ci par la sa ferait pas de mal quand même :o))

dnob700
dnob700
Niveau 10
29 novembre 2008 à 18:57:21

"Je vais rester éloigner des compilo en mode texte, sa se rapproche trop de la programmation et on a pas la même impression que quand on utilise quelque chose de graphique."

Certe, on a l'impression d'être rapide et efficace... Alors qu'en fait on réalise exactement la même tâche.

Là, ça n'a pas beaucoup d'importance pour réaliser des petits circuit d'exemple. Mais quand tu te mets à réaliser de gros programmes avec LabView (un truc de ce genre, où on programme en faisant des dessins) tu t'arrache les cheveux d'être obligé d'utiliser ça, juste parce que les physiciens ne savent pas programmer correctement.

lit3l
lit3l
Niveau 10
29 novembre 2008 à 19:32:30

Je suis d'accord avec toi, seulement pour étudier le mieux c'est de voire pour comprendre. Avec diglog on voit l'électricité dans le file etc...
Pour le travaille une foit que tu connait le truc, je peut supposer qu'en mode texte sa vas beaucoup plus vite !
Et surement que quand j'aurais plus d'expérience je regarderais de nouveaux ton compilo :)

Mais pour te donner une idée, j'ai fait un petit circuit qui additionne de bus de 4 bits, j'y suis arriver a force de patience et de tationage en quelques heures! Alors qu'avec ton compilo j'aurais pris plus de temps pour comprendre le truc :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment