Mostrando las entradas con la etiqueta Compuertas. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Compuertas. Mostrar todas las entradas
Learning machine #15 - Operaciones a nivel del bits.
Hola de nuevo a todos, el día de hoy vamos a ver cómo es que se realizan las
operaciones a nivel de bit usando cómo referencia a los operadores de C#. Hay
que tener en cuenta que dependiendo de la plataforma y del lenguaje que se use,
las operaciones pueden variar un poco, pero el concepto sigue siendo el mismo.
Para empezar, hay que tomar en cuenta que este tipo de operador solo se aplica
a los números enteros "int", por lo que podemos decir que aplicar cierta
operación puede producir un resultado no esperado si no tomamos en
consideración lo anterior.
Operadores de desplazamiento (<< y >>)
El operador "<<" o "operador de desplazamiento a la izquierda" (Left
shift para los cuates). Sirve para desplazar los bits a la izquierda, es decir
mueve el valor de un bit. Para poder observar un poco mejor a lo que me
refiero, tomemos el número 101 en base dos, si desplazamos un bit a la
izquierda, tendremos el número 1010. Hay que tener en cuenta lo que mencione
al inicio, las operaciones se hacen en número enteros, si el número está
definido cómo "int" tendríamos en memoria algo cómo la imagen que sigue:
Si lo desplazamos un lugar a la izquierda tendremos:
En c# podemos indicar cuantos "lugares" queremos desplazar nuestro número. Si
por ejemplo desplazamos nuestro número ocho lugares, tendremos:
Nuestro número original era 5, cuando lo desplazamos un lugar obtuvimos 10 y
cuando lo desplazamos 8 obtuvimos 1280.
¿Pero que pasa si lo desplazamos 29 lugares? Simple, obtenemos lo siguiente:
Y no parece nada del otro mundo, pero que pasa si le pedimos a c# que nos diga
cual es el valor de este número, nos dirá que es -1610612736 que está bien
pero si no esperamos un número negativo podría sorprendernos un poco (hace un tiempo en un post, mas o menos expliqué por que pasa, sientete
libre de revisarlo).
Si desplazamos el número 30 lugares tendremos:
El desplazamiento es realmente intuitivo, solo hay que tener las
consideraciones necesarias.
El operador ">>" o "operador de desplazamiento hacia la derecha" (right
shift) sirve para desplazar los bits a la derecha. Al igual que el operador
"<<" se aplica a los números enteros y sirve para "mover" los números.
Tomemos cómo ejemplo el mismo número; es decir 5 o 101 en base dos; tendremos:
Si desplazamos un lugar a la derecha tendremos:
Es muy fácil ver que en efecto se "movió" a la derecha y ahora en lugar de ser
el número cinco, es el número dos. Si al número cinco lo desplazamos tres
lugares a la derecha, tendremos;
Por lo que la variable si es que le asignamos el mismo valor pero con el
desplazamiento habremos perdido nuestro valor y si aplicamos el desplazamiento
contrario no lo podemos recuperar. Por eso lo que yo hago es siempre asignar
una variable auxiliar para solo modificar el valor en ella y dejar intacta la
variable original.
Operador Not (~).
Dependiendo del lenguaje que se use varia un poco cómo se especifica este
operador. En C# el operador "not" se escribe usando "~". Su función es la de
invertir los bits de un número. Para demostrar con mayor claridad tomemos de
nueva cuenta al número cinco;
Si usamos el operador "~" obtenemos:
Ahora tenemos que si le aplicamos el operador "~" al número 5 nos resulta el
valor de -6 (recordatorio amable, el tipo "int" usa un bit para indicar el
signo).
Operador AND (&).
El operador "and" aplica la operación and a dos números. Hay que
recordar que "and" solo produce un uno cuando ambas valores son uno, en
cualquier otro caso devuelve cero. Cómo ejemplo tomemos el número diez decimal
o 1010 en binario y el número dos o 10 en binario.
Cómo podrás observar, al aplicar la operación al número diez junto con el
número dos obtenemos el número dos.
Operador Or (|).
El operador " Or" aplica la operación or a dos números. Tomemos cómo ejemplo
los números cinco decimal o 101 en binario y el número diez decimal o 1010 en
binario, tendremos lo siguiente.
Recordemos que la operación or devuelve un uno cuando cualquiera de los dos
valores es uno, por lo que al aplicar la operación or al número cinco y diez
en decimal, nos resulta quince.
Y bien, por ahora es todo, en el siguiente post veremos unos ejemplos en c#
donde haremos uso de los operadores para agilizar nuestro trabajo. Recuerda
que en este mes cumplimos años por lo que espero publicar unos cuantos post
mas para "celebrar".
Los leo luego.
6/21/2020 09:19:00 p.m.
4th Anniversary
,
c#
,
Compuertas
,
programacion
Learning machine #14 - WinBreadboard
Hola de nuevo a todos, el día de hoy vamos a ver un poco del programa "Winbreadboard" que sirve para simular algunos circuitos integrados entre los cuales se encuentran las compuertas lógicas.
Antes que nada, hay que resaltar que hay dos versiones de este programa, la primera de paga y la segunda una versión de prueba. La versión de prueba solo ofrece la capacidad de utilizar un chip a la vez, pero para nuestros fines aplica de maravilla. Si quieres la versión completa, con tristeza les anuncio que aqui no la van a encontrar y el sitio que aparece en la ayuda no está activo por lo que nuestro amigo "gugul" puede darnos una ayudadita para obtener la version completa. Recuerda que aqui no apoyamos la pirateria, pero cuando el software escasea, algo se debe de hacer.
Primero vamos a probar la compuerta lógica "AND" para poder agregarla, debemos de ir al menú "Chips">>"And Gates">>"7408 Quad 2 input"
Al hacer clic, se colocará un chip con el número 7408. El chip 7408 contiene cuatro compuertas lógicas "AND" y su diagrama funcional es el que sigue:
Para poder usarlo, debemos de conectar VCC (pin 14) a 5v y GND (pin 7) a tierra, una vez conectados los pines anteriores, el chip estará listo para usarse. Si te fijaste bien, verás que los pines 1, 2 y 3 conforman una compuerta "and".
Para hacer las conexiones bastará con hacer clic en cualquier cuadro del "protoboard" y arrastrar el cable que se crea hasta cualquier orificio disponible.
Del lado izquierdo están posicionados el control de encendido (parce un swicht con las posiciones on/off), +5 (que provee 5 volts) y GND (que es la conexion a tierra). Para hacer funcionar el chip bastaría con conectar GND del protoboard con GND del chip y VCC del chip con +5 del protoboard, pero lo recomendable es conectar el extremo inferior del protoboard a GND y el superior a +5, con esto todo el riel estaría conectado, por lo que a la hora de conectar mas chips las conexiones serían mas cortas.
Para poder alternar entre el apagado y encendido en cada entrada de la compuerta "AND", hay dos opciones. Cuando conectamos la entrada "A" a +5, le estamos dando un uno (encendido), pero si en su lugar la conectamos con GND, le estaríamos dando un cero (apagado). WinbreadBoard ofrece la posibilidad de alternar entre estos estados usando "pequeños apagadores". En la parte superior en orden de izquierda a derecha se encuentran:
Para poder observar la salida de la compuerta, podemos usar los LED's que se encuentran en la parte inferior. Solamente debemos de unir el negativo del LED a GND y el positivo del LED a la salida de nuestra compuerta.
Después simplemente probamos:
Y bien, por ahora es todo, puedes explorar todas las opciones que WinbreadBoard trae, pero si es recomendable usar la versión completa para poder agregar mas chips y usar todos los disponible. Nuevamente te recuerdo que no soy fan de la piratería, pero si no encuentras cómo comprar la versión completa, puedes preguntarle a "guguel" para que te asista. En el próximo post veremos cómo usar los chips reales (suponiendo que la cuarentena me deje comprarlos).
Los leo luego.
Antes que nada, hay que resaltar que hay dos versiones de este programa, la primera de paga y la segunda una versión de prueba. La versión de prueba solo ofrece la capacidad de utilizar un chip a la vez, pero para nuestros fines aplica de maravilla. Si quieres la versión completa, con tristeza les anuncio que aqui no la van a encontrar y el sitio que aparece en la ayuda no está activo por lo que nuestro amigo "gugul" puede darnos una ayudadita para obtener la version completa. Recuerda que aqui no apoyamos la pirateria, pero cuando el software escasea, algo se debe de hacer.
Primero vamos a probar la compuerta lógica "AND" para poder agregarla, debemos de ir al menú "Chips">>"And Gates">>"7408 Quad 2 input"
Al hacer clic, se colocará un chip con el número 7408. El chip 7408 contiene cuatro compuertas lógicas "AND" y su diagrama funcional es el que sigue:
Para poder usarlo, debemos de conectar VCC (pin 14) a 5v y GND (pin 7) a tierra, una vez conectados los pines anteriores, el chip estará listo para usarse. Si te fijaste bien, verás que los pines 1, 2 y 3 conforman una compuerta "and".
Para hacer las conexiones bastará con hacer clic en cualquier cuadro del "protoboard" y arrastrar el cable que se crea hasta cualquier orificio disponible.
Del lado izquierdo están posicionados el control de encendido (parce un swicht con las posiciones on/off), +5 (que provee 5 volts) y GND (que es la conexion a tierra). Para hacer funcionar el chip bastaría con conectar GND del protoboard con GND del chip y VCC del chip con +5 del protoboard, pero lo recomendable es conectar el extremo inferior del protoboard a GND y el superior a +5, con esto todo el riel estaría conectado, por lo que a la hora de conectar mas chips las conexiones serían mas cortas.
Para poder alternar entre el apagado y encendido en cada entrada de la compuerta "AND", hay dos opciones. Cuando conectamos la entrada "A" a +5, le estamos dando un uno (encendido), pero si en su lugar la conectamos con GND, le estaríamos dando un cero (apagado). WinbreadBoard ofrece la posibilidad de alternar entre estos estados usando "pequeños apagadores". En la parte superior en orden de izquierda a derecha se encuentran:
- Un generador de pulsos
- Cuatro dip switches (a, b, c, d)
- Un panel para nombrar los switch (a, b, c, d)
- Ocho dip switches mas (e ~ l)
![]() |
| Conectamos EL swicth D con el pin dos del chip y el switch C con el pin uno del chip |
![]() |
| Las conexiones pueden ser iguales a las de la imagen. |
![]() |
| Ambas entradas son ceros |
![]() |
| Una de las entradas es uno |
![]() |
| Ambas entradas son uno por lo que la salida es un uno tambien. |
Y bien, por ahora es todo, puedes explorar todas las opciones que WinbreadBoard trae, pero si es recomendable usar la versión completa para poder agregar mas chips y usar todos los disponible. Nuevamente te recuerdo que no soy fan de la piratería, pero si no encuentras cómo comprar la versión completa, puedes preguntarle a "guguel" para que te asista. En el próximo post veremos cómo usar los chips reales (suponiendo que la cuarentena me deje comprarlos).
Los leo luego.
4/19/2020 01:41:00 p.m.
Compuertas
,
Learning Machine
Back to basics #9 - Compuertas lógicas
Hola de nuevo a todos, el día de hoy vamos a ver un poco sobre la lógica.
Cómo muchos de ustedes sabrán, la unidad básica de numeración es el binario; es decir que solo hay dos dígitos disponibles para representar a los demás. Al solo disponer de unos y ceros, la cosa es un tanto "simple".
Electrónicamente hay ciertos circuitos que son capaces de hacer operaciones sobre los "unos" y "ceros" y dependiendo del tipo de operación para el cual fue diseñado el circuito nos devolverá un valor, a estos circuitos se les denomina "compuerta lógica". Existen siete tipos de compuertas (básicos son cuatro) y cada una funciona diferente. Ahora veamos cuales son.
Cómo muchos de ustedes sabrán, la unidad básica de numeración es el binario; es decir que solo hay dos dígitos disponibles para representar a los demás. Al solo disponer de unos y ceros, la cosa es un tanto "simple".
Electrónicamente hay ciertos circuitos que son capaces de hacer operaciones sobre los "unos" y "ceros" y dependiendo del tipo de operación para el cual fue diseñado el circuito nos devolverá un valor, a estos circuitos se les denomina "compuerta lógica". Existen siete tipos de compuertas (básicos son cuatro) y cada una funciona diferente. Ahora veamos cuales son.
AND
La compuerta AND (Y en español) es una compuerta lógica que recibe dos entradas y tiene una salida. Su símbolo es el siguiente:
Tenemos que la compuerta AND tiene las entradas "A" y "B" pero además posee una salida "C". Antes de continuar imaginemos que cada que vemos un uno, significa hay un voltaje y para fines prácticos serán 5v, por lo que para la compuerta AND, si tenemos un cero a la entrada "A" y un cero a la entrada "B", la salida "C", tendrá un cero. Una forma fácil de recordar cómo es que funciona la compuerta AND es tomar un enunciado cómo ejemplo. "Ve a la farmacia a traer Alcohol y paracetamol., Solo si hay alcohol Y paracetamol traes banditas, si no no traigas nada." Esto significa que solo cuando las primeras condiciones se cumplen, la tercera también lo hará, es decir solo si hay dos unos a la entrada, también habrá un uno a la salida, retomado el ejemplo, Sí hay alcohol y no hay paracetamol, entonces no se compran las banditas, sí hay banditas pero no hay alcohol de igual manera las banditas no se compran. Sí no hay alcohol y tampoco hay paracetamol las banditas no se compran.
Or
La compuerta OR (O en español) es una compuerta lógica que recibe dos entradas y tiene una salida. Su símbolo es el siguiente:
La compuerta OR tine las entradas "A" y "B" y una salida "C". Para entender un poco cómo funciona, tomemos el siguiente enunciado: "Ve a la tienda y sí hay vino O jugo compras vasos". Para evaluar el resultado es importante notar que si una de las entradas está encendida, la salida también lo estará. Si retomamos el ejemplo, sí hay vino, se compran los vasos aun si no hay jugo. Sí hay jugo de igual forma se compran los vasos aun si no hay vino. Sí hay vino y jugo, se compran los vasos de igual forma. Solo cuando no hay vino y jugo, no se compran los vasos. Para la compuerta lógica OR es lo mismo, solo cuando las dos entradas son ceros (o están apagadas) la salida también lo estará. Para los otros casos la salida tendrá un uno (o estará encendida).
Xor
La compuerta XOR (O exclusivo en español) es una compuerta lógica que recibe dos entradas y tiene una salida. Su símbolo es el siguiente:
La compuerta XOR tiene las entradas "A" y "B" y una salida "C". Esta compuerta solo tendrá un uno la salida cuando "A" o "B" tengan también un uno, pero ojo solamente cuando una o la otra pero no ambas, Si ambas entradas son unos o ambas entradas son ceros, la salida será cero.
Not
La compuerta Not (No en español pero en realidad significa el inverso) es una compuerta lógica que recibe una entrada. Su símbolo es el siguiente:
La compuerta NOT solo posee una entrada "A" y una salida "B". Cómo no se me ocurre una buena metáfora, solo digamos que sirve para invertir lo que se aplique a la entrada "A", es decir sí la entrada es un cero (apagado), la salida será un uno (encendido) y viceversa.
NAND, NOR y XNOR
Para las compuertas NAND, NOR y XNOR las entradas son las mismas que sus contra partes.
La única diferencia es que estás funcionan al revés, si en la compuerta AND esperamos un cero a la salida, en la compuerta NAND esperaríamos un uno (Obviamente ingresando las mismas entradas). Seguramente te diste cuenta que es lo mismo usar una compuerta NAND que usar una AND y una NOT juntas y de hecho es posible obtener el mismo resultado de una usando otras.
Y bien, por ahora es todo. En el siguiente post veremos cómo "simular" las compuertas usando programación y después veremos cómo usar los circuitos para prender LED's.
Los leo luego.
4/12/2020 04:32:00 p.m.
aprende
,
Basics
,
Compuertas
Suscribirse a:
Entradas
(
Atom
)



















