TOP
AutoresTOTAL
LecturasSET 23
125925 visitas
- Contenidos - SET Staff
- Editorial - Editor
- Log de Noticias - Garrulon
- Bazar de SET - Varios Autores
- Preprocesado SMS de Movistar (bazar) - Krip7ik
- Virus de nuestro tiempo (bazar) - PL480
- Kontra el Sistema (bazar) - _MeNpH_
- Movidas en GIMP (bazar) - TryckY
- Videoklub: Pasion por el cine (bazar) - ^pRoviDoR
- El Arte de la Ingenieria Social II (bazar) - Tahum
- Er Pako Underground (bazar) - SET Staff
- Ascii rules (bazar) - RagPutana
- Como ganar a las siete y media (bazar) - Hendrix
- BookMarks (bazar) - SET Staff
- En linea con... Mixter - Paseante
- La Biblioteca del Hacker 2.0 - SET Staff
- MIPS R2000 - YbY
- Proyectos, peticiones, avisos - SET Staff
- Evasion RPC - Dark Raver
- ADSL - Ca0s
- The Bugs Top 10 - Krip7ik/Mortiis
- SET Inbox - Paseante
- Electronica Digital - Parte II - Jnzero
- Domino Dancing - Paseante
- Sobre el limite - IMOEN
- Ensamblador bajo Linux - YbY
- Fuentes Extract - SET Staff
- Llaves PGP - SET Staff
Electronica Digital - Parte II
Autor: Jnzero
-[ 0x0C ]-------------------------------------------------------------------- -[ Electronica Digital - Parte II ]------------------------------------------ -[ by jnzero ]-------------------------------------------------------SET-23- -= ELECTRONICA DIGITAL O COMO CREARSE UN PENTIUM CON UN SOLDADOR =- _____________________________________________________________ Parte II por jnzero [..............................................] Y aquella noche yo estaba celebrando que hacia doce a~os que no me comia una rosca, doce a~os sin estar con una mujer, ni siquiera una shupailla en el pescuezo, ni un solo beso en la boca, doce a~os y en solitario, doce a~os y a palo seco, doce a~os jugando al cinco contra uno, por eso aquella noche yo estaba convencido de que iba a triunfar, de que iba a comerme algo y me lo comiiii... vaya si me lo comi... y en mala hora me lo comi, [...] y ella se llamaba manolo. (Mojinos Escozios) [...............................................] Weeeeeeeeeeeeeeeee!. Pero que os habeis tomado para tenerle tanto aprecio a la electronica como para seguir leyendo!. Wow! eso son ganas. Como recompensa a todos aquellos que se tragaron el tordo del numero pasado aqui va un regalito. ------------------4. Modulos combinacionales basicos. =============================== O la maravilla de la abstraccion. ------------------------------------4.1 Descodificador E ___|____ | _____/ |-- z3 x1 --| |-- z2 x0 --| _____ |-- z1 |______\_|-- z0 Imaginaos que habeis estado utilizando numeros 900 hasta decir basta, desde vuestra casa y sin ningun tipo de precaucion (lo cual no dice mucho a vuestro favor puesto que mi articulo en SET 21 lo dejaba *muy* claro) Y claro os entra la paranoia y quereis colocar un sistema de seguridad en vuestra casa, de tal manera que metais un codigo y os deje pasar y en caso contrario te salga una TV con el Sanchez Drago dando la co~a (lo cual espanta al mas pintado). Pues con un descodificador puedes hacerlo. El funcionamiento del descodificador es sencillo. Tiene 'x' entradas y '2^x' salidas, luego en el caso de arriba tenemos 2 entradas y 4 salidas (es un descodificador 2 a 4). Lo cachondo del asunto es que metiendo un numero por las entradas (binario se entiende) la correspondiente salida se pone a 1. Ex: Queremos que nuestro sistema de 'seguridad' desactive el programa de Sanchez Drago cuando le metemos un 2. Esto traducido a binario es '10', luego en las entradas tendremos que poner x1: 1 x0: 0 ademas de la entrada E (llamada de capacitacion), que es lo que permite que el circuito vaya bien, luego E=1. Asi pues imaginaos el circuito siguiente: E ___|____ | _____ /|-- z3------------[DRAGO] x1 --| |-- z2--------------------------[ABRIR PUERTA] x0 --| _____ |-- z1------------[DRAGO] |______\_|-- z0------------[DRAGO] Mientras metamos el codigo '10' la puerta se abrira, en caso contrario, plaf! adios vida social. ------------------------------------4.2 Codificador Ahora imaginaos que sois unos enfermos y en vez de poner cuatro posibles salidas poneis muchas mas. Introducir a pelo 64 o 128 '1's o '0's seria cuanto menos infernal. Que tal si le acoplamos un teclado en el que cada letra tenga su correspondiente codificacion binaria? por ejemplo, si pulsamos la tecla '2' que salga '10'. Voila, tenemos un dispositivo que nos permite hacer eso. E ___|____ x3--| \ _ | x2--| |-- z1 x1--| _ |-- z0 x0--|__/_____| Bien, que pasa si metemos un 1 en x3? pues que la salida sera: z1: 1 z0: 1 que es lo mismo que '3' en binario. Tiene gracia no? metemos un uno en 'x3' (nota para lentos: lleva un 3) y sale '11' que es '3' en binario. Todo esto teniendo E=1 E E K ___|____ ___|__ E------ x3--| \ _ | | __ / |--[DRAGO] Y------ x2--| |--*--| |----------[ABRIR PUERTA] B______ x1--| _ |--*--| __ |--[DRAGO] |______ x0--|__/_____| |____\_|--[DRAGO] Que circuito mas estupido pensaran los gurus! Pues si, pero es ilustrativo. Si en nuestro teclado (KEYB) pulsamos el 2 (x2) se activara la salida ABRIR PUERTA del descodificador y no tendremos que ver 30 veces 'Sonrisas y lagrimas' para desintoxicarnos. Ups! que no se me olvide. Algunos codificadores llevan una salida adicional: A (active) que indica si alguna de las entradas esta a 1. Que pasaria si fueramos unos manazas y tocasemos mas de un boton a la vez. Pues con los codificadores 'normales' no tendriamos garantia de su funcionamiento. Pero eso se arregla con un peque~o circuito de prioridad. Alla va. o = puerta NOT -|- = cruce (los cables no se tocan) -*- = nodo ,------------------o _____ x0-----|-------------------| | | ,-o| AND |--------- z0 | ,---|-o|_____| | | | | | | _____ x1-----*------------|---|---| | | *--o| AND |--------- z1 *---|--o|_____| | | | | _____ x2------------------*---|---| | | | AND |--------- z2 *--o|_____| | | x3----------------------*------------------- z3 Hala! a tomar por el weich! Ahora la salida con mayor prioridad sera la de mas alto valor. Luego si ponemos x3 y x1 a 1, la que ganara sera x3. ------------------------------------4.3 Multiplexor Conoceis eso que hacen las TV's Digitales para metere 60 canales en un ancho de banda relativamente peque~o? Bueno yo no, pero oi a un tio en la fruteria que habia leido en una revista que eso se llama multiplexacion de canales, es decir, meter varios canales en una frecuencia, en vez de en varias, lo cual seria mas caro para la compa~ia. Pues bien el multiplexor no tiene, repito _NO_ tiene nada que ver. Solo se asemeja de lejos al funcionamiento de esas TV. E ___|____ x3--| \ _ | x2--| \|__ z1 x1--| _ /| x0--|__/_____| | | c1 c0 Lo que hace el MUX (multiplexor) es, dadas unas posibles entradas 'x' y unas entradas de control 'c', la salida 'z' se define por la entrada 'x' se~alada por las entradas 'c'. Ex: Pillamos este MUX con la entradas siguientes. E ___|____ x3 0--| \ _ | x2 0--| \|__z1 x1 1--| _ /| x0 0--|__/_____| | | c1 c0 Si por ejemplo, teniendo E a 1, introducimos en c1c0, la informacion c1=0 c0=1 La salida sera 1. Si nos damos cuenta hemos metido un '1' en las entradas de control 'c' luego la salida sera la correspondiente a la entrada x1 que es 1. Nada mas, imaginaos cualquier circuito sicodelico, que se me acaban las gracias :) (naaaa). ------------------------------------4.4 De-multiplexor PUF! QUE DIFICIL! lo mismo de antes pero al reves. ;) z = salida c = entrada de control x = entrada de datos E ___|____ z3--| \ _ | z2--| \|__ x z1--| _ /| z0--|__/_____| | | c1 c0 Mira! ahora lo de los canales tiene algo mas de sentido. Es mas se me esta ocurriendo un posible circuito para transmitir multiples informaciones por un mismo canal. CIRCUITO SENCILLIN (ASCII sux y paso de piratear el ORCAD) Imaginaos que teneis cuatro amigos a los que quereis mandar cuatro textos diferentes. En cada texto, poneis verde al siguiente. Por ejemplo. Texto 0: Green Legend pone a caldo a Krip7ik Texto 1: Krip7ik pone a caldo a MORTIIS Texto 2: MORTIIS pone a caldo a Doing Texto 3: Doing pone a caldo a Green Legend. (hehe) Total que un individuo, llamemosle, ehm..., no se... 'jn0' es poseedor de los cuatro textos y como buen ciudadano quiere poner en conocimiento de los inculpados que es lo que pasa. Pero claro el amigo 'jn0' pasa de enviar todos los textos a cada uno, porque a Krip7ik posiblemente se la sude si MORTIIS pone a caldo a Doing. Despues de un tiempo pensando llego a una conclusion: utilizando las lineas de Telefonica, mandaria por el mismo canal toda la informacion y que cada uno, con su clave personal pudiera recoger su texto sin recibir los demas. Luego el esquema es: [jn0] --------------------------------------. 4 textos [^RTB^] | | | | Doing Krip Mort Green jn0 hace lo siguiente: crea un protocolo binario de tal manera que mande los cuatro mensajes en la misma linea, sin que haya conflictos luego: E ___|____ texto3--| \ _ | texto2--| \|__ z1 texto1--| _ /| texto0--|__/_____| | | [CONTADOR modulo 4] NOTA: un contador modulo 4 es un circuito secuencial (es decir que cambia de estado y salida a lo largo del tiempo). Ya lo explicare. Solo tened clara una cosa, es un circuito que durante un tiempo vale 0, luego 1, luego 2, 3, 0, 1, 2 etc. Ahora jn0, famoso donde los haya, genera un codigo especial, de tal manera que cada palabra valga 1,2 o 3 bits. NICKS ----- Green Legend = 00 Doing = 01 Krip7ik = 10 MORTIIS = 11 Flames ------ es un gualtrapa = 00 es un lameron = 01 es un julai = 10 es un mariposon = 11 De tal manera que nuestros textos quedan: Texto 0: Krip7ik es un julai 10 10 Texto 1: MORTIIS es un gualtrapa 11 00 Texto 2: Doing es un lameron 01 01 Texto 3: Green es un mariposon 00 11 Ahora jn0, en su buen saber hace un circuito sencillismo (que explicare mas adelante) que hace los siguiente: soltar un bit cada vez que el contador marca su numero. Es decir: E ___|____ [0011]--|3 \ _ | [0101]--|2 \|__ z1 [1100]--|1 _ /| [1010]--|0_/_____| | | [CONTADOR modulo 4] Luego entonces, el contador empieza en 00, entonces sale el primer caracter de la palabra que esta en x0 es decir 1: E ___|____ [0011]--|3 \ _ | [0101]--|2 \|__ 0 [1100]--|1 _ /| [101 ]--|0_/_____| | | 0 0 Ahora se aumenta en un el contador y por lo tanto el MUX pilla el primer bit del texto1. E ___|____ [0011]--|3 \ _ | [0101]--|2 \|__ --> 0 - 0 [110 ]--|1 _ /| ^^^^^ [101 ]--|0_/_____| Eh! empezamos a transmitir informacion! | | 0 1 Llegados al caso en el que el contador este a 3 (11): E ___|____ [001 ]--|3 \ _ | [010 ]--|2 \|__ --> 1 - 1 - 0 - 0 [110 ]--|1 _ /| [101 ]--|0_/_____| | | 1 1 el contador pasa a 0 y empieza con el siguiente bit. E ___|____ [001 ]--|3 \ _ | [010 ]--|2 \|__ --> 1 - 1 - 1 - 0 - 0 [110 ]--|1 _ /| ^ ^^^^^^^^^^^^^^^^^^^ [10 ]--|0_/_____| 2-bit del primer txt Primeros bits de los txt | | 0 0 etc. asi hasta el que se queden los textos a 0. Ahora, los cuatro textos van viajando por la misma linea, separados por un peque~o espacio de tiempo: ======================================================== 1 -> 1 -> 1 -> 0 -> 0 ======================================================== HAHAHAHA y ahora como cohones hacemos que cada uno llegue a su destinatario y no al equivocado?. El amigo jn0 despues de varios a~os de reflexion, un dia llego a la conclusion de que habia que utilizar exactamente lo mismo para descodificar. Cuando llegase el primer bit, empezar a colocarlos en el mismo orden en el que habian salido. Esto es: el primer bit que llegara seria el primer bit (!) (no olvideis lo del MSB y LSB, mirad el primer articulo) del primer texto. Luego jn0 hizo lo que el llamo un ,---------------------------------------------. | broadcasterrouteadorpasarelawingatero (c), | ---------------------------------------------' que al final se quedo en demultiplexor chapucero porque el otro nombre estaba con copyright. El esquema que resulto fue el siguiente: [LINEA DE DATOS] .--------. =================================| DEMUX | '--------' Puente de Green__________| | | |_____________Casa de Doing Chabola de Krip______________| |_______________Metro de MORTIIS jn0 queria que a cada uno le llegase la misma informacion: ahora solo tenia que recomponer los paquetes de bit que habia enviado. Pues cogio un DEMUX y aplico el mismo truco E ___|_____ [DATA] | 3 |--[ ] Green =========___| 2 |--[ ] Doing 1->0->0 | 1 |--[ ] MORTIIS |_______0_|--[ ] Krip7ik | | [CONTADOR modulo 4] llega el primer bit, luego nuestro contador esta a 00; E ___|_____ [DATA] | 3 |--[ ] Green =========___| 2 |--[ ] Doing 1->0 | 1 |--[ ] MORTIIS |_______0_|--[ 0] Krip7ik | | 0 0 E ___|_____ [DATA] | 3 |--[ 1] Green =========___| 2 |--[ 1] Doing | 1 |--[ 0] MORTIIS |_______0_|--[ 0] Krip7ik | | 1 1 Y asi hasta rellenar los cuatro cajetines. Ahora cada uno pilla su correspondiente mensaje y lo traduce: Green tiene [0011] que segun el codigo de jn0 es: Green es un mariposon. Doing tiene [0101]: Doing es un lameron. Mortiis tiene [1100]: Mortiis es un gualtrapa. etc. ------------------------------------------- Nota: Si alguien no lo ha entendido, que cante aquello de 'en las cabinas no se orina, para eso estan la esquinas'. Que me haya ocupado casi 14k y no te hayas enterado es delito chaval. ------------------------------------4.4 Memoria ROM. Waw! Esto te suena mas eh eh!. Pues en fin, si, si que es famosa, teniendo en cuenta que muchos dispositivos (por que creias que se llamaban EEPROMS ) hacen uso de ellas. Aunque os voy a dar los fundamentos basicos, os explicare algunas de ellas, para que le tomeis gustillo: ROM: Read Only Memory. Memoria de solo lectura. PROM: Programable ROM. Memoria en la que se puede escribir, normalmente con una tension de 21v. Las tarjetas de la gran T. EPROM: Erasable Programable ROM. Programables y que se pueden borrar aplicando una luz ultravioleta. Que es una ROM? Pues nada mirad el ascii. E ___|____ | _____/ |-------*------------ x1 --| |-------|-*---------- x0 --| _____ |-------|-|-*-------- |______\_|-------|-|-|-*------ |______________| | | | | [ OR ] | z0 Pues una ROM no es mas que eso: un descodificador y puertas OR enganchadas a las salidas. Eso si donde veis los * significan conexiones y esa es la parte programable del asunto. Por supuesto podemos repetir toda esa parte (OR) para tener varias funciones de salida en un mismo modulo. Si queremos implementar un circuito parecido al de la alarma de tal manera que la eleccion de la clave haga sonar una musiquilla de Roberto Carlos, solo tenemos que destruir (tal cual) el nodo que lo une a la puerta OR y ya esta. La representacion que pongo ahora es la que se suele utilizar. Como no me apetece escribir y como se que no sois unos inutiles dejare a vuestra intencion su transcripcion: E | ----- | 1 | x1- | 1 | x0- | 0 | | 1 | ----- | z0 [Gramofono] ------------------------------------4.5 Memoria PAL. PAL: Programmable Array Logic. Vector Logico Programable. Como curiosidad, los circuitos programables basicos (ROM's PAL's) se componen de dos modulos: la matriz de AND's y la matriz de OR's. Como hemos visto, la matriz de AND's en la ROM es estatica ya que al funcionar igual que un descodificador no hace falta modificarla. En la ROM, la matriz programable es la de puertas OR. La memoria PAL tiene como curiosidad la programacion de la matriz AND, teniendo como matriz estatica (no modificable) la de las puertas OR. Los * indican nodos programables, los . indican nodos indestructibles. x1 x0 |___ |___ | | | | | [NOT] | [NOT] | | | | *---*-----------*---*--------[AND]-------. | | | | | *---*-----------*---*--------[AND]-------. | | | | | *---*-----------*---*--------[AND]-------|---------. | | | | | | *---*-----------*---*--------[AND]-------|---------. | | [OR] [OR] | | |_____________________________________| z1 z0 Matriz AND |____________| Matriz OR Explicamos: Para no tener que dibujar mas cables, suponemos que en los cable corren dos bits muy juntitos es decir | | | [OR] == [OR] | | Lo mismo para las matrices AND. Para la representacion tambien puede usarse lo de la matriz de 1's y 0's ------------------------------------4.5 Memoria PLA. Con los tiempos que corren no nos podemos permitir el lujo de gastar dos modulos si queremos tener total flexibilidad a la hora de implementar sistemas combinacionales. Para ello estan la PLA. Las PLA (me parecen que tambien se llaman PLD) permiten programar tanto la matriz AND como la OR. x1 x0 |___ |___ | | | | | [NOT] | [NOT] | | | | *---*-----------*---*--------[AND]-------* | | | | | *---*-----------*---*--------[AND]-------* | | | | | *---*-----------*---*--------[AND]-------|---------* | | | | | | *---*-----------*---*--------[AND]-------|---------* | | [OR] [OR] | | |_____________________________________| z1 z0 Matriz AND |____________| Matriz OR ---------------------------------------------------------------------- ---------------------------------------------------------------------- Y por este numero se acabo. Pensaba escribir algo sobre sistemas secuenciales (con reloj, biestables y todas esas cosas). Pero uno tiene una vida propia, una amiga con derecho a roce que mantener y unos estudios que dejar de lado... si os ha parecido poco, enhorabuena porque significa que teneis ganas de aprender. Si teneis algo de dinero os recomiendo este libro: 'Contemporary Logic Design' Randy Katz Benjamin-Cummings, 1994. Es un libro muy chulo, con pastas duras y de color plateado, con la foto del tio que lo ha escrito (una combinacion de Bill Gates y Hawking - el de los agujeros negros -), pero esta muy bien en la parte de la circuiteria combinacional, y sobre todo en lo de los dispositivos programables basicos. ----------------------------- Si los vapores etilicos Eristroffistas no acaban conmigo, el proximo numero sera algo mas interesante, porque empezare con sistemas secuenciales con lo que podreis hacer relojes, reconocedores de secuencias, bombas nucleares y otras gracias. Visitad la pagina de mi grupo libertario : http://flt.cjb.net Escribid a : jnzero@phreaker.net *EOF*