Autor Tema: Libro Diario con la Spartan-3AN (FPGA)  (Leído 84467 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #60 en: 04 de Septiembre de 2009, 13:05:28 »
Hola metalm,

Aunque es lógica programable, puedes crear maquinas de estado que se encarguen gestionar cada recurso, es decir, un bloque de FPGA para vídeo, otro para audio, otro para ethernet, en otro puedes tener un microcontrolador embebido y  programarlo para que ejecute una secuencia de instrucciones, etc, etc.  LA FPGA es muy abierta y casi que permite hacer lo que te imagines.

SALUDOS!

Desconectado metalm

  • PIC10
  • *
  • Mensajes: 39
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #61 en: 05 de Septiembre de 2009, 00:42:56 »
Gracias por la respuesta! me volvi loco buscando un millon de datasheets y ya estoy entendiendo jaja esperemos que este post le sirva de ayuda a la gente que empiece con esto porque la verdad es que es muy interesante.

Al final me compre este kit de desarrollo por 59 dolares:
https://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,649&Prod=BASYS2


Aportes:
http://www.shared2u.com/main/36489-xilinx-ise-desgin-suite-v111-retail-iso.html (esto es muy util, viene con los cores de 32 y 8 bits con compilador gcc y todo! "embedded edition")

http://www.asic-world.com/verilog/verilog_one_day.html << verilog in one day: todavia no lo lei pero estuve viendo una comparativa entre verilog y VHDL y todos prefieren verilog porque es parecido al lenguaje de programación C.

Cuando sepa algo mas lo posteo!

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #62 en: 05 de Septiembre de 2009, 11:55:37 »
Efectivamente metalm, VERILOG es un lenguaje mas estructurado que VHDL.
Permite desarrollar de todo en la FPGA de manera rapida y facil de depurar. Hay una nueva version, en la que agregaron mas funciones e instrucciones propias de lenguaje C..Se llama SYSTEM VERILOG.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #63 en: 05 de Septiembre de 2009, 17:58:58 »
metalm, me encanta la plaquita, y sobre todo el precio, tu que ya la tienes, que tal te ha salido, cuanto fue el costo de envio? ahora que tengo dinero, quiero aprovechar para comprar algunos juguetes, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado metalm

  • PIC10
  • *
  • Mensajes: 39
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #64 en: 06 de Septiembre de 2009, 10:23:47 »
metalm, me encanta la plaquita, y sobre todo el precio, tu que ya la tienes, que tal te ha salido, cuanto fue el costo de envio? ahora que tengo dinero, quiero aprovechar para comprar algunos juguetes, saludos

Con la placa no necesitas nada como para empezar, pero yo ademas me compre el cable paralelo JTAG (para programar dispositivos mas adelante) el cual te lo cobran 12 dolares.
Depende de el país donde estés el costo del envío, pero con solo clickear ahi en la pagina de que pais sos ya te dice el costo, en el caso de Argentina es de 41 dolares.
Despues cuando llego aca me cobraron el 50% del costo... o sea es bastante caro poder traerlo y por eso me compre la de 59 dolares jajaa pero esta muy buena como para empezar, total despues cuando necesito otra cosa yo mismo diseño la plaqueta y listo

Todavia no puedo contar como me fue con esto porque no se ni prender un led con el FPGA jajaja, recien ahi estoy viendo los ejemplos, te sugiero que bajes el programa ese que puse en el mensaje anterior mientras este disponible porque ya comprobe que anda

Desconectado metalm

  • PIC10
  • *
  • Mensajes: 39
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #65 en: 06 de Septiembre de 2009, 10:25:52 »
Efectivamente metalm, VERILOG es un lenguaje mas estructurado que VHDL.
Permite desarrollar de todo en la FPGA de manera rapida y facil de depurar. Hay una nueva version, en la que agregaron mas funciones e instrucciones propias de lenguaje C..Se llama SYSTEM VERILOG.

Gracias lo voy a tener en cuenta! el tema es que los ejemplos de esta placa vienen en VHDL asi que me parece que me voy a tener que digerir los 2 lenguajes

Tambien te deja diseñar con el esquematico, se puede hacer codigo y esquematico, solo codigo o solo esquematico. Podes declarar entidades en el codigo y despues verlas representadas en el esquematico como un componente para que lo puedas cablear con los demas.

voy a tardar un millon de años hasta hacer algo util con esto jajaja

Desconectado Geo

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 922
    • Mexchip
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #66 en: 07 de Septiembre de 2009, 02:31:13 »
No he usado Verilog (apenas leído algunos códigos en este lenguaje), pero de la bibliografía que he consultado, en varias ocasiones he encontrado que VHDL es el lenguaje preferido de inicialización a lógica reconfigurable en las instituciones educativas, es un tanto más complicado que Verilog pero expresa mejor algunos conceptos de desarrollo en este tipo de dispositivos (recuerda, no estás escribiendo un programa para PC :P).

Lo que considero es que Verilog es más accesible para quienes tienen experiencia desarrollando aplicaciones para PC, mientras que VHDL pudiera serlo para quienes conocen un poco más de hardware a bajo nivel, pero esto es solamente mi opinión :p.

Ambos lenguajes se usan ampliamente en entornos industriales, si te dedicarás a esta área de manera profesional es obligatorio conocer ambos (y algún otro) :).

Yo tengo varios ejercicios de VHDL que utilicé en un curso de introducción al lenguaje, tengo algún tiempo queriendo colocar algo por aquí pero la falta de tiempo me lo ha impedido. Dentro de poco espero estar culminando mis proyectos (principalmente, mi tesis), y con gusto compartimos información. A la mano tengo una tarjeta de desarrollo Spartan 3 Starter Kit de Digilent, quizá pueda conseguir alguna otra de época similar ;).

Bien, ánimo con esto que es mucho muy interesante :).
La imaginación es el límite.
Visita mi blog, en inglés o en español :).
Mini curso de introducción a VHDL en MEXCHIP :-/

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #67 en: 16 de Septiembre de 2009, 00:40:15 »
Hola a todos!

Uff hace rato no pasaba por el foro y me hace mucha falta.

Hablar de VHDL vs VERILOG...Es como hablar de calculadoras y enfrentar HP 48G vs TEXAS.  Las dos hacen lo mismo! pero.. ¿cual es mas fácil de manejar?

Tanto verilog como VHDL son para programar hardware. no veo diferencia en ello, lo realmente importante a la hora de decidir si dedicas tiempo a aprender uno de los dos desde cero...Te diría toda la vida VERILOG!!!

En verilog tienes mas herramientas para hacer las cosas casi como se te ocurren, en VHDL..bueno, se deben escribir como 10 lineas mas para llegar a una sola en verilog. Esa es la diferencia, velocidad de desarrollo, ademas que la curva de aprendizaje sera mucho mas rápida en Verilog que VHDL.

Pero podríamos hablar y hablar de cual es mejor y solo queda decir que sin importar cual decidas tomar,  con ambos se puede llegar a lo mismo, así que para adelante, que las FPGAs tienen mucho para dar.

SALUDOS!

Desconectado Romel_ivan

  • PIC10
  • *
  • Mensajes: 3
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #68 en: 05 de Octubre de 2009, 13:47:43 »
Hola a todos.

Soy Romel de Ecuador y soy nuevo en este tema de los FPGA, pero me interesan mucho. Felicitaciones a todos los que estan haciendo ciencia desde sus paises. Quisiera saber si alguien podria ayudarme con links de ejemplos practicos sobre la programación en VHDL y como hacerlos correr en el Spartan 3AN.

Saludos

Desconectado metalm

  • PIC10
  • *
  • Mensajes: 39
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #69 en: 05 de Octubre de 2009, 21:44:37 »
Hola a todos.

Soy Romel de Ecuador y soy nuevo en este tema de los FPGA, pero me interesan mucho. Felicitaciones a todos los que estan haciendo ciencia desde sus paises. Quisiera saber si alguien podria ayudarme con links de ejemplos practicos sobre la programación en VHDL y como hacerlos correr en el Spartan 3AN.

Saludos

Yo tengo el problema inverso: Todo lo que encuentro es en VHDL y yo quiero aprender verilog!!

A ver si te sirve de ayuda: Yo me compre la placa Basys2 de Digilent ( http://www.digilentinc.com/ ), si te fijas el esquematico y los archivos de ejemplo para esta placa, estan escritos en VHDL y te los podes bajar libremente de la pagina. Estos archivos te van a servir a modo de ejemplo ya que esta todo el "workspace" hecho para el Xilinx ISE.

Mas explicaciones en VHDL podes encontrar en este manual en PDF: http://fpga.com.ar/notas.htm

Nadie tendra por ahi un par de ejemplos en verilog?? voy a tener que aprender forzosamente VHDL me parece...

En realidad ya pude hacer un par de cosas, pero no se como manejar los CLOCK, como hago para multiplicar el clock que entra por el pin principal del DCM? mi placa tiene un clock seteable con un jumper de 25, 50 y 100 MHz, podria multiplicarlo hasta 400 MHz sin tener inconvenientes? necesito mucha velocidad  :mrgreen:

Desconectado Romel_ivan

  • PIC10
  • *
  • Mensajes: 3
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #70 en: 06 de Octubre de 2009, 01:08:08 »
Saludos

Ya estoy revisando los links y estan interesantes. Cuando acabe de ojearlos, podré poner un comentario más preciso.

Y cualquier información que encuentre de Verilog y crea que te pueda servir te publicaré, claro respetando las reglas del Foro

Gracias.

Desconectado The_spantan_Luilli

  • PIC10
  • *
  • Mensajes: 1
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #71 en: 19 de Octubre de 2009, 18:30:35 »
Hola que tal...
Saludos a todos los miembros y visitantes de la comunidad.
Soy nuevo en esto de la programacion de los FPGA's y me he topado con un gran problema.

He estado trabajando con el kid de evaluacion spartan 3E Starter  ( XCS500E ).
Esta dispone de un ADC el cual necesito programar. Ya he intentado programarlo
muchas veces, pero no logro hacer que funcione.

Lo que me parece curioso es que ya he leido hacerca de como hacer la programacion,
sigo los consejos al pie de la letra y nada..


Aqui les dejo un programa que me hicieron favor de pasarme.
( este no tiene errores salvo algunos comentarios )

Me gustaria que alguien pudiera programarlo en su targeta y viera si funciona,
esto para descartar que mi targeta no este quemada  :(...

Muchas gracias.

nota: utilice los puertos J1 y J2 de la spartan-3E para poder ver totalmente la salida de la conversion del canal 0

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity COPIA is
   Port (
      clock : in  STD_LOGIC; -- global clock
      rst : in  STD_LOGIC; -- global rst
      
      -- user signal
      ce_amp : in STD_LOGIC := '0'; -- Botón para iniciar la prog. del amp
      goconv : in  STD_LOGIC := '0';-- inicia la conversion del ADC


      ready : out STD_LOGIC := '0'; --led que avisa que al amp esta programado

      
      -- ADC in/out signal
      SPI_MISO : in std_logic; --adc status report unused
      ACONV : out  STD_LOGIC :='0';   -- start conversion    
 
      --ADC0 : out std_logic_vector(13 downto 0) := (others => '0'); 
      ADC1 : out std_logic_vector(13 downto 0) := (others => '0');          
 
      -- AMP in/out signal
      AMP_CS : out  STD_LOGIC;       -- AMP chip select    
      MOSI : out  STD_LOGIC;       -- data to programmable amplifier 
 
      SCK : out  STD_LOGIC
      ); 
end COPIA;
  architecture Behavioral of COPIA is
  constant gain : std_logic_vector(7 downto 0) := "00010001; --ganancia de -1

  type state_type is (IDLE, START,START2,HI,HI_DUMMY,LO,LO_DUMMY,FINE,IDLE_AD, START_AD,HI_AD,LO_AD,FINE_AD);
  signal next_state, state : state_type;   

  signal counter : integer range 0 to 35 :=0;
  signal amp_bit_count : integer range 0 to 15 := 0;

begin

   process(ce_amp,goconv,state,counter,amp_bit_count) is
   begin
      case state is
         when IDLE =>
            if ce_amp = '1' then  ---espera hasta poner en 1 el boton
               next_state <= START;
            else
               next_state <= IDLE;   
            end if;            
         when START =>            
            next_state <= START2;   
         when START2 =>
            next_state <= HI;               
         when HI =>                        
            if counter = 2 then
               next_state <= HI_DUMMY;
            else
               next_state <= HI;
            end if;         
         when HI_DUMMY =>            
            next_state <= LO;
         when LO =>
            if counter = 2 then
               next_state <= LO_DUMMY;
            else
               next_state <= LO;
            end if;      
         when LO_DUMMY =>
            if amp_bit_count=8 then
               next_state <= FINE;            
            else
               next_state <= HI;      
            end if;
         when FINE =>         
            next_state <= IDLE_AD;--start to sample
         ------INICIA ADC-------------   
         when IDLE_AD =>   
            if goconv ='1' then
               next_state <= START_AD;                                             
            else
               next_state <= IDLE_AD;
            end if;            
         when START_AD =>
               next_state <= HI_AD;               
         when HI_AD =>      
            next_state <= LO_AD;
         when LO_AD =>
            if counter = 34 then
               next_state <= FINE_AD;
            else
               next_state <= HI_AD;
            end if;
         when FINE_AD =>
            next_state <= IDLE_AD;--inicia una nueva conversion.
         when others =>         
            next_state <= IDLE_AD;    
      end case;
   end process;

------------------------------------------------------------------------------
   process (clock,rst) is
     variable index1 : integer range 0 to 15;
     variable index2 : integer range 0 to 15;
   begin
      if rst = '1' then
         state <= IDLE;
      elsif clock'event and clock ='1' then
         -- global assign
         state <= next_state;
         ready <= '0'; -- busy, setup AMP, acquiring by ADC
         case state is
            when IDLE =>   
               SCK <= '0';
               AMP_CS <= '1';
               MOSI <='0';
               counter <=0;
               ADC1 <= (others => '0');
            when START =>
               AMP_CS <= '0';
               amp_bit_count <=  0;
               index1 := 7; -- 8 bit value
            when START2 =>
               MOSI <= gain(index1);      -- first assign, next on LO_DUMMY   
            when HI =>
               SCK <= '1';      
               counter <= counter +1;
            when HI_DUMMY =>         
               amp_bit_count <= amp_bit_count + 1;
               counter <=0;
            when LO =>
               SCK <= '0';            
               counter <= counter +1;            
               if counter = 1 then
                  if index1 > 0 then
                     index1 := index1-1;
                  end if;
               end if;
            when LO_DUMMY =>   
               MOSI <= gain(index1);
               counter <=0;                  
            when FINE =>
               AMP_CS <='1';
               SCK <= '0';
               MOSI <= '0';   
            ------INICIA ADC----
            when IDLE_AD =>
               ready <= '1'; -- setup AMP complete, waiting goconv enable
               SCK <= '0';
               ACONV <= '0';
            when START_AD =>
               --clean register
               --ADC0 <= (others => '0');
               ADC1 <= (others => '0');
               SCK <= '0';
               ACONV <= '1';
               counter <= 0;
               index1 := 13; -- 14 bit value
               index2 := 13; -- 14 bit value
            when HI_AD =>
               SCK <= '1';
               ACONV <= '0';         
               counter <= counter +1;
            when LO_AD =>
               SCK <= '0';
               ACONV <= '0';   
               if(counter>2 and counter<17) then            
                  -- rappresentazione in complemento a 2
                  if index1 = 13 then
                     --ADC0(index1)  <= not SPI_MISO;
                     ADC1(index2)  <= not SPI_MISO;
                  else
                     --ADC0(index1)  <= SPI_MISO;
                     ADC1(index2)  <= SPI_MISO;
                  end if;   
               
                  if index1 > 0 then
                     index1 := index1 -1;
                  end if;
               
               elsif(counter > 18 and counter < 33) then
                  -- rappresentazione in complemento a 2
                  if index2 = 13 then
                     ADC1(index2)  <= not SPI_MISO;
                     --ADC0(index1)  <= not SPI_MISO;
                  else
                     ADC1(index2)  <= SPI_MISO;
                     --ADC0(index1)  <= SPI_MISO;
                  end if;
               
                  if index2 > 0 then -- fatal error on modelsim
                     index2 := index2 -1;
                  end if;
               else
               end if;
            when FINE_AD =>         
               counter <= 0;
               SCK <= '0';
               ACONV <= '0';         
            when others =>
               SCK <= '0';
               ACONV <= '0';   
               AMP_CS <= '1';
               MOSI <='0';
               amp_bit_count <= 0;
         end case;
      end if;
   end process;
end Behavioral;

------------------UCF-------------------------------

NET "ACONV"  LOC = "P11"  ;
NET "ADC1<0>"  LOC = "B6"  ;
NET "ADC1<10>"  LOC = "C11"  ;
NET "ADC1<11>"  LOC = "D11"  ;
NET "ADC1<12>"  LOC = "E9"  ;
NET "ADC1<13>"  LOC = "F9"  ;
NET "ADC1<1>"  LOC = "A6"  ;
NET "ADC1<2>"  LOC = "C5"  ;
NET "ADC1<3>"  LOC = "D5"  ;
NET "ADC1<4>"  LOC = "A4"  ;
NET "ADC1<5>"  LOC = "B4"  ;
NET "ADC1<6>"  LOC = "F12"  ;
NET "ADC1<7>"  LOC = "E12"  ;
NET "ADC1<8>"  LOC = "E11"  ;
NET "ADC1<9>"  LOC = "F11"  ;
NET "AMP_CS"  LOC = "N7"  ;
NET "ce_amp"  LOC = "L13"  ;
NET "clock"  LOC = "C9"  ;
NET "goconv"  LOC = "L14"  ;
NET "MOSI"  LOC = "T4"  ;
NET "ready"  LOC = "F7"  ;
NET "rst"  LOC = "N17"  ;
NET "SCK"  LOC = "U16"  ;
NET "SPI_MISO"  LOC = "N10"  ;




Desconectado JOJOJORGE5

  • PIC16
  • ***
  • Mensajes: 167
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #72 en: 28 de Noviembre de 2009, 22:18:34 »
Hola

A mi también me pico el bichito ese de querer experimentar con FPGA.
Aunque por el momento el único que estaría a mi alcance es el "Basys2" como el del amigo metalm.
Aunque podría hacer un sacrificio y adquirir una Spartan-3AN Starter Kit.
o algo mas barato, la Nexys2.

lo que no me gusta es ese conector que tienen. las placas para la ampliación, esos conectores son exageradamente caros. solo el conector que también lo venden suelto es muy caro.
esta placa parece valer la pena.

Unas preguntas para PICmouse

¿Que te parece ese conector? ¿te comprarias esa placa de expansion?

tambien tienen esta:
http://www.digilentinc.com/Products/Detail.cfm?Prod=FX2BB
y esta que es muy interesante:
http://www.digilentinc.com/Products/Detail.cfm?Prod=VDEC1
Este es el conector:
https://www.digilentinc.com/Products/Detail.cfm?NavPath=2,395,461&Prod=FX2SOCKET

salu2:)

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #73 en: 01 de Diciembre de 2009, 11:42:28 »
Hola  JOJOJORGE5!

La verdad que con solo la tarjeta Spartan 3AN, tienes para divertirte muchísimo tiempo, antes de querer agregar módulos externos.  A la fecha las practicas que logre hacer trabajar son:

Teclado PS2
Interruptores
Pulsadores
Rotatory switch
Pantalla LCD
Conversores DAC / ADC
Salida de Audio por JACK
Puerto serial RS232

Pero de VGA me falta bastante para lograr una aplicación, y hay infinidad de practicas en las que se combinen todo lo que te comento.


Claro que de las opciones que me muestras es grandiosa la del Protoboard y me gusta mas la de Video.



Desconectado JOJOJORGE5

  • PIC16
  • ***
  • Mensajes: 167
Re: Libro Diario con la Spartan-3AN (FPGA)
« Respuesta #74 en: 01 de Diciembre de 2009, 20:13:17 »
Hola

Claro que se tiene para divertirse un buen rato, pero lo que pasa es que quiero usarlo para aplicaciones de robótica y conectarle algunas cosas más,
Según el manual tiene tres puertos de expansión de los convencionales, pero me es insuficiente, pero en el manual vi que tiene dos pin headers, ¿serviran estos para conectar algo?
En el manual están en el capitulo 15
Como diferencial conector, y creo que con eso mas el que se puede soldar tengo pines para rato.
En fin creo que al final me comprare un trainer como el tuyo, ya que es el más “bueno bonito y barato” que me puedo conseguir, también me comprare esa placa de expansión no se si la que viene con proto o sin proto.
Y otra pregunta ese puerto USB que trae es solo para programación o también sirve para comunicación.
Seguramente es posible implementar comunicación USB en alguno de los otros puertos, en le placa nexys2 el puerto USB sirve también para comunicación además de para programación.

Y una ultima consulta en este post.
¿Que sabes de el descuento académico que ofrecen?
Me parece algo interesante es un descuento muy significativo.

salu2:)


 

anything