BMSTU/03-fpga-lab-02-report.tex

83 lines
5.4 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[a4paper,fontsize=14bp]{article}
\input{../common-preamble}
\input{../fancy-listings-preamble}
\input{../bmstu-preamble}
\setcounter{secnumdepth}{4}
\numerationTop
\begin{document}
\thispagestyle{empty}
\makeBMSTUHeader
\makeReportTitle{лабораторной}{1}{Моделирование компонент систем на кристалле}{Проектирование цифровых устройств на \\ программируемых логических интегральных схемах (ПЛИС)}{}{С.В. Фёдоров}
\newpage
\thispagestyle{empty}
\tableofcontents
\newpage
\pagestyle{fancy}
\section{Цель}
Изучить методики моделирования компонент систем на кристалле с интерфейсами Avalon-MM. Освоить методику интеграции компонент в системы на кристалле.
\section{Задачи}
Для достижения цели было описано несколько задач, каждая со своей целью.
\begin{enumerate}
\item \textbf{Создание простых тестбенчей.} Цель: получение навыков реализации тестбенчей, эмулирующих транзакции в соответствии со спецификацией Avalon-MM. Моделирование обмена с разрабатываемыми модулями систем на кристалле.
\item \textbf{Создание простой системы на кристалле и интеграция пользовательских модулей.} Цель: получение базовых навыков конфигурации системы на кристалле на основе процессора NiosII в средстве Platform Designer. Подготовка проекта системы на кристалле для использования в следующих лабораторных работах.
\item \textbf{Моделирование систем на кристалле в ModelSim.} Цель: Подготовка созданного проекта к моделированию. Изучение методики моделирования систем на кристалле в пакете ModelSim с процессором, исполняющим программный код из внутренней памяти SRAM.
\item \textbf{Самостоятельная работа.}
\end{enumerate}
\section{Выполнение работы}
По шагам из методического материала был создан проект в САПР Quartus Prime (доступен по \href{https://git.iovchinnikov.ru/ivan-igorevich/fpga-lab-2/commits/branch/simulation}{ссылке}). В начальном проекте «поезд проезжал через семафор» задолго до инициализации (переход сигнала \code{run} в высокий уровень), поэтому цикл прохода поезда в тестбенче всего проекта (\code{niosII_tb.sv}) был изменён и представлен в листинге \hrf{lst:main-train}.
\begin{lstlisting}[language=Verilog,style=VerilogStyle,caption={Изменённый основной цикл тестового стенда},label={lst:main-train}]
initial begin
train = 0;
wait (niosii_inst_reset_bfm_reset_reset);
forever begin
repeat(22528) @(posedge niosii_inst_clk_bfm_clk_clk);
train = 1;
repeat(10) @(posedge niosii_inst_clk_bfm_clk_clk);
train = 0;
end
end
\end{lstlisting}
В результате моделирования была получена диаграмма работы (waveform), представленная на рисунке \hrf{pic:modelsim-before}.
\begin{figure}[H]
\centering
\includegraphics[width=\textwidth]{03-fpga-lab-02-beforeindividual.png}
\caption{Диаграмма Modelsim}
\label{pic:modelsim-before}
\end{figure}
\section{Индивидуальное задание}
В качестве индивидуальных были даны следующие задания:
\begin{enumerate}
\item расширить разрядность памяти хранения до 32 бит и на запись и на чтение, чтобы изменения были видны на светодиодах.
\item добавить регистр (помимо \code{ctl} и \code{divider}). Если там 0, то схема должна работать без изменений, а если 1, должен подключаться режим мигающего жёлтого с длительностью, которая берётся из памяти (параметр зелёного цвета), то есть мигать циклически со следующей периодичностью:
\begin{tikztimingtable}
length & 5D{green} 5D{green} 5D{green} 5D{green} 5D{green} 5D{green}\\
yellow & 5L 5H 5L 5H 5L 5H \\
\end{tikztimingtable}
\end{enumerate}
\section{Выводы}
\newpage
\appendix
\setcounter{secnumdepth}{4}
\section{Приложения}
\renewcommand{\thesubsection}{\Asbuk{subsection}}
\subsection{Исходные коды проекта}
\label{appendix:src}
\end{document}