PDF de programación - Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

Imágen de pdf Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

Descripción en VHDL de arquitecturas para implementar el algoritmo CORDICgráfica de visualizaciones

Publicado el 7 de Junio del 2018
1.200 visualizaciones desde el 7 de Junio del 2018
1,2 MB
149 paginas
Creado hace 20a (24/11/2003)
Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC



Agradecimientos


Este trabajo va dedicado a mis padres, que posibilitaron la culminación de mi carrera,

debido al apoyo brindado y su gran insistencia.


Quisiera agradecer a mis directores el M.Sc. Prof. Oscar N. Bria y el Ing. Prof. Horacio A.
Villagarcía por su apoyo y excelentes consejos, a los profesores de la Facultad de Informática, a mi
hermano Gerrit y a mi novia Andrea por apoyarme y soportarme siempre. Y por último un
agradecimiento muy especial para Constanza, mi sobrina, que me acompañó durante las pausas que
me tomé en la realización del trabajo.



i

Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

Indice

Agradecimientos

Indice

Introducción



Capítulo 1 – El algoritmo CORDIC

El algoritmo de cómputo numérico CORDIC
Problema a resolver
Objetivos a cumplir
Motivaciones y expectativas
Organización del informe

3.6.1 Comentarios
3.6.2 Identificadores
3.6.3 Números
3.6.4 Caracteres
3.6.5 Cadenas de caracteres (Strings)
3.6.6 Cadenas de bits
3.6.7 Tipos de datos del lenguaje

3.6.7.1 Tipo entero
3.6.7.2 Tipos físicos



ii

1.1 Fundamento teórico
1.2 Cálculo del seno y del coseno
1.3 Transformación de coordenadas polares a cartesianas y viceversa
1.4 Arcotangente y módulo de un vector
1.5 CORDIC generalizado

1.5.1 Caso lineal
1.5.2 Caso hiperbólico



1.6 Arquitecturas para implementar el algoritmo CORDIC

1.6.1 La arquitectura Bit-Paralela Iterativa
1.6.2 La arquitectura Bit-Paralela Desplegada
1.6.3 La arquitectura Bit-Serie Iterativa

2.1 Herramientas CAD
2.2 Diseño Bottom-Up
2.3 Diseño Top-Down
2.4 Ventajas del diseño Top-Down
2.5 Descripción de un diseño


Capítulo 2 – Metodologías de diseño de hardware



Capítulo 3 – El lenguaje de descripción de hardware VHDL


3.1 VHDL describe comportamiento
3.2 VHDL describe estructura
3.3 Un ejemplo de descripción en VHDL
3.4 Modelo de tiempo basado en eventos discretos
3.5 VHDL como lenguaje de programación
3.6 Elementos de sintaxis



i

ii

vi
vi
vii
vii
vii
viii

1
1
6
7
8
8
8
9
10
10
11
12

14
14
16
17
18
19

20
20
21
21
24
25
25
25
25
25
26
26
26
26
26
27

Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

3.6.7.3 Tipos de punto flotante
3.6.7.4 Tipo enumerativo
3.6.7.5 Tipo arreglo
3.6.7.6 Tipo registro
3.6.7.7 Tipo puntero
3.6.7.8 Tipo archivo
3.6.7.9 Subtipos

3.6.8 Declaración de objetos de datos
3.6.9 Atributos
3.6.10 Expresiones y operadores
3.6.10.1 Operadores lógicos
3.6.10.2 Operadores de desplazamiento
3.6.10.3 Operadores relacionales
3.6.10.4 Operador de concatenación
3.6.10.5 Operadores aritméticos

3.6.11 Construcciones secuenciales

3.6.11.1 Asignación a variables
3.6.11.2 Sentencia IF
3.6.11.3 Sentencia CASE
3.6.11.4 Sentencia nula
3.6.11.5 Aserciones (Assertions)
3.6.11.6 Sentencia de bucle
3.6.12 Subprogramas y paquetes

3.6.12.1 Funciones y procedimientos
3.6.12.2 Sobrecarga de operadores (Overloading)
3.6.12.3 Paquetes (Packages)
3.6.12.4 Alcance, visibilidad y utilización de los paquetes

3.6.13 Declaración de entidad
3.6.14 Declaración de arquitectura

3.6.14.1 Bloques
3.6.14.2 Declaración de componentes
3.6.14.3 Instanciación de componentes

3.6.15 Asignación a las señales
3.6.16 Ejecución secuencial: Procesos y la sentencia WAIT
3.6.17 Asignación concurrente a señales
3.6.18 Unidades y bibliotecas
3.6.19 La sentencia GENERATE
3.6.20 La unidad de configuración

3.6.20.1 Especificación de configuración
3.6.20.2 Declaración de configuración

3.6.21 Buses y resolución de señales
3.6.22 Aserciones concurrentes
3.6.23 Invocación a procedimiento concurrente
3.6.24 Transacciones nulas

3.7 Descripción de bancos de prueba

3.7.1 Método tabular
3.7.2 Utilización de archivos
3.7.3 Utilización de un algoritmo

iii



27
27
28
29
29
30
30
30
31
32
32
32
32
33
33
33
33
33
34
34
34
34
35
35
37
38
38
38
39
40
40
41
41
42
44
45
45
46
46
47
48
49
49
50
50
50
51
51



Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

Capítulo 4 – Descripción del algoritmo CORDIC en VHDL

4.1 Herramienta de desarrollo
4.2 La descripción funcional algorítmica

4.2.1 La descripción del package CORDIC
4.2.2 El banco de pruebas para la descripción funcional algorítmica

4.3 Descripción de las arquitecturas particulares

4.3.1 El formato numérico
4.3.2 Componentes comunes a ambas arquitecturas

4.3.2.1 El sumador completo (Full-Adder)
4.3.2.2 La unidad de suma
4.3.2.3 El multiplexor de dos bits

4.3.3 La descripción bit-paralela desplegada y sus componentes
4.3.3.1 La unidad de desplazamiento aritmético cableada
4.3.3.2 La entidad y arquitectura correspondientes a una iteración
4.3.3.3 Descripción final de la arquitectura bit-paralela desplegada

4.3.4 La arquitectura bit-paralela iterativa y sus componentes

4.3.4.1 La unidad de desplazamiento aritmético para la descripción

iterativa

4.3.4.2 Las compuertas lógicas de múltiples entradas
4.3.4.3 La tabla de búsqueda
4.3.4.4 El multiplexor múltiple de dos bits
4.3.4.5 Circuitos secuenciales
4.3.4.6 Los elementos de almacenamiento: Flip-flops
4.3.4.7 El flip-flop D
4.3.4.8 El registro
4.3.4.9 El contador de iteraciones
4.3.4.10 La unidad de control
4.3.4.11 Diseño y descripción de la unidad de control
4.3.4.12 Descripción final de la arquitectura bit-paralela iterativa

4.3.5 El banco de pruebas para las descripciones particulares


Capítulo 5 – Simulación de las descripciones

5.1 Herramientas de simulación
5.2 Valores para la simulación
5.3 Simulación de la descripción funcional algorítmica
5.4 Simulación de las arquitecturas particulares

5.4.1 Cálculo de valores
5.4.2 Visualización de ondas


Conclusiones

Acerca del uso de VHDL
Acerca de las descripciones del algoritmo CORDIC
Acerca de la exactitud de los resultados numéricos
Perspectivas sobre trabajos futuros



iv

52
53
54
54
56
57
57
59
60
61
63
63
64
65
67
69

69
71
73
75
76
77
77
80
81
83
84
91
94

95
95
97
98
102
102
108

115
115
116
116
117



118

119
119
122

123
123
124
124
125
126
127

128

131

136

141

143

Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

Anexos



v

Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC



Introducción



El algoritmo de cómputo numérico CORDIC


Existen gran cantidad de algoritmos eficientes [7] [8] que pueden emplearse para el cálculo
de diversas funciones matemáticas, sin embargo sólo algunos de éstos algoritmos pueden
implementarse adecuadamente en hardware. Entre estos algoritmos se destaca una clase de los
mismos basada únicamente en sumas y desplazamientos, colectivamente denominados algoritmos
CORDIC. Esta clase de algoritmos pueden utilizarse para calcular funciones trigonométricas
circulares, hiperbólicas y funciones lineales.


El cálculo de las funciones trigonométricas está basado en rotaciones de vectores. La
denominación CORDIC, es un acrónimo de COordinate Rotation DIgital Computer o en castellano,
Computadora Digital para Rotación de Coordenadas.


El algoritmo CORDIC fue desarrollado originalmente como una solución digital para los
problemas de navegación en tiempo real. El trabajo original es acreditado a Jack Volder [1] quien
investigó el algoritmo CORDIC para el caso de rotaciones circulares. Ciertas extensiones a la teoría
de CORDIC están basadas en trabajos de John Walther [5] entre otros, y proveen soluciones para
una clase más amplia de funciones.


Como lo propuso Jack Volder el algoritmo CORDIC realiza únicamente operaciones de
suma y desplazamiento, que lo hace idóneo para ser implementado en hardware. No obstante al
implementar dicho algoritmo se puede optar por diversas arquitecturas de diseño y se debe
balancear la complejidad del circuito respecto del desempeño. Las arquitecturas utilizadas para
implementar el algoritmo CORDIC son, bit-paralela desplegada (Bit-Parallel Unrolled), bit-paralela
iterativa (Bit-Parallel Iterative) y bit-serie iterativa (Bit-Serial Iterative) [2].



vi



Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC

Problema a resolver


En el presente trabajo se estudia el algoritmo de cómputo numérico CORDIC y se
describen algunas de sus variantes arquitecturales. Para comenzar se realizará una descripción a
nivel funcional algorítmica con un alto nivel de abstracción del algoritmo en VHDL, utilizando
aritmética en punto flotante proporcionada por el lenguaje. El propósito es validar el
funcionamiento de algoritmo mediante el cálculo del seno, del coseno y del arcotangente.
Seguidamente se realizará la descripción de dos de las arquitecturas mas comunes (CORDIC bit-
paralelo desplegado y CORDIC bit-paralelo iterativo) utilizando aritmética de punto fijo como
forma de representación numérica.


La descripción de las arquitecturas particulares, se llevará a cabo a partir del funcionamiento
correcto de la descripción funcional algorítmica. Otro aspecto interesante es la modificación de los
parámetros principales que afectan a las arquitecturas, ancho de palabra y número de iteraciones.
Para verificar el funcionamiento de las descripciones, se utilizarán como referencia a las funciones
seno, coseno y arcotangente. La validación se llevará a cabo utilizando MATLAB como
he
  • Links de descarga
http://lwp-l.com/pdf11668

Comentarios de: Descripción en VHDL de arquitecturas para implementar el algoritmo CORDIC (1)

9 de Octubre del 2020
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad