Este ejemplo espero que sea sencillo de entender, aunque requiere saber un poco de electrónica digital, pero no creo que sea difícil de entender. voy a hacer un diseño con tres puertas, y luego reemplazarlos por una GAL, el caso es extrapolable a cualquier tamaño de circuito.
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.
Hace tiempo que le tenía ganas al tema de las FPGA y similares, y viendo tus artículos, me acabo de decidir.
ResponderEliminarSeguiré con muchas ganas los mismos, y si tengo alguna duda, espero poder contar contigo.
Muchas gracias por estos artículos.