COURS VHDL PROGRAMMATION ET _ETAPES pour comprendre
SoC Hamdi -chap4
1. Chap 4 : Systemes sur puces : Reseaux sur
puce « NoC », Interruptions « NVIC », Timers
Mustapha Hamdi mfhamdi@gmail.com
IMI5 Trimestre1 2013-2014
2. Page 2
Systemes sur puces : Reseaux sur puce « NoC »,
Interruptions « NVIC », Timers
Réseaux sur puce « NoC »
Exynos 5 dual de samsung
3. Page 3
Systemes sur puces : Reseaux sur puce
« NoC », Interruptions « NVIC », Timers
Réseaux sur puce
Efficacité accrue au niveau des communications => solutions à
base de réseaux sur puce (Networks on Chip, NoC) *
Infrastructures de communication configurables
Caractéristiques proches de celles des réseaux : topologie,
technique de commutation, algorithme de routage,…
Mais avec des spécificités : taille, consommation, fiabilité,
…
4. YOUR LOGO
Page 4
Qu'est-ce qu'un NoC ?
• Un réseau d'interconnexion relie des routeurs ou switches, auxquels sont
connectées les IP
• Diverses topologies peuvent être utilisées, souvent régulières
• On retrouve classiquement une partie des couches du modèle OSI
(surtout au niveau des couches basses)
Systemes sur puces : Reseaux sur puce
« NoC », Interruptions « NVIC », Timers
5. Page 5
Systemes sur puces : Reseaux sur puce
« NoC », Interruptions « NVIC », Timers
6. Systemes sur puces : Reseaux sur puce
« NoC », Interruptions « NVIC », Timers
Page 6
Bus : ligne de communication reliant les différents composants, ou le SoC et ses
périphériques
mustapha.hamdi@insat.rnu.tn
7. YOUR LOGO
Page 7
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SOC: BCM2835 Block Diagram
ARM1176JZ
Réseaux sur puce :Network On chip NoC:
8. Page 8
Bus pour systèmes embarqués:
Bus AMBA: Advanced Microcontroller Bus Architecture
Conçu par ARM
Permet de simplifier
l’integration au niveau
système.
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
mustapha.hamdi@insat.rnu.tn
9. Page 9
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
Advanced High-performance Bus (AHB) :
Bus système rapide, synchrone, multimaître..
Advanced System Bus (ASB) :
AMBA ASB une alternative au système AHB , utilisé dans les cas
ou les hautes performances du bus AHB ne sont pas
nécessaires.
Advanced Peripheral Bus (APB)
APB (Advanced Peripheral Bus) : bus périphérique, plus lent et
de plus faible consommation (pour périphériques lents),
synchrone, maître unique..
mustapha.hamdi@insat.rnu.tn
10. Page 10
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
Exemple :
mustapha.hamdi@insat.rnu.tn
11. Page 11
Etude de cas
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
AHB1ENR 32b
OSPEEDER 32b
MODER 32b
IDR/ODR 16
GPIOx
mustapha.hamdi@insat.rnu.tn
12. Page 12
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
Ports GPIO et Bus ARM:
RM0090, chapter 6.3, Fig 13
mustapha.hamdi@insat.rnu.tn
13. Page 13
Etude de cas
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
1<<00
*~(3<<2*00)
*~(3<<2*00)
Data=GPIOA&(1<<0)
GPIOA
pin0
pin15
Mode input pour pin0
Frequ = 2 Mhz
Masque , data:(0/1)
DM00031020.pdf
14. Page 14
Etude de cas
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
|=(1<<3)
|=(2<<2*15)
|=(1<<2*15)
|=(1<<15)
GPIOD
pin0
pin15
Mode output
Fréq=50MHz
Pin 15=1
15. Page 15
Etude de cas
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
|=(1<<3)
…..
…..
….
GPIOD
pin0
Pin15,14
Mode output
fpin15=50MHz,Fpin14=100
Pin 15=1, pin14=0
16. Page 16
Etude de cas
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
|=(1<<3)
|=(2<<15*2)+(3<<14*2)
|=(1<<15*2)+(1<<14*2)
|=(1<<15)+(0<<14)
GPIOD
pin0
Pin15,14
Mode output
fpin15=50MHz,Fpin14=100
Pin 15=1, pin14=0
18. Page 18
Etude de cas
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
APB1ENR
MODER
CR
DHR12R1/R2
GPIOD
pin0Pin 5, 4
DAC control reg
Port/pin pour sortie
Data holding register 1 et 2
DM00031020.pdf p172
19. Page 19
Etude de cas
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
|=0x20000000
|=111100000000
|=0x10001
DHR12R1/R2
GPIOD
pin0Pin 5, 4
both channels ON; activation
Port4/pin5 pour sortie
(3<<2*4)+(3<<2*5)
3: analog output
Données à convertir
20. Page 20
DAC
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
21. Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
22. Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
Groupe Timer Fmax 84 mhz via APB1
Groupe Timer Fmax 168 mhz via APB2
23. Page 23
Bus pour systèmes embarqués:
Bus AMBA: Advanced Microcontroller Bus Architecture
Conçu par ARM
Permet de simplifier
l’integration au niveau
système.
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
24. Page 24
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
Advanced High-performance Bus (AHB) :
Bus système rapide, synchrone, multimaître..
Advanced System Bus (ASB) :
AMBA ASB une alternative au système AHB , utilisé dans les cas
ou les hautes performances du bus AHB ne sont pas
nécessaires.
Advanced Peripheral Bus (APB)
APB (Advanced Peripheral Bus) : bus périphérique, plus lent et
de plus faible consommation (pour périphériques lents),
synchrone, maître unique..
mustapha.hamdi@insat.rnu.tn
25. Page 25
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
Exemple :
mustapha.hamdi@insat.rnu.tn
26. Page 26
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
Exemple :
mustapha.hamdi@insat.rnu.tn
27. Page 27
Etude de cas : BUS AHB1 pour GPIOA
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
AHB1ENR 32b
OSPEEDER 32b
MODER 32b
IDR/ODR 16
GPIOx
mustapha.hamdi@insat.rnu.tn
28. Page 28
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
Page 178, DM00031020.pdf
Etude de cas : BUS AHB1 pour GPIOA
mustapha.hamdi@insat.rnu.tn
29. Page 29
Etude de cas : BUS AHB1 pour GPIOA
Systemes sur puces : Réseaux sur puce
« NoC », Interruptions « NVIC », Timers
SoC stm32f407vg:
Bus AHB, GPIO, DAC
1<<00
*~(3<<2*00)
*~(3<<2*00)
Data=GPIOA&(1<<0)
GPIOA
pin0
pin15
Mode input pour pin0
Frequ = 2 Mhz
Masque , data:(0/1)
DM00031020.pdf
30. Page 30
Etude de cas: Bus APB1 pour Timer2
BUS ARM
SoC stm32f407vg:
Bus AHB, GPIO, DAC
APB1ENR
MODER
CR
DHR12R1/R2
GPIOD
pin0Pin 5, 4
DAC control reg
Port/pin pour sortie
Data holding register 1 et 2
DM00031020.pdf p172
31. Page 31
BUS ARM
TIMER2:
RCC->APB1ENR |= 0x01; // Clock for Timer2
Page 172, DM00031020.pdf
32. Page 32
Etude de cas: Bus APB1 pour Timer2
BUS ARM
SoC stm32f407vg:
Bus AHB, GPIO, DAC
RCC->APB1ENR |= 0x01;
MODER
CR
DHR12R1/R2
GPIOD
pin0Pin 5, 4
DAC control reg
Port/pin pour sortie
Data holding register 1 et 2
DM00031020.pdf p172
mustapha.hamdi@insat.rnu.tn
33. Page 33
Les TIMERS
Les TIMERS
8 Timers DM00037051.pdf, Table 3, p.29
Groupe Timer Fmax
84 mhz via APB1
Groupe Timer Fmax
168 mhz via APB2
mustapha.hamdi@insat.rnu.tn
34. Page 34
Les TIMERS
Les TIMERS
8 Timers DM00037051.pdf, Table 3, p.29
4 sorties
MLI
Quels PIN ?
AF
mustapha.hamdi@insat.rnu.tn
36. Page 36
Les TIMERS
Alternates functions:
AF1: TIM1/TIM2, AF2 TIM3..5, AF9: can …
16 AF sur chaque pin, la configuration par 4 bits via aux reg AFRL
et AFRH
37. Page 37
Les TIMERS
Alternates functions AFRL
TIM3..5
0x2 pour configure le
TIM3 et TIM4
Guide DM00031020.pdf P283
38. Page 38
Les TIMERS
Alternates functions
AFRL pour configurer les pins de 0 à 7
AFRH pour configurer les pins de 8 à 15
Les Timer 3 et 4 à utiliser ici, sont
connectés à quel pin ?
TIM3: PC6 ..9
TIM4: PD12..15
mustapha.hamdi@insat.rnu.tn
39. Page 39
Les TIMERS
Alternates functions
Registre AFR[1]: AFH, pin 0->7
Registre AFR[0]: AFL, pin 8->15
Exemple 4 sorties de TIM3 comme AF via au port C :
GPIOC->AFR[0] |=(2<<4*6)+(2<<4*7); // en hexa 0x22000000
GPIOC->AFR[1] [=(2<<4*0)+;(2<<4*1); //pin 8et9 : les 2 premiers bits
de AFH en hexa : 0x00000022
Comment configure les 4 Sorties de TIM4 comme AF via au port D:
GPIOD->AFR[0] |= ??
Chaque pin est configurable par 4 bits
mustapha.hamdi@insat.rnu.tn
40. Page 40
Les TIMERS
Alternates functions
TIME
R
TIM3 (4
chaines)
TIM4 (4
chaines)
ADC1
input
DAC
GPIO PC6->PC9 PD12->15 PA0->
PA7
PA4,
PA5
“Voir outil Cube MX”
Registre AFR[1]: AFH, pin 0->7
Registre AFR[0]: AFL, pin 8->15
Exemple 4 sorties de TIM3 comme AF via au port C :
GPIOC->AFR[0] |=0x22000000;
GPIOC->AFR[1] [=0x00000022;
Exemple 4 Sorties de TIM4 comme AF via au port D:
GPIOD->AFR[0] |= ??
Chaque pin est configurable par 4 bits
mustapha.hamdi@insat.rnu.tn
41. Page 41
Les TIMERS
Etude de cas: MLI via TIMER 3
mustapha.hamdi@insat.rnu.tn
42. Page 42
Les TIMERS
Etude de cas: MLI via TIMER 3
Mustapha.hamdi@insat.rnu.tn
43. Page 43
Les TIMERS
Etude de cas: MLI via TIMER 3
ccr1
ccr3
44. Page 44
Les TIMERS
Etude de cas: MLI via TIMER 4
TIM4 connecté aux pins PD12…PD15 : LEDS
Timer4 en mode PWM à largeur d’impulsion variable
Proposer une solution pour rendre la L.I variable
45. Page 45
Les interruptions
Fonctionnement des interruptions
• NVIC : Nested Vectored Interrupt Controller
• Gère les priorités entre interruptions
• Gère la sauvegarde/restauration des registres
• Le tout de façon optimisée (tail chaining, stack pop pre-emption,
late arrival)
• Le fabriquant du micro-contrôleur peut y greffer ses
interruptions (ex : UART, DMA, EXTI), le cœur ayant aussi ses
propres interruptions (ex : Hard Fault)
Mustapha.hamdi@insat.rnu.tn
46. Page 46
Les interruptions
Sources d’interruptions
• GPIO
• Périphériques autres pour
réveiller le cœur
• Ethernet
• USB OTG
• Horloge RTC
Mustapha.hamdi@insat.rnu.tn
47. Page 47
Les interruptions
Etude de cas: Interruption par Timer 5
Le processeur genere deux impulsions dans le port E pedant chaque
interruption.
48. Page 48
Les interruptions
Etude de cas: Interruption par Timer 5
But : Interruption periodique chaque 1 ms pour générer deux
impulsions
Solution?
Mustapha.hamdi@insat.rnu.tn
49. Page 49
Les interruptions
Mustapha.hamdi@insat.rnu.tn
50. Page 50
Les interruptions
Deux impulsions chaque 1 ms, l’interruption prend ~3.5us.
Chaque impulsion sur le port PE08 prend ~0.5 us
Mustapha.hamdi@insat.rnu.tn
~3.5us
~0.5 us
51. Page 51
Les interruptions
Clignotement de la led
Chaque 100ms
Mustapha.hamdi@insat.rnu.tn
52. Page 52
Les interruptions
Mustapha.hamdi@insat.rnu.tn
Implémentation d'un régulateur PID
IRQ
Conversion+PID
Autres taches sur le uc:
Paramétrage de kp,ki, kd
53. Page 53
Les interruptions
Implémentation d'un régulateur PID
Etapes :
1)Activation ADC, TIMER, DAC
2)NVIC
3)Fonction principale
4)Fonction d’interruption
L ’ADC effectue une conv chaque 100 us. Le NVIC(ADC_IRQn) interrompe
Le prog principale chaque 100 us.
Mustapha.hamdi@insat.rnu.tn
54. Page 54
Les interruptions
Activation GPIO ADC Timer DAC:
ADC 1,2
Chaines Cr1 et cr2
Pin: PA02 et PA03 analog input
Le timer2 comme source de synchronisation
TIMER 2:
Comme source périodique d’interruption
Periode = 1us, f=10 kHz, TIM2->ARR = 8400;
DAC :
PA04, PA05 are
analog outputs
TIMER3:
Source MLI largeur
d’impulsion=sortie
de regulateur
Freq à choisir
Mustapha.hamdi@insat.rnu.tn
55. Page 55
Les interruptions
DAC->CR |=(1<<0)+(1<<16) = 0x00010001;
Activation de deux chaines de sortie
Mustapha.hamdi@insat.rnu.tn
56. Page 56
Les interruptions
DAC->SQ3 |=(1<<0)+(1<<16) = 0x00010001;
Activation de deux entrées PA2 et PA3
SQ1= 10 et SQ1=11, ADC1->SQ3|=0X2
ADC2->SQ3|=0X3
Mustapha.hamdi@insat.rnu.tn
57. Page 57
Les interruptions
Programme principale , Notes et indications :
While(1)
{
Ajustement de Kp :
si PE0 et PE05 sont activés au même temps
Alors Kp++ :
if ((GPIOE->IDR & 0x003f) == (0x01 + 0x20)) Kp++; // manually set Kp
Rq 0x003f=111111: masque, 0x01 + 0x20= 100001 : PE0 et PE05
si PE0 et PE04 sont activés au même temps
Alors Kp--
if ((GPIOE->IDR & 0x003f) == (0x01 + 0x10)) Kp--;
Ajuste de kd via PE01 et PE05 : Kd+0.001 , PE01 et PE04 kd -0.001
Ajustement de Ki via PE02 et PE05, ki+0.0001, PE02 et PE04 ki -0.0001
}
Mustapha.hamdi@insat.rnu.tn
58. Page 58
Les interruptions
Fonction d’interruption : indications
Conversion ADC1et2
Error[Ptr] = Ref[Ptr] - x[Ptr]; // calculate error
Prop = Kp * (float)Error[Ptr]; // proportional part
Dif = Kd * (float)(Error[Ptr] - Error[(Ptr-1) & 63]) / Ts; // diff. part
Int += Ki * (float)Error[Ptr]; // integral part
Reg[Ptr] = (int)(Prop + Dif + Int); // summ all three
Sorties : Reg et Error via au DAC1et2
Le DAC est limité entre 0 et 4095
Mustapha.hamdi@insat.rnu.tn
59. Page 59
Les interruptions
Code:
Mustapha.hamdi@insat.rnu.tn
60. Page 60
Les interruptions
Code_suite:
Mustapha.hamdi@insat.rnu.tn
61. Page 61
Les interruptions
Code_suite:
Mustapha.hamdi@insat.rnu.tn
62. Page 62
Les interruptions
Code_suite:
Mustapha.hamdi@insat.rnu.tn
63. Page 63
Les interruptions
Code_suite:
Mustapha.hamdi@insat.rnu.tn
64. Page 64
Les interruptions
Code_suite:
Mustapha.hamdi@insat.rnu.tn