Upload
buidang
View
225
Download
4
Embed Size (px)
Citation preview
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
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
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?
Labo Digitale Systemen
� Simulink:
� Mini-tutorial
Labo Digitale Systemen
� Algoritme:
� Begin met 1ste orde: 2 parameters (K en alpha)
� All pass:
Labo Digitale Systemen
� Algoritme:
� Begin met 1ste orde: 2 parameters (K en alpha)
� All pass:
Labo Digitale Systemen
Labo Digitale Systemen
Labo Digitale Systemen
� Combineer beide:
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
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)
Labo Digitale Systemen
� All-pass 2de orde:
Labo Digitale Systemen
� Totale framework blijft hetzelfde:
met juiste K!
2de orde
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!)
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
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
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
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 ?
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
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
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