nice and easy
authorPaul Kocialkowski <contact@paulk.fr>
Wed, 13 May 2015 17:57:31 +0000 (19:57 +0200)
committerPaul Kocialkowski <contact@paulk.fr>
Wed, 13 May 2015 17:57:31 +0000 (19:57 +0200)
15 files changed:
annexes.tex
applications-logiques.tex
aspects-informatique.tex
bibliographie.bib [deleted file]
conclusion.tex
credits.tex [new file with mode: 0644]
images/arduino.png
images/communication-synchronisee.png [new file with mode: 0644]
images/creativecommons.png [new file with mode: 0644]
introduction.tex
memoire.tex
phenomenes-circuits-temps.tex
references.bib [new file with mode: 0644]
references.tex [new file with mode: 0644]
test.tex [new file with mode: 0644]

index 8dab072..5de0133 100644 (file)
@@ -1,9 +1,23 @@
-\appendix
+~\vfill
 
+\begingroup
+\renewcommand{\cleardoublepage}{}
+\renewcommand{\clearpage}{}
+\chapter*{Annexes}
 \addcontentsline{toc}{chapter}{Annexes}
+\endgroup
+
+\vfill
+
+\pagebreak
+
+\begin{appendices}
+
+\addtocontents{toc}{\protect\setcounter{tocdepth}{-1}}
+\pagestyle{annexes}
 
 \chapter{Synthèse culturelle}
-\newpage
+
 \begin{minipage}{\textwidth}
 \includepdf[pages=1]{annexes/synthese.pdf}
 \end{minipage}
 \lstinputlisting[caption=Programme d'exemple de calcul parallèle,label=thread]{annexes/thread.c}
 
 \lstinputlisting[caption=Différences introduites pour tenir compte de la synchronisation,label=thread-diff]{annexes/thread.diff}
+
+\pagestyle{plain}
+\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
+
+\end{appendices}
index 3355db4..4140fd8 100644 (file)
@@ -258,7 +258,7 @@ La constante de temps associée à la charge est donc : $\tau_C = C \cdot R = 10
 Le condensateur se charge jusqu'à ce que la tension entre la base du transistor et la masse atteigne la valeur qui correspond au pont diviseur de tension de $R_1$ et $R_2$, soit : $5 \cdot \frac{2,7}{2,7 + 7,5} = 1,3$ V. Comme l'émetteur du transistor est porté à la masse, cette tension est directement la tension base-émetteur et assure la saturation du transistor (sans pour autant risquer de l'endommager). On a donc un état logique bas à la sortie $H$.\\
 \item[--] Quand le bouton est pressé, la base du transistor est directement portée à la masse et le condensateur commence sa décharge à travers la résistance $R_3$. La constante de temps associée à la décharge est donc : $\tau_D = C \cdot R_3 = 10 \cdot 10^{-6} \cdot 500 = 5 \cdot 10^{-3} = 5$ ms. Le transistor porté à la masse se bloque et la sortie $H$ devient un état logique haut.\\
 \item[--] Les rebonds du bouton portent pendant un temps très court le circuit dans son état de charge, mais la constante de temps de charge $\tau_C$ est bien supérieure à $\tau_D$ : la durée des rebonds n'est pas suffisante pour compenser la décharge. Globalement,\ le condensateur va continuer de se décharger en étant peu rechargé durant les rebonds et la charge du condensateur ne sera pas suffisante pour que le transistor devienne passant. Finalement, quand les rebonds cessent, le condensateur est rapidement déchargé et la sortie $H$ reste à un état logique haut.\\
-\item[--] Quand le bouton est relâché, le condensateur qui est déchargé va commencer sa charge avec la constante de temps $\tau_C$. Les rebonds du bouton vont cette fois-ci à nouveau décharger le condensateur : comme la décharge est encore une fois plus rapide vu $\tau_D << \tau_C$, le condensateur va globalement rester déchargé pendant la durée des rebonds du bouton. La charge du condensateur n'est pas suffisante pour que le transistor sature et la sortie $H$ reste à un état logique haut. Une fois les rebonds terminés, le condensateur va pouvoir terminer sa charge et faire saturer le condensateur, pour amener la sortie $H$ à un état logique bas. Expérimentalement, on constate que le transistor devient à nouveau passant plusieurs millisecondes après la fin des rebonds.\\
+\item[--] Quand le bouton est relâché, le condensateur qui est déchargé va commencer sa charge avec la constante de temps $\tau_C$. Les rebonds du bouton vont cette fois-ci à nouveau décharger le condensateur : comme la décharge est encore une fois plus rapide vu $\tau_D \ll \tau_C$, le condensateur va globalement rester déchargé pendant la durée des rebonds du bouton. La charge du condensateur n'est pas suffisante pour que le transistor sature et la sortie $H$ reste à un état logique haut. Une fois les rebonds terminés, le condensateur va pouvoir terminer sa charge et faire saturer le condensateur, pour amener la sortie $H$ à un état logique bas. Expérimentalement, on constate que le transistor devient à nouveau passant plusieurs millisecondes après la fin des rebonds.\\
 \end{itemize}
 
 C'est donc grâce au fait que le temps caractéristique de charge $\tau_C$ est grand devant le temps de décharge $\tau_D$, mais également devant la durée des rebonds, que l'on évite les rebonds. Avec le dispositif anti-rebond en place, on peut constater que le système fonctionne correctement, comme en atteste le chronogramme \ref{chronogramme-compteur-fonctionne} relevé avec l'analyseur logique en présence du circuit d'élimination des rebonds.
@@ -302,7 +302,7 @@ Système d'affichage du décompte des secondes en représentation binaire :
 \item[--] Module de sortie : ensemble d'afficheurs sept-segments\footnote{Les afficheurs sept-segments permettent d'afficher tous les chiffres décimaux.} avec circuits de commande pour les afficheurs. Pour $n$ bits, on cherche le plus petit $k$ tel que $10^k \geq 2^n - 1$ : k représente alors le nombre d'afficheurs nécessaires.\\
 \end{itemize}
 
-\indent Système d'alarme sonore pour la cuisson d'un œuf à la coque avec rappel clignotant de période $30$ secondes
+\indent Système d'alarme sonore pour la cuisson d'un œuf à la coque avec rappel clignotant de période 30 secondes
 \begin{itemize}
 \item[--] Module d'entrée : multivibrateur de période correspondante à $30$ secondes, soit une fréquence de $\frac1{30}$ Hz, avec interrupteur pour le départ
 \item[--] Nombre de bits : on veut un décompte de $3$ minutes, soit jusqu'à $6 \cdot 30$ secondes, donc une valeur jusqu'à 6 et on a l'encadrement : $2^3 - 1 = 7 > 6 > 2^2 - 1 = 3$ donc $3$ bits.
@@ -318,11 +318,17 @@ On cherchera à réaliser la première et la dernière proposition pour concrét
 \label{ne555-systemes}
 \end{figure}
 
+\subsubsection*{Horloges pour les systèmes}
+
 On réalise les horloges avec des composants (figure \ref{ne555-systemes}) \emph{NE555} utilisé en mode multivibrateur et des valeurs des composants périphériques pour obtenir les fréquences désirées, d'après les formules énoncées dans la partie \ref{signal-carre-montages} en page \pageref{signal-carre-montages}. En particulier, il sera souhaitable d'obtenir un rapport cyclique $\alpha$ égal à $\frac12$ (par exemple pour obtenir des clignotements de LEDs équilibrés). Si on prend une valeur de $R_2$ faible devant $R_1$ (on souhaitera une valeur au moins 100 fois plus faible, par exemple), $R_2$ est négligeable devant $R_1$, et deux fois plus négligeable devant $2R1$ et donc :
 $$\alpha = 1 - \frac {R_1} { (R_2 + 2R_1) } \approx 1 - \frac{R_1}{2R_1} = \frac12$$
-En pratique, on prendra pour $R_2$ une valeur de 500 \ohm.\\
+En pratique, on prendra pour $R_2$ une valeur de 500 \ohm.
+
+\subsubsection*{Système d'affichage du décompte des secondes en représentation binaire}
 
-Le premier montage est réalisé avec en entrée un horloge de fréquence environ égale à $1$ Hz, obtenue avec les valeurs des composants suivantes : $R_1 = 72$ k\ohm\ et $C_1 = 10$ \microf. On réalise le compteur sur $3$ bits, soit un décompte jusqu'à $7$ secondes. Le module de sortie, dont le schéma électronique du système est reporté en annexe \ref{systeme-led}, utilise un transistor NPN (avec un pont diviseur de tension) pour chaque LED, afin d'éviter que le courant nécessaire pour la LED ne passe par le circuit logique. De plus, On utilisera une résistance variable de l'ordre de $10$ k\ohm\ en série avec la LED pour régler la luminosité (et donc le courant consommé). Les valeurs nécessaires de résistance dépendront de la couleur de la LED et de l'intensité souhaitée. On pourra remplacer cette résistance variable par une résistance de la valeur obtenue par expérimentation. Un photographie du montage réalisée est reportée en annexe \ref{systeme-led-photo}.\\
+Le premier montage est réalisé avec en entrée un horloge de fréquence environ égale à $1$ Hz, obtenue avec les valeurs des composants suivantes : $R_1 = 72$ k\ohm\ et $C_1 = 10$ \microf. On réalise le compteur sur $3$ bits, soit un décompte jusqu'à $7$ secondes. Le module de sortie, dont le schéma électronique du système est reporté en annexe \ref{systeme-led}, utilise un transistor NPN (avec un pont diviseur de tension) pour chaque LED, afin d'éviter que le courant nécessaire pour la LED ne passe par le circuit logique. De plus, On utilisera une résistance variable de l'ordre de $10$ k\ohm\ en série avec la LED pour régler la luminosité (et donc le courant consommé). Les valeurs nécessaires de résistance dépendront de la couleur de la LED et de l'intensité souhaitée. On pourra remplacer cette résistance variable par une résistance de la valeur obtenue par expérimentation. Un photographie du montage réalisée est reportée en annexe \ref{systeme-led-photo}.
+
+\subsubsection*{Système d'alarme sonore pour la cuisson d'un œuf à la coque avec rappel clignotant de période 30 secondes}
 
 Pour le dernier système avec compteur sur 3 bits, dont le schéma électronique est reporté en annexe \ref{systeme-alarme}, on souhaite tout d'abord faire clignoter une LED avec une période de $30$ secondes (pour attirer l'attention de l'usager), qui correspond à la période du signal d'horloge. On obtient cette période avec les composants suivants : $R_1 = 98$ k\ohm\ et $C_1 = 220$ \microf. On connecte donc la LED en série avec une résistance (variable ou non) au travers d'un transistor (vu les considérations faites pour le premier montage) et la LED sera déclenchée avec l'état haut du signal d'horloge. Afin de détecter que les $3$ minutes sont écoulées, on s'intéresse aux bits $D_1$ et $D_2$. En effet, on veut un décompte jusqu'à six, exprimé $110$ en binaire : on teste donc les bits de poids 1 et 2, avec une porte logique ET. La sortie de cette porte est reliée à une bascule RS de sorte que dès que les bits de poids 1 et 2 sont à $1$, l'entrée S de la bascule soit activée et passe $Q$ à 1 et $\overline{Q}$ à 0. La sortie $\overline{Q}$ de la bascule sera reliée à un transistor qui alimentera, quand $\overline{Q}$ vaut 0 et donc quand $Q$ vaut 1, un multivibrateur astable réalisé avec un \emph{NE555} ($U_2$) de période $1$ seconde (avec les valeurs déjà évoquées), dont la sortie est elle-même reliée à l'alimentation d'un second multivibrateur astable ($U_3$). Ce dernier multivibrateur, toujours réalisé avec un \emph{NE555} aura une fréquence adaptée pour commander un bipeur piézoélectrique, qui émet un son quand il est stimulé par une fréquence proche de sa fréquence de résonance, de l'ordre de quelques kHz. On ne connaît pas la fréquence de résonance précise du composant utilisé : on utilisera alors une résistance variable pour déterminer expérimentalement une valeur qui produit un son satisfaisant, que l'on pourra par la suite remplacer par une résistance de la valeur obtenue.\\
 
@@ -330,7 +336,9 @@ Pour ce dernier multivibrateur ($U_3$), on utilise un condensateur de 0,22 \micr
 
 Afin que l'état de la bascule RS ne soit pas indéterminé, on relie l'entrée $\overline{R}$ à un condensateur en circuit RC ($R_5$ et $C_3$) avec une constante de temps faible $\tau = 500 \cdot 10 \cdot 10^{-6} = 5 \cdot 10^{-3}$ soit 5 ms. Ainsi, l'entrée $\overline{R}$ est à un état logique bas quand le condensateur se charge, ce-qui place systématiquement $Q$ à un état logique bas et $\overline{Q}$ à un état logique haut. Une fois la charge du condensateur terminée, l'état logique en $\overline{R}$ et haut : l'entrée demeure inactive.\\
 
-Une photographie du montage réalisée est reportée en annexe \ref{systeme-alarme-photo}.\\
+Une photographie du montage réalisée est reportée en annexe \ref{systeme-alarme-photo}.
+
+\subsubsection*{Précision des fréquences obtenues}
 
 Expérimentalement, on pourra ajuster les valeurs des composants choisis, qui ne correspondent pas exactement aux valeurs indiquées (par exemple, un condensateur peut perdre de sa charge après un certain temps d'utilisation) pour obtenir les fréquences souhaitées. Les composants utilisés ne sont d'ailleurs pas tous neufs : une grande partie provient de récupération sur des circuits quelconques. En effet, pour des incertitudes relatives de 10\% sur les résistances (indiquées par un collier couleur argent sur le composant) et sur le condensateur, on calcule l'incertitude relative pour la fréquence d'1 Hz d'après la formule donnée au \ref{signal-carre-montages} :
 $$\frac{\Delta f}{f}=\frac{\Delta R_2 + 2\Delta R_1}{R_2+2R_1}+\frac{\Delta C_1}{C_1} = \frac{0,5 \cdot 0,1 + 2 \cdot 72 \cdot 0,1}{0,5 + 2 \cdot 72} + 0,1 = 0,2$$
index 7e521cf..2b2d60e 100644 (file)
@@ -18,6 +18,7 @@ De la même façon qu'il est nécessaire de synchroniser certains types de circu
 \centering
 \includegraphics[height=5cm]{cubieboard2.png}
 \caption{Photographie de la carte Cubieboard2}
+\label{cubieboard-photo}
 \end{figure}
 
 La carte Cubieboard2\notecite{Cubieboard} est un exemple particulier d'ordinateur complet. On retrouve en effet tous les composants constituants un ordinateur sur une carte de petite taille : on parle d'ordinateur à carte unique, de l'Anglais \emph{Single Board Computer}, parfois abrégé par ses initiales : \emph{SBC}. Le processeur de l'ordinateur est intégré au sein d'une puce de type SoC\notetrad{System on a Chip}{système sur une puce} : il s'agit d'un seul circuit intégré rassemblant, en plus du processeur principal, un certain nombre d'autres composants utiles tels que diverses entrées/sorties, des processeurs auxiliaires, etc. Pour autant, il ne contient pas la mémoire principale de l'ordinateur : il ne s'agit donc pas d'un microcontrôleur. Le SoC utilisé dans la Cubieboard2 est un \emph{A20} produit par la société chinoise \bsc{Allwinner}. Le processeur utilisé dans le \emph{A20} est un \emph{Cortex A7}, qui utilise un jeu d'instructions \bsc{ARM} et opère avec un fréquence d'horloge de $1$ GHz.\\
@@ -26,6 +27,7 @@ La carte Cubieboard2\notecite{Cubieboard} est un exemple particulier d'ordinateu
 \centering
 \includegraphics[height=5cm]{arduino.png}
 \caption{Photographie de la carte Arduino Uno}
+\label{arduino-photo}
 \end{figure}
 
 Quant aux microcontrôleurs, on pourra s'intéresser à la carte Arduino\notecite{Arduino} Uno : il s'agit également d'une carte au format réduit, contenant un microcontrôleur. Le microcontrôleur en question est un \emph{ATmega328p} de la société \bsc{Atmel} et son processeur utilise un jeu d'instructions \bsc{AVR} et opère avec une fréquence d'horloge de $16$ MHz.\\
@@ -94,7 +96,16 @@ La ligne de données est notée $SDA$ et la ligne d'horloge $SCL$. Le schéma é
 
 On souhaite alors faire communiquer la Cubieboard2 avec le microcontrôleur Arduino, en utilisant le bus et le protocole \iic. La Cubieboard2 dispose de 5 composants\notecite{A20UserManual} dédiés à la gestion du bus \iic\ intégrés au sein de son SoC : il s'agit de contrôleurs \iic\ \bsc{Marvell} \emph{MV64xxx}\notecite{AWIPCores}. L'Arduino ne dispose par contre pas de contrôleur intégré pour l'\iic. Il va s'agir d'implémenter la gestion du protocole \iic\ dans un programme qui sera exécuté sur l'Arduino, en utilisant deux lignes numériques d'entrée/sortie dont dispose le microcontrôleur de l'Arduino : ils'agit de la technique dite de bit banging.\\ Ces lignes d'entrée/sortie se comportent d'après la logique trois états, avec un état haut, un état bas et un état hi-Z qui permettra la lecture. On pourra configurer le mode de chaque ligne avec des instructions. Les entrées/sorties sont plus précisément contrôlées en écrivant à des adresses mémoire précises (on parle de MMIO\notetrad{Memory-Mapped Input/Output}{entrée/sortie cartographiée en mémoire}) plutôt qu'avec des instructions directes pour le processeur (on parle de PIO\notetrad{Programmed Input/Output}{entrée/sortie programmée}).\\
 
-Afin de relier les deux systèmes, on cherchera à connecter deux lignes, entre deux entrées/sorties numériques de l'Arduino et des connecteurs reliés aux points $SDA$ et $SCL$ de la Cubieboard2. Si les entrées/sorties numériques de l'Arduino sont disponibles en grande quantité, seul le contrôleur \iic\ identifié par l'index 1 est accessible par les connecteurs externes de la carte Cubieboard2 (dans la littérature spécifique au SoC \emph{A20}, il est appelé $TWI1$ : la dénomination TWI\notetrad{Two Wire Interface}{interface à deux fils} est équivalente à \iic). On relie alors les connecteurs reliés à $TWI1-SDA$ et $TWI1-SCK$\notecite{linux-sunxi-cubieboard-expansion-ports} à l'Arduino. Une photographie des deux cartes connectées est reportée en annexe \ref{ardui2c-photo}.\\
+Afin de relier les deux systèmes, on cherchera à connecter deux lignes, entre deux entrées/sorties numériques de l'Arduino et des connecteurs reliés aux points $SDA$ et $SCL$ de la Cubieboard2. Si les entrées/sorties numériques de l'Arduino sont disponibles en grande quantité, seul le contrôleur \iic\ identifié par l'index 1 est accessible par les connecteurs externes de la carte Cubieboard2 (dans la littérature spécifique au SoC \emph{A20}, il est appelé $TWI1$ : la dénomination TWI\notetrad{Two Wire Interface}{interface à deux fils} est équivalente à \iic). On relie alors les connecteurs reliés à $TWI1-SDA$ et $TWI1-SCK$\notecite{linux-sunxi-cubieboard-expansion-ports} aux entrées/sorties numériques de l'Arduino :
+
+\begin{figure}[!h]
+\centering
+\includegraphics[width=5cm]{communication-synchronisee.png}
+\caption{Schéma de connexion de l'Arduino et de la Cubieboard2}
+\label{communication-synchronisee}
+\end{figure}
+
+Une photographie des deux cartes connectées est reportée en annexe \ref{ardui2c-photo}.\\
 
 \subsubsection*{\bsc{U-Boot} et prise en charge du contrôleur \iic\ $TWI1$}
 
@@ -214,11 +225,15 @@ Il existe cependant d'autres limites à l'augmentation des performances des ordi
 
 Si la multiplicité des cœurs permet d'exécuter plusieurs programmes réellement en simultané, il est courant qu'un seul programme requiert toutes les capacités de la machine tant la tâche qu'il accomplie est complexe. Si ce programme n'est pas prévu pour fonctionner sur plusieurs fils distincts, le calcul ne sera effectué que sur un seul cœur et l'avantage du multi-cœur sera en grande partie perdu, si ce n'est que le autres cœurs permettront de garantir une utilisation fluide du système pendant ce calcul lourd. Il est cependant bien souvent souhaitable de réduire la durée du calcul au détriment de l'utilisabilité immédiate de l'ordinateur.\\
 
-On va donc chercher à écrire et utiliser des programmes utilisant le nombre maximal de cœurs disponibles, ou pour le moins qui offrent à l'utilisateur cette possibilité, bien souvent en lui permettant de choisir le nombre de fils d'exécution (qui seront répartis sur les différents cœurs) à utiliser. Néanmoins, tous les algorithmes ne se prêtent pas forcément bien à un découpage en plusieurs fils s'exécutant en parallèle. En effet, exécuter plusieurs calculs en parallèle suppose que ces calculs sont indépendants entre eux. Hors, le cas général est plutôt le traitement d'un problème avec des étapes logiques qui dépendent respectivement des étapes précédentes. Il n'est donc pas toujours possible de paralléliser les calculs. Certaines grandes familles d'algorithmes pourront au contraire bien s'y prêter, comme c'est le cas des algorithmes de type « diviser pour régner » qui découpent les problèmes en sous-problèmes indépendants plus petits. On pourra alors traiter chaque sous problème sur un cœur séparé. Il est cependant inévitable de rassembler les calculs effectués en parallèle afin d'obtenir un résultat cohérent. Selon les problèmes, cette étape peut être triviale ou au contraire prendre un temps significant, qui ne pourra être effectué que sur un cœur.\\
+On va donc chercher à écrire et utiliser des programmes utilisant le nombre maximal de cœurs disponibles, ou pour le moins qui offrent à l'utilisateur cette possibilité, bien souvent en lui permettant de choisir le nombre de fils d'exécution (qui seront répartis sur les différents cœurs) à utiliser. Néanmoins, tous les algorithmes ne se prêtent pas forcément bien à un découpage en plusieurs fils s'exécutant en parallèle. En effet, exécuter plusieurs calculs en parallèle suppose que ces calculs sont indépendants entre eux. Hors, le cas général est plutôt le traitement d'un problème avec des étapes logiques qui dépendent respectivement des étapes précédentes. Il n'est donc pas toujours possible de paralléliser les calculs. Certaines grandes familles d'algorithmes pourront au contraire bien s'y prêter, comme c'est le cas des algorithmes de type « diviser pour régner » qui découpent les problèmes en sous-problèmes indépendants plus petits. On pourra alors traiter chaque sous problème sur un cœur séparé. Il est cependant inévitable de rassembler les calculs effectués en parallèle afin d'obtenir un résultat cohérent. Selon les problèmes, cette étape peut être triviale ou au contraire prendre un temps signifiant, qui ne pourra être effectué que sur un cœur.
+
+\subsubsection*{Relevé expérimental avec l'encodage d'une vidéo}
 
 Expérimentalement, on va relever le gain en temps lié à l'utilisation de plusieurs fils d'exécution (répartis sur les différents cœurs) en encodant\footnote{Il s'agit de changement de format numérique.} une courte vidéo, opération bien connue pour être demandante en calculs, qui sont liés aux opérations de décompression et de compression des images (et de manière moindre, du son). On effectue tout d'abord l'opération sur la Cubieboard2 en précisant au programme d'encodage \bsc{avconv} de n'utiliser qu'un seul fil d'exécution. Le temps d'exécution du programme est alors de \textbf{4 minutes et 41,509 secondes}. En précisant au programme d'utiliser deux fils d'exécutions (un pour chaque cœur du processeur), on obtient alors un temps d'exécution de \textbf{2 minutes et 53,528 secondes}, soit une réduction du temps de presque moitié : l'utilisation de plusieurs fils prouve donc son efficacité.\\
 
-On effectue alors la même expérience avec un ordinateur portable équipé d'un processeur octo-cœur \emph{Intel i7-3630QM}. Pour la même vidéo, le temps d'encodage est de \textbf{25,536 secondes} avec un seul fil, \textbf{15,883 secondes} avec 2 fils et \textbf{15,797 secondes} avec l'ensemble des 8 fils (un pour chaque cœur disponible). On constate bien un gain en temps lors de l'utilisation de deux fils plutôt qu'un seul, mais il n'y a pas de différence avec l'utilisation de 8 fils plutôt que de deux. On s'intéresse alors aux relevés d'utilisation des cœurs durant l'opération, reportés en annexe \ref{encodage}. Avec un fil, un cœur est sollicité en permanence (100\%) alors que dans les deux autres cas, l'utilisation des cœurs n'est jamais maximum. On suppose donc qu'il s'agit d'un algorithme qui présente des limites à la parallélisation, si on exclut tout autre facteur limitant l'efficacité (comme le temps de lecture et d'écriture des données sur le disque, par exemple). Cette caractéristique peut être spécifique à l'un des formats vidéo mis en jeu dans l'encodage. Les formats vidéo récents sont conçus pour être fortement parallélisables pour que les performances d'encodage (et de décodage) puissent augmenter avec le nombre de cœurs disponibles.\\
+On effectue alors la même expérience avec un ordinateur portable équipé d'un processeur octo-cœur \emph{Intel i7-3630QM}. Pour la même vidéo, le temps d'encodage est de \textbf{25,536 secondes} avec un seul fil, \textbf{15,883 secondes} avec 2 fils et \textbf{15,797 secondes} avec l'ensemble des 8 fils (un pour chaque cœur disponible). On constate bien un gain en temps lors de l'utilisation de deux fils plutôt qu'un seul, mais il n'y a pas de différence avec l'utilisation de 8 fils plutôt que de deux. On s'intéresse alors aux relevés d'utilisation des cœurs durant l'opération, reportés en annexe \ref{encodage}. Avec un fil, un cœur est sollicité en permanence (100\%) alors que dans les deux autres cas, l'utilisation des cœurs n'est jamais maximum. On suppose donc qu'il s'agit d'un algorithme qui présente des limites à la parallélisation, si on exclut tout autre facteur limitant l'efficacité (comme le temps de lecture et d'écriture des données sur le disque, par exemple). Cette caractéristique peut être spécifique à l'un des formats vidéo mis en jeu dans l'encodage. Les formats vidéo récents sont conçus pour être fortement parallélisables pour que les performances d'encodage (et de décodage) puissent augmenter avec le nombre de cœurs disponibles.
+
+\subsubsection*{Synchronisation de plusieurs fils d'exécution}
 
 Si l'utilisation de plusieurs fils d'exécution (qui seront répartis sur plusieurs cœurs avec un processeur qui le permet) peur présenter des avantages d'efficacité, cela impose l'utilisation de certaines techniques de synchronisation des données au sein du programme réalisé. C'est ce type de contrainte que l'on souhaite mettre en évidence avec la réalisation d'un court programme, écrit en langage C qui utilise deux fonctions, exécutées dans deux fils d'exécution distincts (gérés avec la librairie standard \bsc{pthread}) :
 \begin{itemize}
@@ -267,3 +282,5 @@ Moyenne : 338524137
 \end{verbatim}
 
 L'utilisation des mutex reste néanmoins un sujet sensible dans l'écriture de code source, en particulier à cause de problèmes d'auto-blocage ou d'inter-dépendances. Dans le premier cas, il s'agit de plusieurs appels successifs à $pthread\_mutex\_lock$ dans le même fil d'exécution, ce qui a pour effet de bloquer ce fil sans qu'il ne soit garanti qu'un autre fil puisse le débloquer. En particulier, si les parties du code à protéger des autres fils sont entourées d'appels à $pthread\_mutex\_lock$ et $pthread\_mutex\_unlock$, les fils seront tous bloqués avant de pouvoir débloquer ce premier fil, ce qui aboutit à un programme irrémédiablement bloqué dans sa globalité. Dans le second cas, il s'agira de l'utilisation de plusieurs mutex distincts avec au moins deux fils d'exécution, chacun bloquant un mutex et attendant le déblocage de l'autre mutex (les appels à $pthread\_mutex\_lock$ seront donc dans l'ordre inversé sur les deux fils d'exécution), ce qui aboutit au blocage des deux fils, irrémédiable s'il n'existe pas d'autre fil capable d'appeler $pthread\_mutex\_unlock$ pour débloquer l'ensemble.
+
+\pagebreak
diff --git a/bibliographie.bib b/bibliographie.bib
deleted file mode 100644 (file)
index fa46e29..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-@misc{wikipedia-resonance,
-author={Wikipédia},
-title={Résonance},
-note={https://fr.wikipedia.org/wiki/Résonance}
-}
-
-@misc{wikipedia-filtre,
-author={Wikipédia},
-title={Filtre (électronique)},
-note={https://fr.wikipedia.org/wiki/Filtre\_(électronique)}
-}
-
-@misc{wikipedia-transistor,
-author={Wikipédia},
-title={Transistor bipolaire)},
-note={https://fr.wikipedia.org/wiki/Transistor\_bipolaire}
-}
-
-@misc{wikipedia-oscillateur-electronique,
-author={Wikipédia},
-title={Oscillateur électronique},
-note={http://fr.wikipedia.org/wiki/Oscillateur\_électronique}
-}
-
-@phdthesis{theseINSA,
-title={Utilisation de concepts innovants dans la fonction oscillateur radiofréquence},
-author={Medjahdi, Abdelkrim},
-school={INSA Lyon},
-year={2010},
-}
-
-@misc{oscillateurs-quartz,
-author={Philippe Morenton},
-title={Oscillateurs à quartz ou résonateur céramique},
-note={http://sti.tice.ac-orleans-tours.fr/spip2/IMG/pdf/Oscillateurs\_a\_quartz\_et\_resonateur\_ceramique.pdf}
-}
-
-@book{coursPSI,
-title={Électronique, PSI},
-author={Brenders, Pierre and Buffard, Gilles and Douchet, L. and Sauzeix, M. and Tisserant, S.},
-year={2005},
-publisher={éditions Bréal},
-}
-
-@misc{oscillateurs,
-title={Systèmes électroniques - {L}es oscillateurs},
-author={Auvray, J.},
-note={http://avrj.cours.pagesperso-orange.fr/Cours/SE\_017\_Les\_Oscillateurs.pdf},
-}
-
-@misc{wikipedia-ne555,
-author={Wikipédia},
-title={NE555},
-note={https://fr.wikipedia.org/wiki/NE555}
-}
-
-@misc{multivibrateur,
-author={MongoSukulu},
-title={Les multivibrateurs},
-note={http://www.mongosukulu.com/index.php/en/contenu/genie-electrique4/electronique/542-les-multivibrateurs?showall=\&start=1}
-}
-
-@misc{Wikipedia7400,
-author={Wikipédia},
-title={Liste des circuits intégrés de la série 7400},
-note={https://fr.wikipedia.org/wiki/Liste\_des\_circuits\_intégrés\_de\_la\_série\_7400}
-}
-
-@book{Tocci,
-title={Circuits numériques : théorie et applications},
-author={Tocci, R.J.},
-isbn={9782100033645},
-year={1996},
-publisher={Dunod}
-}
-
-@misc{CoursLogique,
-title={Cours de l'université de Laval sur les circuits logiques},
-author={Xavier Maldague},
-note={http://w3.gel.ulaval.ca/~maldagx/gel10279/chap5.pdf}
-}
-
-@misc{Cubieboard,
-title={Cubieboard},
-author={Cubietech},
-note={http://cubieboard.org/}
-}
-
-@misc{Arduino,
-title={Arduino},
-author={Arduino},
-note={http://www.arduino.cc/}
-}
-
-@misc{WikipediaI2C,
-author={Wikipédia},
-title={I2{C}},
-note={https://fr.wikipedia.org/wiki/I2C}
-}
-
-@misc{CubieboardDiagram,
-author={Cubietech},
-title={Cubieboard {B}lock {D}iagram},
-note={http://dl.cubieboard.org/hardware/cubieboard\_block\_diagram.pdf}
-}
-
-@misc{A20UserManual,
-author={Allwinner},
-title={A20 {U}ser {M}anual},
-note={https://github.com/allwinner-zh/documents/raw/master/A20/A20 user manual v1.3 20141010.pdf}
-}
-
-@misc{AWIPCores,
-author={Linux-Sunxi},
-title={Used {IP} {C}ores},
-note={http://linux-sunxi.org/Used\_IP\_cores}
-}
-
-@misc{linux-sunxi-cubieboard-expansion-ports,
-author={Linux-Sunxi},
-title={Cubieboard/{E}xpansionports},
-note={http://linux-sunxi.org/Cubieboard/ExpansionPorts}
-}
-
-@misc{WikipediaAutomateFini,
-author={Wikipédia},
-title={Automate fini},
-note={https://fr.wikipedia.org/wiki/Automate\_fini}
-}
-
-@misc{AVRDatasheet,
-author={Atmel},
-title={Atmel 8-bit microcontroller with 4/8/16/32 kbytes in-system programmable flash datasheet},
-note={http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P\_datasheet\_Complete.pdf}
-}
-
-@article{evolution-architecture-ordi,
-author={Etiemble, Daniel},
-journal={Techniques de l'ingénieur},
-title={Évolution de l'architecture des ordinateurs},
-year={2009},
-}
-
-@phdthesis{theseLABRI-Perache,
-title={Contribution à l'élaboration d'environnements de programmation dédiés au calcul scientifique hautes performances},
-author={Pérache, Marc},
-school={LaBRI},
-year={2006},
-}
-
-@misc{wikipedia-pentium4,
-author={Wikipédia},
-title={Pentium 4},
-note={https://fr.wikipedia.org/wiki/Pentium\_4}
-}
-
-@misc{pthread,
-author={Xavier Leroy},
-title={pthread man page},
-note={http://manpages.ubuntu.com/manpages/hardy/man3/pthread\_mutex\_lock.3.html}
-}
index cf6aaf7..dff5639 100644 (file)
@@ -12,3 +12,5 @@ Enfin, notre étude a porté sur un aspect plus fondamental de l'informatique, a
 Tous ces différents aspects ont été illustrés avec diverses expériences, sous la forme de réalisations de circuits pour la partie électronique, d'abord au travers d'une étape de conception de schéma électronique puis de test et enfin de réalisation d'un circuit fonctionnel, avec des composants biens réels et des résultats directs et observables. On a ainsi réalisé un multivibrateur astable, différents circuits de décompte et un ensemble de modules constituants des systèmes aux applications directes. Pour la partie informatique, nos réalisations ont pris la forme de code source, tout d'abord au travers d'une contribution au projet libre U-Boot, revue et approuvée par une communauté d'experts en la matière, mais également par la réalisation d'un programme complet pour la communication entre l'Arduino et le Cubieboard2 : Ardui2c. On aura également réalisé un programme avec calcul parallèle, qui démontre la nécessité du blocage avec mutex. Enfin, on aura relevé l'utilisation processeur d'un algorithme d'encodage de vidéo se prêtant plus ou moins bien au calcul parallèle, avec plusieurs cœurs utilisés ou non.\\
 
 On a ainsi couvert un vaste champ technique mettent en rapport le temps d'une part et l'électronique et l'informatique d'autre part, ce qui aura constitué pour nous une expérience très enrichissante et aura contribué à décupler notre intérêt pour ces domaines, renforçant ainsi notre volonté d'être admis au sein de l'ENSEIRB-MATMECA.
+
+\pagebreak
diff --git a/credits.tex b/credits.tex
new file mode 100644 (file)
index 0000000..f1368c8
--- /dev/null
@@ -0,0 +1,44 @@
+\chapter*{Crédits}
+\addcontentsline{toc}{chapter}{Crédits}
+
+\section*{Images}
+
+Images provenant de sources extérieures :
+\begin{itemize}
+\item[--] Figure \ref{induction}, Gigowatts, licence \emph{Creative Commons BY-SA 3.0} :\\
+http://commons.wikimedia.org/wiki/File:Lenz-faraday.svg
+\item[--] Figure \ref{cubieboard-photo}, Gareth Halfacree, licence \emph{Creative Commons BY-SA 2.0} :\\
+https://www.flickr.com/photos/120586634@N05/14673300334
+\item[--] Figure \ref{arduino-photo}, Snootlab, licence \emph{Creative Commons BY 2.0} :\\
+https://www.flickr.com/photos/snootlab/6052455554\\
+\end{itemize}
+
+Les autres images (y compris les schémas et les photos) ont été réalisées par Paul Kocialkowski et Raphaël Tapia avec des logiciels libres et sont sous licence \emph{Creative Commons BY-SA 4.0} :
+\begin{itemize}
+\item[--] \bsc{KiCad} pour la réalisation de schémas électroniques
+\item[--] \bsc{Inkscape} pour la réalisation de schémas généraux
+\item[--] \bsc{Gimp} pour la retouche des images
+\item[--] \bsc{LibreOffice} pour les graphiques
+\item[--] \bsc{PulseView} pour les chronogrammes
+\end{itemize}
+
+\section*{Code source}
+
+La licence spécifique à chaque code source reporté en annexe est indiquée dans chaque premier bloc de commentaires. Il s'agit de logiciels libres.
+
+\section*{Traductions}
+
+L'ensemble des traductions des termes techniques sont issues de Wikipédia, disponibles sous licence \emph{Creative Commons BY-SA 3.0}.
+
+\section*{Licence}
+
+\begin{figure}[!h]
+\centering
+\includegraphics[width=8cm]{creativecommons.png}
+\end{figure}
+
+Ce document est placé sous licence \emph{Creative Commons BY-SA 4.0} par les auteurs :
+\begin{itemize}
+\item[--] Paul Kocialkowski
+\item[--] Raphaël Tapia
+\end{itemize}
index 1452a6a..821a18f 100644 (file)
Binary files a/images/arduino.png and b/images/arduino.png differ
diff --git a/images/communication-synchronisee.png b/images/communication-synchronisee.png
new file mode 100644 (file)
index 0000000..b0ee6eb
Binary files /dev/null and b/images/communication-synchronisee.png differ
diff --git a/images/creativecommons.png b/images/creativecommons.png
new file mode 100644 (file)
index 0000000..a8a3db8
Binary files /dev/null and b/images/creativecommons.png differ
index 30d13f9..7a41a82 100644 (file)
@@ -18,3 +18,5 @@ Cette quête de précision est motivée par le besoin d'une représentation temp
 La représentation du temps utilisée dans les systèmes informatiques se fait à l'aide de propriétés électroniques et repose sur de nombreuses techniques. Celles-ci ne se valent pas toutes en terme de précision mais les systèmes électroniques et informatiques existent en grande variété et nécessitent des degrés de précision différente.\\\r
 \r
 Cette étude s'articule autour de trois axes principaux. Dans un premier temps seront détaillés les phénomènes électroniques qui dépendent du temps et la façon dont on les exploite pour créer des outils de représentation du temps. Une brève mention de l'usage de ces méthodes dans les technologies actuelles sera énoncée. Dans un second temps on détaillera l'usage qui est fait de ces bases de temps au sein de circuits logiques, ce qui permettra de comprendre l'utilité d'une telle base de temps dans un système complet. Enfin, on étudiera comment le temps est exploité au niveau informatique, au travers des techniques utilisées pour gérer les communications entre différents composants numériques. Par ailleurs, on détaillera l'enjeu de la complexité des algorithmes et les moyens mis en œuvre pour réduire les temps d'exécution des programmes ainsi que leurs limites.\r
+\r
+\pagebreak\r
index af708db..8edfdfd 100644 (file)
@@ -7,7 +7,6 @@
 \usepackage{subcaption}
 \usepackage{amsmath}
 \usepackage{amssymb}
-\usepackage{cite}
 \usepackage{refcount}
 \usepackage{calc}
 \usepackage{mathrsfs}
 \usepackage{xcolor}
 \usepackage{listings}
 \usepackage{pdfpages}
+\usepackage{titlesec}
+\usepackage{cite}
+\usepackage[backend=biber,style=numeric,sorting=none,language=french]{biblatex}
+\usepackage{titleps}
+\usepackage{appendix}
+\usepackage{etoolbox}
 
 \newcommand{\derivd}[3][\null]{\frac{{\rm d}^{#1}#2}{{\rm d}#3^{#1}}}
 \newcommand{\R}{\mathbb{R}}
 \newcommand{\microf}{$\mathrm{\mu}$F}
 \newcommand{\iic}{$\mathrm{I^2C}$}
 \newcommand{\siecle}[1]{\MakeUppercase{\romannumeral #1}\textsuperscript{e}~siècle}
-\newcommand{\notecite}[1]{\footnote{\label{#1-\thepage}Référence bibliographique \cite{#1}.}}
+%\newcommand{\notecite}[1]{\footnote{\label{#1-\thepage}Voir la référence \cite{#1}.}}
+\newcommand{\notecite}[1]{\footnote{Enculé de ta race #1 !}}
 \newcommand{\noteciteagain}[1]{\footnotemark[\getrefnumber{#1-\thepage}]}
-\newcommand{\notecitepage}[2]{\footnote{\label{#1-#2-\thepage}Référence bibliographique \cite{#1} page #2.}}
+\newcommand{\notecitepage}[2]{\footnote{\label{#1-#2-\thepage}Voir en page #2 de la référence \cite{#1}.}}
 \newcommand{\notecitepageagain}[2]{\footnotemark[\getrefnumber{#1-#2-\thepage}]}
 \newcommand{\notepartie}[1]{\footnote{\label{#1-\thepage}Cette notion sera détaillée dans la partie \ref{#1} en page \pageref{#1}.}}
 \newcommand{\notetrad}[2]{\footnote{\textit{#1} en Anglais, soit #2 en Français.}}
 {Î}{{\^{I}}}1
 }
 
-\lhead{\rightmark}
-\chead{}
-\rhead{CHAPITRE \thechapter.}
-\lfoot{}
-\cfoot{\thepage}
-\rfoot{}
+\addbibresource{references.bib}
+\defbibheading{typereference}{\section*{#1}}
+
+\titleformat{\chapter}{\bfseries\huge\centering}{\thechapter}{3ex}{}
+\titlespacing{\chapter}{}{0em}{2em}
+
+\newpagestyle{redaction}{
+\setheadrule{0.5pt}
+\sethead{\chaptertitle}{}{\thesubsection}
+\setfoot{}{\thepage}{}
+}
+
+\newpagestyle{annexes}{
+\titleformat{\chapter}{\bfseries\Large}{\appendixname\ \thechapter}{3ex}{}
+\titlespacing{\chapter}{}{0em}{2em}
+}
 
 \begin{document}
-\title{REPRÉSENTATION ET UTILISATION DU TEMPS DANS LES SYSTÈMES ÉLECTRONIQUES NUMÉRIQUES}
+\title{\bsc{Représentation et utilisation du temps dans les systèmes électroniques numériques}}
 \author{Paul Kocialkowski \and Raphaël Tapia}
 \date{Projet final du Cycle Préparatoire de Bordeaux, 2015}
 ~
@@ -101,7 +117,9 @@ Encadré par Patrice Tesson
 
 \strut
 
-\newpage
+\pagebreak
+
+\pagestyle{plain}
 
 \input{resume.tex}
 
@@ -110,13 +128,14 @@ Encadré par Patrice Tesson
 
 \input{avant-propos.tex}
 \input{introduction.tex}
+\pagestyle{redaction}
 \input{phenomenes-circuits-temps.tex}
 \input{applications-logiques.tex}
 \input{aspects-informatique.tex}
+\pagestyle{plain}
 \input{conclusion.tex}
 \input{annexes.tex}
-
-\bibliographystyle{unsrt}
-\bibliography{bibliographie}
+\input{credits.tex}
+\input{references.tex}
 
 \end{document}
index 12e10ea..b157077 100644 (file)
@@ -62,7 +62,9 @@ Ici $u$ est la tension aux bornes de la bobine et $i$ le courant qui la traverse
 
 Le condensateur fonctionne également sur un principe lié au temps. Ce dipôle est composé de deux plaques conductrices placées en regard et séparées par un isolant . Lorsqu'une tension est appliquée à ses bornes, les charges électriques s'accumulent sur les plaques, créant un champ électrique en son sein : les plaques portent alors des charges de signes contraires. Le condensateur permet de \og stocker\fg{} un champ électrique et donc une certaine énergie qui pourra être restituée dans le circuit à posteriori. Une fois chargé il ne laisse plus passer le courant. La capacité $C$ (s'exprime en F : Farad) caractérise un condensateur, cette grandeur apparaît dans sa loi de comportement :  
 $$ i=C\derivd[]{u}{t} $$
-De même $i$ est le courant qui traverse le condensateur et $u$ la tension à ses bornes\\
+De même $i$ est le courant qui traverse le condensateur et $u$ la tension à ses bornes.
+
+\subsubsection*{Circuits résonants}
 
 Ces trois composants sont souvent utilisés pour créer des circuits à dépendance temporelle : que ce soit pour créer des circuits \emph{résonants} ou des \emph{oscillateurs}. \\
 
@@ -72,6 +74,8 @@ Ces circuits résonants sont donc alimentés par une source sinusoïdale d'une c
 
 Les filtres les plus simples\notecite{wikipedia-filtre} seront réalisés avec des associations simples de condensateurs, bobines et de résistances. Avec un circuit $RC$ associant en série une résistance et un condensateur, on pourra réaliser un filtre passe-bas (qui filtre les hautes fréquences) ou un filtre passe-haut (qui filtre le basses fréquences). De même, avec un circuit $RLC$ associant en série une résistance, une bobine et un condensateur, on pourra réaliser un filtre passe-bande (laisse passer un intervalle de fréquences).\\
 
+\subsubsection*{Oscillateurs}
+
 Pour construire des oscillateurs, c'est à dire des circuits qui génèrent un signal électrique variable dans le temps, on aura besoin en plus d'utiliser certains composants dits actifs\footnote{Il s'agit de composants qui permettent d'augmenter la puissance d'un signal.}, tels que le transistor. Il s'agit d'un composant qui permet de contrôler le courant de sa sortie en fonction du courant qui lui est fourni en entrée. Plusieurs types de transistors existent et on s'intéressera aux transistors dits bipolaires, dont le fonctionnement repose sur deux jonctions de matériaux présentant des excédents ou des manques d'électrons : dans le cas des transistors bipolaires dits NPN, on trouve une jonction entre un matériau avec un excédent d'électrons (N) dit dopé négativement, un matériau avec un manque d'électrons (P) dit dopé positivement et à nouveau un matériau (N) dopé négativement. À l'inverse, on trouve également des transistors bipolaires PNP.\\
 
 On ne détaillera pas ici le fonctionnement interne des transistors bipolaires, relativement complexe, mais on énoncera l'utilisation que l'on fait des transistors bipolaires NPN pour les applications qui nous intéressent.\\
@@ -86,7 +90,9 @@ Ces deux derniers éléments sont extrêmement utilisés en électronique numér
 
 On a vu précédemment que les circuits résonants nécessitent un signal sinusoïdal d'entrée pour fonctionner. La problématique à laquelle on s'intéresse s'articule autour des différentes façons d'obtenir de tels signaux : comment peut-on générer un signal électrique sinusoïdal de fréquence choisie ?\\
 
-La tension d'alimentation d'un circuit électrique est généralement continue (pas de variation de la tension d'alimentation au cours du temps) ou alternative (variation sinusoïdale continuelle de cette tension). Pour générer ce dernier type de tension, on pourra faire appel au phénomène d'induction couplé à des mécanismes mécaniques ou encore générer une telle tension variable à partir d'une tension continue et d'un circuit oscillant adapté.\\
+La tension d'alimentation d'un circuit électrique est généralement continue (pas de variation de la tension d'alimentation au cours du temps) ou alternative (variation sinusoïdale continuelle de cette tension). Pour générer ce dernier type de tension, on pourra faire appel au phénomène d'induction couplé à des mécanismes mécaniques ou encore générer une telle tension variable à partir d'une tension continue et d'un circuit oscillant adapté.
+
+\subsubsection*{Induction électromagnétique}
 
 Le principe de l'induction magnétique repose sur la variation d'un champ magnétique, qui entraîne l'apparition d'un courant induit dans un circuit. Plus précisément, considérons un fil conducteur fermé $\mathcal{C}$, on note $\mathcal{S}$ une surface quelconque d'aire $S$ qui s’appuie sur le contour de $\mathcal{C}$. $\mathcal{C}$ est plongé dans un champ magnétique $\vec{B}(M,t)$ (potentiellement variable dans le temps et dans l'espace). On peut visualiser toutes ces conditions sur le schéma de la figure \ref{induction}.\\
 
@@ -132,15 +138,18 @@ $$e=-\frac{\rm{d}}{\rm{d}t}\int_{\mathcal{S}}{\vec{B}\cdot{\rm d}\vec{S}}=-\frac
 Si on place une résistance $R$ dans le circuit, on a alors un courant alternatif d'intensité, dit \emph{courant induit} : 
 $$i(t)=-\frac{BS\omega}{R}\cos(\omega t+\phi)$$
 
-Le signe de l'expression algébrique de l'intensité détermine le sens dans lequel circule le courant induit. Le sens est déterminé par la loi de Lenz :\\
-
+Le signe de l'expression algébrique de l'intensité détermine le sens dans lequel circule le courant induit. Le sens est déterminé par la loi de Lenz :
+\vspace{0.5cm}
 \begin{quotation}
 \begin{it}
 Le courant induit dans un circuit est dans un sens tel qu'il tend à s'opposer à la cause qui le produit, i.e. le flux du champ magnétique produit par le courant induit tend à compenser les variations du flux du champ inducteur.
 \end{it}
 \end{quotation}
+\vspace{0.5cm}
+
+Ce type de circuit permet donc de générer un signal sinusoïdal par conversion d'énergie mécanique en énergie électrique.
 
-Ce type de circuit permet donc de générer un signal sinusoïdal par conversion d'énergie mécanique en énergie électrique.\\
+\subsubsection*{Oscillateurs harmoniques}
 
 La seconde catégorie de générateurs énoncée précédemment repose sur l'utilisation de certains oscillateurs\notecite{wikipedia-oscillateur-electronique} dits \emph{harmoniques} pour générer une tension sinusoïdale à partir d'une tension continue. Ce sont des montages électroniques qui produisent en général un signal dit quasi-sinusoïdal (quelque peu déformé), car il est en pratique très compliqué d'obtenir un signal parfaitement sinusoïdal. On s'intéresse aux oscillateurs auto-entretenus, c'est-à-dire qui ne nécessitent pas de signal périodique extérieur en entrée pour générer une sortie périodique. De tels circuits sont instables : c'est ce qui permet la génération d'oscillations.\\
 
@@ -398,12 +407,10 @@ Les tensions $U_1$ et $U_2$ sont donc des fonctions périodiques. La sortie qui
 
 On observe que le signal n'est pas vraiment carré, c'est pour s'en approcher au mieux qu'on a fait la seconde hypothèse\footnote{Voir page \pageref{multivibrateur-hypotheses}.}. Le fait que $R_4 \ll R_2$ permet\footnote{Les résistances $R_2$ et $R_3$ doivent de toute façon être élevées afin de protéger les bases des transistors d'une intensité trop importante qui les détruirait.} d'obtenir un temps caractéristique $\tau_2$ négligeable devant $T_1$. Cela se traduit par une charge très rapide du condensateur dès que $Q_1$ devient passant et donc $U_B$ atteint très rapidement sa valeur maximale $V_+$. Le signal périodique carré idéal créé par ce multivibrateur est présenté sur la figure \ref{signal-carre}.\\
 
-Le temps \emph{haut} du signal carré dure $T_1$ tandis que le temps \emph{bas} dure $T_2$. C'est en vue d'obtenir un rapport cyclique de $\frac{1}{2}$ qu'on a fait la première et troisième hypothèse, en effet on obtient ainsi $T_1=T_2$.\\
-
 La période du signal carré de sortie ne dépend que des paramètres choisis pour le montage :
 $$T=T_1+T_2=-\ln(\frac{V_+-\theta}{2V_+-\theta})(R_2C_1+R_3C_2)$$
 
-En prenant $R_2 = R_3$ et $C_1$ = $C_2$ (pour un rapport cyclique de $\frac12$), on a alors :
+Le temps \emph{haut} du signal carré dure $T_1$ tandis que le temps \emph{bas} dure $T_2$. C'est en vue d'obtenir un rapport cyclique de $\frac{1}{2}$ qu'on a fait la première et troisième hypothèse ($R_2 = R_3$ et $C_1$ = $C_2$), en effet on obtient ainsi $T_1=T_2$ et on peut exprimer la période :\\
 $$T=-2\ln(\frac{V_+-\theta}{2V_+-\theta})R_2C_1$$
 
 \subsubsection*{Expérimentation}
diff --git a/references.bib b/references.bib
new file mode 100644 (file)
index 0000000..fceecd8
--- /dev/null
@@ -0,0 +1,161 @@
+@online{wikipedia-resonance,
+author={Wikipédia},
+title={Résonance},
+url={https://fr.wikipedia.org/wiki/Résonance}
+}
+
+@online{wikipedia-filtre,
+author={Wikipédia},
+title={Filtre (électronique)},
+url={https://fr.wikipedia.org/wiki/Filtre_(électronique)}
+}
+
+@online{wikipedia-transistor,
+author={Wikipédia},
+title={Transistor bipolaire},
+url={https://fr.wikipedia.org/wiki/Transistor_bipolaire}
+}
+
+@online{wikipedia-oscillateur-electronique,
+author={Wikipédia},
+title={Oscillateur électronique},
+url={http://fr.wikipedia.org/wiki/Oscillateur_électronique}
+}
+
+@thesis{theseINSA,
+title={Utilisation de concepts innovants dans la fonction oscillateur radiofréquence},
+author={Medjahdi, Abdelkrim},
+school={INSA Lyon},
+year={2010},
+}
+
+@online{oscillateurs-quartz,
+author={Philippe Morenton},
+title={Oscillateurs à quartz ou résonateur céramique},
+url={http://sti.tice.ac-orleans-tours.fr/spip2/IMG/pdf/Oscillateurs_a_quartz_et_resonateur_ceramique.pdf}
+}
+
+@book{coursPSI,
+title={Électronique, PSI},
+author={Brenders, Pierre and Buffard, Gilles and Douchet, L. and Sauzeix, M. and Tisserant, S.},
+year={2005},
+publisher={éditions Bréal},
+}
+
+@online{oscillateurs,
+title={Systèmes électroniques - {L}es oscillateurs},
+author={Auvray, J.},
+url={http://avrj.cours.pagesperso-orange.fr/Cours/SE_017_Les_Oscillateurs.pdf},
+}
+
+@online{wikipedia-ne555,
+author={Wikipédia},
+title={NE555},
+url={https://fr.wikipedia.org/wiki/NE555}
+}
+
+@online{multivibrateur,
+author={MongoSukulu},
+title={Les multivibrateurs},
+url={http://www.mongosukulu.com/index.php/en/contenu/genie-electrique4/electronique/542-les-multivibrateurs?showall=&start=1}
+}
+
+@online{Wikipedia7400,
+author={Wikipédia},
+title={Liste des circuits intégrés de la série 7400},
+url={https://fr.wikipedia.org/wiki/Liste_des_circuits_intégrés_de_la_série_7400}
+}
+
+@book{Tocci,
+title={Circuits numériques : théorie et applications},
+author={Tocci, R.J.},
+isbn={9782100033645},
+year={1996},
+publisher={Dunod}
+}
+
+@online{CoursLogique,
+title={Cours de l'université de Laval sur les circuits logiques},
+author={Xavier Maldague},
+url={http://w3.gel.ulaval.ca/~maldagx/gel10279/chap5.pdf}
+}
+
+@online{Cubieboard,
+title={Cubieboard},
+author={Cubietech},
+url={http://cubieboard.org/}
+}
+
+@online{Arduino,
+title={Arduino},
+author={Arduino},
+url={http://www.arduino.cc/}
+}
+
+@online{WikipediaI2C,
+author={Wikipédia},
+title={I2{C}},
+url={https://fr.wikipedia.org/wiki/I2C}
+}
+
+@online{CubieboardDiagram,
+author={Cubietech},
+title={Cubieboard {B}lock {D}iagram},
+url={http://dl.cubieboard.org/hardware/cubieboard_block_diagram.pdf}
+}
+
+@online{A20UserManual,
+author={Allwinner},
+title={A20 {U}ser {M}anual},
+url={https://github.com/allwinner-zh/documents/raw/master/A20/A20 user manual v1.3 20141010.pdf}
+}
+
+@online{AWIPCores,
+author={Linux-Sunxi},
+title={Used {IP} {C}ores},
+url={http://linux-sunxi.org/Used_IP_cores}
+}
+
+@online{linux-sunxi-cubieboard-expansion-ports,
+author={Linux-Sunxi},
+title={Cubieboard/{E}xpansionports},
+url={http://linux-sunxi.org/Cubieboard/ExpansionPorts}
+}
+
+@online{WikipediaAutomateFini,
+author={Wikipédia},
+title={Automate fini},
+url={https://fr.wikipedia.org/wiki/Automate_fini}
+}
+
+@online{AVRDatasheet,
+author={Atmel},
+title={Atmel 8-bit microcontroller with 4/8/16/32 kbytes in-system programmable flash datasheet},
+url={http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf}
+}
+
+@thesis{evolution-architecture-ordi,
+author={Etiemble, Daniel},
+title={Évolution de l'architecture des ordinateurs},
+school={Techniques de l'ingénieur},
+year={2009},
+}
+
+@thesis{theseLABRI-Perache,
+author={Pérache, Marc},
+title={Contribution à l'élaboration d'environnements de programmation dédiés au calcul scientifique hautes performances},
+school={LaBRI},
+year={2006},
+}
+
+@online{wikipedia-pentium4,
+author={Wikipédia},
+title={Pentium 4},
+url={https://fr.wikipedia.org/wiki/Pentium_4}
+}
+
+@online{pthread,
+author={Xavier Leroy},
+title={pthread man page},
+url={http://manpages.ubuntu.com/manpages/hardy/man3/pthread_mutex_lock.3.html}
+}
diff --git a/references.tex b/references.tex
new file mode 100644 (file)
index 0000000..8d89342
--- /dev/null
@@ -0,0 +1,20 @@
+\chapter*{Références}
+\addcontentsline{toc}{chapter}{Références}
+
+\printbibliography[type=book,heading=typereference,title={Ouvrages}]
+\printbibliography[type=thesis,heading=typereference,title={Thèses et articles}]
+\printbibliography[type=online,heading=typereference,title={Sites web}]
+\textbf{Les sites web ont été consultés avec succès le 4 mai 2015.}
+
+
+\subsection*{Cours}
+
+Les cours suivants auxquels nous avons assisté ont permis d'assimiler de nombreuses notions retranscrites au travers de ce document :
+\begin{itemize}
+\item[--] Cours de Génie Électronique 2011-2013, J-P. Feuray, Lycée Max Linder
+\item[--] Cours d'Électromagnétisme 1, J. Cayssol, Cycle Prépératoire de Bordeaux
+\item[--] Cours d'Électrocinétique 1, M. Aiche, Cycle Prépératoire de Bordeaux
+\item[--] Cours d'Électromagnétisme 2, P. Langot, Cycle Prépératoire de Bordeaux
+\item[--] Cours d'Électromagnétisme 3, H. Jouin, Cycle Prépératoire de Bordeaux
+\item[--] Cours d'Électrocinétique 2, M. Aiche, Cycle Prépératoire de Bordeaux
+\end{itemize}
diff --git a/test.tex b/test.tex
new file mode 100644 (file)
index 0000000..838da1c
--- /dev/null
+++ b/test.tex
@@ -0,0 +1,17 @@
+\documentclass{report}
+\usepackage[utf8]{inputenc}
+\usepackage[french]{babel}
+\usepackage[backend=bibtex]{biblatex}
+\addbibresource{bibliographie.bib}
+\defbibheading{secondary}{\section*{#1}}
+
+\begin{document}
+Let's cite! The Einstein's journal paper \cite{wikipedia-filtre} and \cite{evolution-architecture-ordi} the Dirac's 
+book \cite{wikipedia-filtre} are physics related items. 
+
+\printbibliography[type=article,heading=secondary,title={Articles only}]
+    
+
+\end{document}