FPGAs desde cero

Cualquier cosa relacionada con estos dispositivos

FPGAs desde cero

Notapor biblioman » Jue Oct 12, 2017 9:38 pm

Hola amigos, llevaba tiempo queriendo dejar de ser un espectador de las FPGAs y pasar a la "acción" y aprender más sobre este apasionante mundo. Se puede decir que yo empiezo ahora con este tema por lo tanto más que un curso estructurado y organizado lo que voy a compartir con vosotros es el camino que voy a seguir en mi aprendizaje. Espero que os sea de utilidad, comenteis y hagáis críticas constructivas. Quiero agradecer a los usuarios que con sus aportaciones han contribuido a crear este tema. Un saludo y sin más os dejo el 1º vídeo.

Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2015
Registrado: Vie Mar 20, 2009 5:58 pm

Re: FPGAs desde cero

Notapor biblioman » Dom Nov 12, 2017 1:21 pm

Hola tod@s, aquí tenéis una breve descripción personalizada de lo que es una FPGA y cual fue su origen.
Espero que os guste.
Un saludo
Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2015
Registrado: Vie Mar 20, 2009 5:58 pm

Re: FPGAs desde cero

Notapor biblioman » Dom Nov 12, 2017 1:23 pm

Hola tod@s, aquí teneis el "Hola mundo" con mi kit de FPGAs espero que os guste.
Un saludo
Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2015
Registrado: Vie Mar 20, 2009 5:58 pm

Re: FPGAs desde cero

Notapor biblioman » Dom Nov 12, 2017 1:32 pm

Hola tod@s, aquí tenéis un nuevo video de la serie FPGAs desde cero. En este video se muestran varias cosas:
- VHDL Vs Verilog
- Empezando a programar las FPGAs con Verilog.
- Creación de un ejemplo (Multiplexor 2x1) en Verilog paso a paso implementado en los tres tipos de descripción hardware posibles (Estructural, Funcional y Procedimental).
- Como programar la FPGA a través de la memoria flash para evitar tener que programarla de nuevo si hay un corte en la alimentación.



Código fuente del ejemplo:
Código: Seleccionar todo

//DESCRIPCIÓN ESTRUCTURAL
module multiplexor2x1(a,b,s,y);
   
    input wire a,b,s;
   output wire y;
   wire  not1o, and1o, and2o;
     
     not not1(not1o, s);
     and and1 (and1o, a, not1o);
     and  and2 (and2o, b,s);
     or or1 (y,and1o,and2o);

endmodule

//DESCRIPCIÓN FUNCIONAL

module multiplexor2x1(a,b,s,y);
   
    input wire a,b,s;
    output wire y;
   
    assign y = ~s & a | s & b;

endmodule

//DESCRIPCIÓN PROCEDIMENTAL

module multiplexor2x1(a,b,s,y);
   
    input a, b;
    input wire s;
    output reg y;
   
    always @(*)
    if(s == 0)
       y=a;
     else
       y = b;

endmodule




Espero que el video a pesar de su duración os sea de utilidad y os guste.
Un saludo
Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2015
Registrado: Vie Mar 20, 2009 5:58 pm

Re: FPGAs desde cero

Notapor biblioman » Dom Dic 10, 2017 1:18 pm

Hola a tod@s. Aquí tenéis otra forma de crear circuitos digitales sin necesidad de utilizar ni una sola línea de código, utilizando la herramienta de creación de esquemáticos que incorpora el IDE ISE de Xilinx.



Un saludo
Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2015
Registrado: Vie Mar 20, 2009 5:58 pm

Re: FPGAs desde cero

Notapor biblioman » Dom Dic 10, 2017 1:45 pm

Hola a tod@s aquí tenéis otra entrega de como programar las FPGAs desde cero, en esta ocasión el video trata de como implemetar un diseño jerárquico en la creación de nuestros circuitos y también como utilizar la herramienta PlanAhead para conectar de forma visual los pines físicos de la FPGA con las entradas y salidas de nuestro circuito. Espero que os guste..


Un saludo
Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2015
Registrado: Vie Mar 20, 2009 5:58 pm

Re: FPGAs desde cero

Notapor biblioman » Dom Dic 10, 2017 1:51 pm

Hola a tod@s. Aquí tenéis un video más de la programación de las FPGAs con verilog y el IDE ISE de Xilinx. En está ocasión un ejemplo de como implementar un sencillo decodificador binario a decimal y su posterior visualización en un display de 7 segmentos. En el vídeo también se muestra vomo añadir parametros de simulación con ISin Simulator.
Espero que os guste.



Código fuente:

Código: Seleccionar todo
module Decodificador_7_segmentos(
input wire [2:0] bin,
output reg [6:0] sseg // salida activa a nivel alto
);
always @*
 case (bin)
 
  3'b000: sseg[6:0]=7'b1111110; //0
  3'b001: sseg[6:0]=7'b0110000; //1
  3'b010: sseg[6:0]=7'b1101101; //2
  3'b011: sseg[6:0]=7'b1111001; //3
  3'b100: sseg[6:0]=7'b0110011; //4
  3'b101: sseg[6:0]=7'b1011011; //5
  3'b110: sseg[6:0]=7'b1011111; //6
  3'b111: sseg[6:0]=7'b1110000; //7
 
  default: sseg[6:0] = 7'b0000000; //4 'hf
  endcase

endmodule



Un saludo
Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2015
Registrado: Vie Mar 20, 2009 5:58 pm

Re: FPGAs desde cero

Notapor biblioman » Dom Dic 10, 2017 1:53 pm

Código fuente:

Código: Seleccionar todo
//FPGA XC3S500 -->Frecuencia 50 MHz -->T=20ns

module contador_BCD_HEX(clk,clr,sseg);

  input clk, clr;
  output reg [6:0] sseg;

 //Variables internas
  reg [3:0] aux;
  reg [31:0] counter;
  reg clk2;
 
 //Contador para generar la segunda señal de reloj con un periodo mayor 
 always@(posedge clk, negedge clr)
   begin
      if(clr==0)
      begin
         counter <= 0;
         clk2 <= 0;
   end
     else if (counter == 12500000)
    
    begin
         counter <= 0;
         clk2 <= ~clk2;
      end
      else
         counter <= counter + 32'd1;
   end
 
  //2º Contador para incrementar el valor del display 7S
  always @(posedge clk2,  negedge clr)
  begin
    if(clr == 0)
       aux <= 0;
    else
       aux <= aux+1;
   end
 
  //Representación del valor del contador en el display 7S
  always @(posedge clk)

  case (aux)
                         //abcdefg
    4'b0000:  sseg[6:0]<=7'b1111110; //0
    4'b0001:  sseg[6:0]<=7'b0110000; //1
    4'b0010:  sseg[6:0]<=7'b1101101; //2
    4'b0011:  sseg[6:0]<=7'b1111001; //3
    4'b0100:  sseg[6:0]<=7'b0110011; //4
    4'b0101:  sseg[6:0]<=7'b1011011; //5
    4'b0110:  sseg[6:0]<=7'b1011111; //6
    4'b0111:  sseg[6:0]<=7'b1110000; //7
    4'b1000:  sseg[6:0]<=7'b1111111; //8
    4'b1001:  sseg[6:0]<=7'b1111011; //9
    4'b1010:  sseg[6:0]<=7'b1110111; //A
    4'b1011:  sseg[6:0]<=7'b0011111; //B
    4'b1100:  sseg[6:0]<=7'b1001110; //C
    4'b1101:  sseg[6:0]<=7'b0111101; //D
    4'b1110:  sseg[6:0]<=7'b1001111; //E
    4'b1111:  sseg[6:0]<=7'b1000111; //F

    default:  sseg[6:0]<=7'b0000000;
   
  endcase

endmodule
Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2015
Registrado: Vie Mar 20, 2009 5:58 pm


Volver a FPGAs & CPLDs

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado