Qué lenguaje de HDL me recomendais??

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
k_mirror
Mensajes: 32
Registrado: 06 Oct 2015, 22:33

Qué lenguaje de HDL me recomendais??

Mensaje por k_mirror » 14 Oct 2015, 22:11

Pues eso... Soy electrónico y hace tiempo que me interesé un poco por las FPGA, aunque por la falta de tiempo no he hecho nada aún.
Tengo que aclarar que soy de FP2, por lo que soy reparador superior en electrónica de comunicaciones, y aunque estudié tanto electrónica analógica como digital, en esta última no vi mucho más alla de los circuitos combinacionales, multiplexores, demultiplexadores, flip-flops.... etc... Pero no llegué a tocar nada de electrónica programable.
Ya cuando terminé los estudios y todavía tenía algo de tiempo para mí después del trabajo, me empecé a interesar por los microcontroladores, y tras
probar varios lenguajes de programación me decanté por el ensamblador y por JALv2.
Ahora y gracias al :zxuno: quiero empezar a tocar algo de FPGA y hace unos meses compré un libro sobre VHDL, que aún no he abierto.
Me gustaría que me recomendaseis algún lenguaje, ya que hasta donde yo sé hay varios y los principales son VHDL, Verilog y ABEL HDL.
Así que no sé cual es el que más interesa aprender. Ya que cuando empecé con los microcontroladores me dí cuenta que no siempre el mejor lenguaje es
la mejor elección, ya que además del lenguaje en sí también cuenta, y mucho, la cantidad de recursos disponibles para tal lenguaje.
Yo soy de Linux, y aunque no me tiempla el pulso a la hora de utilizar herramientas Windows bajo Wine, en un VirtualBox o incluso arrancar la máquina física con Windows para trabajar, si alguien sabe de herramientas útiles para trabajar con FPGA desde Linux sería la leche que me dijese cuales.
En fin me pongo en vusestras manos para que me ilustréis.
Gracias una vez más.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Qué lenguaje de HDL me recomendais??

Mensaje por mcleod_ideafix » 14 Oct 2015, 23:46

Los lenguajes estrella, a día de hoy, son VHDL y Verilog. Usar uno u otro es casi una cuestión personal más que una cuestión de productividad, ya que, salvando algunas excepciones, ambos lenguajes hacen esencialmente lo mismo con un nivel de descripción comparable.

En Linux tienes como opción el poder usar el entorno de Xilinx (ISE Webpack) de forma nativa, ya que este SO está soportado por Xilinx. Sin embargo, para comenzar trasteando, y sobre todo poder hacerlo sin preocuparte de tener o no un dispositivo físico, puedes usar el Icarus Verilog y GTKWave para visualizar cronogramas. Icarus soporta Verilog y SystemVerilog, pero sólo lo puedes usar para simular, no vale para sintetizar.

En mi caso particular, pues me decanté por Verilog, en parte porque para alguien que viene del C me pareció más directo que VHDL. Antes de Verilog había hecho alguna cosa con Handel-C, que es un lenguaje de muy alto nivel para lógica programable.

Si quieres trastear sin siquiera instalar nada, hay editores online que te permiten escribir diseños y probarlos. Visita la web de EDA Playground.
http://www.edaplayground.com

Pero antes, familiarízate con los conceptos de diseño (módulo o entidad según el lenguaje que uses) y testbench (otro módulo o entidad que se encarga de suministrar señales de entrada al módulo/entidad que está siendo probado y comprobando que el resultado se ajusta a lo que debe hacer).

Un ejemplo sencillo: un multiplexor de 8 bits y dos canales en Verilog:

Código: Seleccionar todo

module mux8 (
  input wire [7:0] a,
  input wire [7:0] b,
  input wire sel,
  output reg [7:0] y
  );

  always @* begin
    if (sel == 1'b0)
      y = a;
    else
      y = b;
  end
endmodule
Un decodificador 2 a 4:

Código: Seleccionar todo

module dec2a4 (
  input wire [1:0] in,
  output reg [3:0] out
  );

  always @* begin
    case (in)
      2'b00  : out = 4'b0001;
      2'b01  : out = 4'b0010;
      2'b10  : out = 4'b0100;
      2'b11  : out = 4'b1000;
      default: out = 4'b0000;
    endcase
  end
endmodule
Un flip flop tipo D simple disparado por flanco positivo:

Código: Seleccionar todo

module flipflop (
  input wire clk,
  input wire d,
  output wire q
  );

  reg ff = 1'b0;
  assign q = ff;
  always @(posedge clk) begin
      ff <= d;
  end
endmodule
Una sofisticación del anterior. Esto modela un flip-flop tipo D, disparado por flanco positivo, con preset y clear síncronos.

Código: Seleccionar todo

module flipflop (
  input wire clk,
  input wire d,
  input wire pre,
  input wire clr,
  output wire q
  );

  reg ff = 1'b0;
  assign q = ff;
  always @(posedge clk) begin
    if (clr == 1'b1)
      ff <= 1'b0;
    else if (pre == 1'b1)
      ff <= 1'b1;
    else
      ff <= d;
  end
endmodule
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
jepalza
Mensajes: 613
Registrado: 02 Oct 2015, 18:52

Re: Qué lenguaje de HDL me recomendais??

Mensaje por jepalza » 15 Oct 2015, 06:19

Sin ir mas lejos, en el caso del programa XILINX, el que usamos para las Spartan (3 o 6 para el ZXUNO), se puede usara indistintamente Verilog y VHDL mezclados sin miedo alguno. No mezclados en el sentido de usar en el mismo módulo, sino de usar módulos de uno y otro y llamarlos entre sí, sin miedo a errores. Solo es conocer ambos lenguajes, y adaptar uno al otro. Si conoces las bases de ambos lenguajes, puedes hacer virguerias juntando módulos diferentes. En mas de una ocasión, he cogido un proyecto completo en VHDL, le quité el módulo principal, el que llama a los demas, y le reescribí en verilog, llamando al resto de módulos VHDL.

En el ZXUNO usamos principalmente el Verilog, pero mezclado con dos o tres módulos VHDL. Esto es así, por que algunos módulos no los hemos escrito nosotros, sino cogidos de OpenCore o parecidos, y no vas a volver a inventar la rueda, si viene en VHDL, así lo usas, tal cual, solo cambiando la forma de llamar a VHDL desde Verilog.

Ejemplos de llamadas (instanciaciones) a un módulo VHDL desde verilog, y desde VHDL:
en verilog

Código: Seleccionar todo

VGA_SCANCONV inst_scan_conv
(
	.I_VIDEO           ( {s_red,s_grn,s_blu} ),
	.I_HSYNC		( hs_int),
	.I_VSYNC		( vs_int),
	//
	.O_VIDEO          ( O_VIDEO ),
	.O_HSYNC		( hsync ),
	.O_VSYNC		( vsync ),
	.O_CMPBLK_N	( blank ), 
	//
	.CLK			( clk7 ),
	.CLK_x2		( clk14 )
);
el mismo en VHDL

Código: Seleccionar todo

inst_scan_conv : entity VGA_SCANCONV
generic map (
  port map (
	I_VIDEO 		=> s_blu,
	I_HSYNC		=> hs_int,
	I_VSYNC		=> vs_int,
	--
	O_VIDEO           => O_VIDEO,
	O_HSYNC		=> hsync ,
	O_VSYNC		=> vsync ,
	O_CMPBLK_N	=> blank,
	--
	CLK			=> clk7,
	CLK_x2		=> clk14
);
Si los comparas verás similitudes y facilidad de adaptación en un unos segundos.

k_mirror
Mensajes: 32
Registrado: 06 Oct 2015, 22:33

Re: Qué lenguaje de HDL me recomendais??

Mensaje por k_mirror » 15 Oct 2015, 08:03

Muchas gracias tanto a mcleod_ideafix como a jepalza por la rápida y completa respuesta que me habéis dado, señores... me quito el sombrero ante vosotros.
Creo que de momento empezaré con VHDL. ya que como dispongo de un libro introductorio a este lenguaje creo que me será más fácil y me dará idea de
algunos conceptos.
En cuanto a los ejemplos que me habéis puesto... creo intuir algunas cosas, como por ejemplo las señales que entran y salen, pero no entiendo nada, estoy en ese punto en el que al leer el código me parece que es cosa de magia el que funcione.
En fin.... espero que el libro solvente este problema.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Qué lenguaje de HDL me recomendais??

Mensaje por mcleod_ideafix » 15 Oct 2015, 15:40

k_mirror escribió:estoy en ese punto en el que al leer el código me parece que es cosa de magia el que funcione.
En fin.... espero que el libro solvente este problema.
El truco consiste en olvidarse de que estás leyendo un código. Realmente no estás leyendo un código concebido para ser "ejecutado", sino que estás leyendo una descripción: un código que describe el funcionamiento de algo, no un código que sigue un algoritmo secuencial. En los HDL no hay, por lo general, secuencialidad, sino que todo ocurre al mismo tiempo. Mira por ejemplo este sumador completo que suma dos números de 1 bit más un acarreo de entrada, dando un valor de salida y un acarreo de salida.

Código: Seleccionar todo

module sumador (
  input wire a,
  input wire b,
  input wire cin,
  output wire o,
  output wire cout
  );

  assign o = a^b^cin;
  assign cout = (a & b) | (a & cin) | (b & cin);
endmodule
Los dos "assigns" (asignaciones) no se realizan una después que la otra, sino que se realizan a la vez. De hecho, idealmente, este módulo tarda 0 segundos en hallar un valor para la salida "o" y para "cout". En la realidad, lo que tarden esas dos señales en aparecer dependerá del retardo de propagación de las puertas lógicas que forman los dos circuitos que aquí se han descrito (cada uno en una línea). En una FPGA como la del ZX-Uno, esos retardos de propagación son fácilmente menores de 1ns.

Visto así, incluso se puede considerar un handicap el que alguien sepa usar un lenguaje de programación, ya que se piensa que esto funciona igual, y no es así. Lo que sí es una gran ventaja es que de antes sepas qué pinta tiene un flip-flop, un decodificador, un multiplexor, o como en este caso, un sumador completo.

Mira qué pasa cuando le decimos al sintetizador que "genere" un circuito para un diseño como el del sumador anterior: puedes verlo en el editor online de EDA Playground (y cacharrear con él)
http://www.edaplayground.com/x/4Py

El circuito generado es éste:
sumador.png
Si dibujado así te lía un poco, no hay más que redibujarlo con componentes más comunes, y seguro que así lo pillas. En concreto he usado este editor online de esquemáticos:
http://www.digikey.com/schemeit/#21zu

El resultado, que es el mismo circuito anterior, que viene de haber sintetizado el módulo (diseño) original, es éste:
sumador.png
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

k_mirror
Mensajes: 32
Registrado: 06 Oct 2015, 22:33

Re: Qué lenguaje de HDL me recomendais??

Mensaje por k_mirror » 16 Oct 2015, 20:27

Gracias una vez más McLeod, como me sigas dando esas explicaciones tan elaboradas voy a tener que empezar a pagarte pos las clases.
Lo de que en las FPGA ocurre todo al mismo tiempo es algo que ya sabía, cuando estudié electrónica diseñé gran cantidad de circuitos combinacionales y se que el tiempo empleado en que se realice una función depende sólo de los tiempos que tardan las puertas lógicas en pasar de la tensión de un estado a otro, los famosos flancos de bajada y de subida. Se como son internamente las FPGA, se que son un gran numero de puertas lógicas que se interconectan unas con otras según la descripción que haces con el lenguaje utilizado.
Se que por ejemplo un flip-flop de tipo D está hecho internamente de las siguiente forma:
Imagen
Y en un momento dado se podría sustituir el inversor por una puerta NAND con sus entradas puenteadas entre sí.
Incluso se que realmente solo existen 3 tipos de puertas lógicas, y que el resto de ellas realmente se crean combinando este tipo de puertas ( no me refiero a dentro de las FPGA, si no electrónicamente) estas tres puertas básicas son la AND, la OR y la NOT ó INVERSOR.
Así por ejemplo un chip 7400 contiene 4 puertas NAND, pero este chip internamente lo que lleva realmente son 4 puertas AND con sus salidas conectadas a un NOT y la salida de esta puerta NOT es la que va conectada a la correspondiente patilla de salida del chip.
Mi problema es que como todavía no he empezado a hacer nada, y mucho menos de forma práctica, pues no entiendo todavía las descripciones.
No entiendo cómo se le dice a la FPGA que por ejemplo, en el gran ejemplo que me has puesto arriba del sumador, como se le dice que patilla del chip va a ser la entrada a, b ó cin, y cuales van a ser las patillas o y cout.

Resumiendo.... Tengo en la mente un cacao maravillao que no creo que se me quite hasta que no empiece a estudiar un poco y sobre todo a toquetear
físicamente.

Así que os dejaré tranquilos hasta que ya tenga algo de base.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Qué lenguaje de HDL me recomendais??

Mensaje por mcleod_ideafix » 16 Oct 2015, 21:49

k_mirror escribió:Se que por ejemplo un flip-flop de tipo D está hecho internamente de las siguiente forma:
Imagen
Y en un momento dado se podría sustituir el inversor por una puerta NAND con sus entradas puenteadas entre sí.
Esto es como nos enseñan en la teoría como funciona un flip-flop, ya que se parte del biestable más común que es el R-S, y a partir de ahí lo van sofisticando hasta conseguir el flip-flop D disparado por flanco (o sea, un maestro-esclavo), pero en realidad los flip-flops no se construyen (con lógica CMOS) de esa forma. Llevaría demasiados transistores para algo que requiere menos. A la hora de hacer un flip flop "de verdad" hay algunas simplificaciones que no llegan a verse cuando estudias el circuito teórico (que es lo que has puesto). Por ejemplo: se usa mucho la llamada "lógica de paso", que consiste en usar transistores MOS "en serie" para dejar pasar o no determinadas señales.

Por ejemplo, el latch que has dibujado se implementa en realidad más parecido a esto:
latch-d(1).png
El que tú has dibujado usa 18 transistores (4 por cada una de las 4 NANDs más 2 del inversor). La versión que he dibujado usa 10 transistores (2 por cada uno de los 4 inversores, más los 2 transistores que aparecen de forma explícita).

Aquí, la célula de memoria es realmente U1 y U2 que se realimentan entre sí, y que hacen el mismo papel que tus dos NANDs con las entradas y salidas entrecruzadas. Hay dos transistores MOS, uno de canal N (Q1) y otro de canal P (Q2). Esencialmente funcionan como interruptores: cuando en la puerta de Q2 hay un nivel alto (un 1 lógico), el transistor se comporta como un circuito cerrado entre drenador y fuente. Q1 funciona al revés: se cierra cuando en la puerta hay una tensión de 0V. Dado que ambos están controlados por la misma señal, CLK, pues resulta que cuando uno se cierra, el otro se abre, y veceversa.
Cuando CLK=1, Q2 se cierra y Q1 se abre, con lo que el dato D ingresa a la red de inversores, apareciendo unos instantes después en Q y Q negada. Mientras CLK siga siendo 1, el latch estará en modo transparente, con Q y /Q siguiendo las variaciones de D.
Cuando CLK=0, Q2 se abre y Q1 se cierra, haciendo que U1 y U2 se realimenten entre sí, manteniendo entre los dos el último valor que llegó desde D hasta justo el momento en que CLK bajó a 0. El latch deja de seguir a la señal D de entrada, y retiene el último valor de ésta, apareciendo en Q y /Q.

Los transistores Q1 y Q2 son dos ejemplos clásicos del uso de "lógica de paso" en circuitos CMOS.

Por cierto, este mismo circuito, un latch D, se puede describir así: fíjate que no aparecen por ninguna parte ni las puertas NAND ni los inversores de mi versión "optimizada". Lo que se describe es cómo debe comportarse. La implementación la lleva a cabo el propio sintetizador con los recursos de la FPGA de que disponga: si la FPGA dispone de latches físicos, los usa. Si no, los sintetiza usando puertas lógicas, LUTs, multiplexores, o lo que sea.

Código: Seleccionar todo

module latch_d (
  input wire clk,
  input wire d,
  output reg q,
  output reg q_n
  );

  always @* begin
    if (clk == 1'b1) begin
      q = d;
      q_n = !d;
    end
  end
endmodule
k_mirror escribió:Incluso se que realmente solo existen 3 tipos de puertas lógicas, y que el resto de ellas realmente se crean combinando este tipo de puertas ( no me refiero a dentro de las FPGA, si no electrónicamente) estas tres puertas básicas son la AND, la OR y la NOT ó INVERSOR.
En realidad, en muchos circuitos de tipo gate array (como por ejemplo el gate array del Inves Spectrum+ o del SAM Coupé) sólo hay un único tipo de puerta: puertas NAND (o puertas NOR), ya que el resto de puertas se pueden hacer únicamente con este tipo de puertas.

Hay también otro tipo de lógica, que se llama "lógica de multiplexor", y que basicamente dice que cualquier circuito lógico se puede construir únicamente con multiplexores de dos entradas. Muchas FPGAs lo emplean como lógica interna, ya que disponen internamente de muchísimos multiplexores, o los pueden implementar fácilmente.
k_mirror escribió:Así por ejemplo un chip 7400 contiene 4 puertas NAND, pero este chip internamente lo que lleva realmente son 4 puertas AND con sus salidas conectadas a un NOT y la salida de esta puerta NOT es la que va conectada a la correspondiente patilla de salida del chip.
Para los chips con puertas simples, como el 7400, el 7432, etc, probablemente lleven ya a nivel de transistores la puerta que han de implementar, y no la hagan concatenando la salida de una puerta a la entrada de otra. No lo hacen así primero porque no hace falta, y segundo porque si lo hicieran estarían aumentando el tiempo de propagación, el espacio en silicio, y la energía consumida en régimen dinámico. Para chips semicustom, basados en gate array, tienen hechos a priori las puertas NAND y es el cliente quien con la capa de metalización final conecta las puertas que le interesen, creando con ellas todo tipo de circuitos lógicos.

En lógica CMOS, por ejemplo, una NAND son 4 transistores. Un inversor son 2 transistores. Pero una puerta AND no la hacen concatenando una NAND con un inversor, sino que la hacen directamente, ocupando también la AND 4 transistores. De hecho todas las puertas simples (AND, OR, NAND, NOR) usan 4 transistores, y la puerta NOT usa 2 transistores. Una puerta XOR usa en teoría dos puertas NOT, dos puertas AND y una puerta OR, lo que supondría usar 16 transistores. En realidad, y sin usar virguerías como la mencionada lógica de paso, se puede construir con 8 transistores. Un diseño completamente full-custom puede llegar perfectamente a 3 transistores para implementar una XOR.
k_mirror escribió:No entiendo cómo se le dice a la FPGA que por ejemplo, en el gran ejemplo que me has puesto arriba del sumador, como se le dice que patilla del chip va a ser la entrada a, b ó cin, y cuales van a ser las patillas o y cout.
Eso no es asunto del lenguaje HDL. Los HDL (VHDL y Verilog) son "device agnostic", o sea, que describen un circuito pero no se ocupan de detalles tales como qué patillas físicas van a ser entradas y salidas en una FPGA, o qué niveles de tensión corresponden al 1 y al 0 lógicos. En el caso de Xilinx, eso se describe en un fichero aparte llamado UCF (User Constraints File). Busca en cualquiera de los tests del ZX-Uno (mejor usa el primero, el test1, para verlo más sencillo) un fichero con extensión UCF y allí verás la correspondencia entre los puertos de entrada y salida del "top level design" y las patillas físicas de la FPGA. Si no usas un UCF, el propio software de Xilinx elige por tí las que le parece que son las mejores opciones para los pines de entrada y salida, y tú puedes ver qué ha elegido en uno de los informes que ofrece cuando termina la síntesis.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

k_mirror
Mensajes: 32
Registrado: 06 Oct 2015, 22:33

Re: Qué lenguaje de HDL me recomendais??

Mensaje por k_mirror » 16 Oct 2015, 22:05

Creo que me voy a acostar...
Sabía que era un ignorante, pero no sabía hasta que punto.
En fin... Intentaré hacer lo que pueda.


Enviado desde mi XT1068 mediante Tapatalk

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Qué lenguaje de HDL me recomendais??

Mensaje por mcleod_ideafix » 17 Oct 2015, 01:02

k_mirror escribió:Creo que me voy a acostar...
Sabía que era un ignorante, pero no sabía hasta que punto.
En fin... Intentaré hacer lo que pueda.
¡Eh eh! Nada de eso :) Que haga puntualizaciones no implica que te esté llamando ignorante. Nada de eso :) La mayoría de estas cosas no las sabía hasta el curso pasado, cuando empecé el máster de sistemas nanométricos (que no he acabado. De ahí si que he salido con la sensación de ser un ignorante total)

La moraleja de toda esta conversación que estamos teniendo es que:
- Para no perderte con los HDL debes recordar que estás describiendo un comportamiento en hardware, no un programa secuencial que vaya a ser ejecutado
- La descripción se puede escribir de muchas formas y a muchos niveles, pero por lo general, no conviene especificar al detalle qué puertas lógicas pretendes usar, ya que es posible que el elemento lógico que quieres describir no se implemente de forma eficiente con esa elección de puertas lógicas que has hecho. Todo depende de a dónde quieras meter ese diseño.

Ejemplo de esto último: si quieres hacer un sumador de 4 bits, puedes hacerlo usando 4 sumadores de 1 bit cada uno, conectándolos en cascada, como se enseña en cualquier curso de diseño digital. Es decir:

Código: Seleccionar todo

module FullAdder (
    input wire [3:0] a,
    input wire [3:0] b,
    input wire ci,
    output wire [4:0] s
    );

    wire [2:0] co;

    Adder ADD1(a[0],b[0],ci,s[0],co[0]);
    Adder ADD2(a[1],b[1],co[0],s[1],co[1]);
    Adder ADD3(a[2],b[2],co[1],s[2],co[2]);
    Adder ADD4(a[3],b[3],co[2],s[3],s[4]);
endmodule
Donde "Adder" es un sumador completo de 1 bit, tal como éste:

Código: Seleccionar todo

module Adder (
input wire a,
input wire b,
input wire cin,
output wire s,
output wire cout
);

assign s = a ^ b ^ cin;
assign cout = (a & b) | (cin & a) | (cin & b);

endmodule
Pues bien: si se va a diseñar para una CPLD o una FPGA no es necesario (ni conveniente) armar todo este embrollo. Basta con hacer:

Código: Seleccionar todo

module FullAdder (
    input wire [3:0] a,
    input wire [3:0] b,
    input wire ci,
    output wire [4:0] s
    );

    assign s = a + b + ci;
endmodule
Y el sintetizador creará un sumador de la forma que considere más adecuada. Fíjate que de esta otra forma no tienes ni por qué saber cómo se hace un sumador completo, o cómo conectar en cascada varios sumadores. Lo hace todo el sintetizador. Tú describes comportamiento: "quiero que sume".
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

k_mirror
Mensajes: 32
Registrado: 06 Oct 2015, 22:33

Re: Qué lenguaje de HDL me recomendais??

Mensaje por k_mirror » 18 Oct 2015, 09:37

¡Eh eh! Nada de eso  Que haga puntualizaciones no implica que te esté llamando ignorante.
Sé que no me estás llamando ignorante, pero como dijo un famoso filósofo "Sólo sé que no sé nada", y no es la primera vez que cuanto más aprendo más claro tengo que no sé nada, y la falta de conocimiento es la ignorancia.
No te puedes hacer una idea de lo agradecido que estoy con el interés con el cual respondes, cualquier otro habría dicho "Eso no es así, estás equivocado." y ahí habría terminado la respuestas, tú en cambio razonas las respuestas con lo cual consigues que no sólo vea que estoy un poco equivocado, consigues que vea por qué y más importante aún, que aprenda. Se nota que te gusta enseñar, ojalá hubiese tenido más profesores así, a los que les gusta enseñar en lugar de soltar la parrafada y si no te enteras es tu problema.

No pensé que hubiese nadie capaz de tomarse tantas molestias y sobre todo tanto tiempo para solventarme las dudas de un completo desconocido.
Y eso que en un principio lo que buscaba era tan solo saber que lenguaje escoger para empezar con las FPGA.
La mayoría de estas cosas no las sabía hasta el curso pasado
Supongo que habrá alguna razón por la que nos enseñan las cosas de una forma distintas a como son en realidad, como por ejemplo en el caso del
flip-flop dito D, yo to contento explicando algo basado en algo que me enseñaron, por lo cual lo daba por cierto, y después te enteras de que no es del todo correcto.
Recuerdo que cuando empezamos con la electrónica digital lo primero que hicimos fue montar en las placas de prototipo las puertas lógicas elementales con transistores (bipolares) y diodos, para que viesemos como funcionaba la electrónica digital, no entiendo por qué no hicieron lo mismo con tantas otras cosas.

En fin.... un saludo, muchas gracias... y si alguna vez bajas a Huelva estás invitado a unas cervezas y unas gambas.

Responder