Manual del Usuario de Logisim
Logisim es una herramienta de libre distribución (¡free-ware!) de diseño y simulación de circuitos lógico lógicoss digit digitale ales. s. Su intuit intuitiva iva interf interfa a y su sencil sencillo lo simula simulador dor ermit ermiten en arend arender er con facili facilidad dad los concetos b"sicos relacionados con la lógica de los circuitos digitales. #on la caacidad de construir grandes circuitos a artir de otros m"s simles$ Logisim uede ser utiliado ara el diseño comleto de #%&s con roósitos educativos. Logisim es utiliado en universidades a lo largo y ancho del mundo con diferentes roósitos$ entre los 'ue se incluyen • • •
&n módulo de educación general de introducción a la inform"tica. &na unidad en cursos de nivel de segundo año en organiación de ordenadores. &n semestre comleto en cursos de alto nivel de ar'uitectura de ordenadores.
El Manual Manual Del Usuar Usuario io de Logisi Logisim m $ 'ue 'ue est" est"ss leye leyend ndo o ahor ahora$ a$ es la refe refere renc ncia ia ofic oficia iall ara ara las las
caractersticas de Logisim. *n rimer lugar est"n unas secciones encaminadas a introducir las artes m"s imortantes de Logsim. *stas secciones han sido escritas$ ley+ndolas de rinciio a fin$ esecialmente ara arender acerca de las caractersticas m"s imortantes de Logisim. ,utorial rimeros r imeros asos con Logisim L ogisim Libreras y atributos Subcircuitos aces de cables n"lisis combinacional Las secciones restantes son un gruo m"s diverso de e/licaciones y materiales de referencia acerca de algunos recovecos de Logisim. 0eferencia del 1en2 #omonentes de memoria 0egistro %referencias de alicación 3ciones de royecto %roagación de valores Libreras 40 cerca del rograma
,utorial %rimeros asos con Logisim htt55www.cburch.com5logi htt55www. cburch.com5logisim5es5docs.htm sim5es5docs.htmll ¡Bienvenidos a Losgisim!
Logisim ermite diseñar y simular circuitos digitales. *st" ensado como una herramienta educativa 'ue ayuda a entender cómo funcionan los circuitos digitales. %ara racticar un oco usando Logisim$ construiremos un circuito 630 - un circuito 'ue toma dos entradas ('ue llamaremos x e e y ) y 'ue tiene como salida 7 si las dos entradas son iguales y 8 si son distintas. La siguiente tabla de verdad lo ilustra.
Se uede diseñar tal circuito sobre el ael.
%ero no or estar en el ael significa 'ue est+ bien. %ara verificar el nuestro traba9o$ lo dibu9aremos en Logisim y lo testearemos. dem"s como utilidad añadida tendremos un circuito 'ue seguramente tendr" me9or asecto 'ue el dibu9ado a mano. ¡:isfruta la construcción del circuito! Paso 0: Orientándose
#uando emieces con Logisim ver"s una ventana similar a la siguiente. Si usas un sistema diferente algunos detalles odran ser estrechamente diferentes.
Logisim est" dividido en tres artes el anel del e/lorador$ la tabla de atributos y el lieno o la iarra. Sobre estas artes est"n la barra de herramientas y la barra de men2.
%odemos rescindir del anel del e/lorador y de la tabla de atributos or el momento. ;o las usaremos en este tutorial$ y uedes ignorarlas simlemente. dem"s$ la barra de men2 es muy intuitiva. *so de9a la barra de herramientas y el lieno. *l lieno es dónde dibu9ar"s tu circuito y la barra de herramientas contiene todo lo necesario ara llevar a cabo esta tarea. Paso 1: Añadiendo puertas
0ecordemos 0ecordemos el circuito 'ue bamos a dibu9ar con Logisim.
#onstruir un circuito es m"s f"cil insertando las uertas rimero a modo de es'ueleto ara m"s tarde añadir el cableado al circuito. Lo rimero 'ue vamos a hacer es añadir dos uertas ;:. %incha sobre el botón botón ;: en la barra barra de herramie herramienta ntass ( $ el en2lti en2ltimo mo botón botón de la barra barra de herramie herramienta ntas). s). :esu :esu+s +s incha en el "rea de edición$ lieno$ 9usto donde 'uieras 'ue vayan las uertas ;:. seg2rate de de9ar esacio de sobra ara lo 'ue habr" 'ue incluir a la i'uierda.
ay 'ue fi9arse 'ue los cinco untos a la i'uierda de la uerta ;: son los lugares en donde se ueden conectar los cables. %ara el caso sólo utiliaremos dos entradas ara nuestro circuito 630$ ero ara otros circuitos$ tener m"s de dos entradas en las uertas ;: uede resultar muy 2til.
hora añade las otras uertas. %rimero incha sobre el botón 30 ( Luego selecciona la uerta ;3, (
)< desu+s incha dónde 'uieras.
) y on dos de ellas en el lieno.
Se uede de9ar un e'ueño esacio entre las uertas ;3, y ;: aun'ue tambi+n es osible de9arlas egadas$ algo 'ue m"s tarde nos ahorrar" el tener 'ue intar una lnea de cable ara unirlas. hora 'ueremos añadir dos entradas x e y al es'uema. Selecciona el in de entrada ( )$ y sit2a los ins aba9o. ,ambi+n deberas emlaar un in de salida ( ) cerca de las salidas de la uerta 30. (3tra ve$ aun'ue se de9a algo de esacio entre la salida de la uerta 30 y los ines de salida$ t2 odras elegir egarlos directamente).
Si decides 'ue no te gusta el lugar en el 'ue has uesto alguno de los elementos$ entonces uedes ulsar el botón derecho del ratón$ o el i'uierdo mientras ulsas la tecla #trl$ sobre uno de los elementos ara ver un men2 deslegable. *lige Borrar ara deshacerte del elemento. ,ambi+n uedes reordenar las cosas utiliando la herramienta (
).
Paso 2: Añadiendo cables
&na ve 'ue tengas todos los comonentes necesarios en el lieno$ est"s listo ara ara emear a añadir el cableado. Selecciona la herramienta ara añadir cable ( ). *ntonces comiena a arrastrar el ratón$ con el botón i'uierdo ulsado$ desde un unto a otro del lieno y aarecer" un cable uniendo los dos untos. Los cables en Logisim deben ser horiontales o verticales. *n el e9emlo ara conectar el in de entrada suerior con las uertas ;3, y ;: se añaden tres cables diferentes.
Logisim conecta los cables a las uertas y entre ellos autom"ticamente. *stos incluye la señaliación de la cone/ión entre cables con un crculo 9usto sobre la intersección de los mismos. medida 'ue vayas dibu9ando cables$ odras encontrarte con algunos de color aul o gris. *l aul en Logisim indica 'ue el valor en ese unto es desconocido$ y el gris indica 'ue el cable no est" conectado a nada. *sto no es un roblema or el momento. %ero una ve 'ue tu circuito est+ acabado$ ning2n cable odr" estar ni aul ni gris. (Las atas desconectadas$ 'ue no se utilian$ de las uertas 30 y ;: ermanecer"n aules$ y as debe ser.) Si a2n tienes alg2n cable aul o gris cuando creas 'ue ya todo debera estar conectado$ entonces algo va mal. *s imortante 'ue se conecten los cables en los lugares adecuados. Logisim dibu9a e'ueños untos en los comonentes ara indicar dónde deberan conectarse los cables. medida 'ue vayas haciendo cone/iones ver"s 'ue los untos van cambiando del aul al verde claro u oscuro. &na ve 'ue tengas todos los cables conectados$ todos los cables insertados deberan mostrarse verde clarito u oscuro (casi negro).
Paso : Añadiendo teto
;o es necesario añadir comentarios al circuito ara 'ue funcione< ero si 'uieres enseñar tu circuito a alguien (como un rofesor)$ en ese caso oner algunas eti'uetas ayudar" a entender el roósito de las diferentes artes de tu circuito. Selecciona la herramienta de te/to ( ). %uedes ulsar en un in de entrada y escribir algo ara asociarle una eti'ueta. (*s me9or 'ue ulsar directamente sobre el comonente$ en este caso el in de entrada$ 'ue ulsar dónde 'uieres 'ue vaya el te/to. s la eti'ueta se mover" con el comonente.) %uedes hacer lo mismo con el in de salida. 3 tambi+n uedes simlemente ulsar y escribir en cual'uier otro lado ara añadir una eti'ueta all.
Paso ": #esteando el circuito
*l aso final es robar el circuito ara asegurarnos de 'ue realmente hace lo 'ue 'ueramos. Logisim ya est" simulando el circuito. *chemos un vistao donde est"bamos.
ay 'ue fi9arse en 'ue los ines de entrada contienen 7s al igual 'ue el in de salida. *sto significa 'ue el circuito tiene como salida un 7 cuando ambas entradas est"n a 7. hora ara seleccionar otra combinación de entrada$ selecciona la herramienta de cambio ( ) y emiea a cambiar los ines de entrada ulsando sobre ellos. #ada ve 'ue ulses sobre un in de entrada$ su valor conmutar". %or e9emlo$ odemos cambiar el valor del in de entrada inferior.
#uando cambies el valor de entrada$ Logisim te mostrar" 'ue valor via9a a trav+s de un cable int"ndolo de verde muy claro ara indicar un 8 o verde oscuro (casi negro) ara indicar un 7. dem"s uedes ver 'ue el valor de salida ha cambiado a 8.
asta a'u$ se han robado las dos rimeras filas de la tabla de verdad$ y las salidas (7 y 8) son concuerdan con lo deseado.
#ambiando los valores de entrada$ se ueden verificar las otras dos filas. Si todas concuerdan$ entonces esto est" listo ¡*l circuito funciona! %ara guardar el traba9o realiado$ uedes salvar o imrimir el circuito. *sto se uede llevar a cabo desde el men2 rchivo$ donde tambi+n se uede salir del rograma$ ero =%or 'u+ de9arlo ahora> hora 'ue has acabado con el tutorial uedes racticar con Logisim creando tus roios circuitos. Si 'uieres crear circuitos con caractersticas m"s sofisticadas$ entonces deberas navegar or el resto de la ayuda ara ver todo lo 'ue uedes hacer. Logisim es un rograma oderoso 'ue te ermite crear y robar circuitos de gran tamaño$ este tutorial aso a aso muestra lo m"s simle.
Libreras y tributos *n esta sección$ se e/aminar" como utiliar dos onas de la consola de Logisim el panel explorador y la tabla de atributos .
*l anel e/lorador La tabla de atributos tributos de herramienta
*l anel e/lorador Las Librer$as contienen comonentes 'ue se ueden usar en los circuitos. Se muestran como
caretas en el anel e/lorador< ara tener acceso a los comonentes de una librera$ tienes 'ue hacer doble clic sobre la careta corresondiente. :eba9o$ se ha abierto la librera de %uertas y se ha seleccionado la herramienta ;;: en ella. %uedes ver 'ue ahora 'ue Logisim est" rearado ara añadir uertas ;;: en el circuito.
Si te fi9as entre los elementos seleccionables en la librera de uertas$ te dar"s cuenta de 'ue no haba necesidad de desarrollar el circuito 630 'ue se creó en el tutorial. #uando creas un royecto$ se incluyen autom"ticamente las libreras de ?ase y de %uertas. %ero Logisim incluye otras libreras %ara cargar una$ vete al men2 de %royecto$ al submen2 #argar Librera$ y elige Librera @ncororada.... arecer" una ventana de di"logo 'ue te ermitir" elegir las libreras 'ue 'uieras añadir. Se eliges$ or e9emlo$ %le/ores entonces odr"s añadir a tus circuitos multile/ores$ demultile/ores y decodificadores. %uedes cargar tantas libreras como necesites. *n el submen2 de #argar Librera$ uedes ver 'ue Logisim tiene tres categoras de libreras. •
•
•
Librer$as incorporadas Built%in libraries son libreras 'ue son distribuidas con Logisim. Astas est"n documentadas en la Referencia de las Librerías . Librer$as Logisim son royectos hechos con Logisim y guardados en el disco. %uedes desarrollar un
con9unto de circuitos en un royecto (algo 'ue se e/lica en la sección de Subcircuitos de esta gua) y desu+s utiliar ese gruo de circuitos como una librera ara otros royectos. Librer$as &A' son libreras 'ue han sido desarrolladas en 4ava ero 'ue no se distribuyen con Logisim. %uedes descargarte libreras 'ue otros hayan escrito o uedes crear las tuyas roias tal y como se describe en la sección Libreras 40 de esta gua. :esarrollar una Librera 40 es mucho m"s comle9o 'ue desarrollar una librera Logisim$ ero los comonentes uenden ser mucho m"s elegantes$ incluyendo los atributos y la interacción con los usuarios. Las libreras incororadas (e/ceto la librera ?ase) fueron escritas utiliando la misma %@ 'ue las libreras 40 ueden utiliar$ as ellas demuestran el nivel de funcionalidad 'ue se uede conseguir con las libreras 40.
#uando se cargue una librera 40$ Logisim te edir" 'ue selecciones el archivo 40 corresondiente$ y luego te edir" 'ue escribas un nombre de clase. *ste nombre de clase debera ser roorcionado or el 'ue te hiciera llegar el archivo 40. %ara eliminar una librera$ selecciona :escargar Librera... desde el men2 de %royecto. Logisim te roteger" de un intento de eliminación de una librera 'ue contenga comonentes utiliados en alg2n circuito$ 'ue aarecan la barra de herramientas o 'ue est+n asociados a alg2n botón del ratón. &na librera t+cnicamente contiene herramientas no comonentes. s$ en la librera ?ase encontrar"s la erramienta de #ambio ( )$ la erramienta de Selección ( )$ y otras herramientas 'ue no se corresonden directamente con comonentes individuales. La mayor arte de las libreras$ sin embargo$ contienen sólo herramientas ara añadir comonentes individuales todas las libreras incororadas e/ceto la librera de ?ase son de este tio.
La tabla de atributos 1uchos de comonentes tienen atributos$ 'ue no son m"s 'ue roiedades ara configurar el comortamiento o la forma en la 'ue aarece el comonente. La tabla de atributos sirve ara ver y mostrar los valores de los atributos de un comonente.
%ara seleccionar los atributos del comonente 'ue se 'uiere ver$ ha clicB sobre el comonente utiliando la herramienta de Selección ( ). (,ambi+n uedes ulsar el botón derecho del ratón$ o el i'uierdo mientras ulsas #trl$ y elegir 1ostrar tributos en el men2 deslegable. dem"s$ maniulando el comonente con la herramienta de #ambio ( mostrar"n los atributos de ese comonente.)
) o con la herramienta de ,e/to (
) tambi+n se
La catura de antalla de aba9o muestra cómo aarecen las cosas al seleccionar el inut suerior del circuito 630 y deslaar el cuadro de los atributos hacia aba9o ara ver el atributo de la Cuente del *ti'uetado.
C9ate en el la lnea oval aul claro 'ue rodea al in de entrada$ se llama aureola y incica de 'ue comonente son los atributos 'ue se est"n mostrando. %ara modificar el valor de un atributo$ ha clic simlemente en el valor. La interfa ara modificar el atributo deender" del tio de atributo 'ue est+s cambiando< en el caso del atributo de la Cuente del *ti'uetado$ aarecer" un cuadro de di"logo ara seleccionar el nuevo tio de fuente< ero algunos atributos (como la *ti'ueta) te ermitir"n editar su valor como un camo de te/to$ mientras 'ue otros (como la %osición de la *ti'ueta) un men2 deslegable en el 'ue seleccionar el valor corresondiente. #ada comonente tiene un con9unto de atributos diferentes< ara saber lo 'ue significan$ uedes consultar la documentación adecuada en la 0eferencia de las Libreras. lg2n valor de los atributos de alg2n comonente no se uede modificar. &n e9emlo es el atributo ,amaño de %uerta de la uerta ;: l crear una uerta ;:$ su tamaño est" refi9ado. Si 'uieres crear una uerta ;: de un tamaño diferente$ entonces necesitar"s cambiar los atributos de la herramienta (del elemento de la librera)$ algo 'ue comentaremos en el siguiente aso.
tributos de herramienta ,oda herramienta 'ue ermita añadir comonentes al circuito tiene tambi+n un con9unto de atributos$ 'ue son alicados a los comonentes 'ue crea la herramienta$ aun'ue los atributos de los comonentes uedan cambiar m"s tarde sin 'ue esto afecte a los atributos de la herramienta. #uando se selecciona una herramienta$ Logisim cambiar" la tabla de atributos ara mostrar los atributos de la herramienta. %or e9emlo$ suongamos 'ue se 'uiere crear una uerta ;: m"s e'ueña. Da hemos visto 'ue el atributo de ,amaño de %uerta de una uerta ;: no es editable. %ero el atributo de ,amaño de %uerta es editable ara la herramienta de uerta ;: %ara ver y editar este atributo$ ha clic en el icono corresondiente de la barra de herramientas (o en el anel e/lorador)$ y cambia su atributo ,amaño de %uerta.
hora se ueden borrar las uertas ;: e/istentes y sustituirlas or dos nuevas uertas ;:$ m"s estrechas$ en su lugar. *n esta ocasión las uertas ser"n estrechas. (Si eliges sustituir el n2mero de entradas a E$ la uerta ;: no tendra rolongación vertical en el lado i'uierdo de la uerta. %ero en ese caso tambi+n tendras 'ue recablear el circuito ara 'ue los cables hiciesen cone/ión en el sitio adecuado de la arte i'uierda de la uerta.)
%ara algunas herramientas$ el icono reresenta alguno de sus atributos. &n e9emlo es la herramienta del %in$ cuyo icono est" orientado de la misma forma 'ue señala su atributo. Las herramientas de la barra de herramientas tienen un con9unto de atributos guardado aarte del 'ue tienen las corresondientes herramientas en el anel e/lorador. s$ aun'ue se cambie la herramienta ;: de la barra de herramientas ara crear uertas ;: estrechas$ la herramienta ;: del anel e/lorador continuar" creando uertas ;: anchas a no ser 'ue cambies tambi+n sus atributos. :e hecho$ el in de entrada y el in de salida en la barra de herramientas or defecto son instancias de la herramienta %in$ de la librera ?ase$ ero sus tres atributos son diferentes. *l icono ara la herramienta %in est" dibu9ado como un crculo o un cuadrado deendiendo del valor del su atributo =Salida> Logisim adem"s roorciona una forma sencilla de cambiar el atributo de 3rientación 'ue controla la dirección en la 'ue los comonentes se orientan %ulsando las teclas de las flechas mientras una herramienta est" seleccionada cambia autom"ticamente la dirección del comonente.
Subcircuitos
medida 'ue construyas circuitos m"s y m"s comle9os$ 'uerr"s desarrollar circuitos m"s sencillos 'ue a su ve uedan ser utiliados en circuitos de mayor tamaño. *n Logisim este tio de circuitos$ 'ue ueden ser utiliados en otros de mayor tamaño$ reciben el nombre de subcircuitos. Si est"s familiariado con la rogramación inform"tica$ entiendes lo 'ue es el conceto de subrograma (algo 'ue recibe el nombre de subrutina$ función$ m+todo o rocedimiento seg2n el rograma) . *l conceto de subcircuito es an"logo al conceto en la rogramación inform"tica$ y es utiliado con los mismos roósitos %ara searar un gran traba9o en e'ueñas artes m"s abordables or searado$ ara ahorrarse el esfuero de definir la misma cosa varias veces$ y ara facilitar la b2s'ueda de errores. #reando circuitos &sando subcircuitos :euración de subcircuitos Libreras de Logisim
#reando circuitos #ual'uier royecto de Logisim es tambi+n una librera de circuitos. *n su forma m"s simle$ cada royecto solamente osee un circuito (llamado FmainF$ rincial$ or defecto)$ ero es sencillo añadir m"s Seleccionar ñadir #ircuito... en el men2 de %royecto$ y escribir un nombre ara el nuevo circuito 'ue 'uieres crear. Suóngase 'ue se 'uiere construir un multile/or 8/G con el nombre F8/G 1&6.F :esu+s de añadir el circuito$ Logisim tendr" este asecto.
*n el anel e/lorador$ ahora uedes ver 'ue el royecto contiene dos circuitos$ FmainF$ y F8/G 1&6.F Logisim dibu9a una lua sobre el circuito 'ue est" siendo mostrado< el nombre del circuito en uso tambi+n aarece en la barra suerior 'ue contiene el ttulo de la ventana. :esu+s de editar el circuito ara obtener un multile/or 8/G$ se uede utiliar el siguiente circuito.
&sando subcircuitos hora suongamos 'ue 'ueremos construir un multile/or G/H a artir del multile/or 8/G. %or suuesto$ se creara rimero un nuevo circuito$ el cual se llamara FG/H 1&6.F %ara añadir los multile/ores 8/G in el circuito$ se hace un sólo clic sobre el circuito 8/G 1&6 en el anel e/lorador ara seleccionarlo como una herramienta$ y osteriormente se ueden añadir coias del mismo$ reresentadas como ca9as$ haciendo clic sobre el lieno.
Si haces doble clic sobre el circuito 8/G 1&6 en el anel e/lorador$ entonces el lieno cambiar" su contenido ara asar a editar el circuito 8/G 1&6. :esu+s de crear el circuito$ estaremos en una situación como la siguiente.
%ara el multile/or G/H se usan tres coias del multile/or 8/G$ cada una dibu9ada como una ca9a con sus ines de entrada5salida a lo largo de su borde. Los ines de la ca9a se corresonden con los ines de entrada (inuts) y con los ines de salida (oututs) en el circuito del multile/or 8/G. Los dos ines en el lado i'uierdo (oeste) de la ca9a se corresonden con los dos ines 'ue est"n orientados al este (atributo de orientación en la tabla de atributos de los ines de entrada)< el in de la arte derecha (este) de la ca9a se corresonde con el in 'ue est" orientado al oeste en el circuito 8/G 1&6 ('ue en este caso es un in de salida)< y el in de la arte de aba9o (sur) de la ca9a se corresonde con el in 'ue est" orientado al norte en el circuito 8/G 1&6. *l orden de los dos ines en la arte i'uierda de la ca9a se corresonde con la misma disosición de arriba a aba9o 'ue se aarece en el subcircuito. (Si hubiese varios ines en la arte suerior (norte) o inferior (sur) de la ca9a$ su orden se corresondera con el mismo 'ue est+ resente en el subcircuito de i'uierda a derecha.) Si los ines del subcircuito tienen eti'uetas asociadas$ entonces Logisim mostrar" esas eti'uetas en un teto de aclaraci(n (tip) 'ue no es m"s 'ue una ca9a de te/to temoral 'ue se muestra cuando el untero del ratón se detiene lo suficiente sobre el elemento 'ue interese$ en este caso sobre el uno de los ines (Si encuentras molestos estos mensa9es de aclaración$ de ayuda$ uedes deshabilitarlos desde la %estaña del Lieno en la ventana de las ociones de royecto.)
3tros comonentes tambi+n mostrar"n las aclaraciones (tis) %or e9emlo$ ara algunos de los ines de la librera biestables$ si se detiene el ratón un rato sobre alguno de los ines se e/licar" ara 'ue sirve.
,odos los ines de un circuito tienen 'ue ser de entrada o de salida. lgunos de los chis manufacturados tienen ines 'ue ueden ser de entrada o de salida deendiendo de la situación$ no odr"s utiliar ese tio de chis con Logisim. Logisim mantendr" una información de estado diferente ara todos los subcircuitos 'ue aarecan en un circuito. %or e9emlo$ si un circuito contiene un biestable$ y ese circuito est" siendo usado como subcircuito varias veces$ entonces cada biestable del subcircuito tendr" su roio valor cuando se simule el circuito de mayor tamaño. hora 'ue se ha definido el multile/or G/H$ una ve m"s es osible utiliarlo en otros circuitos. Logisim no imone lmites a la anidación de circuitos - aun'ue ¡no ermitir" anidar un circuito en s mismo! )ota: ;o e/iste ning2n roblema en editar un circuito 'ue est+ siendo utiliado como
subcircuito$ de hecho$ esto es algo bastante com2n. Sin embargo$ hay 'ue ser conscientes de 'ue cual'uier cambio a los ines de un circuito (añadiendo$ eliminando$ o movi+ndolos) tambi+n modificar" los ines en los circuitos 'ue lo contengan. s$ si cambias alg2n in en un circuito$ tambi+n tendr"s 'ue editar todos los circuitos 'ue lo usen como subcircuito.
:eurando subcircuitos medida 'ue vayas robando circuitos de mayor tamaño$ robablemente encontrar"s errores. %ara concretar cu"l es el roblema$ echar un vistao a lo 'ue est" ocurriendo con los subcircuitos uede ayudar. %uedes hacer esto desde la vista del circuito total si haces saltar el men2 deslegable del subcircuito (recuerda ha clic con el botón derecho del ratón sobre el comonente o clic con el botón i'uierdo mientras ulsas la tecla #trl). Luego selecciona la oción Iista.
:esu+s de seleccionar esto$ la vista de la iarra$ lieno$ se cambiar" or la del subcircuito.
C9ate en 'ue los valores de los ines del subcircuito concuerdan con los valores 'ue le est"n llegando desde el circuito 'ue lo contiene. 1ientras 'ue en el subcircuito uedes cambiarlo como 'uieras< cual'uier cambio a los valores de los ins ser" roagado al circuito contenedor. (Si intentas modificar el valor de un in utiliando la erramienta de #ambio$ Logisim lanar" un cuadro de di"logo ara reguntarte si 'uieres crear un nuevo estado o no< resonder 'ue S (cetar) searar" el estado visto en el subcircuito del visto desde el circuito contenedor$ mientras 'ue resonder 'ue ;o (#ancelar) no ermitir" el cambio de valor del in.)
Libreras de Logisim ,odo royecto de Logisim es de forma autom"tica una librera 'ue uede ser cargada en otros royectos de Logisim. Lo 2nico 'ue tienes 'ue hacer es salvar el royecto en un archivo y cargar la librera desde otro royecto. ,odos los circuitos definidos en el rimer royecto estar"n entonces disonibles como subcircuitos ara el segundo royecto. *sta caracterstica te ermite reutiliar comonentes en varios royectos y comartir tus comonentes favoritos con tus amigos (o estudiantes). #ada royecto tiene un circuito FmainF (rincial) asignado$ algo 'ue uede cambiar seleccionando el circuito 'ue est+ abierto como rincial utiliando la oción Seleccionar #omo #ircuito %rincial en el men2 de %royecto. *l circuito rincial es el rimero 'ue se muestra cuando abres el royecto. *l nombre or defecto del circuito rincial (FmainF) no tiene imortancia y uedes cambiarle el nombre o borrar dicho circuito si as lo deseas. #on una Librera de Logisim 'ue est+ cargada$ uedes ver circuitos y modificar sus estados$ ero Logisim no te de9ar" modificarlos. Si 'uieres modificar un circuito 'ue est+ en una librera de Logisim 'ue est+ cargada$ tendr"s 'ue abrirlo de forma searada con Logisim. ,an ronto como lo salves$ el otro royecto debera cargar autom"ticamente la versión modificada de inmediato$ ero si esto no ocurre$ uedes hacer clic con el botón derecho sobre la careta de la librera corresondiente en el anel e/lorador y seleccionar 'ecargar Librer$a.
aces de cables *n los circuitos simles de Logisim$ la mayora de los cables llevan sólo un bit< ero Logisim tambi+n te ermite crear cables 'ue contienen varios bits. #reando haces Searadores #olores de los cables
#reando cables Los ines de entrada y salida de los comonentes tienen un n2mero de bits asociado. 1uchos de los comonentes incororados en Logisim oseen atributos 'ue ermiten la elección del n2mero de bits de los ines de entrada y salida. La catura de antalla de aba9o muestra un circuito 'ue realia el ;: de dos cables de entrada 'ue tienen tres bits< cada in de entrada tiene su atributo llamado ;2mero :e ?its configurado ara recibir tres bits$ como se indica en los atributos de la uerta ;: mostrada.
ay 'ue fi9arse en 'ue los ines de entrada y de salida tienen tres bits y en 'ue los bits del in de salida son el ;: lógico de sus corresondientes en los ines de entrada. *n los comonentes todos las entradas y las salidas deben de tener definidos su n2mero de bits. Sin embargo$ el n2mero de bits de los cables no tiene 'ue estar definido$ se adata al n2mero de bits del in al 'ue es conectado. Si un cable conecta dos comonentes 'ue est"n utiliando un n2mero de bits diferente$ Logisim mostrar" un error de Fncho incomatibleF e indicar" los untos donde se ocasiona el roblema en naran9a. :eba9o$ se ha cambiado el atributo ;2mero de ?its del in de salida a 8 y Logisim muestra un error indicando 'ue no uede conectar un unto de un bit con uno de tres.
Los cables 'ue conectan untos incomatibles (intados de color naran9a) no tienen ning2n valor. *s f"cil ver el valor 'ue contiene un cable de un sólo bits or'ue Logisim inta el cable verde claro u oscuro deendiendo de su valor. Logisim no muestra los valores en el caso de cables multibit. Astos ser"n simlemente negros. Sin embargo odr"s consultar el valor de un cable utiliando la herramienta de #ambio (
) sobre +l.
*ste m+todo de consulta es muy 2til cuando se deuran circuitos 'ue utilicen haces de circuitos.
Searadores #uando traba9es con valores multibit$ con frecuencia 'uerr"s dirigir algunos de esos bits a sitios difere diferente ntes. s. La herr herram amien ienta ta Sea Searad rador or (
) te lo erm ermite ite..
%or e9emlo$ suón 'ue se 'uiere construir un circuito con un in de entrada de cuatro bits y se reten retende de obten obtener er el roduc roducto to lógico lógico de sus dos bits bits m"s signi signific ficati ativo voss con con sus dos bits menos menos significativos. abr" un valor de entrada de cuatro bits el cual ser" necesario dividir en dos valores de dos bits cada uno. %ara hacer esto en el circuito de aba9o$ se ha utiliado un Searador.
*n este e9emlo$ el searador divide un valor de entrada en varios valores de salida. %ero los searadores tambi+n ueden realiar la oeración contraria$ 9untar varios valores en uno sólo. :e hecho$ no son direccionales %ueden ser utiliados en un sentido y m"s tarde en otro$ e incluso en ambos sentidos al mismo tiemo$ como en el e9emlo de aba9o en el 'ue dos de los valores tienen su in de entrada a la derecha mientras 'ue el valor del medio lo tiene a la i'uierda.
La clav clavee ara ara ente entend nder er los los sea seara rado dore ress est" est" en sus sus atri atribu buto toss. :e ahor ahoraa en adel adelan ante te$$ el t+rmino extremo separado har" referencia a uno de los m2ltiles cables de un lado$ mientras 'ue el t+rmino extremo combinado har" referencia al cable simle del lado contrario. •
•
•
•
*l atributo de Orientaci(n indica la osición de la arte m2ltile con reseto a la simle. #uando el searador est+ en el lieno ya no odr" cambiarse. *l atributo *an Out esecifi esecifica ca el n2mero n2mero de bifurcaci bifurcaciones ones de la arte m2ltile. m2ltile. *sto tamoco tamoco odr" odr" cambiarse. *l atributo del )+mero de Bits indica el n2mero de bits del e/tremo simle. Bit x asocia *l atributo Bit x asocia cada uno de los bits con una bifurcación. Si varios bits se corresonden con la misma bifurcación$ entonces su orden relativo ser" el mismo 'ue el orden relativo 'ue tengan en el e/tremo simle del searador. Los searadores de Logisim no ueden tener un bit del e/tremo simle en m"s de una bifurcación.
ay 'ue fi9arse en 'ue cual'uier cambio a los atributos *an Out o )+mero de Bits resetear" todos los atribut atributos os Bit de tal forma 'ue los bits del e/tremo simle del searador 'uedar"n reartidos e'uitativamente entre las bifurcaciones.
#olores de los cables *n este unto se e/licar" el significado los colores 'ue uede adotar un cable en Logisim. *l siguiente circuito los muestra todos a la ve.
•
,ris: *l n2mero de bits del cable es desconocido. *sto ocurre or'ue el cable a2n no est" asociado
con con la entr entrad adaa o sali salida da de ning ning2n 2n com comon onen ente te.. (,o (,odas das las las entr entrad adas as o sali salida dass de todo todoss los los comonentes tienen un n2mero de bits definido.) •
A-ul: *l cable es de un sólo bit ero su valor es desconocido. *n el e9emlo de arriba$ esto ocurre
or'ue la entrada de la uerta ;3, no est" determinada y as tamoco lo estar" su salida. •
.erde oscuro: *l cable sólo contiene un bit y su valor es 7.
•
.erde claro: *l cable sólo contiene un bit y su valor es 8.
•
)egro: *l cable contiene varios bits. %uede 'ue todos o algunos de los bits no est+n esecificados.
•
'o/o: *l cable contiene un valor erróneo. *sto normalmente asa or'ue hay valores conflictivos en el
cable. (La otra osibilidad sera 'ue el comonente de una librera estuviese rogramado ara dar un valor erróneo or alg2n motivo< en las libreras incororadas de Logisim los valores de error sólo se dan cuando roagan otros valores de error) *n el e9emlo de arriba$ se tiene una in de entrada lantando un 7 en el cable y otro in de entrada lantando un 8 lo 'ue causa un conflicto. Los cables de m"s de un bit se mostrar"n ro9os en cuanto uno de sus bits tenga un valor erróneo. •
)aran/a: Los comonentes asociados al cable no concuerdan en el n2mero de bits. &n cable naran9a
es como si estuviese cortado ;o lleva transmite valor alguno entre los comonentes 'ue conecta.
n"lisis combinacional
,odo circuito ertenece a una de las siguientes dos categoras *n un circuito combinacional$ todas las salid salidas as del circui circuito to son combi combinac nación ión de valor valores es actual actualia iados dos de las entrad entradas$ as$ mientr mientras as 'ue en circuito secuencial secuencial$ algu un circuito alguna nass de las las sali salida dass dee deend nder er"n "n de valo valore ress asa asado doss de las las entr entrad adas as (secuencia de las entradas a trav+s del tiemo). La categora de los circuitos combinacionales es la m"s simle de las dos. ay tres t+cnicas 'ue son las m"s com2nmente utiliadas ara reresentar el comortamiento de estos circuitos. circuitos lógicos e/resiones booleanas$ 'ue ermiten hacer una reresentación algebraica de cómo funciona el circuito • •
tablas de verdad$ 'ue muestran las salidas ara todas las combinaciones de entrada *l módulo del Análisis Combinacional de Logisim te ermite ir de cual'uiera de estas reresentaciones a las otras. *s una forma cómoda de crear circuitos a artir de un uñado de bits de entrada y salida. •
*meando el n"lisis #ombinacional *ditando la tabla de verdad #reando e/resiones Jenerando un circuito
*meando el n"lisis #ombinacional la mayor arte del módulo del n"lisis #ombinacional se accede a trav+s de una ventana simle con ese nombre 'ue te ermite ver tablas de verdad y e/resiones booleanas. La ventana se uede abrir de dos maneras. A travs del men+ de .entana
Selecciona n"lisis combinacional$ y la ventana de n"lisis #ombinacional aarecer". Si no has accedido a la ventana antes$ la ventana 'ue has abierto no reresentar" ning2n circuito. Sólo un an"lisis combinacional e/iste en Logisim$ no imorta cu"ntos royectos est+n abiertos. ;o hay forma de tener abiertas m"s de una ventana de an"lisis al mismo tiemo. A travs del men+ de Proecto
:esde una ventana en la 'ue tengas est+s editando un circuito$ uedes indicar a Logisim 'ue analice el circuito en uso seleccionando la oción naliar #ircuito en el men2 de %royecto. ntes de abrir la ventana$ Logisim calcula las e/resiones ?ooleanas y la tabla de verdad corresondientes al circuito ara 'ue las veas. %ara 'ue el an"lisis vaya bien$ cada entrada debe estar ligada a un in de entrada$ y cada salida con un in de salida. Logisim solamente analiar" circuitos con K bits de cada tio (de entrada y salida) como m"/imo. *n caso contrario se mostrar" un mensa9e de error y la ventana no se abrir". l calcular las e/resiones booleanas corresondientes a un circuito$ Logisim intentar" en rimer lugar determinar las e/resiones booleanas corresondientes a las uertas del circuito. %ero si el circuito utilia alg2n circuito 'ue no sea una uerta (como un multile/or)$ o si el circuito tiene m"s de 877 niveles de rofundidad (algo imrobable)$ entonces saltar" un cuadro de di"logo dici+ndote 'ue no ha sido osible derivar las e/resiones booleanas$ y Logisim derivar" las e/resiones bas"ndose en la tabla de verdad$ lo 'ue tendr" lugar leyendo las salidas ara todas las combinaciones de entradas. :esu+s de analiar un circuito$ no hay relación entre la ventana de n"lisis #ombinacional y el circuito. s$ los cambios 'ue se le hagan al circuito no estar"n refle9ados en el circuito$ ni tamoco la oeración contraria. ;aturalmente$ uedes analiar un circuito otra ve< y$ como veremos m"s tarde$ se uede sobrescribir un circuito con otro circuito 'ue corresonda con lo 'ue aareca en la ventana de n"lisis #ombinacional. Limitaciones
Logisim no intentar" la detección de circuitos secuenciales Si intentas analiar un circuito secuencial$ se calcular" la tabla de verdad y las e/resiones booleanas corresondientes$ aun'ue no determinar"n el comortamiento del circuito con e/actitud. (:e hecho$ detectar circuitos secuenciales es robablemente imosible$ ya 'ue se tendra 'ue abordar el Problema alting. ;aturalmente$ odras eserar 'ue Logisim hiciese alg2n intento$ como buscar biestables o ciclos en los cables$ ero no lo hace.) s$ el sistema de n"lisis #ombinacional no debera usarse siemre ¡salo sólo cuando el circuito 'ue est+s analiando sea combinacional de forma unvoca! Logisim har" un cambio$ tal ve ineserado$ al circuito original *l sistema de n"lisis #ombinacional necesita 'ue todas las entradas y salidas tengan nombre 2nico de acuerdo con las reglas ara los identificadores en 4ava. (1"s o menos$ cada car"cter debe ser una letra o un dgito$ y el rimer caracter tiene 'ue ser una letra. ¡Los esacios no estar"n ermitidos!) Logisim intentar" utiliar las eti'uetas 'ue tengan los ines$ y luego usar" nombres de una lista or defecto si las eti'uetas no e/isten. Si alguna de las eti'uetas no cumle la regla de los identificadores en 4ava$ entonces Logisim intentar" sacar un nombre v"lido a artir de la eti'ueta siemre 'ue sea osible. *l orden de las entradas en la tabla de verdad concordar" con el orden en el circuito original de arriba a aba9o$ romiendo los nudos de i'uierda a derecha. (Lo mismo ocurrir" ara las salidas.)
*ditando la tabla de verdad
l abrir la ventana de n"lisis #ombinacional$ te encontrar"s 'ue contiene cinco estañas.
*sta "gina describe las tres rimeras estañas$ *ntradas$ Salidas y ,abla. La ró/ima "gina de la gua describe las otras dos estañas$ */resión y 1inimiado. Las pestañas 3ntradas 4alidas
La estaña de *ntradas te ermite ver y editar la lista de entradas. %ara añadir nuevas entradas$ escribe un nombre en el camo situado en la arte ba9a del anel y ha clic en ñadir. ,ambi+n uedes darle otro nombre a una entrada 'ue ya e/ista$ seleccion"ndola en la lista$ ara desu+s escribir el nuevo nombre y luego hacer clic en #ambiar ;ombre. %ara eliminar una entrada$ selecciona la entrada en la lista y simlemente ulsa *liminar. ,ambi+n uedes reordenar las entradas (algo 'ue afecta al orden de las columnas en la tabla de verdad y en el circuito generado) seleccionando una entrada y usando los botones 1over rriba y 1over ba9o. ,odas las acciones afectan inmediatamente a la tabla de verdad. La estaña de Salidas funciona e/actamente de la misma forma 'ue la estaña de *ntradas$ e/ceto 'ue naturalmente la lista utiliada ser" la de las salidas. La pestaña #abla
*l 2nico elemento de la estaña ,abla es la tabla de verdad$ un diagrama en el orden convencional$ con las entradas en las columnas de la i'uierda y las salidas en las columnas de la derecha. %uedes editar los valores 'ue aarecen en las columnas de salida haciendo clic en los valores corresondientes. Los valores cambiar"n entre 7$ 8 y x ('ue reresenta Fno imortaF$ es decir$ 'ue esa variable uede tomar cual'uier valor). #omo veremos en el siguiente aartado$ los valores 'ue no imortan aortar"n algo de fle/ibilidad a la hora de calcular las e/resiones minimiadas. ,ambi+n se uede navegar y editar la tabla de verdad usando el teclado. D uedes coiar y egar valores usando el ortaaeles. *l ortaaeles se uede transferir a cual'uier alicación 'ue soorte te/to delimitado or tabulación (como or e9emlo una ho9a de c"lculo). Si la tabla de verdad est" basada en un circuito e/istente$ uede 'ue veas cuadrados rosas en las columnas de las salidas con el smbolo F!!F en ellas. Astas corresonden a errores ocurridos al calcular el valor de salida ara esa fila - o el circuito areca estar oscilando$ o el valor de salida era erróneo (lo 'ue sera marcado or Logisim en el circuito con un cable ro9o). l sostener el ratón sobre la salida con el roblema se debera mostrar un te/to de aclaración comentando el tio de error. &na ve 'ue hagas clic sobre la salida con el error (sobre el smbolo F!!F)$ entrar"s en el ciclo 7-8- x < y ya no habr" forma de volver a la situación anterior.
#reando e/resiones
%ara cada variable de salida$ la ventana de n"lisis #ombinacional mantiene dos estructuras - la columna relevante de la tabla de verdad y una e/resión booleana - esecificando la relación de cada salida con su entrada. %uedes editar tanto la tabla de verdad como la e/resión< la 'ue no hayas tocado ser" modificada autom"ticamente de forma 'ue no se ierda la consistencia entre ambas. #omo se ver" en el siguiente aartado$ las e/resiones booleanas son esecialmente 2tiles or'ue la ventana de n"lisis #ombinacional las utiliar" cuando se le demande la construcción de un circuito corresondiente con el estado actual. %uedes ver y editar las e/resiones utiliando las dos 2ltimas estañas de la ventana$ la estaña de */resión y la estaña de 1inimiado. La pestaña de 3presi(n
La estaña de */resión te ermite ver y editar la e/resión actualiada 'ue est+ asociada con cada variable de salida. %uedes seleccionar la e/resión de la salida 'ue 'uieres ver y editar usando el selector FSalidaF. 4usto deba9o el selector aarecer" la e/resión definida en una articular notación$ donde un 30 est" reresentado como una suma$ un ;: est" reresentado or un roducto$ y un ;3, est" reresentado or una barra horiontal encima de la arte a la 'ue afecta. :eba9o estar" la misma e/resión ero definida con caracteres S#@@. 'u$ un ;3, est" reresentado con el gurruñito (MNM). %uedes editar la e/resión en el anel de te/to y hacer clicB en el botón de @ntro ara 'ue el cambio tenga efecto< haciendo esto tambi+n actualiar"s la tabla de verdad en función de la nueva e/resión. *l botón de Limiar vaca el anel de te/to$ y el botón de 0ecargar restaura en el anel la e/resión actual. ay 'ue fi9arse en 'ue la e/resión 'ue hayas editado se erder" si m"s tarde modificas la tabla de verdad. dem"s de la multilicación y la suma 'ue reresentan al ;: y al 30$ una e/resión uede contener cual'uiera de los oeradores lógicos de 4ava$ as como las alabras 'ue las reresentan. highest precedence
lowest precedence
~ !
NOT
(none) & &&
AND
^
XOR
+ | ||
OR
Los siguientes e9emlos son todas reresentaciones v"lidas de la misma e/resión. ,ambi+n odras meclar los oeradores.
~a (b + c) !a && (b || c) NOT a AND (b OR c)
*n general$ colocar ar+ntesis en una secuencia de ;:s (o 30s o 630s) no sirve ara nada. (:e hecho$ cuando Logisim cree un circuito a artir de una e/resión ignorar" dichos ar+ntesis). La pestaña 5inimi-ado
La 2ltima estaña muestra una e/resión de suma de roductos 'ue se corresonde con una columna de la tabla de verdad. Se uede seleccionar cual es la e/resión minimiada de salida 'ue se 'uiere consultar con el selector de arriba (FSalidaF). Si hay cuatro entradas o menos$ se mostrar" deba9o del selector la tabla de Oarnaugh corresondiente a la variable seleccionada. %uedes hacer clic en la tabla de Barnaugh ara cambiar los valores corresondientes de la tabla de verdad. La tabla de Oarnaugh tambi+n mostrar" los t+rminos seleccionados ara la e/resión minimiada con unos rect"ngulos redondeados de colores. :eba9o estar" la e/resión minimiada 'ue se corresonda con la tabla$ con el mismo formato 'ue en la estaña de e/resiones. Si hay m"s de cuatro entradas$ la tabla de Oarnaugh no aarecer"$ ero aun as se calcular" la e/resión minimiada. (Logisim utilia el algoritmo de Puine-1c #lusBey ara calcular la e/resión minimiada. *sto es e'uivalente a la tabla de Oarnaugh$ ero se uede alicar indeendientemente de n2mero de variables de entrada.) *l botón de Ci9ar #omo */resión te ermite seleccionar la e/resión minimiada como la e/resión 'ue le corresonde a la variable. *sto generalmente no ser" necesario$ ya 'ue editar la tabla de verdad lleva consigo utiliar la e/resión ara la columna modificada< ero si lo 'ue has introducido una e/resión a trav+s de la estaña de */resión$ esta uede ser una buena oción ara encontrar y cambiarse a la e/resión minimiada.
Jenerando un circuito *l botón de #rear #ircuito construir" un circuito cuyas uertas se corresondan con las 2ltimas e/resiones escogidas ara cada salida. Las entradas y salidas del circuito se mostrar"n en el mismo orden de arriba a aba9o tal y como aarecan en las estañas de *ntradas y Salidas. *l circuito definido or Logisim tendr" un buen asecto< y$ de hecho$ una de las alicaciones del n"lisis #ombinacional de Logisim es me9orar los dibu9os de los circuitos 'ue hayan sido definidos de una forma$ digamos$
desordenada. un as$ con el formato autom"tico no se mostrar"n los detalles estructurales 'ue mostrara un circuito dibu9ado manualmente. #uando haces clic en el botón de #rear #ircuito$ aarecer" un cuadro de di"logo 'ue te reguntar" ara 'u+ royecto es el circuito y 'ue nombre 'uieres 'ue reciba. Si escribes el nombre de un circuito 'ue ya e/ista$ entonces ese circuito ser" reemlaado (aun'ue antes de 'ue esto ocurra Logisim te reguntar" si realmente 'uieres 'ue esto suceda.) *l cuadro de di"logo 'ue salta al ulsar #rear #ircuito incluye dos ociones Sólo %uertas :e :os *ntradas$ oción 'ue esecifica 'ue todas las uertas utiliadas sean de 2nicamente dos entradas (or suuesto$ las uertas ;3, constituir"n una e/ceción)< y Sólo %uertas ;;:$ oción 'ue todas las uertas 'ue se utilicen sean ;;:. %uedes seleccionar ambas ociones si lo 'ue 'uieres es 'ue sólo de usen uertas ;;: con dos entradas. Logisim no uede construir un circuito con sólo uertas ;;: a artir de una e/resión 'ue contenga oeradores 630. *sta oción estar" desactivada en el caso de 'ue alguna de las salidas contenga 630s.
0eferencia del 1en2 *sta sección e/lica los seis men2s 'ue acomañan a cual'uier ventana rincial de Logisim. *l men2 rchivo *l men2 *ditar *l men2 %royecto *l men2 Simular Los men2s Ientana y yuda
1uchos elementos de los men2s est"n relacionados con un royecto 'ue est+ abierto. %ero algunas ventanas de Logisim (en concreto la ventana de n"lisis #ombinacional y la ventana de %referencias de licación) no est"n asociadas con royectos. %ara estas ventanas el men2 de %royecto estar" desactivado.
*l men2 rchivo )uevo
bre un nuevo royecto en una ventana nueva. *l royecto ser" inicialmente una coia de la lantilla seleccionada or defecto. Abrir666
bre un archivo e/istente como un royecto en una ventana nueva. %uedes abrir archivos salvados en una Iersión 8.7 de Logisim$ ero aun'ue odra haber algunos roblemas de conversión ara circuitos comle9os. Logisim 8.7 calcula las osiciones de los subcircuitos de una forma distinta< y$ en consecuencia$ tendr"s recorrer todos los circuitos y colocar los subcircuitos en sus osiciones adecuadas. 7errar
#ierra todas las ventanas asociadas con el royecto 'ue se est" viendo. ,uardar
Juarda el royecto 'ue se est" viendo$ sobrescribiendo lo 'ue estaba en el archivo corresondiente con anterioridad. ,uardar 7omo666
Juarda el royecto 'ue se est" viendo$ reguntando al usuario en 'u+ archivo lo 'uiere guardar.
3portar 7omo ,8*666
#rea una imagen o unas im"genes J@C 'ue se corresondan con los circuitos. ba9o se describe el cuadro de di"logo ara la configuración. 8mprimir666
1anda el circuito o los circuitos a una imresora. ba9o se describe el cuadro de di"logo ara la configuración. Pre9erencias666
1uestra la ventana con las referencias de alicación. (*n sistemas 1ac 3S$ esto aarecer" en el men2 Logisim.) 4alir
#ierra todos los royectos abiertos y sale de Logisim. (*n sistemas 1ac 3S$ esto aarecer" en el men2 Logisim.)
7on9igurando 3portar #uando seleccionas */ortar #omo J@C...$ Logisim muestra un cuadro de di"logo con tres ociones. •
• •
7ircuitos: &na lista en la 'ue uedes seleccionar los circuitos (uno o m"s) 'ue deberan ser
e/ortados a achivos J@C. (Los circuitos vacos no se mostrar"n ara elegir.) *actor de 3scala: %uedes escalar las im"genes con esta barra de deslaamiento. .ista de 8mpresi(n: Si utiliar la F vista de imresiónF al e/ortar los circuitos.
:esu+s de hacer clic en 3O$ Logisim mostrar" un cuadro de di"logo ara la selección de archivo. Si has seleccionado un circuito$ selecciona el archivo en donde 'uieres guardar el J@C. Si seleccionaste varios circuitos$ selecciona un directorio en el 'ue guardar los archivos< Logisim nombrar" las im"genes en función del nombre de los circuitos (or e9emlo main.gif). 7on9igurando 8mprimir
#uando seleccionas @mrimir...$ Logisim muestra un cuadro de di"logo ara configurar lo 'ue va a ser imrimido. •
•
•
7ircuitos: &na lista en la 'ue se ueden seleccionar los circuitos (uno o m"s) 'ue se van a imrimir.
(Los circuitos vacos no se mostrar"n.) Logisim imrimir" un circuito or "gina. Si el circuito es demasiado grande$ la imagen ser" escalada ara 'ue 'uea. 7abecera: *l te/to centrado 'ue debera aarecer en la arte suerior de cada "gina. Se har"n las siguientes sustituciones en el te/to. %n
Nombre del circuito
%p
Número de páina
%P
Total páina
%%
Tanto por ciento ("#")
'otar Para 3nca/ar: Si est" seleccionado$ Logisim girar" Q7 grados los circuitos 'ue no entren en
una "gina$ as no ser" necesario escalarlos cuando entren en una "gina al haberlos girado Q7 grados. •
.ista e La 8mpresora: Si utiliar la Fvista de imresiónMM al imrimir los circuitos.
:esu+s de hacer clic en cetar$ Logisim mostrar" la "gina de configuración est"ndar antes de imrimir los circuitos.
*l men2 *ditar es;acer XX
:eshace los cambios m"s recientes. ay 'ue fi9arse en 'ue esto no incluye cambios relativos a las modificaciones de los estados del circuito (como las modificaciones llevadas a cabo or la erramienta de #ambio (
)).
7ortar
Lleva los comonentes seleccionados del circuito al ortaaeles de Logsim. )ota: *l
ortaaeles de Logisim es administrado de forma indeendiente del ortaaeles del sistema oerativo< as$ cortar5coiar5egar no funcionar"n con otras alicaciones$ incluyendo otras coias lanadas de Logisim. Sin embargo$ si tienes varios royectos abiertos ba9o el control del mismo roceso de Logisim$ entonces deberas ser caa de cortar5coiar5egar entre ellos. 7opiar
#oia los comonentes seleccionados en el ortaaeles de Logisim. (#onsultar la nota deba9o del elemento de men2 #ortar) Pegar
%ega los comonentes del ortaales de Logisim en el lugar seleccionado. (#onsultar la nota deba9o del elemento de men2 #ortar) #uando egues los comonentes se reresentar"n en gris claro. ;o asar"n a formar arte del circuito de una forma definitiva hasta 'ue cambies o muevas la selección de forma 'ue los comonentes ya no est+n en ella. La raón de este e/traño comortamiento es +sta %ara 'ue haya consistencia con su otro comortamiento$ Logisim debe emalmar inmediatamente cual'uier cable tan ronto como est+ en el circuito< este roceso de emalme cambia los cables 'ue ya est"n en el circuito. Sin embargo$ cuando asas cables del ortaaeles uede interesarte situarlos en una osición diferente a la inicial$ y el cambio inherente al roceso de emalme odra estar en contra de tus deseos. 3liminar
*limina del circuito los comonentes seleccionados. 4eleccionar #odo
Selecciona todos los comonentes del circuito 'ue est+ siendo visualiado.
*l men2 %royecto Añadir 7ircuito666
ñade un nuevo circuito al royecto 'ue se est+ utiliando. Logisim edir" un nombre ara el circuito$ 'ue no odr" coincidir con otros nombres de los circuitos 'ue ertenecan a ese mismo royecto. 7argar Librer$a
#arga una librera en el royecto. %uedes cargar tres tios distintos de libreras$ como se e/lica en otro lugar de la Jua de &suario. escargar Librer$a666
:escarga librera del circuito. Logisim no te ermitir" descargar libreras 'ue est+n siendo utiliadas$ incluyendo libreras 'ue contengan comonentes 'ue aarecan en otros circuitos del
royecto$ as como a'uellas con herramientas 'ue est+n asociadas al ratón o 'ue aarecan en la barra de herramientas. Anali-ar 7ircuito
#alcula la tabla de verdad y las e/resiones booleanas corresondientes al circuito visualiado$ mostrando los resultados en la ventana de n"lisis #ombinacional. *l roceso de an"lisis ser" v"lido sólo ara circuitos combinacionales. */iste una descrición del roceso de an"lisis en la sección de n"lisis #ombinacional. 'enombrar 7ircuito666
#ambia el nombre del circuito 'ue se est+ visualiando. 4eleccionar 7omo 7ircuito Principal
Selecciona el circuito visualiado como Fcircuito rincialF del royecto. (*st+ elemento del men2 no estar" disonible si el circuito en uso ya es el circuito rincial del royecto.) *l circuito rincial es el 'ue se muestra cuando se abre un archivo de royecto. 3liminar 7ircuito666
*limina del royecto el circuito 'ue est+ siendo visualiado. Logisim te revendr" de eliminar un circuito 'ue est+ siendo utiliado como subcircuito o de eliminar el 2nico circuito de un royecto. Opciones666
bre la ventana de 3ciones de %royecto.
*l men2 Simular 4imulaci(n 7onectada
Si esta oción est" activada$ los circuitos visualiados estar"n FvivosF$ es decir$ 'ue los valores de todo el circuito se actualiar"n con la modificación de cual'uiera de sus variables o con cada cambio a la configuración del circuito. *sta oción del men2 ser" deseleccionada si se detecta oscilación en el circuito. 'esetear 4imulaci(n
@nicialia todas las variables de entrada de forma 'ue te encuentres como si hubieses vuelto a abrir el archivo. *n el caso en el 'ue est+s visualiando el estado de un subcircuito la 9erar'ua al comleto ser" inicialiada. .olver A
#uando rofundices en un estado de un subcircuito$ este men2 lista los circuitos 'ue est+n or encima del 2ltimo estado visualiado del circuito. l seleccionar uno de ellos se mostrar" el circuito corresondiente. 8r A
Si rofundias en el estado de un subcircuito y luego vuelves ara atr"s$ este men2 lista los subcircuitos 'ue est+n or deba9o del circuito 'ue se est+ consultando. l seleccionar uno de ellos se mostrar" el circuito corresondiente. 7onmutar 'elo/
#ambia el estado del relo9 en la simulación. *sto uede ser 2til cuando 'uieras ir viendo aso a aso los cambios en el circuito de una forma manual$ esecialmente cuando el relo9 no est+ en el mismo circuito 'ue est+s visualiando. Activar 'elo/
utom"ticamente activa el relo9. *sta oción de men2 sólo tendr" efecto si en el circuito se encuentra relo9 (en la librera ?ase). *sta oción est" desactivada or defecto. 4eleccionar *recuencia e 'elo/
%ermite seleccionar la frecuencia del relo9. %or e9emlo$ K significan 'ue el cambio del nivel del relo9 se roducir" K veces cada segundo. ay 'ue fi9arse en 'ue la velocidad del ciclo de relo9 ser" m"s lenta 'ue el cambio de nivel del relo9$ as ara el caso de un ciclo de relo9 con frecuencia de H los cambios de nivel de relo9 ser"n a K .
'egistro666
*ntra en el módulo de registro$ 'ue ermite tomar nota de los valores de un circuito a medida 'ue el estado del circuito rogresa.
*l men2 Ientana 5inimi-ar
1inimia la ventana corresondiente.
0edimensiona la ventana corresondiente a su tamaño referido. Análisis 7ombinacional
1uestra la 2ltima ventana de n"lisis #ombinacional$ sin cambiar su contenido. títulos de ventana individuales
1uestra la ventana corresondiente en rimer lano.
*l men2 yuda #utorial
bre el sistema de ayuda on-line en la sección de ,utorial %rimeros asos con Logisim de la !uía del Usuario de Logisim . 5anual el =suario
bre el sistema de ayuda on-line en la !uía del Usuario de Logisim . 'e9erencia e Las Librer$as
bre el sistema de ayuda en la en la Referencia de las Librerías . Acerca e666
1uestra una ventana con la versión de Logisim. (*n los 1ac esta oción de men2 aarecer" en el men2 Logisim.)
#omonentes de memoria Los comonentes 01 y 031 son dos de los m"s 2tiles en las libreras 'ue trae incororadas Logisim. Sin embargo$ tambi+n son de los comonentes m"s difciles de utiliar a causa del gran volumen de información 'ue uede almacenar. Se uede encontrar documentación acerca del funcionamiento de estos comonentes dentro del circuito en las "ginas 01 y 031 en la Referencia a las Librerías" *sta sección del Manual del Usuario e/lica la interfa a la ve 'ue ermite al usuario ver y editar contenidos de memoria. #ambiando valores en la memoria 1en2s deslegables y archivos *ditor he/adecimal integrado de Logisim
#ambiando valores en la memoria *s osible modificar los contenidos de memoria utiliando la erramienta de #ambio$ ero la interfa 'ue se ocua de esto est" limitada de diversa forma a causa de restricciones de esacio %ara cual'uier otra cosa 'ue no sea una edición muy simle$ seguramente encontrar"s el editor he/adecimal integrado mucho m"s conveniente. :e todas formas$ la erramienta de #ambio se uede utiliar de dos formas distintas$ ara editar y consultar valores en el circuito %uedes editar la dirección 'ue se visualia$ y uedes editar un valor individual. %ara editar la dirección 'ue se visualia$ ha clic fuera del rect"ngulo de visualiación (aun'ue dentro de la memoria en s). Logisim dibu9ar" un rect"ngulo de color ro9o alrededor de la dirección 'ue corresonda al inicio del blo'ue 'ue se est+ visualiando.
• • • •
*n cuanto se teclee alg2n dgito he/adecimal cambiar" la dirección de inicio del blo'ue. l ulsar *nter la memoria se mover" una lnea hacia aba9o. l ulsar ?acBsace (tecla de retroceso) la memoria se mover" una lnea hacia arriba. l ulsar la barra esaciadora la memoria se mover" una "gina (cuatro lneas) hacia aba9o.
%ara la edición de un valor en concreto$ ha clic sobre el valor 'ue 'uieras modificar dentro del rect"ngulo de visualiación. Logisim colocar" un rect"ngulo de color ro9o alrededor del valor seleccionado. •
•
•
•
*n cuanto se teclee alg2n dgito he/adecimal se cambiar" el valor de la osición de memoria seleccionada. l ulsar *nter se osicionar" el rect"ngulo de edición 9usto deba9o de la osición en la 'ue se encuentre. l ulsar ?acBsace (tecla de retroceso) el rect"ngulo de edición asar" a la osición anterior a la 'ue se encuentre. l ulsar la barra esaciadora el rect"ngulo de edición asar" a la osición siguiente a la 'ue se encuentre.
1en2s deslegables y archivos *l men2 deslegable de la memoria incluye cuatro ociones m"s 'ue el de los dem"s comonentes • • •
•
*ditar #ontenidos bre un editor he/adecimal ara determinar los contenidos de la memoria. ?orrar #ontenidos 0esetea (one a cero) todos los valores de la memoria. #argar @magen... %one en memoria los valores 'ue se encuentran en el archivo utiliado$ el cual tendr" el formato 'ue se indica aba9o. Salvar @magen... Juarda los valores 'ue se encuentren en la memoria en un archivo con el formato 'ue se indica deba9o.
*l formato utiliado ara las im"genes es intencionadamente simle< esto te ermite crear un rograma$ como un ensamblador$ 'ue genere im"genes de memoria 'ue uedan desu+s ser cargadas en memoria. Ieamos un e9emlo ara entender el formato< si se tiene una memoria de GR bytes cuyos cinco rimeros bytes fueran G$ E$ 7$ G7 y -8$ y todos los dem"s valores fuesen cero$ entonces la imagen sera el siguiente fichero de te/to. $%' ra '% ' '' * ,,
La rimera lnea identifica el tio de formato utiliado (or el momento sólo hay un formato reconocido). Los valores se muestran en he/adecimal$ emeando or la dirección cero< uedes oner varios valores en la misma lnea. Logisim ondr" el valor cero en todas a'uellas osiciones de memoria 'ue no vengan esecificadas en el archivo. La imagen uede utiliar abreviaturas en la codificación$ or e9emlo$ en lugar de escribir en una fila diecis+is veces seguidas el valor 77 se odr" escribir 8T77. ay 'ue fi9arse en 'ue el n2mero de reeticiones de un valor viene dado en base 87. Las im"genes creadas or Logisim utiliar"n estas abreviaturas en cuanto los valores se reitan cuatro veces o m"s.
*ditor he/adecimal Logisim tiene un editor he/adecimal integrado ara ver y alterar contenidos de memoria. %ara acceder a +l$ abre un men2 deslegable ara el comonente de memoria corresondiente y selecciona *ditar #ontenidos... %ara comonentes 031$ 'ue resentan un atributo ara los contenidos de mermoria$ uedes acceder tambi+n al editor he/adecimal haciendo clic sobre el atributo corresondiente.
Los n2meros a la i'uierda$ en it"licas$ muestran las direcciones de memoria en he/adecimal. Los otros n2meros se corresonden con los valores a artir de la dirección de memoria esecificada< el editor he/adecimal uede mostrar cuatro$ ocho$ o diecis+is valores or lnea$ deendiendo de lo 'ue 'uea en la ventana. %ara facilitar la lectura$ hay un esacio desu+s de cada gruo de cuatro valores. %uedes navegar or la memoria utiliando la barra de deslaamiento (scroll bar) o con el teclado (con las teclas de la flechas$ inicio$ fin$ avanar5retroceder "gina). D cuando se ulsen caracteres he/adecimales se modificar" la osición de memoria seleccionada. ,ambi+n uedes seleccionar un gruo de valores arrastrando el ratón$ haciendo clic con el ratón y ulsando la tecla shift$ o uedes navegar or la memoria con el teclado mientras ulsas la tecla shift. Los valores se ueden coiar y egar utiliando el men2 de edición< y adem"s$ ahora s$ el ortaaeles se uede utiliar desde otras alicaciones.
0egistro %ara verificar el correcto funcionamiento de un gran circuito$ y ara tener una referencia del comortamiento del circuito se uede utiliar el módulo de registro de Logisim. Aste módulo te ermite seleccionar los comonentes cuyos valores deberan 'uedar registrados< de forma ocional odras esecificar un archivo en el 'ue 'uedara almacenado el registro. )ota: *l módulo de registro est" en fase alfa< uede contener errores$ y est" su9eto a
cambios significativos en un futuro. :e hecho$ y sabiendo 'ue información acerca de errores as como sugerencias ara Logisim son siemre bienvenidos$ lo ser"n esecialmente los 'ue hagan referencia a este módulo. Si vosotros los usuarios no envi"is comentarios$ entonces es muy robable 'ue este módulo no cambie. %uedes acceder al módulo de registro a trav+s de la oción de 0egistro... en el men2 de Simulación. arecer" una ventana con tres estañas.
#omentaremos cada una de estas estañas or searado. La estaña de Selección La estaña de ,abla La estaña de rchivo ay una sola ventana de registro or royecto$ cuando cambias de circuito dentro de un mismo royecto$ la ventana de registro cambiar" ara registrar los cambios efectuados al circuito 'ue se est+ visualiando. *sto es as a no ser 'ue te est+s moviendo niveles arriba o aba9o dentro de la misma simulación$ en cuyo caso el módulo de registro no cambia. ay 'ue fi9arse en 'ue el módulo de registro Fde9ar" de tomar notaF en un archivo cuando ase a registrar otra simulación. D cuando vuelvas a la otra simulación$ el módulo de registro recordar" la configuración corresondiente$ ero necesitar"s reactivar el registro en archivo manualmente.
La estaña de Selección La estaña de selección te ermite seleccionar cuales son los valores 'ue se deberan registrar. La ventana 'ue se muestra aba9o se corresonde con el siguiente circuito.
La estaña est" en tres onas verticales. La rimera (la 'ue est" m"s a la i'uierda) es una lista de todos los valores del circuito 'ue odran ser registrados. *stos son los comonentes de las libreras incororadas 'ue soortan el registro Librera ?ase Los comonentes %in$ Ier$ y 0elo9 Librera de 1emorias ,odos los comonentes Los comonentes vendr"n identificados or su eti'ueta$ y ara los comonentes 'ue no tengan eti'ueta se les asignar" un nombre 'ue esecifi'ue su tio y su situación dentro del circuito. Los subcircuitos tambi+n aarecer"n en la lista$ +stos no odr"n registrarse$ ero s ser" osible registrar sus comonentes. ay 'ue fi9arse en 'ue el la 01 necesita 'ue eli9as cuales son las direcciones de memoria 'ue 'uieres registrar< como m"/imo ermite el registro de las rimeras GR osiciones de memoria. La 2ltima ona vertical (la 'ue est" m"s a la derecha) muestra los comonentes 'ue han sido seleccionados. *n ella tambi+n se indicar" la base con la 'ue se almacenar"n los valores de a'uellas variables 'ue osean m"s de un bit. La columna del medio ermite maniular los elementos 'ue est+n seleccionados. •
Añadir añade en la ona de la derecha el elemento u elementos 'ue est+n seleccionados en la ona
de la i'uierda. •
• • •
7ambiar Base cambia la base del comonente seleccionado entre G (binaria)$ 87 (decimal)$ y 8
(he/adecimal). 5over Arriba mueve el comonente seleccionado un lugar hacia arriba. 5over Aba/o mueve el comonente seleccionado un lugar hacia aba9o. 3liminar elimina el comonente seleccionado.
La estaña de ,abla La estaña de ,abla muestra gr"ficamente el registro m"s reciente.
*n la tabla hay una columna ara cada comonente 'ue se haya seleccionado. *n cada fila se muestra un estado de la simulación una ve 'ue haya tenido lugar un cambio en los valores. ;o se añadir"n filas 'ue est+n dulicadas. ay 'ue fi9arse en 'ue sólo se mostrar"n las 2ltimas H77 filas de valores y en 'ue algunas de las filas odran no tener un valor asignado en el caso de 'ue los valores de la fila fuesen calculados cuando alguno de los comonentes a2n no hubiese sido seleccionado. La tabla es sólo de consulta$ no es modificable u interactiva
La estaña de rchivo La estaña de rchivo te ermite seleccionar un archivo en 'ue se ueda almacenar el registro.
*n la arte suerior se indica si el registro est" en funcionamiento o no$ y hay un botón 'ue ermite habilitar o deshabilitarlo. (;o se odr" activar hasta 'ue se haya seleccionado un archivo de salida.) *l botón te ermite ausar y continuar almacenando la información en el archivo. *n el momento en el 'ue visualices otra simulación$ se de9ar" de registrar la información en el archivo< y si vuelves a la simulación en la 'ue habas seleccionado el registro en archivo y 'uieres 'ue +ste contin2e$ entonces tendr"s 'ue volver a activarlo manualmente utiliando el botón de habilitación. media altura se indica el archivo 'ue est" siendo utiliado ara almacenar los datos del registro. %ara seleccionar otro$ hay 'ue utiliar el botón Seleccionar... *l registro comenar" autom"ticamente al seleccionar un archivo$ Logisim te reguntar" si 'uieres sobrescribir el archivo o si 'uieres añadir nuevos datos al final. *n la arte de aba9o se uede elegir añadir una cabecera indicando los elementos 'ue est"n seleccionados. *n el caso de 'ue se seleccione esta oción$ se añadir" una cabecera al archivo cada ve 'ue se modifi'uen los comonentes seleccionados. *ormato del arc;ivo
Las entradas se mostrar"n tabuladas de forma seme9ante a lo 'ue uede verse en la estaña de ,abla. (un'ue$ or e9emlo$ en el fichero las cabeceras indicar"n el camino comleto de los comonentes 'ue ertenecan a un subcircuito.) *l formato es simle de forma intencionada ara 'ue sea osible rocesarlo con alg2n scrit en %erl5%ython o un rograma de ho9as de c"lculo. s un scrit odra rocesar el archivo al mismo tiemo 'ue Logisim est" funcionando$ en concreto Logisim meter" los nuevos valores en disco cada R77 ms. ay 'ue fi9arse en 'ue Logisim odra cerrar y abrir el fichero varias veces durante la simulación$ sobre todo si asan varios segundos sin 'ue haya nuevos valores ara introducir.
%referencias de alicación Logisim admite dos categoras de ociones de configuración las preferencias de aplicaci#n y las opciones de proyecto . Las referencias de la alicación se refieren a las referencias de la alicación 'ue se e/tienden a todos los royectos abiertos$ mientras 'ue las ociones de royecto son esecficas ara el royecto 'ue est+ siendo utiliado en ese momento. *n esta sección se comentar"n las referencias de la alicación$ mientras 'ue las ociones de royecto se describir"n m"s adelante. %uedes ver y editar las referencias de la alicación a trav+s de la oción de %referencias... del men2 rchivo (o bien$ en un 1ac$ desde el men2 Logisim)$ una ve seleccionada la oción$ se mostrar" una ventana con dos estañas. Se describir"n cada una de las estañas or searado$ y luego veremos cómo se configuran las referencias desde la lnea de comandos. La estaña %lantilla La estaña @nternacional La lnea de comandos
La estaña de %lantilla
&na plantilla es un archivo de Logisim 'ue se utilia como unto de artida cuando Logisim crea un nuevo royecto. ,ambi+n$ si tienes un archivo de Logisim cuyo entorno est" configurado de una forma e/traña$ uedes FresetearF el entorno usando el botón 0establecer %lantilla desde la ventana de edición de las 3ciones de %royecto. un'ue las lantillas son 2tiles en muchos casos$ son articularmente adecuadas ara utiliar en clase$ si or e9emlo un rofesor 'uisiera roorcionar una lantilla como unto de artida a sus alumnos. *sto es esecialmente robable si la clase utilia todo el otencial de Logisim$ incluyendo las caractersticas m"s avanadas$ en cuyo caso la configuración or defecto odra ser demasiado simle. Las lantillas tambi+n ueden ser 2tiles en el escenario edagógico cuando$ or e9emlo$ un rofesor abre el archivo de un alumno 'ue ha configurado su entorno de traba9o de forma significativa. La oción F%lantilla %or :efectoF$ 'ue est" seleccionada or defecto$ utilia una lantilla 'ue se roorciona 9unto con Logisim. Si refieres una configuración comletamente desnuda selecciona F%lantilla IacaF. %ero si 'uieres esecificar otro archivo 'ue se use como lantilla$ uedes utiliar el botón FSeleccionar...F$ y luego elegir la oción F*secificar %lantillaF.
La estaña @nternacional Jracias a este aartado Logisim uede ser utiliado en varios ases utiliando el idioma corresondiente en cada caso.
*sta estaña tiene tres ociones. •
8dioma: #ambia el idioma. La 2ltima versión est" disonible en ingl+s y esañol. La traducción ha
sido roorcionada or %ablo Leal 0amos$ natural de *saña. •
•
•
¡%osibles traducciones de Logisim a otros idiomas son bienvenidas! Si est"s interesado$ onte en contacto conmigo$ #arl ?urch. *sto no ser" un comromiso *star+ contento de enterarme de t2 inter+s$ y te de9ar+ saber si conoco a alguien 'ue ya est" traba9ando en ello$ rearar+ una versión ara 'ue traba9es con ella$ y te enviar+ instrucciones. *l roceso de traducción no re'uiere ning2n conocimiento de rogramación. 'eempla-ar 7aracteres Acentuados: lgunas lataformas soortan mal los caracteres (tales como
ñ o U) 'ue no aarecen en el con9unto de caracteres S#@@ de V bits. #uando esta oción est" seleccionada$ Logisim reemlaar" cual'uier car"cter fuera del con9unto de caracteres S#@@ de V bits con el corresondiente m"s arecido. *l checBbo/ estar" deshabilitado ara su uso cuando el idioma seleccionado no tenga e'uivalencias disonibles ara estos Fcaracteres esecialesF. Puertas 5oldeadas: ay dos est"ndares ara la reresentación de uertas lógicas uertas moldeadas (shaed gates) y uertas rectangulares (rectangular gates). *n la siguiente tabla se ueden ver las diferencias.
(lgunas fuentes se refieren a +stos como los estilos americano y euroeo< yo no hago referencia a esta terminologa ya 'ue sugiere 'ue en cada arte del mundo e/iste un est"ndar diferente$ y esto creara roblemas ara Logisim). Logisim no se a9usta a ninguno de los dos est"ndares e/actamente$ m"s bien se coloca en una osición intermedia ermitiendo elegir entre ellos. *n concreto$ las uertas moldeadas est"n m"s
linealiadas 'ue las definidas or el est"ndar del @***. D$ aun'ue las uertas 630 y 6;30 deberan ser igual de anchas 'ue las uertas 30 y ;30 en el estilo rectangular$ no lo son a causa de algunas dificultades comrimiendo la uerta moldeada 630. ctualmente$ la uerta rectangular 30 se reresenta con el smbolo FW7F en lugar del smbolo 'ue se muestra arriba$ or'ue muchas lataformas a2n no soortan el con9unto de caracteres &nicode al comleto.
La lnea de comandos %uedes configurar las referencias de alicación de Logisim a trav+s de la lnea de comandos. *sto se robar" esecialmente 2til en un laboratorio con ordenadores ara cada alumno en el 'ue se retenda comenar siemre de la misma forma$ indeendientemente de cómo hayan configurado el rograma los alumnos 'ue hayan utiliado el ordenador con anterioridad. La sinta/is comleta de la lnea de comandos es como se muestra a continuación. -a$a .-ar jarFileName [options] [filenames]
Los archivos ocionales 'ue añadan al comando se abrir"n con Logisim en ventanas adicionales. *l siguiente e9emlo inicialia Logisim con su configuración b"sica. -a$a .-ar jarFileName .plain .ate /aped .locale en
Las 'ue siguen son las ociones soortadas. .plain .empt0 .template templateFile
:etermina la lantilla 'ue debe utiliar Logisim. .ate [shaped |rectangular ]
:etermina 'u+ tio de uerta ha de utiliarse. .locale localeIdentifier
:etermina cual es la traducción 'ue ha de utiliarse. %or el momento$ los idiomas 'ue se soortan son en 1nli/ es 2pani/ .accent [ yes|no ]
*sta oción sólo es relevante ara a'uellos idiomas 'ue utilicen caracteres 'ue no ertenecan al con9unto de caracteres S#@@ de V bits< as$ estaran incluidos idiomas 'ue utiliasen caracteres acentuados$ y no incluira al ingl+s. Si se selecciona no$ los caracteres 'ue no ertenecan al con9unto de caracteres S#@@ de V bits ser"n reemlaados con los m"s aroiados dentro de este con9unto< esto ser" 2til ara los casos en 'ue la combinación de 4ava5Sistema 3erativo no soorte estos caracteres de forma adecuada. .nopla/
;o muestra la antalla de inicio (carga) de Logisim. ./elp
1uestra un resumen de las ociones de la lnea de comandos. .$erion
1uestra el n2mero de la versión de Logisim.
3ciones de royecto Logisim soorta dos categoras de ociones de configuración las preferencias de aplicaci#n y las opciones de proyecto . Las referencias de alicación se refieren a las referencias de alicación 'ue se
e/tienden a todos los royectos abiertos$ mientras 'ue las ociones de royecto son esecficas ara el royecto 'ue est+ siendo utiliado en ese momento. *n esta sección se comentar"n las ociones de royecto< las referencias de alicación se describen en otra sección. Las ociones de royecto se ueden ver y editar a trav+s la oción 3ciones... del men2 de %royecto. s se mostrar" la ventana de 3ciones$ 'ue tiene cuatro estañas.
#omentaremos cada una de las estañas or searado. La estaña %iarra :e ,raba9o La estaña Simulación La estaña ?arra :e erramientas La estaña 0atón
*n la arte de aba9o de la ventana est" el botón 0establecer %lantilla. l ulsarlo$ todas las ociones y los atributos de las herramientas asan a ser los definidos en la lantilla 'ue est+ en uso ('ue se selecciona en referencias de alicación).
La estaña %iarra :e ,raba9o La estaña %iarra :e ,raba9o te ermite configurar la aariencia del "rea donde se dibu9an los circuitos.
ay seis ociones. •
•
•
•
•
•
*l checBbo/ .ista e 8mpresi(n determina si se muestra el circuito en la antalla de la misma forma en 'ue aarece cuando se imrime. %or lo general$ Logisim indica sobre el circuito el 2ltimo estado del mismo y muestra algunas caractersticas de la interfa de los comonentes (en concreto$ señalia las atas de las uertas 30 dónde se conectaran). La vista de imresión$ sin embargo$ no indica nada acerca del 2ltimo estado del circuito y omite tales caractersticas. *l checBbo/ 5ostrar Parrilla determina si la arrilla de untos ha de mostrarse o no. *l checBbo/ 5ostrar Aureola determina si ha de dibu9arse un óvalo verde claro aulado alrededor del atributo o herramienta cuyos atributos est+n siendo mostrados en la tabla de atributos. *l checBbo/ 5ostar 4ombras determina si cuando se haya seleccionado alg2n comonente ha de mostrarse un esboo del mismo a medida 'ue el ratón se mueva sobre la iarra de traba9o. %or e9emlo$ si seleccionas la uerta herramienta ;: y mueves el ratón sobre la iarra de traba9o (sin ulsar el botón)$ odr"s ver una muestra es'uem"tica de color gris de como 'uedara situada la uerta ;: si ulsases el botón del ratón. Si se de9a el checBbo/ sin seleccionar$ este comortamiento 'uedar" desactivado. *l checBbo/ 5ostrar Aclaraciones Para Los 7omponentes determina si se deben mostrar las aclaraciones 'ue aarecen temoralmente cuando se mantiene el cursor del ratón sobre un comonente. s or e9emlo$ si mantienes el ratón sobre un unto de cone/ión (in) de un comonente 'ue se corresonda a un subcircuito$ se mostrar" la eti'ueta asociada a ese in dentro del subcircuito - o se mostrar" el nombre del subcircuito si ese in no tiene eti'ueta -. 1anteniendo el cursor sobre una de las salidas de un searador se dar" a conocer$ a trav+s de una aclaración$ 'ue bits se corresonden a esa salida. dem"s todos los comonentes de las libreras de %le/ores y 1emorias roorcionar"n información acerca de sus entradas y salidas or medio de las aclaraciones. *l *actor el
La estaña Simulación La estaña Simulación ermite configurar los algoritmos 'ue se utilian ara simular los circuitos. *stos ar"metros se alican sobre todos los circuitos 'ue se simulen desde la misma ventana$ incluso sobre circuitos 'ue e/istan en libreras cargadas en el royecto.
•
*l checBbo/ Añadir 'uido A Los 'etardos e Los 7omponentes ermite activar o desactivar el ruido aleatorio 'ue se añade los retardos de los comonentes. La simulación interna utilia un relo9 oculto ara su simulación$ y roorciona de alguna forma una simulación m"s realista$ cada componente (e/ceto los cables y los searadores) introducen un retardo entre la receción de una entrada y la emisión de una salida. Si esta oción est" seleccionada$ Logisim ocasionalmente (alrededor de una ve or cada 8 reacciones del comonente) har" 'ue uno de esos retardos sea m"s largo de lo normal. *sta aleatoriedad se introduce esecficamente ara tratar cerro9os en los circuitos (como deba9o) Sin el ruido aleatorio$ el circuito oscila$ ya 'ue la dos uertas traba9ar"n al mismo ritmo< ero introduciendo ruido aleatorio$ eventualmente una de las uertas de9ar" atr"s a lo otra.
*s aconse9able de9ar activada esta oción 'ue e/iste or si se busca el comortamiento determinista de alg2n circuito. (dem"s$ esta oción es relativamente nueva en Logisim y odra conducir a errores ineserados en la simulación). •
La oción 8teraciones asta Oscilaci(n esecfica durante cu"nto tiemo se ha de simular un circuito antes de decidir 'ue est" oscilando. *l n2mero reresenta la cantidad de ciclos del relo9 interno (una uerta simle sólo necesita un ciclo). La cifra or defecto de 8$777 es buena ara casi todos los roósitos$ incluso ara grandes circuitos. %ero odras estar interesado en aumentar el n2mero de iteraciones si est"s traba9ando con un circuito ara el 'ue Logisim informa de falsas oscilaciones< es osible imaginarse roblemas con un circuito 'ue incorore muchas formaciones como la comentada encima de estas lneas. ,ambi+n odras estar interesado en reba9ar el n2mero de iteraciones si est"s traba9ando con un circuito roenso a oscilar y utilias un rocesador muy lento.
La estaña ?arra :e erramientas
La estaña ?arra :e erramientas ermite configurar las herramientas 'ue aarecen en la barra de herramientas.
*n el lado i'uierdo hay un e/lorador 'ue ermite ver todas las herramientas disonibles$ y en el lado derecho hay una lista con los elementos de la barra de herramientas. (*l smbolo F---F es un searador 'ue no es m"s 'ue un e'ueño esacio en blanco). *ntre el e/lorador y la lista hay cinco botones •
Añadir erramienta añade la herramienta seleccionada en el e/lorador al final de la barra de
herramientas. •
Añadir 4eparador añade un searador al final de la barra de herramientas.
•
5over Arriba mueve el elemento seleccionado una osición hacia arriba5i'uierda en la barra de
herramientas. •
5over Aba/o mueve el elemento seleccionado una osición hacia aba9o5derecha en la barra de
herramientas. •
3liminar elimina el elemento seleccionado de la barra de herramientas.
Los atributos de las herramientas no se muestran en esta ventana< ero uedes verlos y editarlos desde la ventana rincial.
La estaña 0atón %or defecto$ al hacer clic sobre el "rea de dibu9o de Logisim se utiliar" la 2ltima herramienta seleccionada. Si haces clic con el botón derecho o haces control-clic sobre un comonente saltar" un men2 deslegable. Logisim te ermite modificar este comortamiento$ libr"ndote de la necesidad de ir continuamente a la barra de herramientas o al e/lorador. (*sto uede tambi+n ser r"ctico si eres urdo). #ada combinación botón del ratón - tecla esecial (shift y o control) uede ser asociada a una herramienta diferente. La estaña 0atón ermite esecificar estas asociaciones.
•
•
•
•
•
*n la arte i'uierda hay un anel e/lorador en el 'ue se ueden seleccionar las herramientas de inter+s. *n la arte de arriba del lado derecho hay un recuadro dentro del cual ha de utiliarse la combinación de teclas 'ue 'ueremos asociar a la herramienta seleccionada. %or e9emlo$ si 'uieres 'ue se inten nuevos cables cuando uses la combinación tecla shift y botón derecho del ratón$ entonces deberas seleccionar la erramienta :e #ableado en el anel e/lorador y luego hacer clicB con el botón derecho del ratón mientras ulsas la tecla shift dentro del recuadro$ donde dice F&tilia a'u la combinación$ botón del ratón - tecla esecial$ a la 'ue asociar erramienta :e #ableadoF. Si la combinación utiliada ya estaba en uso$ entonces la asociación corresondiente ser" remlaada con la nueva herramienta. :eba9o del recuadro aarece una lista de las asociaciones e/istentes. ay 'ue fi9arse en 'ue cual'uier combinación 'ue no se muestre en esta lista simlemente utiliar" la herramienta seleccionada. 1"s aba9o se encuentra el botón *liminar$ con el 'ue se ueden borrar de la lista de asociaciones a'uellas 'ue est+n seleccionadas en dicha lista. #uando se elimina una asociación$ la combinación botón del ratón - tecla esecial utiliada asar" a estar asociada a la herramienta 'ue est+ seleccionada en la barra de herramientas o en el anel e/lorador. *n la arte m"s ba9a aarece la lista de atributos de la herramienta corresondiente al elemento 'ue est+ seleccionado en la lista de asociaciones. s$ las herramientas 'ue se asocien a las combinaciones$ botón del ratón - tecla esecial$ odr"n tener sus atributos con valores roios$ diferentes de los utiliados en el anel e/lorador y en la barra de herramientas. 'u es donde odr"s editar esos valores de los atributos.
%roagación de valores *l algoritmo 'ue utilia Logisim ara simular la roagación de valores a trav+s de los circuitos$ no es algo de lo 'ue reocuarse. %or otra arte$ cabe comentar 'ue el algoritmo es lo suficientemente sofisticado como ara tener en cuenta los retardos de las uertas$ ero no lo suficientemente realista ara imlementar comortamientos m"s comlicados como la variación de volta9es o las condiciones del entorno. =Puieres saber m"s>
0etardos en uertas *rrores de oscilación :eficiencias
0etardos en uertas #omo e9emlo del nivel de sofisticación del algoritmo de Logisim$ considera el siguiente circuito.
3bviamente la salida ser" siemre 7. %ero realmente las uertas ;3, no reaccionan instant"neamente a sus entradas y tamoco lo hacen en Logisim. s$ cuando la entrada de este circuito cambia de 7 a 8$ la uerta ;: tendr" brevemente a su entrada un 8 en cada una de sus atas y en consecuencia habr" un 8 a su salida durante un corto esacio de tiemo. *l efecto sólo ser" observable si se utilia la salida del circuito como entrada de relo9 de un biestable :.
*l cambiar la entrada de 7 a 8 conduce instant"neamente un 8 al biestable : y de esta manera el biestable conmutar" cada ve 'ue la entrada del circuito cambie de 7 a 8. ,odos los comonentes tienen asociado un retardo. Los comonentes m"s comle9os tienden a tener retardos mayores$ ero estos retardos son arbitrarios de alguna forma y uede 'ue no refle9en la realidad. :e ve en cuando$ con frecuencia irregular$ Logisim añadir" un retardo a la roagación de un comonente. *sto retende simular la irregularidad de los circuitos reales. *n concreto$ un 0-S 'ue utilice dos uertas ;30 oscilara sin esta aleatoriedad en los retardos$ ya 'ue las dos uertas rocesaran sus entradas a la ve. *sta aleatoriedad se uede desactivar a trav+s de la ventana de 3ciones de %royecto en La estaña Simulación. :esde un unto de vista t+cnico$ es relativamente f"cil tratar con este nivel de sofisticación en un circuito simle. %or otro lado$ y aun'ue tratar bien los retardos a trav+s de los subcircuitos es m"s comlicado$ Logisim tambi+n intenta abordar este asunto de forma correcta. ay 'ue fi9arse en 'ue no estoy diciendo 'ue Logisim siemre se ocue de los retardos de las uertas satisfactoriamente. %ero or lo menos lo intenta.
*rrores de 3scilación *l algoritmo de roagación$ 'ue normalmente es transarente$ ser" visible cuando construyas un circuito 'ue oscile.
*ste circuito se encuentra en una situación estable$ ero si ones la entrada a 8$ el circuito entrar" en un bucle infinito. l cabo de un tiemo$ Logisim se dar" or vencido y lanar" un mensa9e comentando 'ue en su oinión el circuito oscila.
Logisim dar" a conocer los valores 'ue e/isten cuando se da or vencido. *stos valores odr"n arecer incorrectos - en esta catura de antalla$ la uerta ;: enva un 8 a su salida aun'ue una de sus entradas es un 7$ ero odra ser 'ue la uerta ;3, tenga un 8 a la entrada y un 8 a la salida. Logisim rodea con una lnea ro9a los untos 'ue arecen estar imlicados en la oscilación. Si alguno de los untos involucrados se encuentra dentro de un subcircuito$ Logisim marcar" el contorno del subcircuito en ro9o. #uando Logisim detecta una oscilación$ se ara cual'uier tio de simulación. %odr"s restablecer la simulación en el men2 Simulación a trav+s de la oción Simulación #onectada. Logisim detecta una oscilación con una t+cnica bastante simle. Si la simulación del circuito necesita demasiadas iteraciones entonces simlemente se de9ar" de simular y se dar" a conocer 'ue el circuito oscila. (Los untos 'ue se identifican como causantes de la oscilación son a'uellos modificados en el 2ltimo GRX de las iteraciones) :e esta manera$ Logisim odra concluir erróneamente 'ue e/iste una oscilación$ en concreto si traba9as con un circuito e/cecionalmente grande$ ero 'ue tendra 'ue ser uno m"s grande 'ue cual'uiera 'ue yo haya construido con Logisim. *n cual'uier caso$ si est"s seguro de 'ue el informe de oscilación es erróneo$ uedes configurar el n2mero de iteraciones comletadas antes de determinar oscilación a trav+s de la ventana de 3ciones de royecto en La estaña Simulación.
:eficiencias *l algoritmo de roagación de Logisim es lo suficientemente inteligente ara casi todos los fines did"cticos$ ero no lo es ara el diseño industrial. 3rden"ndolas desde la m"s a la menos crtica$ las deficiencias 'ue resenta el algoritmo de roagación de Logisim incluyen •
•
•
•
•
Logisim no uede no uede simular subcircuitos cuyos ines se comorten algunas veces como entradas y otras como salidas$ es decir$ 'ue tengan uertos5atas bidireccionales. #omonentes 'ue se hayan desarrollado con 4ava odran tener este tio de uertos$ aun'ue dentro de las libreras incororadas$ el circuito de la 01 de la librera de 1emorias contiene un in : 'ue act2a como entrada y como salida. Logisim ara la simulación desu+s de un n2mero reestablecido de iteraciones asumiendo 'ue e/iste un error de oscilación. %odra ser 'ue un gran circuito 'ue no oscile diese roblemas. arte del caso de los retardos de las uertas$ Logisim no se reocua de cuestiones temorales. La introducción de aleatoriedad en los retardos de los comonentes hace 'ue el an"lisis sea m"s realista$ ero aun as es una versión muy idealiada de la realidad. Logisim no hace nada al resecto de discriminar entre niveles de volta9e el valor de un bit sólo uede ser activo$ inactivo$ sin esecificar o erróneo. ay deficiencias adicionales 'ue no me molesto en comentar or'ue son tan esecficas 'ue si estuvieseis al tanto de las mismas ya os resultara obvio 'ue Logisim no llega ni remotamente a ese nivel. #omo un e9emlo e/agerado uedo comentar 'ue tengo un amigo 'ue traba9a ara un roductor de chis y su ocuación es reocuarse de la aarición de burbu9as en el cableado del chi 'ue udiesen crecer creando descone/iones aleatorias.
•
@ncluso m"s all" de esto$ no soy un esecialista en el diseño de circuitos. s$ odra haber alg2n error en la t+cnica de roagación del 'ue no sea consciente. #omentarios de e/ertos son siemre bienvenidos.
Libreras 40 =tili-ando librer$as &A'
Logisim tiene dos tios de comonentes los 'ue son diseñados como circuitos de Logisim y los 'ue se definen en 4ava. Los circuitos de Logisim son m"s f"ciles de diseñar$ ero no soortan una interacción con el usuario muy sofisticada$ adem"s de ser m"s ineficientes. Logisim contiene un con9unto bastante amlio de libreras incororadas con comonentes definidos en 4ava$ ero tambi+n uede cargar libreras escritas or terceras ersonas. #uando te hayas descargado una librera$ uedes imortarla desde tu royecto haciendo clic con el botón derecho sobre la careta de royecto$ en el anel e/lorador$ y seleccionando #argar Librera 40... *ntonces Logisim te har" seleccionar el archivo 40 y te edir" el nombre de la clase$ lo 'ue ser" roorcionado or la tercera ersona - la 'ue creó la librera -. artir de ese momento los comonentes de la librera estar"n disonibles. 7reando librer$as &A'
Los untos de esta sección est"n dedicados a una serie de e9emlos minuciosamente comentados 'ue muestran cómo es osible desarrollar libreras de Logisim or ti mismo. Sólo deberas intentarlo si eres un rogramador con e/eriencia en 4ava. *ncontrar"s la información m"s all" de estos e9emlos bastante e/igua. %uedes descargarte un archivo 40 'ue te ermita imortar estos e9emlos en Logisim a trav+s de la sección de enlaces de la web de Logisim. *se archivo 40 tambi+n contiene el código fuente de estos e9emlos< este código fuente es de dominio 2blico. (Sin embargo$ el código fuente de Logisim est" disonible ba9o la Licencia %2blica de J;&).
@ncrementador de K bits 1uestra las artes esenciales cual'uier tio de comonente utiliando un simle e9emlo de un comonente 'ue tiene una entrada de K bits y a su salida se roorciona el valor de esos K bits m"s uno.
#lase de la Librera 1uestra cómo definir una librera. *ste es el unto de entrada ara cual'uier librera 40 - la clase cuyo nombre tendr" 'ue introducir el usuario cuando cargue una librera 40.
@ncrementador Jeneral 1uestra cómo crear comonentes 'ue uedan ser modificables a trav+s de sus atributos$ generaliando el caso del incrementador de K bits de tal forma 'ue ueda traba9ar con cual'uier n2mero de bits a la entrada y a la salida.
#ontador ?"sico 1uestra cómo crear un comonente 'ue tenga estados internos. *n concreto$ un contador de K bits 'ue recuerda su 2ltimo estado y lo incrementa cada ve 'ue en su entrada de relo9 se encuentra con un flanco de subida.
#ontador 1uestra un comonente comleto y bastante sofisticado con el 'ue uede interactuar el usuario. @mlementa un contador (en el 'ue se uede configurar el n2mero de bits) donde el usuario uede editar el valor de conta9e haciendo clic sobre el comonente con la erramienta de #ambio.
:irectrices @nformación general ara las libreras desarrolladas or terceras artes.
@ncrementador de K bits
#ada comonente incluido en una librera re'uiere 'ue se definan dos clases &na clase$ imlementando la interfa del comonente (de ahora en adelante 3omponent)$ define el comortamiento de un 2nico comonente< la otra$ imlementando la interfa de fabricación del comonente (de ahora en adelante 3omponent4actor0 )$ define el comortamiento global del comonente y fabrica los comonentes. La relación entre los ob9etos de estas dos clases se aseme9a a la relación entre un ob$eto y su clase en 4ava. @mlementar directamente todos los m+todos en las interfaces 3omponent y 3omponent4actor0 es m"s bien tedioso y reetitivo. *n la r"ctica es mucho m"s conveniente e/tender de las clases 5anaed3omponent y Abtract3omponent4actor0 . La mayor arte de las clases relevantes ara definir libreras de comonentes se encuentran en tres libreras. comcburc/loiimcomp
#ontiene clases esecialmente relacionadas con la definición de comonentes incluyendo los tios 'ue han sido descritos arriba 3omponent, 3omponent4actor0, 5anaed3omponent y Abtract3omponent4actor0 . comcburc/loiimdata
#ontiene clases relacionadas con elementos de datos asociados con comonentes$ como la clase 6ocation 'ue reresenta untos sobre el lieno (iarra de traba9o) o la clase 7alue 'ue reresenta los valores 'ue ueden e/istir en un cable. comcburc/loiimtool
#ontiene clases relacionadas con la definición de herramientas y con la esecificación de la interacción entre comonentes y herramientas. (*sto sólo es necesario ara los comonentes m"s esecialiados) Bte8ncrementer
*ste es un e9emlo muy simle 'ue muestra cuales son los comonentes esenciales ara la definición de un comonente. %ara el caso se definir" un incrementador 'ue tiene una entrada de K bits y 'ue roorciona a la salida K bits cuyo valor ser" el 'ue se encuentre a la entrada m"s uno. *ste e9emlo or s mismo no es suficiente ara crear un archivo 40 'ue funcione< tambi+n ser" necesario 'ue roorciones la clase de la Librera$ algo 'ue se muestra en el siguiente aartado de esta gua. pac8ae comcburc/incr9 import import import import import import import import import
comcburc/loiimcircuit3ircuit2tate9 comcburc/loiimcomp3omponentDra3onte:t9 comcburc/loiimcomp3omponent4actor09 comcburc/loiimcomp1ndData9 comcburc/loiimcomp5anaed3omponent9 comcburc/loiimdataAttribute2et9 comcburc/loiimdata;it
=>> ?mplement a bare.bone cutom 6oiim component@ /oe inle > input i bit ide@ and /oe output $alue i one more t/an > t/e input $alue@ alo bit ide >= cla ;0te?ncrementer e:tend 5anaed3omponent B == T/e 5anaed3omponent cla con$enientl0 implement -ut about == all o, t/e reCuired met/od All e /a$e to do i to tell it == about t/e di,,erent end (ie@ input and output to t/e
== component) in t/e contructor@ and e need to implement t/e == et4actor0@ propaate@ and dra =>> T/e idt/ o, a b0te >= pri$ate tatic ,inal ;it> 3ontruct a component at t/e i$en location@ it/ t/e i$en > attribute >= ;0te?ncrementer(6ocation loc@ Attribute2et attr) B uper(loc@ attr@ %)9 == T/e t/ird parameter (%) to t/e parent" contructor indicate /o == man0 end t/e component /a ?t" not important t/at t/i be == preciel0 ri/tH T/e 5anaed3omponent ue an Arra06it to manae == t/e end == No e tell t/e 5anaed3omponent upercla about t/e end > Return t/e cla t/at enerated t/i component >= public 3omponent4actor0 et4actor0() B return ;0te?ncrementer4actor0intance9 L =>> Recompute t/e output o, t/i component T/e circuit2tate > parameter maintain in,ormation about t/e current tate o, t/e > circuit >= public $oid propaate(3ircuit2tate circuit2tate) B == Retrie$e t/e current $alue comin into t/i component 7alue in G circuit2tateet7alue(et1nd6ocation('))9 == 3ompute t/e output 7alue out9 i,(ini4ull0De,ined()) B == ?, all input bit are ' or *@ our input i a $alid number@ and == o can be our output out G 7aluecreateMnon(;?TE
=>> Dra t/i component uin t/e data contained in t/e parameter >= public $oid dra(3omponentDra3onte:t conte:t) B == T/e 3omponentDra3onte:t cla contain e$eral con$enience == met/od ,or common operation ?"$e 8ept t/e drain imple == b0 -ut tic8in to t/ee operation conte:tdraRectanle(t/i@ +*)9 conte:tdraIin(t/i)9 L
L
Bte8ncrementer*actor pac8ae comcburc/incr9 import import import import import
comcburc/loiimcompAbtract3omponent4actor09 comcburc/loiimcomp3omponent9 comcburc/loiimdataAttribute2et9 comcburc/loiimdata;ound9 comcburc/loiimdata6ocation9
=>> T/e ob-ect t/at manu,acture ;0te?ncrementer >= cla ;0te?ncrementer4actor0 e:tend Abtract3omponent4actor0 B == T/e Abtract3omponent4actor0 parent cla con$enientl0 implement == -ut about all t/e met/od e need ,or 3omponent4actor0 All e reall0 == need are t/e etName@ create3omponent@ and etO,,et;ound met/od == /ere =>> T/e ole intance o, t/i cla >= tatic ,inal ;0te?ncrementer4actor0 intance G ne ;0te?ncrementer4actor0()9 =>> 3ontruct an intance T/ere i no reaon to /a$e multiple intance > o, t/i cla@ o ? ma8e t/e contructor met/od pri$ate to retrict creation > to it/in t/i cla onl0 >= pri$ate ;0te?ncrementer4actor0() B L =>> Return t/e name o, t/i component cla@ a it i tored in a ,ile >= public 2trin etName() B return ;0te ?ncrementer9 L =>> Return t/e name o, t/i component cla a t/e uer /ould ee it >= public 2trin etDipla0Name() B == T/i ma0 ell be di,,erent ,rom /at i returned b0 etName == T/e to mot li8el0 reaon ,or /a$in di,,erent trin are == t/at e decide on a more uer.,riendl0 name in a ,uture $erion == but e don"t ant to c/ane t/e repreentation it/in ,ile (,or == bac8ard compatibilit0)@ or t/at e ant to adapt to t/e uer" == c/oen lanuae (6oiim doen"t upport internationaliation == ri/t no@ but it i capable o, doin o) return ?ncrementer (.;it)9 L =>> 5anu,acture and return a component o, t/i component cla >= public 3omponent create3omponent(6ocation loc@ Attribute2et attr) B return ne ;0te?ncrementer(loc@ attr)9 L =>> Return a rectanle indicatin /ere t/e component ould appear > i, it ere dropped at t/e oriin >= public ;ound etO,,et;ound(Attribute2et attr) B == ?n t/i cae@ t/e component i a ':' rectanle@ it/ t/e == oriin on t/e midpoint o, t/e eat ide 2o t/e :.coordinate == o, t/e top le,t corner i .'@ t/e 0.coordinate i .*P@ and == o, coure t/e idt/ and /ei/t are bot/ ' return ;oundcreate(.'@ .*P@ '@ ')9 L ==
#lase de la Librera *l unto de acceso a la librera 40 es una clase 'ue e/tiende de 6ibrar0. La función rincial de la librera es mostrar las herramientas 'ue est"n disonibles en la misma< en la mayora de los casos$ las herramientas son todas las herramientas 'ue añaden los diferentes comonentes 'ue han sido definidos$ es decir$ instancias de la clase AddTool 'ue traba9a con diferentes factoras de comonentes.
7omponents pac8ae comcburc/incr9 import -a$autilArra09 import -a$autil6it9 import comcburc/loiimtoolAddTool9 import comcburc/loiimtool6ibrar09 import comcburc/loiimtoolTool9 =>> T/e librar0 o, component t/at t/e uer can acce >= public cla 3omponent e:tend 6ibrar0 B =>> T/e lit o, all tool contained in t/i librar0 Tec/nicall0@ > librarie contain tool@ /ic/ i a li/tl0 more eneral concept > t/an component clae9 practicall0 pea8in@ t/ou/@ t/ere > /ouldn"t be muc/ reaon to in$ent tool be0ond ne intance o, > AddTool >= pri$ate 6it tool9 =>> 3ontruct an intance o, t/i librar0 T/i contructor i /o > 6oiim accee ,irt /en it open t/e AR ,ileH ?t loo8 ,or > a no.arument contructor met/od o, t/e uer.deinated cla >= public 3omponent() B tool G Arra0a6it(ne ToolS B ne AddTool(;0te?ncrementer4actor0intance)@ ne AddTool(?ncrementer4actor0intance)@ ne AddTool(2imple3ounter4actor0intance)@ ne AddTool(3ounter,actor0)@ L)9 L =>> Return t/e tandard name o, t/e librar0 Actuall0@ t/i trin > on"t be ued b0 6oiim >= public 2trin etName() B return 3omponentclaetName()9 L =>> Return t/e name o, t/e librar0 t/at t/e uer ill ee >= public 2trin etDipla0Name() B return ?ncrement9 L =>> Return a lit o, all t/e tool a$ailable in t/i librar0 >= public 6it etTool() B return tool9 L L
@ncrementador Jeneral &na de las mayores venta9as de definir comonentes en 4ava es la osibilidad de 'ue sean configurables a trav+s de sus atributos. #omo e9emlo$ odramos necesitar 'ue el incrementador
traba9ase con cual'uier n2mero de bits< las dos clases 'ue vienen a continuación muestran cómo es osible conseguirlo.
8ncrementer pac8ae comcburc/incr9 import import import import import import import import import import import import import
comcburc/loiimcircuit3ircuit2tate9 comcburc/loiimcomp3omponentDra3onte:t9 comcburc/loiimcomp3omponent4actor09 comcburc/loiimcomp1ndData9 comcburc/loiimcomp5anaed3omponent9 comcburc/loiimdataAttribute9 comcburc/loiimdataAttribute1$ent9 comcburc/loiimdataAttribute6itener9 comcburc/loiimdataAttribute2et9 comcburc/loiimdataAttribute9 comcburc/loiimdata;it
=>> Repreent an incrementer t/at can or8 it/ an0 bit idt/ T/i component > i deined to illutrate /o to ue attribute >= cla ?ncrementer e:tend 5anaed3omponent B =>> T/e attribute repreentin t/e bit idt/ o, t/e input and output >= tatic ,inal Attribute > T/e de,ault $alue o, t/e idt/ attribute >= tatic ,inal ;it> 6iten ,or c/ane to t/e idt/ attribute@ becaue e need uc/ > c/ane to be re,lected in t/e in,ormation about end manaed b0 t/e > 5anaed3omponent upercla >= pri$ate cla 506itener implement Attribute6itener B public $oid attribute6it3/aned(Attribute1$ent e) B L public $oid attribute7alue3/aned(Attribute1$ent e) B i,(eetAttribute() GG > Repreent t/e ole intance o, 506itener (T/e more common > idiom ,or dealin it/ litener do not in$ol$e uc/ a > local $ariable@ but ? tronl0 pre,er t/i idiom@ becaue > ? o,ten ,ind it ue,ul to tore litener in t/e litened.to > ob-ect uin ea8 re,erence to a$oid ituation analoou > to memor0 lea8 /en t/e litened.to ob-ect perit be0ond > t/e intended li,e o, t/e litenin ob-ect A ide e,,ect o, > t/i i t/at t/e litener ould die immediatel0 i, t/e litenin > ob-ect doen"t maintain it on tron re,erence9 /ence t/e > intance $ariable S?t /appen t/at t/e Attribute2et ued /ere > ue tron re,erence@ but t/at" no uarantee t/at a ,uture > $erion ill not) >= pri$ate 506itener m06itener G ne 506itener()9
=>> 3ontruct an incrementer at t/e i$en location it/ t/e i$en > attribute >= ?ncrementer(6ocation loc@ Attribute2et attr) B uper(loc@ attr@ %)9 attraddAttribute6itener(m06itener)9 compute1nd()9 L =>> 2et up t/e end o, t/i component >= pri$ate $oid compute1nd() B == Retrie$e in,ormation needed ,or ettin t/e end . notice t/e
== acce to t/e attribute et to retrie$e t/e idt/ 6ocation loc G et6ocation()9 ;it
public $oid dra(3omponentDra3onte:t conte:t) B conte:tdraRectanle(t/i@ +*)9 conte:tdraIin(t/i)9 L
L
8ncrementer*actor pac8ae comcburc/incr9 import import import import import import
comcburc/loiimcompAbtract3omponent4actor09 comcburc/loiimcomp3omponent9 comcburc/loiimdataAttribute2et9 comcburc/loiimdataAttribute2et9 comcburc/loiimdata;ound9 comcburc/loiimdata6ocation9
=>> 5anu,acture ?ncrementer component >= cla ?ncrementer4actor0 e:tend Abtract3omponent4actor0 B tatic ,inal ?ncrementer4actor0 intance G ne ?ncrementer4actor0()9 pri$ate ?ncrementer4actor0() B L public 2trin etName() B return ?ncrementer9 L public 2trin etDipla0Name() B return ?ncrementer (Qeneral)9 L =>> 3reate an attribute et /oldin all t/e initial de,ault $alue T/i > i t/e onl0 c/ane ,rom t/e ;0te?ncrementer3la cla@ /ere > e impl0 8ept t/e de,inition implemented in t/e parent cla Fere@ t/ou/@ > e ant to inert t/e attribute >= public Attribute2et createAttribute2et() B return Attribute2et,i:ed2et(?ncrementer
public 3omponent create3omponent(6ocation loc@ Attribute2et attr) B return ne ?ncrementer(loc@ attr)9 L public ;ound etO,,et;ound(Attribute2et attr) B return ;oundcreate(.'@ .*P@ '@ ')9 L L
#ontador ?"sico *n ocasiones necesitamos comonentes 'ue no sean de naturalea totalmente combinacional$ es decir$ comonentes 'ue tengan cierta memoria. la hora de definir tales comonentes e/iste una imortante sutilea ;o es osible 'ue el mismo comonente almacene el estado$ or'ue un comonente individual uede aarecer varias veces en el mismo circuito. ;o uede aarecer varias veces directamente$ ero s uede aarecer varias veces si forma arte de un subcircuito 'ue se usa en m"s de una ocasión. La solución es crear una clase nueva 'ue reresente el estado del ob9eto y asociar instancias de +sta con el comonente a trav+s del estado del circuito adre. *n este e9emlo$ 'ue imlementa un contador de K bits de flanco de subida$ odemos definir la clase 3ounter2tate ara 'ue lleve esta tarea a cabo$ adem"s de las imlementaciones de 3omponent y 3omponent4actor0 'ue han ilustrado los 2ltimos e9emlos. *l ob9eto 3ounter2tate nos recuerda el estado actual del contador y la 2ltima entrada de relo9 'ue ha visto (ara detectar los flancos de subida). SimpleCounter pac8ae comcburc/incr9 import import import import import import import import import import import import import
comcburc/loiimcircuit3ircuit2tate9 comcburc/loiimcomp3omponentDra3onte:t9 comcburc/loiimcomp3omponent4actor09 comcburc/loiimcomp1ndData9 comcburc/loiimcomp5anaed3omponent9 comcburc/loiimdataAttribute2et9 comcburc/loiimdata;it
=>> Repreent a imple .bit counter T/i e:ample illutrate /o a > component can maintain it on internal tate >= cla 2imple3ounter e:tend 5anaed3omponent B =>> T/e idt/ o, input and output >= pri$ate tatic ,inal ;it
Note /at" not /ereH
2imple3ounter(6ocation loc@ Attribute2et attr) B uper(loc@ attr@ %)9 et1nd('@ loctranlate(.'@ ')@ ;it
public 3omponent4actor0 et4actor0() B return 2imple3ounter4actor0intance9 L public $oid propaate(3ircuit2tate circuit2tate) B == Fere ? retrie$e t/e tate aociated it/ t/i component $ia == a /elper met/od ?n t/i cae@ t/e tate i in a 3ounter2tate == ob-ect 3ounter2tate tate G et3ounter2tate(circuit2tate)9 7alue cl8 G circuit2tateet7alue(et1nd6ocation('))9 i,(tateet6at3loc8() GG null || (tateet6at3loc8() GG 7alue4A621 && cl8 GG 7alueTRJ1)) B == 1it/er t/e tate a -ut created@ or ele e"re on a riin ede == ,or t/e cloc8 input9 in eit/er cae@ increment t/e counter 7alue ne7alue G 7aluecreateMnon(;?TE
== == == == ==
(Kou mi/t be tempted to determine t/e counter" current $alue $ia circuit2tateet7alue(et1nd6ocation(*)) T/i i erroneou@ t/ou/@ becaue anot/er component ma0 be pu/in a $alue onto t/e ame ire@ /ic/ could lead to con,lict t/at don"t reall0 repreent t/e $alue t/e counter i emittin)
L
public $oid dra(3omponentDra3onte:t conte:t) B conte:tdraRectanle(t/i)9 conte:tdra3loc8(t/i@ '@ Direction1A2T)9 conte:tdraIin(t/i@ *)9
== ?"d li8e to dipla0 t/e current counter $alue centered it/in t/e == rectanle Foe$er@ i, t/e conte:t a0 not to /o tate (a == /en eneratin printer output)@ t/en ? /ouldn"t do t/i i,(conte:tet2/o2tate()) B 3ounter2tate tate G et3ounter2tate(conte:tet3ircuit2tate())9 ;ound bd G et;ound()9 Qrap/icJtildra3enteredTe:t(conte:tetQrap/ic()@ 2trinJtiltoFe:2trin(;?TE> Retrie$e t/e tate aociated it/ t/i counter in t/e circuit tate@ > eneratin t/e tate i, necear0 >= protected 3ounter2tate et3ounter2tate(3ircuit2tate circuit2tate) B 3ounter2tate tate G (3ounter2tate) circuit2tateetData(t/i)9 i,(tate GG null) B == ?, it doen"t 0et e:it@ t/en e"ll et it up it/ our de,ault == $alue and put it into t/e circuit tate o it can be retrie$ed == in ,uture propaation tate G ne 3ounter2tate(null@ 7aluecreateMnon(;?TE
7ounter4tate pac8ae comcburc/incr9 import comcburc/loiimcomp3omponent2tate9 import comcburc/loiimdata7alue9 =>> Repreent t/e tate o, a counter >= cla 3ounter2tate implement 3omponent2tate@ 3loneable B =>> T/e lat cloc8 input $alue ober$ed >= pri$ate 7alue lat3loc89 =>> T/e current $alue emitted b0 t/e counter >= pri$ate 7alue $alue9 =>> 3ontruct a tate it/ t/e i$en $alue >= public 3ounter2tate(7alue lat3loc8@ 7alue $alue) B t/ilat3loc8 G lat3loc89 t/i$alue G $alue9 L =>> Return a cop0 o, t/i ob-ect >= public Ob-ect clone() B == > Return t/e lat cloc8 ober$ed >= public 7alue et6at3loc8() B return lat3loc89 L =>> Jpdate t/e lat cloc8 ober$ed >= public $oid et6at3loc8(7alue $alue) B lat3loc8 G $alue9 L =>> Return t/e current $alue emitted b0 t/e counter >= public 7alue et7alue() B return $alue9 L =>> Jpdate t/e current $alue emitted b0 t/e counter >= public $oid et7alue(7alue $alue) B t/i$alue G $alue9 L L
4imple7ounter*actor pac8ae comcburc/incr9 import import import import import
comcburc/loiimcompAbtract3omponent4actor09 comcburc/loiimcomp3omponent9 comcburc/loiimdataAttribute2et9 comcburc/loiimdata;ound9 comcburc/loiimdata6ocation9
=>> 5anu,acture imple .bit counter T/i e:ample illutrate /o a > component can maintain it on internal tate All o, t/e code rele$ant > to tate@ t/ou/@ appear in t/e 2imple3ounter and
> 3ounter2tate clae >= cla 2imple3ounter4actor0 e:tend Abtract3omponent4actor0 B tatic ,inal 2imple3ounter4actor0 intance G ne 2imple3ounter4actor0()9 pri$ate 2imple3ounter4actor0() B L public 2trin etName() B return 2imple 3ounter9 L public 2trin etDipla0Name() B return 3ounter (2imple)9 L public 3omponent create3omponent(6ocation loc@ Attribute2et attr) B return ne 2imple3ounter(loc@ attr)9 L public ;ound etO,,et;ound(Attribute2et ar') B return ;oundcreate(.'@ .*P@ '@ ')9 L L
#ontador *sta introducción a las libreras de Logisim concluye con un contador bastante sofisticado 'ue ermite al usuario modificar el valor actual utiliando la erramienta :e #ambio. *sto hace necesario imlementar el m+todo et4eature de 3omponent de manera 'ue devuelva una imlementación Io8able< la imlementación Io8able roorciona acceso a una imlementación 3aret 'ue uede
hacerse cargo de los eventos de teclado y ratón de forma aroiada. *ste e9emlo tambi+n muestra la 'ue considero la me9or forma de estructurar una librera de comonentes ,ener una simle clase or cada comonente$ con la clase factora anidada de forma rivada 9unto con cual'uier clase soortada.
7ounter pac8ae comcburc/incr9 import -a$aat3olor9 import -a$aatQrap/ic9 import -a$aate$entMe01$ent9 import import import import import import import import import import import import import import import import import import import
comcburc/loiimcircuit3ircuit2tate9 comcburc/loiimcompAbtract3omponent4actor09 comcburc/loiimcomp3omponent9 comcburc/loiimcomp3omponent4actor09 comcburc/loiimcomp3omponentJer1$ent9 comcburc/loiimcomp1ndData9 comcburc/loiimdataAttribute9 comcburc/loiimdataAttribute1$ent9 comcburc/loiimdataAttribute6itener9 comcburc/loiimdataAttribute2et9 comcburc/loiimdataAttribute2et9 comcburc/loiimdataAttribute9 comcburc/loiimdata;it
=>> ?mplement a counter ,or an arbitrar0 number o, bit@ /oe $alue can be > modi,ied interacti$el0 b0 t/e uer T/e primar0 purpoe o, t/i e:ample i > to illutrate t/e addition o, uer interaction9 t/e entr0 point ,or t/i > interaction i $ia t/e et4eature met/od >= cla 3ounter e:tend 2imple3ounter B == Note t/at ?"$e e:tended 2imple3ounter to in/erit all o, it loic == ,or propaation and drain == T/e pre$iou e:ample /a$e included to eparate clae ,or eac/ == component ?n practice@ t/ou/@ ? peronall0 pre,er /a$in -ut == one ,ile per component t0pe T/e mot con$enient tec/niCue ,or t/i == i to ma8e a pri$ate neted cla ,or t/e ,actor0@ and to include == a contant re,errin to t/e ,actor0 public tatic ,inal 3omponent4actor0 ,actor0 G ne 4actor0()9 == ?"ll retrict t/e ma:imum idt/ to *%@ ince t/e rectanle dran doen"t == /a$e room to dipla0 more t/an *% bit tatic ,inal Attribute
L
=>> ?n addition to litenin ,or c/ane to t/e idt/ attribute (a it/ > t/e ?ncrementer e:ample)@ t/i alo er$e ,or manu,acturin > t/e caret ,or interactin it/ t/e uer >= pri$ate cla 506itener implement Attribute6itener@ Io8able B public $oid attribute6it3/aned(Attribute1$ent e) B L public $oid attribute7alue3/aned(Attribute1$ent e) B i,(eetAttribute() GG > 5anu,acture t/e caret ,or interactin it/ t/e uer >= public 3aret etIo8e3aret(3omponentJer1$ent e$ent) B return ne Io8e3aret(e$entet3ircuit2tate())9 L L =>> ?mplement all t/e ,unctionalit0 t/at interact it/ t/e uer /en > po8in t/i component >= pri$ate cla Io8e3aret e:tend Abtract3aret B =>> T/e circuit tate t/e uer i po8in it/ >=
3ircuit2tate circuit2tate9 =>> T/e initial $alue to return to t/e initial $alue (3ancelin an edit i not currentl0 > upported in 6oiim@ but it ma0 be in a ,uture $erion) >= 7alue init7alue9 Io8e3aret(3ircuit2tate circuit2tate) B t/icircuit2tate G circuit2tate9 3ounter2tate initial G 3ountert/iet3ounter2tate(circuit2tate)9 init7alue G initialet7alue()9 et;ound(3ountert/iet;ound())9
L
=>> Dra an indicator t/at t/e caret i bein elected Fere@ e"ll dra > a red rectanle around t/e $alue >= public $oid dra(Qrap/ic ) B ;ound bd G 3ountert/iet;ound()9 ;it
et3olor(3olorR1D)9 int id G V > len + %9 == idt/ o, caret rectanle int /t G *W9 == /ei/t o, caret rectanle draRect(bdetU() + (bdet
L
=>> Irocee a 8e0 b0 -ut addin it onto t/e end o, t/e current $alue >= public $oid 8e0T0ped(Me01$ent e) B == con$ert it to a /e: diit9 i, it in"t a /e: diit@ abort int $al G 3/aracterdiit(eetMe03/ar()@ *W)9 i,($al X ') return9 == compute t/e ne:t $alue ;it *W + $al) & idt/et5a8())9 == c/ane t/e $alue immediatel0 in t/e component" tate@ and propaate == it immediatel0 tateet7alue(ne7alue)9 circuit2tateet7alue(3ountert/iet1nd6ocation(*)@ ne7alue@ 3ountert/i@ *)9
L =>> 3ommit t/e editin 2ince t/i caret modi,ie t/e tate a t/e uer edit@ > t/ere i not/in to do /ere >= public $oid top1ditin() B L =>> 3ancel t/e editin >= public $oid cancel1ditin() B 3ountert/iet3ounter2tate(circuit2tate)et7alue(init7alue)9 L
L
== T/e litener intance $ariable@ t/e contructor@ and compute1nd all
== proceed -ut a in t/e ?ncrementer cla pri$ate 506itener m06itener G ne 506itener()9
pri$ate 3ounter(6ocation loc@ Attribute2et attr) B uper(loc@ attr)9 attraddAttribute6itener(m06itener)9 compute1nd()9 L pri$ate $oid compute1nd() B 6ocation loc G et6ocation()9 ;it
=>> Retrie$e a pecial ,eature aociated it/ t/i component Io8e upport > i conidered a pecial ,eature t/e po8e tool@ 6oiim ill call t/i met/od it/ t/e 8e0 bein t/e Io8able > cla acce t/e caret ,or interaction >= public Ob-ect et4eature(Ob-ect 8e0) B i,(8e0 GG Io8ablecla) return m06itener9 return uperet4eature(8e0)9 L public 3omponent4actor0 et4actor0() B return ,actor09 L L
:irectrices Aprendiendo más 1"s all" de la serie de e9emlos 'ue se roorcionan a'u$ el código fuente de Logisim roorciona una coiosa cantidad de e9emlos añadidos$ aun'ue no siemre muestren tanta atención a su legibilidad y buen diseño. %ara una m"/ima ortabilidad de las futuras versiones$ deberas amoldarte lo m"s osible a las clases de los a'uetes. ;aturalmente uedes utiliar otros a'uetes$ ero siemre sabiendo 'ue son m"s vulnerables a cambios en futuras versiones de Logisim. *n general estoy m"s 'ue disuesto a resonder cual'uier etición de ayuda. dem"s$ información acerca de errores y sugerencias ara osibles me9oras son$ naturalmente$ bien recibidas.
istribuci(n *res libre de distribuir cual'uiera de las libreras 40 'ue desarrolles sin restricción alguna. La restricciones de J%L se alican$ sin embargo$ si alg2n troo de tu código se deriva de alg2n troo del código fuente de Logisim ('ue se hace 2blico ba9o J%L). :erivar a artir del código roorcionado en la !uía del Usuario no infringe tales restricciones< estos e9emlos son de dominio 2blico. Si 'uieres comartir tu librera con otros usuarios de Logisim$ me encantar" roorcionar un linB a una "gina Yeb anfitriona o el mismo archivo 40 desde el sitio web de Logisim. Si crees 'ue tu librera debera estar incluida en la ublicación b"sica de Logisim$ entonces tu sugerencia ser" bienvenida y estar+ contento de agradecer tu contribución en versiones de Logisim 'ue incluyan tu traba9o.
cerca del rograma Logisim es software de código abierto. *l código fuente est" incluido en el directorio rc del archivo 40 'ue se distribuye. Si encuentras 2til Logisim$ or favor h"melo saber. #omunic"dmelo especialmente si sois una institución educativa< esta información me ermitir" ganar m"s aoyo ara el traba9o.
Ser" bienvenido cual'uier mail acerca de Logisim$ incluyendo informes de errores y sugerencias. #uando me escribas$ or favor recuerda 'ue he traba9ado duro ara desarrollar Logisim sin recibir retribución alguna or tu arte. Si 'uieres tener el derecho a 'ue9arte del software$ entonces te sugerira 'ue te gastases el dinero en un rograma 'ue comita con Logisim. (;o conoco ning2n cometidor de código abierto 'ue se acer'ue al con9unto de caractersticas 'ue ofrece Logisim). Sin embargo$ sigo interesado en me9orar Logisim$ y tus sugerencias seran m"s 'ue bienvenidas.
Aviso del coprig;t
#oyright (c) G77R$ #arl ?urch. Logisim es software libre< uedes redistribuirlo y5o modificarlo ba9o los t+rminos de la Licencia %2blica Jeneral J;& como se ublica en la Cree Software Coundation< igualmente en la versión G de la Licencia o (a tu elección) cual'uier versión osterior. Logisim se distribuye con la eserana de ser 2til$ ero S@; ;@;J&; J0;,Z< incluso sin la garanta imlcita de #31*0#@?@L@:: o ?&*; *S,:3 %0 &; &S3 %0,@#&L0. %ara m"s información consultar la Licencia %2blica Jeneral J;&.
Agradecimientos *l código fuente de Logisim es rincialmente fruto de mi roio traba9o< debo agradecer a las instituciones 'ue financian mi traba9o como rofesor$ incluyendo este rograma #omenc+ este rograma en la &niversidad de Saint 4ohn (#ollegeville$ 1innesota$ &S) en G777 - G77H y lo he continuado en endri/ #ollege (#onway$ rBansas$ &S) desde el G77H hasta el da de hoy. Le estoy muy agradecido a estas instituciones or haberme roorcionado el tiemo y los recursos ara traba9ar en este royecto. ¡39al" todos los colegios y universidades se reocuaran tanto or una e/celente enseñana como lo hacen estas instituciones! *n segundo lugar est" %ablo Leal 0amos 'ue desarrolló la traducción al castellano ara la versión G.8.7 mientras estudiaba en endri/ como alumno de intercambio de *saña. Cinalmente y tambi+n significante est"n dos gruos de estudiantes 'ue han traba9ado con las rimeras versiones de Logsim *n la rimavera del G778 en las clases de #S#@ 8R7 en el #olegio de Saint ?enedict y en la &niversidad de Saint 4ohn$ 'ue utiliaron las versiones m"s rudimentarias cuando Logisim estaba siendo desarrollado< y tambi+n en la rimavera de G77R en las clases de #S8# en la &niversidad de #alifornia$ ?erBeley$ 'ue beta-testearon las rimeras iteraciones de la versión G.7. ¡*stos alumnos dieron con muchos errores y les estoy muy agradecido or su aciencia y or sus sugerencias! lgunas de las ieas de Logisim rovienen de a'uetes de otros 'ue son utiliados or Logisim< algunas de estas ieas se distribuyen como arte de Logisim.
%@ SunMs 4ava (obviamente) %royecto SunMs 4avahel