EE 319K�Introduction to Embedded Systems
Lecture 8: Digital-to-Analog Conversion, Sound, Lab 6
Bard, Gerstlauer, Cuevas, Holt, Telang, Tiwari, Valvano, Yerraballi
http://users.ece.utexas.edu/~valvano/Volume1/E-Book/C12_Interactives.htm
http://users.ece.utexas.edu/~valvano/Volume1/E-Book/C13_Interactives.htm
Interrupts: read Sections 6.1 to 6.4
Sound: read Sections 6.5 to 6.7
Modularity, watch: https://youtu.be/2MLsbyNt8mk
8-1
Agenda
Bard, Gerstlauer, Cuevas, Holt, Telang, Tiwari, Valvano, Yerraballi
Flag is 1
Flag is 0
ISR
Where are I and Flag defined?
DAC_Out(wave[I])
I = I+1
8-2
Conversion from Digital to Analog
Bard, Gerstlauer, Cuevas, Holt, Telang, Tiwari, Valvano, Yerraballi
http://users.ece.utexas.edu/~valvano/Volume1/E-Book/C13_Interactives.htm
Output rate: fs = 1/Δt
Signal has frequencies 0 to ½ fs
8-3
6-bit Sinusoid Table
// 6-bit 64-element sine wave
const uint8_t wave[64] = {
32,35,38,41,44,47,49,52,54,56,58,
59,61,62,62,63,63,63,62,62,61,59,
58,56,54,52,49,47,44,41,38,35,
32,29,26,23,20,17,15,12,10,8,
6,5,3,2,2,1,1,1,2,2,3,
5,6,8,10,12,15,17,20,23,26,29
};
64 value sinusoid
Bard, Gerstlauer, Cuevas, Holt, Telang, Tiwari, Valvano, Yerraballi
Digital: voltage vs. time
8-4
Write software for continuous out
Bard, Gerstlauer, Cuevas, Holt, Telang, Tiwari, Valvano, Yerraballi
Speaker not connected
8-5
Signal to noise ratio (EE319H)
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
dBFS=20log10(V/3.3)
Signal = -8.7 dB
Noise = -40 dB
SNR = -8.7-40=31.3 dB
ENOB = log2(1031.3/20)
= 5.2 bits
Signal
Noise
Speaker not connected
Time domain
Frequency domain
8-6
Dynamic Testing DAC
Bard, Gerstlauer, Cuevas, Holt, Telang, Tiwari, Valvano, Yerraballi
What are range, resolution, precision?
PB5
PB4
PB3
PB2
PB1
PB0
Connect DAC out to scope with speaker
DAC
+
-
Speaker
8-7
Device driver
void DAC_Init(void); // initializes the device
void DAC_Out(uint8_t data); // transfers data to device
(Device driver provides the functions associated with the device but hides the detailed actions necessary to implement the functions.)
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
How do you make it faster?
How do you make it friendly?
8-8
Sound
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
8-9
Tone Generation
uint32_t I; // 0 to 63
// 6-bit 64-element sine wave
const uint8_t wave[64] = {
32,35,38,41,44,47,49,52,54,56,58,59,61,62,62,63,63,63,62,62,61,59,
58,56,54,52,49,47,44,41,38,35,32,29,26,23,20,17,15,12,10,8,
6,5,3,2,2,1,1,1,2,2,3,5,6,8,10,12,15,17,20,23,26,29
};
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
8-10
Make sound vs be quiet?
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
DAC_Out(wave[I])
I = I+1
Flag is 1
Flag is 0
SysTick ISR
DAC_Out(wave[I])
I = I+1
SysTick ISR
Enable I=0 once at beginning
8-11
Other Instruments
// 6-bit 64-element bassoon wave
const uint8_t Bassoon[64] = {
33,37,37,36,35,34,34,33,31,30,29,
30,33,43,58,63,52,31,13,4,5,10,16,
23,32,40,46,48,44,38,30,23,17,12,11,
15,23,32,40,42,39,32,26,23,23,24,25,
25,26,29,30,31,32,34,37,39,37,35,34,
34,34,33,31,30};
// 6-bit 64-element guitar wave
const uint8_t Guitar[64] = {
20,20,20,19,16,12,8,4,3,5,10,17,
26,33,38,41,42,40,36,29,21,13,9,
9,14,23,34,45,52,54,51,45,38,31,
26,23,21,20,20,20,22,25,27,29,
30,29,27,22,18,13,11,10,11,13,13,
13,13,13,14,16,18,20,20,20};
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
8-12
Lab6 Data Flow Graph
Output one value to DAC
SysTick ISR
Arrows specify data flow
8-13
Lab6 Call Graph
Arrows represent software calling software in another module
Open Lab6 project and show how the system is organized
8-14
Synthesizing Digital Music
We are going to go 64 times faster
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
8-15
Synthesizing Digital Music
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
8-16
Tempo
Tempo defines note duration
Quarter note = 1 beat
120 beats/min => ½ s duration
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
8-17
Chord
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
8-18
Instrument Characteristics
Plucked string signal with envelop
Waveform shape of a trumpet sound
Bard, Gerstlauer, Cuevas, Telang, Tiwari, Valvano, Yerraballi
8-19