Buscar este blog

viernes, 28 de noviembre de 2014

METODOLOGÍA DE PROGRAMACIÓN FPGA EN C CON DK HANDEL-C

  • En la literatura existen innumerables ejemplos de uso de lenguajes de alto nivel para la descripción de Hardware.

 Se mencionan algunos como los siguientes:

          C-Based System level languages
          Commercial
          SystemC --  The Open SystemC Initiative
          Handel C -- Celoxica Ltd.
          Impulse C  -- Impulse Accelerated Technologies
          Carte C – SRC Computers
          Research
          Streams-C -- Los Alamos National Laboratory
          SA-C -- Colorado State University, University of California, Riverside, Khoral Research, Inc.
          SpecC – University of California, Irvine and SpecC Technology Open Consortium
          Matlab-based
          AccelChip DSP Synthesis -- AccelChip
          System Generator for DSP -- Xilinx
          GUI Data-Flow based
          Corefire -- Annapolis Microsystems
          Java-based
          Commercial
          Forge -- Xilinx
          Research
          JHDL – Brigham Young University


  • En la metodología de DK Handel-C, la siguiente figura muestra en qué posición se encuentra comparado con otros lenguajes tanto de descripción en HW como meramente de SW.


Ventajas de Handel-C

·         Muy fácil de aprender y usar
·         Las instrucciones son basadas en ANSI C
·         Oculta detalles complejos de implementación
·         Muy flexible, no tiene limitaciones en paralelismo y tipos de datos.
·         Tiene operadores extendidos para la manipulación de bits
·         Tiene un modelo de tiempos bien definido
·         Tiene diversidad de dispositivos FPGA abarcados
·         Códigos heredados de lenguaje C previos son portados con facilidad.
·         Cada asignación toma un ciclo de reloj en ser ejecutada.


  • La metodología DK Handel-C se muestra en la siguiente figura:


  • Ejemplo de la metodología:



El ejemplo consistirá en realizar un sumador de 8 bits utilizando para ello un CORE VHDL llamado AddVHDL.vhd cuyo código fuente es: 

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

entity AddVHDL is
    Port ( x : in  STD_LOGIC_VECTOR (7 downto 0);
           y : in  STD_LOGIC_VECTOR (7 downto 0);
           z : out  STD_LOGIC_VECTOR (7 downto 0));
end AddVHDL;

architecture Behavioral of AddVHDL is
begin
                        z <= x + y;       
end Behavioral;


  • Las herramientas necesarias para realizar estos ejemplos son:

Ø  Xilinx Design Tools ISE Suite 14.7
Ø  DK Desing suite  5.0 SP5
Ø  Synplify Pro H-2013.03
Ø  Tarjeta Spartan 3AN (XC3S700AN)


  • El siguiente esquema muestra el proceso de obtención del archivo final suma.bit para el FPGA


Pasos:


I.           Hacer un nuevo proyecto en DK Handel-C llamado suma. El código de main.hcc es el siguiente:

#include "delay.hch"
set clock = external "E12";
unsigned 8 LEDS,n,m;
interface bus_out() salida(LEDS) with {data = {"W21","Y22","V20","V19","U19","U20","T19","R20"}};

interface AddVHDL(unsigned 8 z)
AddVHDL(unsigned 8 x = n, unsigned 8 y = m) with {vhdl_type = "std_logic_vector",busformat="B(I)"};
void main(void)
{  
   par
   {
       while(1)
       {
           LEDS = AddVHDL.z;
       }
      
       while(1)
       {
           par
           {
               n++;
               m++;
           }
           delay_ms(C_MHZ,1000); //1000 ms
       }
   }
}

CONFIGURACIÓN DK


I.             II.        Hacer un proyecto en ISE de Xilinx llamado suma y agregar los archivos AddVHDL.vhd, main_hcc.vhd, agility.vhd, suma.vhd, suma.ufc.



I.                  III.       Cambiar en la línea 197 del archivo main_hcc.vhd I0_AddVHDL_main_32 : AddVHDL por I0_AddVHDL_main_32 : entity work.AddVHDL. Después guardar e implementar todo el proceso.



  • Implementación satisfactoria.









No hay comentarios.:

Publicar un comentario