tps/1/informe/informe.tex (13672B)
1 \documentclass[12pt]{article} 2 \usepackage[spanish]{babel} 3 % \usepackage{natbib} 4 \usepackage{url} 5 \usepackage[utf8]{inputenc} 6 7 \usepackage{xfrac} 8 \usepackage{amsmath} 9 % \numberwithin{equation}{section} 10 \usepackage{mathtools} 11 12 \usepackage{empheq} 13 \usepackage{graphicx} 14 \usepackage{parskip} 15 \usepackage{fancyhdr} 16 \usepackage{vmargin} 17 \usepackage[ddmmyy]{datetime} 18 \usepackage{anyfontsize} 19 \usepackage{helvet} 20 \renewcommand{\familydefault}{phv} 21 \usepackage{xcolor} 22 23 \usepackage{float} 24 \usepackage[section]{placeins} 25 \usepackage{tocloft} 26 \usepackage{listings} 27 28 \lstset{ 29 language=VHDL, 30 basicstyle=\ttfamily\small, 31 keywordstyle=\color{blue}, 32 commentstyle=\color{green!60!black}, 33 stringstyle=\color{red}, 34 breaklines=true, 35 backgroundcolor=\color{gray!05}, % fondo clarito 36 frame=none 37 } 38 39 40 % Alinear completamente el texto del índice de figuras al margen izquierdo 41 \setlength{\cftfigindent}{0pt} % sin sangría a la izquierda 42 \setlength{\cftfignumwidth}{2em} % ancho reservado para "Figura X" 43 44 \setlength{\skip\footins}{5pt} 45 \usepackage[bottomfloats,belowfloats,hang]{footmisc} 46 47 % align first letter of all the lines in the footnotes 48 \setlength{\footnotemargin}{6pt} 49 50 % surround footnotes number with square brackets and always use numbers (even 51 % inside quoted text) 52 % https://www.overleaf.com/learn/latex/Footnotes 53 % \renewcommand*{\thefootnote}{\ [\arabic{footnote}]\ \ } 54 % \renewcommand*{\thempfootnote}{\ [\arabic{mpfootnote}]\ } 55 56 % space between text and footer 57 \setlength\footskip{40pt} 58 \setlength{\skip\footins}{20pt} 59 60 61 \usepackage[T1]{fontenc} 62 63 64 \usepackage{arevmath} % no funciona con xelatex/lualatex 65 \DeclareMathSizes{12}{11}{9}{8} 66 67 \usepackage{etoolbox} 68 69 \AtBeginEnvironment{align}{ 70 \vspace{-1.25em} 71 } 72 73 % Definir tamaño por defecto para todas las figuras 74 \setkeys{Gin}{width=\textwidth, keepaspectratio} 75 76 % \setmarginsrb{ 77 % left margin, 78 % top margin, 79 % right margin, 80 % bottom margin, 81 % head height, 82 % head sep, 83 % foot height, 84 % foot skip 85 % } 86 87 \setmarginsrb{3.25 cm}{3.5 cm}{3.25 cm}{3.5 cm} 88 {1 cm}{0.75 cm}{1 cm}{1.50 cm} 89 90 \definecolor{fiubablue}{HTML}{0085e5} 91 \usepackage{color} 92 \usepackage{hyperref} 93 \hypersetup{ 94 colorlinks=true, % set true if you want colored links 95 linktoc=all, % set to all if you want sections and subsections linked 96 linkcolor=fiubablue, % choose some color if you want links to stand out 97 urlcolor=fiubablue, 98 citecolor=black 99 } 100 101 \usepackage{subfig} 102 103 \usepackage{fancyvrb} 104 \fvset{xleftmargin=\mathindent} 105 106 % code blocks 107 \usepackage{verbatimbox} 108 \newenvironment{fullgrayverb} 109 {\verbbox} 110 {\endverbbox\par\colorbox{gray!25}{\parbox{\textwidth}{\theverbbox}}\par} 111 112 % inline code blocks 113 \usepackage{tcolorbox} 114 \newcommand\mystrut{\rule[-3pt]{0pt}{12pt}} 115 \newtcbox{\code}{on line, boxrule=0pt, boxsep=0pt, top=0pt, 116 left=0pt, bottom=0pt, right=0pt, colback=gray!18, colframe=white, 117 fontupper={\ttfamily\mystrut}} 118 119 \title{Implementación de Sistema Secuencial en VHDL} % Titulo del trabajo. 120 \author{Klöckner, Martin Javier} 121 \date{\today} % Fecha (automática) 122 123 \makeatletter 124 \let\thetitle\@title 125 \let\theauthor\@author 126 \let\thedate\@date 127 \makeatother 128 129 \pagestyle{fancy} 130 \fancyhf{} 131 \rhead{\theauthor} 132 \lhead{\thetitle} 133 \cfoot{\thepage} 134 135 \renewcommand{\to}{\mathrel{\scriptstyle\rightarrow}} 136 137 \begin{document} 138 \begin{titlepage} 139 \vspace*{-2.5cm} 140 {\centering 141 \includegraphics[width=1.00\textwidth]{img/logofiuba.png}\\[2.25 cm]} 142 \centering 143 \textsc{\Large TA147}\\[0.2 cm] 144 \textsc{\large Taller de Sistemas Digitales}\\[2.25 cm] 145 \textcolor{cyan}{{ 146 \begin{minipage}{\textwidth} 147 \centering 148 \fontsize{26}{32}\selectfont \bfseries \thetitle 149 \end{minipage} 150 }}\\[1cm] 151 \vspace{1em} 152 {\Large \bfseries Primer Trabajo Práctico}\\[5cm] 153 154 \vfill 155 \noindent\makebox[\linewidth]{\rule{\textwidth}{0.4pt}}\\[0.5cm] 156 \begin{minipage}{.49\textwidth} 157 \textbf{Alumno}\\ 158 Klöckner, Martin Javier 159 \end{minipage}% 160 \begin{minipage}{.01\textwidth} 161 % \centering\textbf{Legajo}\\ 162 % 105378 163 \end{minipage}% 164 \vspace{1em} 165 \begin{minipage}{.50\textwidth} 166 \begin{flushright} 167 \textbf{Correo electrónico}\\ 168 \href{mailto:mklockner@fi.uba.ar}{mklockner@fi.uba.ar} \\ 169 \end{flushright} 170 \end{minipage} 171 \end{titlepage} 172 173 \setcounter{tocdepth}{2} 174 \hypersetup{linkcolor=black} % colorlinks=true option is used 175 \tableofcontents 176 \listoffigures 177 \pagebreak 178 179 % En el presente trabajo se realiza la implementación y sintesis de un dispositivo 180 % secuencial que permite controlar dos semaforos en una interseccion de calles. 181 182 En el presente trabajo se realiza el diseño, simulación y síntesis de un 183 sistema digital destinado al control de dos semaforos en una intersección. Se 184 emplea el lenguaje de descripción de hardware VHDL para modelar el sistema y la 185 herramienta de linea de comandos GHDL para la compilación y simulación del 186 diseño. Por ultimo se utiliza Vivado para realizar una síntesis sobre el 187 dispositivo xc7a15tftg256-1. 188 189 \hypertarget{introduccion}{% 190 \section{Introducción}\label{introduccion}} 191 192 % Por definición, la transferencia $H(s)$ de un sistema, es el cociente entre la 193 % entrada $X(s)$ y la salida $Y(s)$ del sistema, suponiendo que todas las 194 % condiciones iniciales son nulas, específicamente en el dominio de 195 % Laplace.\footnotemark[1] 196 El control de tráfico en intersecciones es un problema clásico en sistemas 197 digitales. La implementación mediante hardware programable permite obtener 198 soluciones eficientes, determinísticas y además flexibles. 199 200 El objetivo del trabajo, entonces, es diseñar e implementar un sistema digital 201 que controle el estado de dos semaforos en la intersección de dos calles. 202 203 \hypertarget{diseño}{% 204 \section{Diseño}\label{diseño}} 205 206 Para la implementación del control de los dos semáforos se modela al sistema 207 como una maquina de estados finita compuesta de seis estados cíclicos, en la que 208 cada estado representa una configuración de luces. Se considera que el estado de 209 cada semáforo es, ordenados en orden secuencial: solo luz roja encendida, luz 210 roja y amarilla encendida al mismo tiempo, solo luz verde encendida y solo luz 211 amarilla encendida. 212 213 El diagrama de estados de la maquina de estados diseñada se muestra en la figura 214 \ref{statechart}. 215 216 \begin{figure}[!ht] 217 \centering 218 \includegraphics[width=1.00\textwidth]{img/statechart_trim.png} 219 \caption{Diagrama de estados del control de semaforos} 220 \label{statechart} 221 \end{figure} 222 223 Donde los estados de la maquina de estados representan la configuración de 224 luces como se muestra a continuación: 225 226 \begin{itemize} 227 \item state\_1r\_2g: primer semáforo en rojo, segundo en verde. 228 \item state\_1r\_2y: primer semáforo en rojo, segundo en amarillo. 229 \item state\_1ry\_2r: primer semáforo en rojo y amarillo, segundo en rojo. 230 \item state\_1g\_2r: primer semáforo en verde, segundo en rojo. 231 \item state\_1y\_2r: primer semáforo en amarillo, segundo en rojo. 232 \item state\_1r\_2ry: primer semáforo en rojo, segundo en rojo y amarillo. 233 \end{itemize} 234 235 A cada estado del semanforo se asigna un valor de tiempo en segundos, para los 236 estados solo rojo o solo verde se asigna 30 segundos y para los estados que 237 involucran amarillo se asignan 2 segundos. 238 239 Dado que el dispositivo programable en el cual se sintetiza el diseño solo 240 dispone de una señal de reloj de frecuencia 50 MHz, se implementa un modulo de 241 reloj de tiempo real (Real Time Clock, RTC) que permita determinar la cantidad 242 de segundos reales. Luego este modulo RTC se combina con un modulo que cuenta la 243 cantidad de segundos en cada estado y genera una señal bandera (flag) que indica 244 que se debe cambiar de estado. 245 246 \hypertarget{implementacion}{% 247 \section{Implementación}\label{implementacion}} 248 249 Para la implementación del control de los dos semáforos, se divide la lógica 250 en distintos submódulos que interactúan entre sí. Y se integran estos submódulos 251 en un módulo principal denominado \code{intersection\_ctrl}. 252 253 El diseño se compone de las siguientes partes fundamentales, modeladas mediante 254 el lenguaje de descripción de hardware VHDL: \code{semaphore\_pkg}, \code{rtc}, 255 \code{cnt}, \code{semaphore} y \code{intersection\_ctrl}. 256 257 \hypertarget{semaphore\_pkg}{% 258 \subsection{semaphore\_pkg}\label{semaphore_pkg}} 259 260 En este paquete se definen los tipos de datos utilizados en el sistema. En 261 particular, se define el tipo enumerativo \code{state\_t}, el cual representa 262 los seis estados secuenciales y cíclicos de la máquina de estados. 263 264 \hypertarget{rtc}{% 265 \subsection{rtc}\label{rtc}} 266 267 Este módulo se utiliza para contar la cantidad de segundos reales, activando la 268 bandera \code{seg\_flag} por un ciclo de reloj en cada segundo. Para determinar 269 la cantidad de segundos se utiliza un contador que incrementa su valor en cada 270 ciclo de reloj hasta alcanzar el valor de \code{MAX\_CNT}. 271 272 \hypertarget{cnt}{% 273 \subsection{cnt}\label{cnt}} 274 275 Este modulo es el responsable de medir la duración de cada estado incrementando 276 un contador interno únicamente cuando es habilitado por la señal 277 \code{seg\_flag} que proviene del modulo RTC. El tiempo objetivo depende del 278 estado actual: en los estados con amarillo se utiliza una constante de 3 279 segundos (\code{YELLOW\_S}) y para los estados en verde o rojo se utiliza una 280 constante de 30 segundos (\code{RED\_GREEN\_S}). Al finalizar la cuenta se 281 activa la señal \code{state\_flag} para solicitar un cambio de estado. 282 283 \hypertarget{semaphore}{% 284 \subsection{semaphore}\label{semaphore}} 285 286 Este módulo implementa la lógica de control central, es decir, la maquina de 287 estados. Esta maquina de estados transiciona secuencialmente a través de los 288 seis estados únicamente cuando recibe la señal \code{state\_flag}. Además, 289 decodifica el estado actual para asignar los niveles lógicos a las salidas 290 físicas, controlando las luces roja, amarilla y verde de ambos semáforos. 291 292 \if{0} 293 \begin{figure}[!ht] 294 \centering 295 \includegraphics[width=1.00\textwidth]{img/statechart_trim.png} 296 \caption{Diagrama de estados del control de semáforos} 297 \label{statechart} 298 \end{figure} 299 \fi 300 301 \hypertarget{intersection\_ctrl}{% 302 \subsection{intersection\_ctrl}\label{intersection_ctrl}} 303 304 Este es el modulo principal o de nivel superior (\emph{top-level}) en el cual 305 este se instancian todos los submódulos, asignando las señales de entrada 306 y salida de cada modulo.. A través de este bloque se propaga el parámetro 307 genérico \code{MAX\_CNT} y se gestionan las señales internas \code{seg\_flag} y 308 \code{state\_flag}, las cuales permiten la comunicación entre los módulos 309 \code{rtc} y \code{cnt}; y la lógica de control final de las salidas físicas. 310 311 \hypertarget{simulacion}{% 312 \section{Simulación}\label{simulacion}} 313 314 Para realizar la simulación se creó un nuevo módulo 315 \code{intersection\_ctrl\_tb} en el cual se encapsula el sistema diseñado, esto 316 de manera de proporcionar señales ficticias que actúen como entradas y salidas. 317 Para evitar tener que simular por mas de 30 segundos, se cambio el parámetro 318 \code{MAX\_CNT} de 50e6 (1 segundo con frecuencia de reloj 50 MHz) por 319 10, de esta forma se activa la bandera de que ha pasado un segundo cada 5 ciclos 320 de reloj. 321 322 Como herramientas de simulación se utilizó \emph{GHDL} y \emph{make} para 323 organizar el proceso de análisis, elaboración y simulación del sistema, luego 324 para la síntesis se utilizó Vivado. Vivado también proporciona una opción 325 de simulación utilizando los mismos módulos, por lo que también se hicieron 326 pruebas allí para verificar el funcionamiento del diseño. Para la visualización 327 de las señales por fuera de Vivado, resultantes de la simulaion en \emph{GHDL}, 328 se utilizó \emph{surfer}, un programa similar a \emph{GTKWave}. Una vista de las 329 formas de onda resultantes de la simulación se muestra en la figura 330 \ref{waveform_view} a continuación, en la cual 1 segundo de tiempo real equivale 331 a 0.1 us en las vistas de las formas de onda. 332 333 \begin{figure}[!ht] 334 \centering 335 \includegraphics[width=1.00\textwidth]{img/waveform_view.png} 336 \caption{Resultado de las señales simuladas} 337 \label{waveform_view} 338 \end{figure} 339 340 \hypertarget{sintesis}{% 341 \section{Síntesis}\label{sintesis}} 342 343 Utilizando Vivado se realizo una síntesis del sistema sobre un dispositivo FPGA 344 modelo xc7a15tftg256-1. 345 346 % En el resultado de la síntesis se verificó que las 347 % lineas de clock y reset sean las mismas para todos los dispositivos dentro del 348 % diseño, verificando el correcto funcionamiento del diseño. 349 350 Luego de realizar la síntesis del sistema en Vivado para el dispositivo FPGA 351 xc7a15tftg256-1, se validó la integridad estructural del diseño. 352 Principalmente, se corroboró que las lineas de \code{clk} y \code{rst} fueran 353 distribuidas de manera global y uniforme a todos los bloques lógicos 354 (\code{rtc}, \code{cnt} y \code{semaphore}). Esta arquitectura garantiza un 355 comportamiento puramente sincrónico en toda el sistema, asegurando que el 356 sistema opere correctamente bajo restricciones temporales del hardware y además 357 que este libre de bucles combinacionales. 358 359 \hypertarget{conclusion}{% 360 \section{Conclusión}\label{conclusion}} 361 362 En este trabajo se logró implementar un controlador de dos semáforos para la 363 intersección de dos calles utilizando VHDL y validando el diseño mediante 364 simulación en GHDL y en Vivado. Por último se realizo una síntesis sobre el 365 dispositivo xc7a15tftg256-1. Con respecto a las maquinas de estados finitos, se 366 concluye que resultan adecuadas y muy útiles para este tipo de aplicaciones. 367 368 \end{document}
