Selected:

Módulo de Audio controlado con una FPGA

1,99

1,99

Se pretende controlar un módulo de audio mediante un dispositivo programable del tipo FPGA. Se ha escogido un fragmento del Himno a la alegría de la Novena Sinfonía de Ludwing van Beethoven para implementar el control del módulo de audio.

La descarga include la siguiente información: memoria de la práctica en formato pdf y docx, código fuente en VHDL, hojas de cálculo para la codificación de la melodía.

  • Fecha: Enero 2001 – Julio 2001
  • Autor: Raúl Bartolomé Castro
  • Estudios: Ingeniería en Automática y Electrónica Industrial
  • Asignatura: Sistemas Electrónicos Digitales

Description

Índice

Índice 1

Descripción de la práctica 2

Características del FPGA 2

Características del Modulo de Audio 2

Descripción del código de programa 3

Máquina de estados 3

ROM de Notas 3

ROM de Tiempos 3

ROM de Volúmenes 3

ROM de Melodías 3

Ordinograma al nivel de transferencia de registros 4

Cronograma 5

Frecuencia de las notas musicales 6

Frecuencia del módulo de audio 7

Código de programa optimizado 8

Descripción de la práctica

Se pretende controlar un módulo de audio mediante un dispositivo programable del tipo FPGA. Se ha escogido un fragmento del Himno a la alegría de la Novena Sinfonía de Ludwing van Beethoven para implementar el control del módulo de audio.

Características del FPGA

El modelo de FPGA utilizado es un EPF8282A de fabricante ALTERA. Este componente es de la familia FLEX 8000, proporciona 282 registros, 208 células lógicas y 64 pines de I/O.

Características del Modulo de Audio

Los puertos codifican la siguiente informacion:

 

Puerto A = PA[7..0]. Frecuencia tal que:

PA[7..0] = 0xFF => 400 Hz.

PA[7..0] = 0x00 => 20000 Hz.

Entonces el incremento de un bit equivale a

 

Puerto B = PB[7..0]. Amplitud, Timbre y Control tal que:

PB[7..4] = Amplitud:

PB[7..4] = 0xF => Máximo volumen.

PB[7..4] = 0x0 => Mínimo volumen.

PB[3,2] = Timbre:

PB[3,2] = 0b00 => Señal sinusoidal.

PB[3,2] = 0b01 => Señal Triangular.

PB[3,2] = 0b10 => Señal cuadrada.

PB[3,2] = 0b11 => Señal externa.

PB[1,0] = Control:

PB[1,0] = 0b00 => Control de frecuencia.

PB[1,0] = 0b01 => Filtro paso-bajo.

PB[1,0] = 0b10 => Filtro paso-alto.

PB[1,0] = 0b11 => Indefinido.

Descripción del código de programa

El programa está desarrollado en VHDL con vistas a la implementación sobre un EPF8282A. Con el código de programa optimizado se han utilizado 202 de las 208 células lógicas.

Está constituido por los siguientes procesos:

Máquina de estados

Realiza el control del módulo de audio implementa con cuatro estados:

  1. Actualización de la ROM Melodía, ésta a su vez provoca la actualización de las ROMs de Notas, Tiempos y Volúmenes
  2. Operaciones sobre el Puerto B: El Volumen el la parte alta y el Timbre en la baja.
  3. Actualización de los datos en los Puerto A y B.
  4. Retardo en función del Tiempo de la nota.

ROM de Notas

Para la codificación de la melodía propuesta sólo ha sido necesario la utilización de una octava de SOL6 a SOL7 sin sostenidos, lo que equivale a 8 elementos y por lo tanto 3 bits.

ROM de Tiempos

Los tiempos necesarios han sido 4 (blanca, negra con punto, negra y corchea), por lo tanto con 2 bits

ROM de Volúmenes

En nuestro caso todas las notas tienen el mismo volumen (piano), con un bit es suficiente

ROM de Melodías

Codifica la partitura. El método para realizarlo es casi directo ya que gracias a las tres ROMs anteriores se definen los elementos característicos de la escritura musical.

Una primera codificación de las notas podría ser la de los puertos del módulo de audio, pero entonces se utilizan 16 bits para cada nota y el metodo de codificación en muy austero.

Con el esquema de codificación propuesto se utilizan 6 bits para cada nota y el método de codificación es mucho más cercano a la forma del pensamiento musical. Éste método es tanto mejor cuanto mayor sea el tamaño de la melodía, ya que las 3 primeras ROMs provocan la utilización de una memoria mínima fija.

Datos de la melodía: se organizan en cuatro memorias ROM. Tres ROMs codifican las notas, los volúmenes y el tiempos respectivamente; y la Rom restante codifica la melodía.

Ordinograma al nivel de transferencia de registros

ROM Melodía

64×6

eVolumen

1

eNota

3

eTiempo

2

ROM

Notas

8×8

ROM

Tiempo

4×5

ROM

Volumen

3×4

nCiclo

6

nVolumen

4

nNota

8

nTiempo

5

clk

MAQUINA DE 4 ESTADOS

reset

PortB

8

PortA

8

MÓDULO DE AUDIO

Cronograma

Las señales son rst, clk, PortA, PortB, nCiclo, nEstado, nCnt

Frecuencia de las notas musicales

 

3

4

5

6

7

8

9

10

DO

130,8

261,6

523,2

1046,4

2093

4186

8372

16744

DO#

138,6

277,2

554,4

1108,8

2217,46

4434,92

8869,84

17739,68

RE

146,84

293,68

587,36

1174,72

2349,32

4698,64

9397,28

18794,56

RE#

155,56

311,12

622,24

1244,48

2489,02

4978,04

9956,08

19912,16

MI

164,8

329,6

659,2

1318,4

2637,02

5274,04

10548,08

21096,16

FA

174,6

349,2

698,4

1396,8

2793,83

5587,66

11175,32

22350,64

FA#

185

370

740

1480

2959,96

5919,92

11839,84

23679,68

SOL

196

392

784

1568

3135,96

6271,92

12543,84

25087,68

SOL#

247,64

495,28

990,56

1981,12

3322,44

6644,88

13289,76

26579,52

LA

220

440

880

1760

3520

7040

14080

28160

LA#

233,08

466,16

932,32

1864,64

3729,31

7458,62

14917,24

29834,48

SI

246,96

493,92

987,84

1975,68

3951,07

7902,14

15804,28

31608,56

 

3

4

5

6

7

8

9

10

Frecuencia del módulo de audio

 

400+(76,5625*Ax)

Redondeo

Módulo

Nota

Error [Hz]

0

400

400

255

   

1

476,5625

480

254

   

2

553,125

550

253

   

3

629,6875

630

252

   

4

706,25

710

251

   

5

782,8125

780

250

   

6

859,375

860

249

   

7

935,9375

940

248

   

8

1012,5

1010

247

   

9

1089,0625

1090

246

   

10

1165,625

1170

245

   

11

1242,1875

1240

244

   

12

1318,75

1320

243

   

13

1395,3125

1400

242

   

14

1471,875

1470

241

SOL6

18

15

1548,4375

1550

240

   

16

1625

1630

239

   

17

1701,5625

1700

238

   

18

1778,125

1780

237

LA6

-20

19

1854,6875

1850

236

   

20

1931,25

1930

235

   

21

2007,8125

2010

234

SI6

-35

22

2084,375

2080

233

DO7

13

23

2160,9375

2160

232

   

24

2237,5

2240

231

   

25

2314,0625

2310

230

   

26

2390,625

2390

229

RE7

-4

27

2467,1875

2470

228

   

28

2543,75

2540

227

   

29

2620,3125

2620

226

MI7

17

30

2696,875

2700

225

   

31

2773,4375

2770

224

FA7

23

32

2850

2850

223

   

33

2926,5625

2930

222

   

34

3003,125

3000

221

   

35

3079,6875

3080

220

   

36

3156,25

3160

219

SOL7

-25

37

3232,8125

3230

218

   

38

3309,375

3310

217

   

Código de programa optimizado

Download to continue reading…

Reviews

There are no reviews yet.

Be the first to review “Módulo de Audio controlado con una FPGA”

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Close Menu
×
×

Cart

%d bloggers like this: