Labo Digitale Systemen -...

17
Labo Digitale Systemen Labo Digitale Systemen 6 labozittingen: 1u30 Permanente evaluatie, laatste labozitting evaluatie (+ files afgeven) Cursus: http://telescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen Wat? Implementatie van een parametrische audio equalizer FPGA: Xilinx XUP Virtex-II Pro User I/O via expansion board

Transcript of Labo Digitale Systemen -...

Page 1: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

Labo Digitale Systemen

� 6 labozittingen: 1u30

� Permanente evaluatie, laatste labozitting evaluatie (+ files afgeven)

� Cursus: http://telescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen

� Wat?

� Implementatie van een parametrische audio equalizer

� FPGA: Xilinx XUP Virtex-II Pro

� User I/O via expansion board

Page 2: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Parametrische Audio Equalizer:

� 3 parameters:

K: Versterking/verzwakkingsfactor

Alpha: Bandbreedte

Beta: Frequentie

� Demo!

Labo Digitale Systemen

� Parametrische Audio Equalizer:

� Hoe implementeren?

� VHDL schrijven

� Ontwerpen via Xilinx System Generator

= subset van Simulink

= grafische omgeving om snel DSP applicaties te ontwikkelen

Page 3: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Xilinx System Generator:

� Maak via GUI hardware designs

� Blokken slepen uit bibliotheken

� Automatische VHDL code generatie

� Bibliotheken bestaan uit:

� Eenvoudige basisblokken: logische poorten, registers,…

� Basisblokken: tellers, FSMs, schuifregisters,…

� Complexe blokken: geheugeninterfaces, FFTs, …

Labo Digitale Systemen

� Ontwerpmethodologie:

� Start = algoritme

� Simuleer en ontwerp in Simulink

� Converteer naar Xilinx System Generator blockset (manueel)

� 2 grote problemen:

� floating point � fixed point conversie (bitbreedtes?)

� latency in hardware (bv. multipliers)

oplossingen � zie volgende labozittingen

Problemen?

Page 4: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Simulink:

� Mini-tutorial

Labo Digitale Systemen

� Algoritme:

� Begin met 1ste orde: 2 parameters (K en alpha)

� All pass:

Page 5: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Algoritme:

� Begin met 1ste orde: 2 parameters (K en alpha)

� All pass:

Labo Digitale Systemen

Page 6: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

Labo Digitale Systemen

� Combineer beide:

Page 7: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� 2 parameters: K en alpha

Labo Digitale Systemen

� Opdracht 1:

� ontwerp de 1ste orde allpass filter in Simulink

� Input = random source

� Output = spectrum analyzer

� Alpha = slider gain

Page 8: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Opdracht 2:

� integreer de 1ste orde allpass filter in het HP en LP netwerk

� = shelving equalizer

� Opdracht 3:

� Bij K > 0.5:

� de TF gaat de frequentie die we willen onderdrukken doorlaten

(A = 1) en de overige frequenties versterken

� Herbekijk het LP & HP framework en zoek een oplossing zodat bij K

> 0.5 het schema effectief de frequentie onderdrukt, en de overige

doorlaat (met A = 1)

Labo Digitale Systemen

� Parametric equalizer:

� 3 parameters

� All-pass = 2de orde (2 parameters)

Page 9: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� All-pass 2de orde:

Labo Digitale Systemen

� Totale framework blijft hetzelfde:

met juiste K!

2de orde

Page 10: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Pole/zero plot:

Labo Digitale Systemen

� Opdracht 4:

� Ontwerp de 2de orde all-pass filter in Simulink

� Opdracht 5:

� Integreer de 2de orde all-pass in het LP & HP framework

� (met de juiste K implementatie!)

Page 11: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Xilinx System Generator tutorial

� Elk design: steeds Xilinx System Generator token includen

� Conversie tussen floating-point en fixed-point gebeurd

via Gateway-blocks

Labo Digitale Systemen

� Fixed-point: format is steeds van de vorm Fix_16_13

Page 12: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Oefeningen:

Labo Digitale Systemen

� Let op!

� In HW hebben multipliers latency van aantal clockcycles nodig!

� Ga in de bibliotheek opzoek naar blokken die hiervoor kunnen gebruikt

worden

� Tip: samplerate

Page 13: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Labo Digitale Systemen

� Opdracht 6: Converteer de 1ste orde all-pass filter naar Xilinx System

Generator blokken

� Opdracht 7: Converteer het 1ste orde LP & HP framework naar Xilinx

System Generator blokken

� Opdracht 8: Converteer de 2de orde all-pass filter naar Xilinx System

Generator blokken

� Opdracht 9: Converteer het 2de orde LP & HP framework naar Xilinx

System Generator blokken

Equalizer Implementation

Page 14: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Audio Equalizer Implementation

Step 1: working simulation (correct upsample – see further)

Remember:

Input/output: fixed [16, 14]

Multipliers have latency

Audio Equalizer Implementation

Problems when implementing design:

User I/O for parameters ?

Design clockspeed ?

Interface to Audio Codec ?

Page 15: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Audio Equalizer Implementation

User I/O for parameters ?

Implemented in Xilinx System Generator:

� K, Alpha and Beta from ROM (depth = 16)

� ROM address generated from counter

� ROM initial value vector defines parameters

� K: 0.05 � 0.95

� Alpha: 0.4 � 0.95

� Beta: -0.95 � -0.6

� Counter enabled by user push buttons – Need Up/Down

� FSM for debouncing and pulse detection

� Gateway in is boolean

Audio Equalizer Implementation

Interfacing:

K_up K_down

Alpha_up Alpha_down

Beta_up Beta_down

K_value Alpha_value Beta_value

Page 16: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Audio Equalizer Implementation

Design clockspeed?

� Audio Codec is clocked @ 24 MHz by DCM

� Audio Coded sends samples @ 48 kHz

� Set Tsysclk=1/24000000; in Matlab workspace or in model properties

� Set FPGA clock period at 1000/24 ns

� Set Simulink system period @ Tsysclk

� Set gateway_in sample rate @ 500*Tsysclk

� Design runs @ upsample_rate X 48 kHz

� Designclock is derived from Fsysclk

� Fsysclk/(Upsample_rate x 48 kHz) must be integer

� 500/upsample_rate must be integer

� Upsample can only be 1/2/4/5/10/25/50/…

Audio Equalizer Implementation

Interface to Audio Codec?

� Given by Xilinx

PCM_playback_left

AC97 CODEC

XC2VP30 (xupv2pwrapper.ngc)

AC97 CNTRL

DCM100 MHz Clock24 MHz System Clock

sdata_tx

sdata_rx

sync

AC97_clk (12.288 MHz)

PCM_playback_right

PCM_record_left

PCM_record_right

new_sample

YOUR_DESIGN.vhd

48 KHz rate

CLK

AC97reset_n

clk_in

XUP Virtex-2 Pro Development System

audio_left_in

audio_right_in

audio_right_out

audio_left_out

CE

HDL code generated from

System Generator modelAC97 ControllerInitializes CODEC

And handles data

Transfer & timing

Page 17: Labo Digitale Systemen - telescript.denayer.wenk.betelescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/digitale... · Demo! Labo Digitale Systemen ... AC97 CNTRL 100 MHz Clock

Audio Equalizer Implementation

Next steps?

Step 1: build the System Generator user io model

Step 2: generate RTL from Xilinx

ISE Project is created automatically

Step 3: Open ISE project and add the following files:

Insert Audio Codec

Insert equalizer_top.vhd

Insert ClockGen.xaw

Insert equalizer.ucf

Audio Equalizer Implementation

Next steps?

Step 4: you have to:

Portmap your audio_equalizer

Portmap user_io

Write VHDL binary to 7-seg decoder for parameters

Complete UCF file

Generate bitstream and test!

All files found on: http://telescript.denayer.wenk.be/~kvb/Labo_Digitale_Systemen/ImplementationFiles