\documentclass{article}

\usepackage{graphicx}
\usepackage{setspace}
\usepackage{listings}
\usepackage{color}
\usepackage{circuitikz}
\usepackage{float}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{basicstyle=\small,
        keywordstyle=\color{mauve},
        identifierstyle=\color{dkgreen},
        stringstyle=\color{gray},
        numbers=left
        }

\title{ECE 456 - Problem Set 1}
\date{2021-02-06}
\author{David Lenfesty \\ lenfesty@ualberta.ca
    \and Phillip Kirwin \\ pkirwin@ualberta.ca}

\setcounter{tocdepth}{2} % Show subsections

\begin{document}

    \doublespacing
    \pagenumbering{gobble}
    \maketitle
    \newpage

    \singlespacing
    \pagenumbering{arabic}

    \section{Introduction}

    The purpose of this lab was to design control circuits according to the provided
    specifications, and then verify their operation using a simulation or an FPGA.

    In the first part of the lab, a series of boolean expressions
    were designed to implement a Multiplexer/Demultiplexer circuit,
    intended to route data from one of three radio recievers to one
    of three engineers, and signal which engineer was currently
    recieving data.
    First, Xilinx Vivado Software was used to produce a circuit
    to fulfill this objective. Then, using the same software,
    the circuit was simulated against input combinations which
    would be encountered during normal use, for verification.

    For the second part of the lab, an Access Control circuit was to be designed,
    allowing lab entry only if a valid ID was provided alongside a proper keypad
    combination. Otherwise, an alarm signal was to be sent out.
    The method of designing this circuit was very similar to the method in part one:
    Again using Xilinx Vivado, the circuit was designed and simulated against inputs
    to verify if the outputs matched those in the specification.
    However, for this section, the design was also uploaded to a physical FPGA board
    where various could be manually tested and validated.

    \section{Design Section}

    In order to design the desired systems, the Xilinx Vivado software was
    used to write VHDL code that described the operation of each circuit.

    \newpage
    \paragraph{MUX / DEMUX Circuit}
    To implement the multiplexing/demultiplexing system, the following circuit had to be written in VHDL.

    The VHDL architecture below was written to implement this circuit in hardware.

    \begin{lstlisting}[language=MATLAB]
U0 = 0.25;
kBT = 0.025;
mu = 0;
cal_E = 0.2;

% Capacitance parameters

alpha_G = 0.5;
alpha_D = 0.5;
alpha_S = 1 - alpha_G - alpha_D;

% Energy grid in eV, from -1 eV to 1 eV

NE = 501;
E = linspace(-1,1,NE);
dE = E(2) - E(1);

% Gamma parameters, in eV

gamma_1 = 0.005;
gamma_2 = 0.005;
gamma = gamma_1 + gamma_2;
    \end{lstlisting}
    \newpage

\end{document}