# Logisim

Logisim è un software libero per la simulazione di circuiti logici. È utilizzato in numerose università, tra cui l'Università della California - Berkeley e l'Università di Lugano.
Logisim è un software dedicato principalmente scopi didattici ed educativi, utilizzato per sviluppare, progettare e simulare circuiti digitali (non è invece in grado di gestire componenti analogici).
Il suo codice è scritto interamente in Java usando le librerie Swing per l'interfaccia grafica ed è progettato per funzionare sulle piattaforme Microsoft Windows, macOS, e Linux.

## Storia

Lo sviluppatore Carl Burch ha lavorato su Logisim dal 2001 al 2011. L'11 Ottobre 2014 annunciò la sospensione dello sviluppo di Logisim per un tempo indefinito e da allora il progetto originale non è stato più aggiornato. Il software è stato quindi ripreso e ulteriormente sviluppato da un differente gruppo di programmatori, dando origine a Logisim Fork, la versione attualmente aggiornata e attiva del progetto.

## Logisim Fork

A partire dal 2018 il progetto iniziale di Logisim è stato ripreso e portato avanti da un gruppo di studenti dell'Istituto di Istruzione Secondaria Superiore Majorana-Giorgi di Genova dando origine a un fork del programma originale. Il progetto è attualmente sviluppato e aggiornato costantemente da un gruppo di appassionati programmatori.
Logisim Fork ha introdotto numerose nuove funzionalità al progetto originale, aggiungendo nuovi componenti, nuove modalità di simulazione e nuovi strumenti per la progettazione circuitale. L'ultima versione rilasciata (2022) è la 2.16

## Caratteristiche e funzionalità del programma

Il programma è dotata di un'interfaccia grafica con supporto multilingue che simula una breadboard per la realizzazione e il test di circuiti digitali. Il circuito viene realizzato trascinando i componenti sulla breadboard e collegandoli fra loro. I principali componenti simulati dal programma sono:
* porte logiche fondamentali (And, Or, Not, Nor, Nand, Xor, Xnor, buffer)
* integrati digitali della famiglia logica TTL
* componenti per l'input e l'output: pulsanti, interruttori, display a 7 segmenti, tastiera, joystck, led, matrice di led, buzzer
* componenti combinatori: multiplexer, demultiplexer, decoder, encoder, sommatore, sottrattore etc.
* componenti sequenziali: latch, flip-flop, memorie ROM e RAM
Il programma offre inoltre numerosi strumenti per la simulazione e l'analisi circuitale, fra i quali:
* simulazione in tempo reale con calcolo dei valori logici in uscita dal circuito
* analisi circuitale e calcolo automatico della tabella di verità
* sintesi or-and (somma dei prodotti logici) di una tabella di verità e realizzazione del circuito a partire dalla tabella di verità
* tabella di logging per l'analisi nel tempo dei valori logici all'interno di un circuito
* oscilloscopio digitale per la visualizzazione delle forme d'onda dei segnali prodotti
Logisim Fork implementa infine la possibilità di realizzare nuovi componenti e intere librerie di componenti, a partire da quelli simulati dal programma (sottocircuiti). Alcune librerie standard sono distribuite sotto forma di plug in scaricabili, in modo tale che è possibile espandere ulteriormente le funzionalità del programma. Uno dei plug in attualmente in fase di sviluppo è il Beta2018, un microprocessore a 8 bit costruito sul modello dello Z80, interamente simulato in Logisim e dotato di un proprio linguaggio assembly di programmazione e di una serie di strumenti di sviluppo dedicati (assembler, programmatore di PROM, simulatore).