Professional Documents
Culture Documents
0
Universidad Distrital Francisco Jos de Caldas
Facultad Tecnolgica
Jorge Armando Millan Gmez
Brayan Manuel Avila Silva
Objetivo
Adquirir y aprender el manejo de los conceptos
fundamentales del programa Handel-C mediante DK
Design suite 5.0 y ver su aplicacin en FPGA basys2.
ABSTRACT
In recent decades, the development of new technologies
for manufacturing integrated circuits, together with the
significant increase in computer equipment has provided
the appearance of new programming language oriented
to the design of electronic systems. Programming
languages have been used for years to solve problems,
which have rules to form correct instructions, organizing
them into modules and subject to an compiler, which
translates the code into a language understandable to a
particular machine in the following document he were an
introduction to programming languages but one specific
deepen called "Handel-C" which is a programming
language of high level that focuses on low-level
hardware.
INTRODUCCIN
Durante las ltimas dcadas, el desarrollo de las nuevas
tecnologas de fabricacin de circuitos integrados, junto
con el significativo avance de los equipos informticos,
ha proporcionado la aparicin de nuevos lenguajes de
programacin orientado al diseo de sistemas
electrnicos. Los lenguajes de programacin durante aos
se han utilizado para resolver problemas, los cuales tienen
reglas
para
formar
instrucciones
correctas,
organizndolas en mdulos y sometiendolas hacia un
compilador , el cual traduce el cdigo en un lenguaje
comprensible para una mquina en particular, en el
siguiente documento se encontrara una introduccin sobre
los lenguajes de programacin pero se profundizara uno
en especfico llamado Handel-C el cual es un lenguaje
de programacin de alto nivel que se enfoca en hardware
de bajo nivel.
Cd. 20122073231
Cd. 20122073120
PROGRAMACIN EN HANDEL-C CON
DK DESIGN SUITE 5.0
DK Design Suite 5.0 y Handel-c
1. Handel- C
Handel-C es un alto nivel de lenguaje de
programacin Diseado por Celoxica, el cual se
enfoca en hardware de bajo nivel, ms comnmente
utilizado en la programacin de FPGAs; este es un
lenguaje para implementar algoritmos en hardware
directamente de una representacin en C. Para disear
sistemas usando la herramienta de desarrollo DK
Design Suite. Handel-C Es un rico subconjunto de C ,
con extensiones que no son estndar para el control de
la creacin de instancias de hardware con un nfasis en
el paralelismo; la asignacin y el comando de retardo
tienen un ciclo. Todas las dems operaciones son
"libres", esto permite a los programadores realizar
manualmente las tareas y crear eficaces componentes
. Mediante la disposicin de los bucles en paralelo con
los retrasos correctos, los componentes pueden
aumentar enormemente el rendimiento de datos, a
expensas de un mayor uso de recursos de hardware. [1]
2. DK Design Suite 5.0
Handel-C en sntesis con DK Design Suite (kit de
diseo) ofrece un flujo de software para el desarrollo
de algoritmos, optimizacin y aceleracin en sistemas
embebidos y Con esto Validar el rendimiento y
mejorar la calidad del producto en menos tiempo y con
menor costo. El DK Design Suite es muy adecuado
para diseadores de algoritmos que utilizan C y C++,
lo que requiere una plataforma de validacin ms
rpido que una plataforma orientada al procesador (es
decir, un ordenador porttil), teniendo como
herramienta la lgica de paralelo en FPGA de
prototipos de hardware. La suite DK Design da la
opcin de la compilacin del algoritmo directamente
7. void main(void)
8. {
9. chanin input with {infile="C:/Program Files
(x86)/Agility/trabajos en clase/hex/entra.dat"};
10. chanout oce with {outfile="C:/Program Files
(x86)/Agility/trabajos en
clase/hex/contador0.dat"};
11. chanout oun with {outfile="C:/Program Files
(x86)/Agility/trabajos en
clase/hex/contador1.dat"};
12. chanout hexa with {outfile="C:/Program Files
(x86)/Agility/trabajos en clase/hex/sale1.dat"};
De la lnea 13 a la 17 se declaran las variables del
contador de ceros y unos y los respectivos valores que
sern tomados de tipo binario:
13. x=0;
14. Ceros = 0;
15. Ones = 0;
16. m=0b0000;
17. H=0x00;
De la lnea 18 a la 24 se toman los datos de entrada y se
almacenan un vector en donde la variable x va a ir
aumentando +1 cada vez que haya un dato diferente a 0.
18. do
19. {
20. input?datos;
21. a[x]=datos;
22. x++;
23. }
24. while(datos!=0);
l=x-1;
for(x=0;x<l;x++)
{
c=a[x];
d=c/2;
res=c%2;
o=res[0];
if (o==0)
{
Ceros=Ceros+1;
}
else
Ones=Ones+1;
e=d/2;
res1=d%2;
p=res1[0];
if (p==0)
{
Ceros=Ceros+1;
}
else
Ones=Ones+1;
f=e/2;
res2=e%2;
q=res2[0];
50.
51.
52.
53.
if (q==0)
{
Ceros=Ceros+1;
}
54.
55.
56.
57.
58.
else
Ones=Ones+1;
g=f/2;
res3=f%2;
r=res3[0];
59.
60.
61.
62.
if (r==0)
{
Ceros=Ceros+1;
}
63.
64.
65.
66.
67.
else
Ones=Ones+1;
h=g/2;
res4=g%2;
s=res4[0];
68.
69.
70.
71.
if (s==0)
{
Ceros=Ceros+1;
}
72.
73.
74.
75.
76.
else
Ones=Ones+1;
i=h/2;
res5=h%2;
t=res5[0];
77.
78.
79.
80.
if (t==0)
{
Ceros=Ceros+1;
}
81.
82.
83.
84.
85.
else
Ones=Ones+1;
j=i/2;
res6=i%2;
v=res6[0];
86.
87.
88.
89.
90.
91.
92.
93.
94.
if (v==0)
{
Ceros=Ceros+1;
}
else
Ones=Ones+1;
k=j/2;
res7=j%2;
w=res7[0];
95. if (w==0)
96. {
97. Ceros=Ceros+1;
98. }
99. else
100. Ones=Ones+1;
De la lnea 101 a la 105 se concatenan los valores
obtenidos para ser enviados al canal de salida en su
respectivo valor binario.
101. m=(r@q@p@o);
102. n=(w@v@t@s);
103. hexa!n;
104. hexa!m;
105. }
De la lnea 106 a la 110 se enva el valor final obtenido
en los contadores de ceros y unos.
106. oun!Ones;
107. oce!Ceros;
108. delay;
109. delay;
110. }
2. Contador de 0-99 con visualizacin dinmica en
FPGA Basys 2
Este programa tiene como objetivo generar un contador
de 0 a 99 en el display 7 segmentos de la FPGA Basys 2
(Figura 2.1). Para lograr el resultado debemos generar
un archivo.edf el cual es generado automticamente
cuando estamos configurando y marcamos la opcin
edif en la parte de set active configuration con HandelC (Figura 2.2). el cual debe ser compilado con el
programa Xilinx y posterior mente quemado en la FPGA
con el programa Adept.[3]
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
if(stop.in_rst==1)
{
mot1=0;
mmot2=0;
mmot3=0;
mmot4=0;
}
}
if(r==0)
{
mot1=0;
mot2=0;
moto1=0;
moto2=0;
motor1=0;
motor2=0;
80.
81.
82.
83.
mmot1=0;
mmot2=0;
mmot3=0;
mmot4=0;
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
mot1=0;
}
if (mot2==9)
{
mot2=0;
}
if (moto1==9)
{
moto1=0;
}
if (moto2==9)
{
moto2=0;
}
if(motor1==9)
{
mot1=0;
mot2=0;
moto1=0;
moto2=0;
motor1=0;
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
}
if(motor2==9)
{
mot1=0;
mot2=0;
mmot1=0;
mmot2=0;
mmot3=0;
mmot4=0;
moto1=0;
moto2=0;
motor1=0;
motor2=0;
}
}
}
CONCLUSIONES
Handel-C es una herramienta la cual nos facilita
por medio de los comandos PAR y SEQ realizar
varios procesos al tiempo y de manera secuencial
sin afectar la velocidad en los intervalos.
DK Design Suite 5.0 es un programa flexible que
permite al usuario por medio de sus herramientas
seguir paso a paso cada uno de los procesos
efectuados median la programacin.
Por medio de Handel-C y DK Design Suite 5.0
podemos generar programas utilizando canales
de datos de manera sencilla y con sintaxis de
programacin conocida como lo es C++.
BIBLIOGRAFA
[1]
[2]
[3]
U. S. B. Port, D i g i l e n t B a s y s 2 B o a r d
R e f e r e n c e M a n u a l, vol. 99163, no. 509,
pp. 112, 2010.