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

83 lines
5.4 KiB
TeX
Raw Normal View History

2022-12-13 12:01:06 +03:00
\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}