sábado, 1 de noviembre de 2014
El albañil, el arquitecto, el físico y el informático
Como la vida te sonríe amplias la casa, para lo que llamas a un arquitecto, le cuentas lo que quieres, este hace unos bocetos, te gustan, luego hace planos detallados y un plan de trabajo. Pone a un arquitecto técnico (antiguo aparejador) a dirigir la obra, este coordina los equipos de albañiles, fontaneros, electricistas, etc.
La ciencia para que tu casa no se caiga la pone un físico, que es el que calcula las fuerzas que actúan en un punto, la resistencia de los materiales, los efectos del frío y el calor.
Nadie llama a un físico para que le haga una casa, y por supuesto si digo que soy arquitecto nadie me pide que le levante una pared de ladrillos, ni se espera de un albañil un cálculo de las fuerzas radiales en un domo.
Yo me pregunto, ¿porque si soy ingeniero informático me siguen pidiendo que les arregle un PC o les instale un Windows?
La informática, como la construcción, tiene muchos especialistas, programadores, diseñadores, instaladores de redes o de sistemas, todos bajo la dirección de los ingenieros e ingenieros técnicos, que hacen su labor ya que un grupo de ingenieros informáticos desarrolla las bases de la ciencia de la informática. Todos tienen una labor diferente, y todos son importantes, pero dejemos que cada uno haga sus tareas, informémonos antes de las cosas, y no pidamos a quien no sabe del tema que te arregle algo.
Lo malo es que internamente ni siquiera los que estamos dentro de la profesión quieren respetar estas cosas, hay demasiados "informáticos" que piensan que los ingenieros son programadores, ya que lo estudian en la carrera, y demasiados ingenieros que también, por desgracia.
Defendamos nuestra profesión, al fin y al cabo, actualmente es la que mueve el mundo (o maneja los mecanismos que lo controla).
martes, 21 de octubre de 2014
Lógica progamable (III): Ejemplo sencillo, síntesis de una GAL en lugar de 4 puertas
Disponemos de cuatro señales de entrada, que llamaremos A, B, C y D. Voy a hacer un circuito que haga lo siguiente, sume el producto de A con B con el contrario del producto de C con D. El esquema sería el siguiente:
Necesitamos dos puertas AND, una NOT y una OR, por tanto usaremos tres chips, uno con 4 puertas AND del que usaremos solo 2, otro con 4 puertas NOT del que usaremos solo una, y otro con 8 puertas NOT del que usaremos solo una.
Seguro que mas de uno se pone y lo desarrolla con un solo tipo de puertas usando álgebra de Boole, ya que siempre se puede reducir AND a NOR y al contrario OR a NAND, pero eso es cargarse el ejemplo, y a mi me salen de todas formas 5 puertas mínimo.
Esto se puede simplificar usando un solo chip con una pequeña GAL con al menos 5 celdas AND/OR, usando solo una línea de código:
Pin A,B,C,D entrada ;
Pin S Salida;
S = (A AND B) OR (NOT(C AND D));
Un solo chip y una ecuación en una línea de Abel, Verilog o VHDL, y a correr. Lo puedo meter en un chip de los que se fabriquen hoy día, y si mañana dejan de hacerlo, busco otro chip, le meto mi línea y a funcionar.
Mi descripción del funcionamiento (mi "programa fuente") es la síntesis del circuito, y luego cuando genero (lo que podemos llamar "compilar") es el desarrollo interno del circuito. Solo tengo que mantener mi definición, y generar (que no compilar) el circuito específico para el chip que quiero usar, y si cambia el chip solo tengo que volver a generar mi definición.
lunes, 20 de octubre de 2014
Lógica progamable (II): ¿que es eso del HDL?
Un ejemplo típico de la diferencia, usando C, para intercambiar dos variables entre si se usa una auxiliar, y si queremos cambiar el contenido de la variable A por el de la variable B, usando como auxiliar la C debemos introducir 3 líneas:
C = A;
A = B;
B = C;
Sin embargo en un HDL como Verilog o Abel, que usan la sintaxis del C, las variables no existen, solo existen señales, y para intercambiar una señal A y una señal B se usa:
A = B;
B = A;
En VHDL, para evitar el uso de la asignación y dejar claro que no son variables sino señales se usaría
A <= B;
B <= A;
Ambas sentencias se ejecutan SIMULTANEAMENTE, no secuencialmente, que es la gran diferencia en este tipo de lenguajes, estamos configurando un chip, por tanto todo se ejecuta a la vez, a no ser que expresamente lo sincronicemos con una señal de reloj.
El lenguaje por excelencia para esto es VHDL, basado en la sintaxis del ADA y que gusta mas a los electrónicos, pero es igual de ponente que Verilog, basado en C y que suele gustar mas a los programadores, o ABEL, también basado en C, que se suele usar mas en la definición de chips mas pequeños como las GAL, en el que el hardware puede definirse usando ecuaciones lógicas o tablas de verdad, y no requiere grandes recursos para generar el hard.
sábado, 18 de octubre de 2014
Lógica progamable (I): Que es y porque usar una FPGA no es ir contra el espítiru del retro
Voy a contar lo que es una FPGA, y espero que se entienda que usarlas no es ir contra el retro, sino que son los dispositivos que va a salvar a la larga nuestra afición.
Comienzo explicando que es un transistor de forma sencilla de entender, pero quiero advertir que la siguiente explicación no es técnica sino para que se entienda, si sabes como funciona un transistor sáltatelo (o ríete sin piedad).
Un transistor explicado de la forma mas sencilla posible es como una resistencia variable que se controla por una señal.
Un transistor tiene tres patas, colector, base y emisor. En su comportamiento como amplificador, si disponemos de una fuente de alimentación que proporciona 30 voltios y la conectamos al colector, y por la base introducimos una señal cuyo voltaje varía entre 0 y 3 voltios, en el emisor aparece una señal idéntica, pero amplificada en el rango de 0 a 30 voltios.
Pero también pude funcionar de otra manera, como conmutador. Si en el colector tenemos una fuente de 5 voltios, y en la base aplicamos menos de 2 voltios, en el emisor no hay corriente, pero si ponemos entre 2 y 5 voltios en el emisor aparecen los 5 voltios de la fuente. De esta manera el transistor se comporta como un interruptor controlado por una señal externa.
Los transistores pueden disponer de varias entradas de base, o combinarse varios entre entre sí, y de esta forma se forman las puertas lógicas, según la familia (TTL, CMOS, RTL, etc.) se varía su tipo y la forma de combinar los transistores para formar las puertas lógicas. Las tres puertas básicas son:
- NOT de una entrada, un inversor, si en su entrada hay 0 voltios en su salida hay 5, y si en su entrada hay 5 voltios en su salida hay cero.
- AND con dos entradas, si ambas son de 5 voltios hay 5 voltios en su salida, en cualquier otro caso hay 0.
- OR con dos entradas, si en alguna de las dos o en ambas hay 5 voltios en su salida hay 5 voltios, y 0 voltios si ambas son cero.
Una puerta por tanto es una combinación de transistores, diodos, resistencias y condensadores, se puede usar directamente estos componentes como en la segunda generación de ordenadores.
Tener que usar tantos transistores era muy complejo, por lo que con el nacimiento de los circuitos integrados se introdujeron en chips, agrupando los componentes en puertas.
Aun simplificando el diseño con las puertas, hacía falta un buen puñado de ellas para formar los procesadores, y se consiguió unir un montón de puertas en un chip. Un procesador es un chip en el que hay un montón de puertas lógicas en su interior, podemos hablar de miles (hoy día de millones), que se comportan de una forma organizada para que en función de sus entradas aparezca una salida. Por tanto los procesadores son combinaciones preestablecidas de puertas lógicas. A esto se le llama lógica cableada, ya que las puertas han sido cableadas entre sí y no se puede alterar.
Tras la memoria de vídeo debe existir algo que tome el valor de la memoria y lo convierta en una señal de vídeo que entienda un monitor, para lo que existen unos chips auxiliares que con un criterio de temporización muy estricto leen la memoria, a partir de ella generan los puntos para el barrido de la pantalla y la envían a la salida de vídeo. En un ordenador antiguo eso se hacía con chips, entre 15 y 30 chips se dedicaba solo a esto, en un ZX80 por ejemplo hay un montón de chips para esto (en total 21 chips entre procesador, rom, memoria, etc). De aquí surgieron los chips gráficos, que simplificaban esto agrupando todos los componentes en un solo chip, por eso en un ZX81 hay muchos menos chips (4 en total), todos se agruparon en la ULA (agrupa 17 chips en su interior).
Alrededor del procesador se ubica la memoria, y para el acceso a la misma se requiere de unas puertas que habiliten los chips de memoria a usar en cada momento, en función de las señales del procesador, en un gomas son los 4 chips que están en la parte superior, entre la ULA y el procesador. Pero en los modelos posteriores se unieron estos 4 chips en uno solo, agrupando las funciones se consigue reducir el número de chips.
El problema que encontraron los diseñadores es que para estos nuevos chips que combinaban otros hacía falta hacer diseños específicos, y pronto buscaron soluciones para desarrollar un chip genérico con muchas puertas lógicas, que se pudiera configurar de forma sencilla y así en lugar de desarrollar chips a medida, lo que era caro, se diseñaron chips genéricos con las puertas sin enlazar entre sí, que se configuraban para combinarse en la forma que deseara el fabricante de ordenadores, por lo que se simplificó y abarató mucho el diseño de estos nuevos chips.
Los primeros se debían configurar en fábrica durante su producción, lo que se llama "programación con máscara" (programación como sinónimo de configuración, no hay un programa en su interior, solo puentes que conectan las puertas). La ULA del spectrum es un ejemplo de este tipo de chips configurados en fábrica.
Luego se diseñaron chips cuyas puertas podían enlazarse aplicando una señal eléctrica, por lo que los fabricantes de ordenadores compraban los chips en blanco y los configuraban con un "programador", similar a uno para las EPROM (nuevamente ni en estos ni en las EPROM hay un programa, se usa programar como sinónimo de configurar). Así nacieron las PAL (Programable Array Logic, matriz lógica programable) con un conjunto de puertas AND sin configurar y las PLA (Programable Logic Array, lógica programable en matriz), en las que había un conjunto de puertas AND y OR, ambos sistema se podían configurar solo una vez quedando fijas para siempre, y luego surgieron las GAL (Generic Array Lógic, matríz lógica genérica) que son un tipo de PLA que se pueden borrar y volver a configurar varias veces, hay GAL que añaden flip-flop a la salida para conseguir una lógica mas flexible.
En estos dispositivos las vías entre las puertas (esto nuevamente es una simplificación para que se entienda) dispone de un tipo especial de diodo, que mediante una corriente mas alta de los habitual se puede polarizar en sentido directo o inverso, una vez configurados pueden permitir o impedir el paso de la corriente a su través, por lo que se cablea el dispositivo.
Hoy día los dispositivos lógicos modernos son las FPGA y sus hermanas pequeñas las CPLD. En ambos dispositivos disponemos de una enorme matriz de puertas, que podemos unir como se desee, formando cualquier combinación de puertas lógicas, por lo que reemplazan directamente a las PAL, PLA y GAL con ventajas, ya que no hay planos AND/OR, sino puertas genéricas que podemos combinar como deseemos. Pero al ser de gran tamaño, pueden configurarse para reemplazar a cualquier chip, incluyendo los procesadores con sus miles de puertas.
En su interior no se ejecuta un programa que simule un comportamiento, sino que hay un circuito electrónico operativo, que es igual al de los chips a los que reemplaza, solo que usa otro tipo de componentes.
Tras toda esta explicación, que espero seguir ampliando, lo que deseo es que penséis que una FPGA o un CPLD no emulan nada, sino que son chips iguales a los demás, solo que se pueden configurar de millones de formas diferentes, pudiendo reemplazar a cualquier otro chip existente. Esto les hace ser el futuro de nuestra afición, si un chip deja de fabricarse se puede reemplazar por uno de estos dispositivos (eso ya pasa en muchas placas arcade), que es un reemplazo fiel del original, aunque internamente no tenga la misma estructura, el resultado es que si deseamos arreglar un Spectrum con la ULA estropeada, o si el procesador 6502 de nuestro Apple II muere, podemos reemplazarlo por algo que hará exactamente lo mismo, no emulando sino reemplazando al original.
viernes, 17 de octubre de 2014
Ultimas entradas en el blog, conclusión, corolario y resolución
Hoy he escrito una reflexión sobre un aspecto del retro que me molesta personalmente, en 6 horas 82 lecturas y subiendo, con
Conclusión, a la gente le gusta mas leer cuando despotricas que cuando no (esto es otro aspecto del tema que no me gusta, pero es así).
Corolario, si quieres un foro con muchos seguidores ya sabes de que tienes que escribir.
Resolución, prefiero hablar de la electrónica moderna, de HDL y de que es una CPLD y porque es la solución a muchos de nuestros problemas. Seguiré teniendo pocos lectores, y si alguno pregunta algo en lo que tenga dudas y puedo ayudarle, seré mas feliz.
Pasado y presente, todo cambia (¿a peor?)
Ahora ya nadie desarrolla sus propias placas, todo el mundo dice que es mas económico y da mejor calidad pedirlas a una empresa en China que nos las haga, se ha perdido eso del rotulador, la plancha, la insoladora, los ácidos, y ver como tu diseño va saliendo poco a poco en la placa. Pero para que eso salga a un precio razonable no puedes pedir una, por tanto ahora lo que se hace es que si quieres hacerte una placa para ti, poner el proyecto en un foro y los 10 que primero entren se apuntan, y el resto que ese día no ha podido entrar se lo pierden.
También es cierto que si se trata de un prototipo ya no hay tanta gente interesada en gastar el dinero y el tiempo en ello, pero si hay la mínima posibilidad de que funcione hay carrera segura.
Odio estas carreras, yo no me suelo apuntar y en las dos últimas le cedí al final mi puesto a otro. A ver si cambian el chip y piensan un poco, que hay muchas opciones, lo normal es que si hay X recursos y X+Y consumidores, se reparta de forma mas racional y no al que mas corra, que no son concursos radiofónicos, lo primero es saber para que lo quiere la persona y si va a saber manejarlo, y si no un sorteo entre los apuntados es mucho mas racional. Y tampoco piensan que a lo mejor hay 20 interesados, pero como solo has puesto 10 ganadores no te enteras.
También está muy de moda cuando alguno expone una idea que le gustaría desarrollar, por ejemplo desarrollar un circuito propio y no enviarlo a fabricar, que la respuesta sea "cómprate XXX que ya está echo y funciona, te saldrá mas económico", si no puedes ayudar no entres, pero deja que los demás hagan lo que les apetezca con su tiempo, todos sabemos que es mejor comprar la placa echa, un teclado montado, una ampliación profesional, pero la satisfacción de hacérselo uno mismo solo sirve para el de bricomania, pero no para nuestra sagrada afición.
Y luego están los "puristas", que no saben nada de electrónica (los peores), o que no saben de la electrónica moderna y no saben lo que es un CPLD, pero están en contra de su uso por sistema (o porque no saben "programar"), cuando un CPLD no se programa, no emula nada, se configura usando un lenguaje de definición de hardware, que no un lenguaje de programación, solo que por comodidad se usan estructuras similares a los lenguajes de programación, pero insisto que los HDL no son lenguajes de programación, sino de definición.
Al final todo es cuestión de evolucionar y adaptarse, pero no me está gustando como deriva esto, y creo que estamos dejando que pase sin hacer mucho por remediarlo, si al menos consigo que la gente deje que cada uno haga lo que le de la gana algo habré ganado.
miércoles, 15 de octubre de 2014
La comercialización del retro
En Va-de-Retro.com organizamos Valencia va de Retro, el grupo acude a los eventos que pillan bien para ir (yo personalmente a todos los que puedo). Vamos en principio solo con exposición y ponemos máquinas en marcha para uso y disfrute de los asistentes, yo siempre que puedo monto el taller de reparaciones, en el que no cobro casi nada, en el último RetroMadrid creo que saqué 3 euros por los materiales que empleé por ejemplo, lo que entra en lo habitual en los eventos donde suelo sacar entre 0 y 5 Euros.
Reconozco que en el grupo alguno ha acudido con material para la venta a los eventos, y yo he intentado vender algo en tres eventos pero sin éxito. No es nuestro objetivo vender sino dejar que la gente juegue con nuestros aparatos.
En Valencia va de Retro habían cuatro zonas mas o menos del mismo tamaño, tres aulas y el hall y pasillos. La sala de juegos ocupaba una zona y la exposición ocupaba la mitad de otra. De los expositores, salvo pocas excepciones que solo expusieron como Retro Funtasticos, el Caad o los de HackerSpace, el resto combinaba ambas cosas, y en muchos predominaba la venta.
Desde el 2010 que empecé a acudir a los eventos he visto como cada día mas, y en Valencia va de Retro tampoco ha sido diferente, lo que prima es la gente que va a vender, y cada vez somos menos los que solo exponemos y cacharreamos (reparar solo lo hago yo y eso entra en el cacharreo). No voy a mencionar a todos los que acuden desinteresadamente a los eventos (ya que mi memoria es corta), pero en muchos he visto a Bieno y Eboni (una gran pareja) montando el stand de Commodore Plus (recuerdos a Josezpin que ahora está en su tierra y no puede acudir), a desarrolladores independientes que mantienen la escena como Chui, o a algunos grupos como mis amigos de la GUA con los que he compartido stand muchas veces.
Estamos desapareciendo del panorama en los eventos, igual que en los eventos de comics o de manga lo que prima es la venta, y eso es algo a lo que hay que acostumbrarse, seguro que lo echaremos de menos, pero es la evolución natural cuando algo se hace tan grande, y la afición al retro se hace cada día mas grande.
Esto se puede ver también en otro detalle, antes tras los eventos los comentarios eran lo que se había visto y a quien, ahora el comentario que no falta sobre un evento es quejarse sobre los precios de venta en los mismos, ya no se comenta casi ninguna otra cosa. Y al final no tienen tampoco mucha razón, entiendo que todos quieren comprar muy barato, pero ahora nuestra afición ha crecido demasiado, y la ley de oferta y demanda es como la gravedad, no te la puede saltar.
Y encima el otro día leí un comentario de alguien que se quejaba de haber pedido presupuesto de un MOD de una consola retro a un conocido modder de youtube (no dijo quien era pero no era yo), y le parecía caro que quisiera cobrarle 35 euros por hacerlo, a pesar de que quien se queja no tiene ni idea de como hacerlo ni de lo que cuesta hacerlo, pero si se puede quejar del trabajo de los demás.
Hacer un MOD a una máquina cuesta alrededor de una hora, tras haber comprado material para hacerlo (ir a comprarlo es una hora de tiempo y el gasto de ir, y si es por Internet hay que comprar mucho para tener siempre que si no tarda mucho en llegar), herramientas como soldador, taladro o limas miniatura, sin contar destornilladores especiales, y siempre debes disponer de cables y herramientas mas normales. Luego hay que haber pasado unas cuantas horas buscando información, saber lo que se hace, experiencia soldando, gusto por hacerlo lo mejor posible, probar primero en tus máquinas para saber lo que se hace siempre. Y si por eso cobras mas o menos lo que realmente vale te lo echan en cara.
Total si no cobras no se valora lo que haces (lo que me pasa a mí) y encima te arriesgas a que te pongan verde en los foros por los retrasos (encima hay que dedicarle todo tu tiempo libre), y si cobras lo que vale realmente se quejan del precio.
Cada día entiendo mejor a los que dejan el retro, y cada día me planteo mas en serio ser uno de ellos.