TA147

Ejecicios y trabajos prácticos de la materia Taller de Sistemas Digitales (TA147)
Index Commits Files Refs
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}