Ajout des fichiers.
228
.gitignore
vendored
Normal file
|
@ -0,0 +1,228 @@
|
|||
|
||||
# Created by https://www.gitignore.io/api/latex
|
||||
|
||||
### LaTeX ###
|
||||
## Core latex/pdflatex auxiliary files:
|
||||
*.aux
|
||||
*.lof
|
||||
*.log
|
||||
*.lot
|
||||
*.fls
|
||||
*.out
|
||||
*.toc
|
||||
*.fmt
|
||||
*.fot
|
||||
*.cb
|
||||
*.cb2
|
||||
|
||||
## Intermediate documents:
|
||||
*.dvi
|
||||
*.xdv
|
||||
*-converted-to.*
|
||||
# these rules might exclude image files for figures etc.
|
||||
# *.ps
|
||||
# *.eps
|
||||
# *.pdf
|
||||
|
||||
## Generated if empty string is given at "Please type another file name for output:"
|
||||
.pdf
|
||||
|
||||
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
||||
*.bbl
|
||||
*.bcf
|
||||
*.blg
|
||||
*-blx.aux
|
||||
*-blx.bib
|
||||
*.run.xml
|
||||
|
||||
## Build tool auxiliary files:
|
||||
*.fdb_latexmk
|
||||
*.synctex
|
||||
*.synctex(busy)
|
||||
*.synctex.gz
|
||||
*.synctex.gz(busy)
|
||||
*.pdfsync
|
||||
*Notes.bib
|
||||
|
||||
## Auxiliary and intermediate files from other packages:
|
||||
# algorithms
|
||||
*.alg
|
||||
*.loa
|
||||
|
||||
# achemso
|
||||
acs-*.bib
|
||||
|
||||
# amsthm
|
||||
*.thm
|
||||
|
||||
# beamer
|
||||
*.nav
|
||||
*.pre
|
||||
*.snm
|
||||
*.vrb
|
||||
|
||||
# changes
|
||||
*.soc
|
||||
|
||||
# cprotect
|
||||
*.cpt
|
||||
|
||||
# elsarticle (documentclass of Elsevier journals)
|
||||
*.spl
|
||||
|
||||
# endnotes
|
||||
*.ent
|
||||
|
||||
# fixme
|
||||
*.lox
|
||||
|
||||
# feynmf/feynmp
|
||||
*.mf
|
||||
*.mp
|
||||
*.t[1-9]
|
||||
*.t[1-9][0-9]
|
||||
*.tfm
|
||||
|
||||
#(r)(e)ledmac/(r)(e)ledpar
|
||||
*.end
|
||||
*.?end
|
||||
*.[1-9]
|
||||
*.[1-9][0-9]
|
||||
*.[1-9][0-9][0-9]
|
||||
*.[1-9]R
|
||||
*.[1-9][0-9]R
|
||||
*.[1-9][0-9][0-9]R
|
||||
*.eledsec[1-9]
|
||||
*.eledsec[1-9]R
|
||||
*.eledsec[1-9][0-9]
|
||||
*.eledsec[1-9][0-9]R
|
||||
*.eledsec[1-9][0-9][0-9]
|
||||
*.eledsec[1-9][0-9][0-9]R
|
||||
|
||||
# glossaries
|
||||
*.acn
|
||||
*.acr
|
||||
*.glg
|
||||
*.glo
|
||||
*.gls
|
||||
*.glsdefs
|
||||
|
||||
# gnuplottex
|
||||
*-gnuplottex-*
|
||||
|
||||
# gregoriotex
|
||||
*.gaux
|
||||
*.gtex
|
||||
|
||||
# hyperref
|
||||
*.brf
|
||||
|
||||
# knitr
|
||||
*-concordance.tex
|
||||
# TODO Comment the next line if you want to keep your tikz graphics files
|
||||
*.tikz
|
||||
*-tikzDictionary
|
||||
|
||||
# listings
|
||||
*.lol
|
||||
|
||||
# makeidx
|
||||
*.idx
|
||||
*.ilg
|
||||
*.ind
|
||||
*.ist
|
||||
|
||||
# minitoc
|
||||
*.maf
|
||||
*.mlf
|
||||
*.mlt
|
||||
*.mtc[0-9]*
|
||||
*.slf[0-9]*
|
||||
*.slt[0-9]*
|
||||
*.stc[0-9]*
|
||||
|
||||
# minted
|
||||
_minted*
|
||||
*.pyg
|
||||
|
||||
# morewrites
|
||||
*.mw
|
||||
|
||||
# nomencl
|
||||
*.nlo
|
||||
|
||||
# pax
|
||||
*.pax
|
||||
|
||||
# pdfpcnotes
|
||||
*.pdfpc
|
||||
|
||||
# sagetex
|
||||
*.sagetex.sage
|
||||
*.sagetex.py
|
||||
*.sagetex.scmd
|
||||
|
||||
# scrwfile
|
||||
*.wrt
|
||||
|
||||
# sympy
|
||||
*.sout
|
||||
*.sympy
|
||||
sympy-plots-for-*.tex/
|
||||
|
||||
# pdfcomment
|
||||
*.upa
|
||||
*.upb
|
||||
|
||||
# pythontex
|
||||
*.pytxcode
|
||||
pythontex-files-*/
|
||||
|
||||
# thmtools
|
||||
*.loe
|
||||
|
||||
# TikZ & PGF
|
||||
*.dpth
|
||||
*.md5
|
||||
*.auxlock
|
||||
|
||||
# todonotes
|
||||
*.tdo
|
||||
|
||||
# easy-todo
|
||||
*.lod
|
||||
|
||||
# xindy
|
||||
*.xdy
|
||||
|
||||
# xypic precompiled matrices
|
||||
*.xyc
|
||||
|
||||
# endfloat
|
||||
*.ttt
|
||||
*.fff
|
||||
|
||||
# Latexian
|
||||
TSWLatexianTemp*
|
||||
|
||||
## Editors:
|
||||
# WinEdt
|
||||
*.bak
|
||||
*.sav
|
||||
|
||||
# Texpad
|
||||
.texpadtmp
|
||||
|
||||
# Kile
|
||||
*.backup
|
||||
|
||||
# KBibTeX
|
||||
*~[0-9]*
|
||||
|
||||
# auto folder when using emacs and auctex
|
||||
/auto/*
|
||||
|
||||
# expex forward references with \gathertags
|
||||
*-tags.tex
|
||||
|
||||
# End of https://www.gitignore.io/api/latex
|
155
MyPack2.sty
Normal file
|
@ -0,0 +1,155 @@
|
|||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{MyPack2}
|
||||
|
||||
%%%%%%%% INCLUSIONS GÉNÉRALES %%%%%%%%%
|
||||
\RequirePackage{babel}
|
||||
%\RequirePackage{titlesec}
|
||||
\RequirePackage{color}
|
||||
\RequirePackage[a4paper]{geometry}
|
||||
\RequirePackage[font=small,format=plain,labelfont=bf,up,
|
||||
textfont=normal,up,
|
||||
justification=justified,
|
||||
singlelinecheck=false]{caption}
|
||||
\RequirePackage[justification=centering]{caption}
|
||||
\RequirePackage{xcolor} % Required for specifying custom colours
|
||||
\definecolor{grey}{rgb}{0.9,0.9,0.9} % Colour of the box surrounding the title
|
||||
\RequirePackage[utf8]{inputenc} % Required for inputting international characters
|
||||
|
||||
\RequirePackage[T1]{fontenc}
|
||||
% \RequirePackage[sfdefault]{ClearSans} % Use the Clear Sans font (sans serif)
|
||||
\RequirePackage{placeins}
|
||||
\RequirePackage{listings}
|
||||
\RequirePackage{graphicx}
|
||||
\RequirePackage{amsfonts}
|
||||
|
||||
|
||||
|
||||
\definecolor{bleu}{RGB}{0,100,143}
|
||||
\definecolor{gris}{RGB}{130,130,140}
|
||||
\definecolor{grisBleu}{RGB}{65,115,141}
|
||||
|
||||
|
||||
|
||||
%%%%%%%% MATH %%%%%%%%%
|
||||
\RequirePackage{stmaryrd}
|
||||
\newcommand*\intervalleEntier[2]{\intervalle{\llbracket}{#1}{#2}{\rrbracket}}
|
||||
\newcommand*\intervalle[4]{\left#1 #2 \, ; #3 \right#4}
|
||||
\newcommand*\intervalleOO[2]{\intervalle{]}{#1}{#2}{[}}
|
||||
\newcommand*\intervalleFF[2]{\intervalle{[}{#1}{#2}{]}}
|
||||
\newcommand*\intervalleOF[2]{\intervalle{]}{#1}{#2}{]}}
|
||||
\newcommand*\intervalleFO[2]{\intervalle{[}{#1}{#2}{[}}
|
||||
|
||||
\let\ensembleNombre\mathbb
|
||||
\newcommand*\N{\ensembleNombre{N}}
|
||||
\newcommand*\Z{\ensembleNombre{Z}}
|
||||
\newcommand*\Q{\ensembleNombre{Q}}
|
||||
\newcommand*\R{\ensembleNombre{R}}
|
||||
\newcommand*\C{\ensembleNombre{C}}
|
||||
|
||||
\newcommand*\enstq[2]{\left\{#1,\; #2\right\}}
|
||||
|
||||
%\newcommand*\int[1]{\left\lfloor #1\right\rfloor}
|
||||
%\newcommand*\norme[1]{\left\lVert#1\right\rVert}
|
||||
%\newcommand*\abs[1]{\left\lvert#1\right\rvert}
|
||||
|
||||
\let\vecteur\overrightarrow
|
||||
|
||||
\newcommand*\Sys[1]{\left\{ \begin{aligned} #1 \end{aligned} \right. \kern-\nulldelimiterspace}
|
||||
|
||||
\newcommand*\application[5]{
|
||||
#1 \colon
|
||||
\begin{alignedat}{2}  &\to \\
|
||||
 &\mapsto 
|
||||
\end{alignedat}
|
||||
}
|
||||
\newcommand*\applicationSigne[3]{
|
||||
#1 \colon #2 \to #3
|
||||
}
|
||||
|
||||
\newtheorem{defi}{Définition}[section]
|
||||
\newtheorem{theo}{Théorème}[section]
|
||||
\newtheorem{prop}{Proposition}[section]
|
||||
\newtheorem{ex}{Exemple}[section]
|
||||
|
||||
|
||||
%%%%%%%% SECTIONNEMENT %%%%%%%%%
|
||||
|
||||
%\renewcommand{\thesection}{\Roman{section}}
|
||||
%\renewcommand{\thesubsection}{\arabic{subsection}}
|
||||
|
||||
\newcommand*\emptyPage{\newpage\null\thispagestyle{empty}\addtocounter{page}{-1}\newpage}
|
||||
|
||||
%%%%%%%% INTIALISATION DE LA PAGE %%%%%%%%%
|
||||
\RequirePackage{fancyhdr}
|
||||
\newcommand\initPage[3]{
|
||||
\pagestyle{fancy}
|
||||
\fancyhead{#1}
|
||||
\lhead{#2}
|
||||
\rhead{#3}
|
||||
\rfoot{}
|
||||
\lfoot{}
|
||||
|
||||
%\titleformat*{\section}{\Large\bfseries\color{bleu}\Roman{section}}
|
||||
%\titleformat*{\subsection}{\large\bfseries\color{grisBleu}}
|
||||
%\titleformat*{\subsubsection}{\bfseries\color{gris}}
|
||||
%\titlespacing*{\section}{-3em}{*1}{*1}
|
||||
%\titlespacing*{\subsection}{-2em}{*1}{*1}
|
||||
%\titlespacing*{\subsubsection}{-1em}{*1}{*1}
|
||||
|
||||
}
|
||||
|
||||
%%%%%%%% TITRE %%%%%%%%M
|
||||
\renewcommand{\maketitle}{
|
||||
\begin{titlepage} % Suppresses displaying the page number on the title page and the subsequent page counts as page 1
|
||||
%------------------------------------------------
|
||||
% Grey title box
|
||||
%------------------------------------------------
|
||||
\topskip0pt
|
||||
\vspace*{5cm}
|
||||
\colorbox{grey}{
|
||||
\parbox[t]{0.93\textwidth}{ % Outer full width box
|
||||
\parbox[t]{0.91\textwidth}{ % Inner box for inner right text margin
|
||||
\raggedleft % Right align the text
|
||||
\fontsize{72pt}{80pt}\selectfont % Title font size, the first argument is the font size and the second is the line spacing, adjust depending on title length
|
||||
\vspace{1cm} % Space between the start of the title and the top of the grey box
|
||||
|
||||
\@title
|
||||
|
||||
\vspace{1cm} % Space between the end of the title and the bottom of the grey box
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\vfill % Space between the title box and author information
|
||||
|
||||
%------------------------------------------------
|
||||
% Author name and information
|
||||
%------------------------------------------------
|
||||
|
||||
\parbox[t]{0.93\textwidth}{ % Box to inset this section slightly
|
||||
\raggedleft % Right align the text
|
||||
\large % Increase the font size
|
||||
{\Large \@author}\\[4pt] % Extra space after name
|
||||
|
||||
\hfill\rule{0.2\linewidth}{1pt}\\% Horizontal line, first argument width, second thickness
|
||||
\@date
|
||||
}
|
||||
|
||||
\end{titlepage}
|
||||
|
||||
\emptyPage
|
||||
}
|
||||
|
||||
|
||||
|
||||
%%%%%%%% FIN DU DOCUMENT %%%%%%%%%
|
||||
|
||||
\newcommand{\roadMap}{
|
||||
\clearpage
|
||||
\listoffigures
|
||||
\clearpage
|
||||
\listoftables
|
||||
}
|
||||
|
||||
% Fin du package
|
||||
\endinput
|
BIN
compte_rendu.pdf
Normal file
406
compte_rendu.tex
Normal file
|
@ -0,0 +1,406 @@
|
|||
\documentclass[french]{article}
|
||||
|
||||
\usepackage{pgfplots}
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{arrows,automata}
|
||||
\usepackage{MyPack2}
|
||||
|
||||
\usepackage{diagbox}
|
||||
\usepackage{timing}
|
||||
\geometry{top=2cm, bottom=2cm, left=2cm, right=2cm}
|
||||
\title{Étude de laboratoire - SLEA}
|
||||
\author{Binôme A11 \\ \bsc{Simon} Léo, \bsc{Levy--Falk} Hugo \\ Supélec, promo 2020}
|
||||
\date{\today}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
\clearpage
|
||||
\listoffigures
|
||||
\newpage
|
||||
\initPage{TL - SLEA}{\today}{\bsc{Simon}, \bsc{Levy--Falk}}
|
||||
|
||||
\part{Objectifs de ce TL}
|
||||
\part{Étude préliminaire}
|
||||
|
||||
Afin de prendre en main le logiciel de simulation Quartus, on simule un décodeur BCD vers 7 segments.
|
||||
|
||||
\section{Saisie du schéma du montage}
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/decodeur1.PNG}
|
||||
\caption{Schéma saisi}
|
||||
\label{fig:decodeur1}
|
||||
\end{figure}
|
||||
|
||||
La figure \ref{fig:decodeur1} montre le montage que nous simulerons. On commence par le compiler le projet une première fois, en utilisant le mode \verb|smart compilation|.
|
||||
|
||||
\section{Affectation des entrées et sorties}
|
||||
En consultant la documentation de la carte \bsc{Altera} disponible sur \verb|moodle.supelec.fr|, on repère les numéros des entrées correspondants aux micro-interrupteurs à la page 12 et les numéros des sorties correspondants à l'afficheur numéro 1. On crée la table d'assignation reproduite à la figure \ref{fig:decodeur2}.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/decodeur2.PNG}
|
||||
\caption{Assignation des I/O}
|
||||
\label{fig:decodeur2}
|
||||
\end{figure}
|
||||
|
||||
\section{Définition des vecteurs de simulation}
|
||||
|
||||
On crée un fichier \verb|decodeur.vwf| dans lequel on spécifie les chronogrammes imposés aux entrées. Après avoir lancé la simulation on obtient les chronogrammes de la figure \ref{fig:decodeur3}.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/decodeur3.PNG}
|
||||
\caption{Chronogramme obtenu par simulation fonctionnelle}
|
||||
\label{fig:decodeur3}
|
||||
\end{figure}
|
||||
|
||||
\section{Simulation fonctionnelle}
|
||||
|
||||
On a lancé une simulation fonctionnelle, il n'y a pas d'aléas. D'autre part, page 9 de la documentation nous informe sur l'afficheur 7 segments.
|
||||
|
||||
\begin{quotation}
|
||||
Each LED segment of the display can be illuminated by driving the connected EPM7128S device I/O pin with a logic 0. Figure 4 shows the name of each segment.
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.25\linewidth]{images/decodeurDigit.png}
|
||||
\caption{Figure 4 de la documentation.}
|
||||
\label{fig:decodeurDigit}
|
||||
\end{figure}
|
||||
|
||||
\end{quotation}
|
||||
|
||||
On vérifie ainsi que le chronogramme correspond à l'affichage des chiffres de 0 à 9.
|
||||
|
||||
\section{Simulation temporelle}
|
||||
|
||||
On lance ensuite une simulation temporelle. La figure \ref{fig:decodeur4} montre l'apparition d'aléas dûs aux temps de propagation.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/decodeur4.PNG}
|
||||
\caption{Simulation temporelle}
|
||||
\label{fig:decodeur4}
|
||||
\end{figure}
|
||||
|
||||
\section{Analyse temporelle}
|
||||
|
||||
L'analyse temporelle donne le temps de propagation entre les entrées et les sorties. La figure \ref{fig:decodeur5} montre que le temps de propagation est d'environ 30 ns.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/decodeur5.PNG}
|
||||
\caption{Analyse temporelle.}
|
||||
\label{fig:decodeur5}
|
||||
\end{figure}
|
||||
|
||||
\section{Programmation}
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{images/decodeur6.jpg}
|
||||
\caption{Affichage du chiffre 9}
|
||||
\label{fig:decodeur6}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\includegraphics[width=\textwidth]{images/decodeur7.jpg}
|
||||
\caption{Affichage du chiffre 5}
|
||||
\label{fig:decodeur7}
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
|
||||
On programme la carte et on vérifie le fonctionnement en changeant l'état des interrupteurs, comme le montre les figures \ref{fig:decodeur6} et \ref{fig:decodeur7}.
|
||||
|
||||
\FloatBarrier
|
||||
\clearpage
|
||||
\part{Traitement d'un bouton poussoir}
|
||||
|
||||
Afin de détecter l'appui sur un bouton poussoir, on réalise un traitement de l'entrée associée. En effet il faut d'abord éliminer un éventuel bruit créé par les rebonds créés lors du changement de l'état du bouton et synchroniser le signal avec celui de l'horloge afin d'obtenir le signal \verb|BPS|. Cette partie est réalisée avec une bascule D (on suppose donc que le bruit dure moins d'une période d'horloge). On souhaite ensuite passer la sortie à l'état haut pendant une période d'horloge sur front montant de \verb|BPS|. On se propose de synthétiser cette partie avec une machine de \bsc{Moore} puis avec une machine de \bsc{Mealy}.
|
||||
|
||||
\section{Synthèse avec une machine de \bsc{Moore}}
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{wave}{3}{5}
|
||||
\nextwave{BPS} \bit{0}{1} \bit{1}{3} \bit{0}{2}
|
||||
\nextwave{SBPMoore} \bit{0}{2} \bit{1}{1} \bit{0}{3}
|
||||
\end{wave}
|
||||
\label{fig:chronoMooreTheo}
|
||||
\caption{Chronogramme recherché}
|
||||
\end{figure}
|
||||
|
||||
On commence par résumer à l'aide d'un chronogramme le comportement recherché pour le système, représenté à la figure \ref{fig:chronoMooreTheo}.
|
||||
|
||||
On souhaite réaliser une machine de \bsc{Moore}, c'est à dire $S = g(E_p)$ et $ E_S = f(E,E_p)$, avec $S$, $E_p$ et $E$ tels que représentés à la figure \ref{fig:diagrammeMoore}.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\centering
|
||||
\begin{tikzpicture}
|
||||
\draw (0,0) -- (1,0) -- (1,-0.5) -- (1,-0.25) node[anchor=east] {g} --(1,-0.5) -- (0,-2) -- (0,0) --
|
||||
(1,-1.5) -- (1,-1.75) node[anchor=east]{f} -- (1,-2) -- (0,-2);
|
||||
|
||||
\draw (0,-2.25) -- (1,-2.25) -- (1,-2.5) node[anchor=east]{D} -- (1,-3.25) -- (0.5, -3.25) node[anchor=south]{H} -- (0,-3.25) -- (0,-2.5) node[anchor=west]{Q} -- (0,-2.25);
|
||||
|
||||
\draw[->] (-0.5,-0.25) node[anchor=east] {BPS} -- (0,-0.25);
|
||||
\draw[->] (1,-0.25) -- (1.5, -0.25) node[anchor=west] {SBPMoore};
|
||||
|
||||
\draw[->] (1,-1.75) -- (1.25,-1.75) node[anchor = west] {$E_S$}-- (1.25, -2.5) -- (1, -2.5);
|
||||
\draw[->] (0,-2.5) -- (-0.25,-2.5) -- (-0.25, -1.75) node[anchor = east] {$E_p$}-- (0,-1.75);
|
||||
\draw[->] (0.5,-3.5) -- (0.5,-3.25);
|
||||
|
||||
\end{tikzpicture}
|
||||
\label{fig:diagrammeMoore}
|
||||
\caption{Schéma général d'un système séquentiel synchrone}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
|
||||
\centering
|
||||
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2cm,
|
||||
semithick]
|
||||
|
||||
\node[state] (A) {$E_0$};
|
||||
\node [state](B)[right of=A]{$E_1$};
|
||||
\node[state](C)[below of=A]{$E_2$};
|
||||
|
||||
\path (A) edge[loop left] node {0} (A)
|
||||
(A) edge[bend left] node {1} (B)
|
||||
(B) edge[bend left] node {1} (C)
|
||||
(C) edge[loop left] node{1} (C)
|
||||
(C) edge[bend left] node{0} (A)
|
||||
(B) edge[bend left] node{0} (A)
|
||||
;
|
||||
\end{tikzpicture}
|
||||
\label{fig:automateMoore}
|
||||
\caption{Automate des états de la machine de \bsc{Moore}}
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
On synthétise ensuite le fonctionnement de la machine en dessinant le graphe des états, représenté à la figure \ref{fig:automateMoore}. On obtient un graphe à trois états. Un premier état de repos, et deux autres permettants de passer la sortie au niveau 1 pendant un cycle d'horloge sur front montant de l'entrée.
|
||||
|
||||
On peut alors écrire le tableau des états (table \ref{tab:tableauEtatMoore}), en utilisant le codage des états reproduit dans la table \ref{tab:tableaucodeEtatMoore} (on pose $E_p = (y_1,y_0)$).
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\begin{tabular}{| r | c c |}
|
||||
\hline
|
||||
& $y_1$ & $y_0$ \\
|
||||
\hline
|
||||
$E_0$ & 0 & 0 \\
|
||||
$E_1$ & 0 & 1 \\
|
||||
$E_2$ & 1 & 0 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Codage des états de la machine de \bsc{Moore}}
|
||||
\label{tab:tableaucodeEtatMoore}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\begin{tabular}{| c | c | c || l |}
|
||||
\hline
|
||||
\backslashbox{$E_p$}{$BPS$} & 0 & 1 & S \\
|
||||
\hline
|
||||
$E_0$ & $E_0$ & $E_1$ & 0 \\
|
||||
$0\;0$ & $0\;0$ & $0\;1$ & \\
|
||||
\hline
|
||||
$E_1$ & $E_0$ & $E_2$ & 1 \\
|
||||
$0\;1$ & $0\;0$ & $1\;0$ & \\
|
||||
\hline
|
||||
$E_2$ & $E_0$ & $E_2$ & 0 \\
|
||||
$1\;0$ & $0\;0$ & $1\;0$ & \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Tableau des états de la machine de \bsc{Moore}}
|
||||
\label{tab:tableauEtatMoore}
|
||||
\end{minipage}
|
||||
\end{table}
|
||||
|
||||
On peut ensuite synthétiser l'état suivant $E_S$ et la sortie $S$ en fonction de $BPS$, $y_0$ et $y_1$. On réalise pour cela trois tableaux de \bsc{Karnaugh} (tables \ref{tab:KY0Moore}, \ref{tab:KY1Moore} et \ref{tab:KSMoore}).
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\begin{tabular}{| c | c c c c |}
|
||||
\hline
|
||||
\backslashbox{$BPS$}{$y_1 y_0$} & 00 & 01 & 11 & 10 \\
|
||||
\hline
|
||||
0 & 0 & 0 & - & 0 \\
|
||||
1 & 1 & 0 & - & 0 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Tableau de \bsc{Karnaugh} pour la variable $Y_0$}
|
||||
\label{tab:KY0Moore}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\begin{tabular}{| c | c c c c |}
|
||||
\hline
|
||||
\backslashbox{$BPS$}{$y_1 y_0$} & 00 & 01 & 11 & 10 \\
|
||||
\hline
|
||||
0 & 0 & 0 & - & 0 \\
|
||||
1 & 0 & 1 & - & 1 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Tableau de \bsc{Karnaugh} pour la variable $Y_1$}
|
||||
\label{tab:KY1Moore}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\begin{tabular}{| c | c c c c |}
|
||||
\hline
|
||||
\backslashbox{$BPS$}{$y_1 y_0$} & 00 & 01 & 11 & 10 \\
|
||||
\hline
|
||||
0 & 0 & 1 & - & 0 \\
|
||||
1 & 0 & 1 & - & 0 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Tableau de \bsc{Karnaugh} pour la variable $S$}
|
||||
\label{tab:KSMoore}
|
||||
\end{minipage}
|
||||
\end{table}
|
||||
|
||||
On peut alors obtenir l'équation de chaque variables.
|
||||
\begin{eqnarray}
|
||||
Y_0 &=& BPS \cdot \bar{y_0} \cdot \bar{y_1} \\
|
||||
Y_1 &=& BPS \cdot (y_0 + y_1) \\
|
||||
S &=& y_0
|
||||
\end{eqnarray}
|
||||
|
||||
Enfin, on vérifie que le fonctionnement est celui attendu par simulation, ce que montrent les figures \ref{fig:schemaBpMoore} et \ref{fig:chronoBpMoore}.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/bp1.PNG}
|
||||
\caption{Schéma du montage}
|
||||
\label{fig:schemaBpMoore}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/bp2.PNG}
|
||||
\caption{Chronogramme de la simulation}
|
||||
\label{fig:chronoBpMoore}
|
||||
\end{figure}
|
||||
|
||||
\section{Synthèse avec une machine de \bsc{Mealy}}
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{wave}{3}{5}
|
||||
\nextwave{BPS} \bit{0}{1} \bit{1}{3} \bit{0}{2}
|
||||
\nextwave{SBPMealy} \bit{0}{1} \bit{1}{1} \bit{0}{4}
|
||||
\end{wave}
|
||||
\label{fig:chronoMealyTheo}
|
||||
\caption{Chronogramme recherché}
|
||||
\end{figure}
|
||||
|
||||
On commence par résumer à l'aide d'un chronogramme le comportement recherché pour le système, représenté à la figure \ref{fig:chronoMealyTheo}.
|
||||
|
||||
On souhaite réaliser une machine de \bsc{Mealy}, c'est à dire $S = g(E, E_p)$ et $ E_S = f(E,E_p)$, avec $S$, $E_p$ et $E$ tels que représentés à la figure \ref{fig:diagrammeMealy}.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\centering
|
||||
\begin{tikzpicture}
|
||||
\draw (0,0) -- (1,0) -- (1,-0.5) -- (1,-0.25) node[anchor=east] {g} --(1,-0.5) -- (0,-2) -- (0,0) --
|
||||
(1,-1.5) -- (1,-1.75) node[anchor=east]{f} -- (1,-2) -- (0,-2);
|
||||
|
||||
\draw (0,-2.25) -- (1,-2.25) -- (1,-2.5) node[anchor=east]{D} -- (1,-3.25) -- (0.5, -3.25) node[anchor=south]{H} -- (0,-3.25) -- (0,-2.5) node[anchor=west]{Q} -- (0,-2.25);
|
||||
|
||||
\draw[->] (-0.5,-0.25) node[anchor=east] {BPS} -- (0,-0.25);
|
||||
\draw[->] (1,-0.25) -- (1.5, -0.25) node[anchor=west] {SBPMealy};
|
||||
|
||||
\draw[->] (1,-1.75) -- (1.25,-1.75) node[anchor = west] {$E_S$}-- (1.25, -2.5) -- (1, -2.5);
|
||||
\draw[->] (0,-2.5) -- (-0.25,-2.5) -- (-0.25, -1.75) node[anchor = east] {$E_p$}-- (0,-1.75);
|
||||
\draw[->] (0.5,-3.5) -- (0.5,-3.25);
|
||||
|
||||
\end{tikzpicture}
|
||||
\label{fig:diagrammeMealy}
|
||||
\caption{Schéma général d'un système séquentiel synchrone}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
|
||||
\centering \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2cm,
|
||||
semithick]
|
||||
|
||||
\node[state] (A) {$E_0$};
|
||||
\node [state](B)[right of=A]{$E_1$};
|
||||
|
||||
\path node[above left=0.25cm]{$S=BPS$}(A) edge[loop left] node {0} (A)
|
||||
(A) edge[bend left] node {1} (B)
|
||||
(B) edge[bend left] node{0} (A)
|
||||
node[above right=0.25cm]{$S=0$}(B) edge[loop right] node {1} (B)
|
||||
;
|
||||
\end{tikzpicture}
|
||||
\label{fig:automateMealy}
|
||||
\caption{Automate des états de la machine de \bsc{Moore}}
|
||||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
On synthétise ensuite le fonctionnement de la machine en dessinant le graphe des états, représenté à la figure \ref{fig:automateMealy}. On obtient un graphe à deux états. Un premier état de repos qui permet de passer la sortie à l'état un dès que le bouton poussoir est enfoncé, et un autre permettant empêchant la sortie de rester au niveau haut plus d'un cycle d'horloge lors de l'appui.
|
||||
|
||||
On peut ensuite synthétiser l'état suivant $E_S$ et la sortie $S$ en fonction de $BPS$ et $E_p$. On réalise pour cela deux tableaux de \bsc{Karnaugh} (tables \ref{tab:KESMealy}, \ref{tab:KSMealy}).
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\begin{tabular}{| c | c c |}
|
||||
\hline
|
||||
\backslashbox{$BPS$}{$E_p$} & 0 & 1 \\
|
||||
\hline
|
||||
0 & 0 & 1 \\
|
||||
1 & 0 & 1 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Tableau de \bsc{Karnaugh} pour la variable $E_S$}
|
||||
\label{tab:KESMealy}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\textwidth}
|
||||
\centering
|
||||
\begin{tabular}{| c | c c |}
|
||||
\hline
|
||||
\backslashbox{$BPS$}{$E_p$} & 0 & 1 \\
|
||||
\hline
|
||||
0 & 0 & 1 \\
|
||||
1 & 0 & 0 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Tableau de \bsc{Karnaugh} pour la sortie}
|
||||
\label{tab:KSMealy}
|
||||
\end{minipage}
|
||||
\end{table}
|
||||
|
||||
On peut alors obtenir l'équation de chaque variables.
|
||||
\begin{eqnarray}
|
||||
E_S &=& BPS \\
|
||||
S &=& BPS \cdot \bar{E_p}
|
||||
\end{eqnarray}
|
||||
|
||||
Enfin, on vérifie que le fonctionnement est celui attendu par simulation, ce que montrent les figures \ref{fig:schemaBpMealy} et \ref{fig:chronoBpMealy}.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/bp3.PNG}
|
||||
\caption{Schéma du montage}
|
||||
\label{fig:schemaBpMealy}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=0.7\linewidth]{images/bp4.PNG}
|
||||
\caption{Chronogramme de la simulation}
|
||||
\label{fig:chronoBpMealy}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\end{document}
|
BIN
images/Screen_SLEA.rar
Normal file
BIN
images/Thumbs.db
Normal file
BIN
images/bp1.PNG
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
images/bp2.PNG
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
images/bp3.PNG
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
images/bp4.PNG
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
images/decodeur1.PNG
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
images/decodeur2.PNG
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
images/decodeur3.PNG
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
images/decodeur4.PNG
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
images/decodeur5.PNG
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
images/decodeur6.jpg
Normal file
After Width: | Height: | Size: 2.6 MiB |
BIN
images/decodeur7.jpg
Normal file
After Width: | Height: | Size: 2.5 MiB |
BIN
images/decodeurDigit.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
67
timing.sty
Normal file
|
@ -0,0 +1,67 @@
|
|||
|
||||
\newcounter{wavenum}
|
||||
|
||||
\setlength{\unitlength}{1cm}
|
||||
% advance clock one cycle, not to be called directly
|
||||
\newcommand*{\clki}{
|
||||
\draw (t_cur) -- ++(0,.3) -- ++(.5,0) -- ++(0,-.6) -- ++(.5,0) -- ++(0,.3)
|
||||
node[time] (t_cur) {};
|
||||
}
|
||||
|
||||
\newcommand*{\bitvector}[3]{
|
||||
\draw[fill=#3] (t_cur) -- ++( .1, .3) -- ++(#2-.2,0) -- ++(.1, -.3)
|
||||
-- ++(-.1,-.3) -- ++(.2-#2,0) -- cycle;
|
||||
\path (t_cur) -- node[anchor=mid] {#1} ++(#2,0) node[time] (t_cur) {};
|
||||
}
|
||||
|
||||
% \known{val}{length}
|
||||
\newcommand*{\known}[2]{
|
||||
\bitvector{#1}{#2}{white}
|
||||
}
|
||||
|
||||
% \unknown{length}
|
||||
\newcommand*{\unknown}[2][XXX]{
|
||||
\bitvector{#1}{#2}{black!20}
|
||||
}
|
||||
|
||||
% \bit{1 or 0}{length}
|
||||
\newcommand*{\bit}[2]{
|
||||
\draw (t_cur) -- ++(0,.6*#1-.3) -- ++(#2,0) -- ++(0,.3-.6*#1)
|
||||
node[time] (t_cur) {};
|
||||
}
|
||||
|
||||
% \unknownbit{length}
|
||||
\newcommand*{\unknownbit}[1]{
|
||||
\draw[ultra thick,black!50] (t_cur) -- ++(#1,0) node[time] (t_cur) {};
|
||||
}
|
||||
|
||||
% \nextwave{name}
|
||||
\newcommand{\nextwave}[1]{
|
||||
\path (0,\value{wavenum}) node[left] {#1} node[time] (t_cur) {};
|
||||
\addtocounter{wavenum}{-1}
|
||||
}
|
||||
|
||||
% \clk{name}{period}
|
||||
\newcommand{\clk}[2]{
|
||||
\nextwave{#1}
|
||||
\FPeval{\res}{(\wavewidth+1)/#2}
|
||||
\FPeval{\reshalf}{#2/2}
|
||||
\foreach \t in {1,2,...,\res}{
|
||||
\bit{\reshalf}{1}
|
||||
\bit{\reshalf}{0}
|
||||
}
|
||||
}
|
||||
|
||||
% \begin{wave}[clkname]{num_waves}{clock_cycles}
|
||||
\newenvironment{wave}[3][H]{
|
||||
\begin{tikzpicture}[draw=black, yscale=.7,xscale=1]
|
||||
\tikzstyle{time}=[coordinate]
|
||||
\setlength{\unitlength}{1cm}
|
||||
\def\wavewidth{#3}
|
||||
\setcounter{wavenum}{0}
|
||||
\nextwave{#1}
|
||||
\foreach \t in {0,1,...,\wavewidth}{
|
||||
\draw[dotted] (t_cur) +(0,.5) -- ++(0,.4-#2);
|
||||
\clki
|
||||
}
|
||||
}{\end{tikzpicture}}
|