\documentclass[a4paper,fontsize=14bp]{article} \input{settings/common-preamble} \input{settings/fancy-listings-preamble} \input{settings/bmstu-preamble} \setcounter{secnumdepth}{4} \numerationTop \begin{document} \thispagestyle{empty} \makeBMSTUHeader \makeReportTitle{лабораторной}{4}{Проектирование цифрового синтезатора}{Проектирование цифровых устройств на \\ программируемых логических интегральных схемах (ПЛИС)}{}{С.В. Фёдоров} \newpage \pagestyle{fancy} \section{Цель} Осуществить полный цикл проектирования цифрового устройства на ПЛИС на языке SystemVerilog. Реализовать генератор периодических функций на основе метода прямого цифрового синтеза на микросхеме семейства Cyclone IV E. \section{Задачи} Прямой цифровой синтез -- это метод генерации сигнала заданной формы путём вычисления значений сигнала в последовательных дискретных отсчётах времени и преобразовании их в аналоговый сигнал с помощью ЦАП. Структура системы приведена на рис \hrf{pic:synth-scheme}. \begin{figure}[H] \centering \fontsize{14}{1}\selectfont \includesvg[scale=1.01]{pics/03-fpga-lab-04-01-synth.svg} \caption{Схема цифрового синтезатора} \label{pic:pic:synth-scheme} \end{figure} Инкремент фазы поступает на вход накопителя фазы и определяет скорость изменения фазы формируемого сигнала. Накопитель фазы выдаёт номер текущего отсчёта в периоде на просмотровую таблицу, содержащую образ одного периода синуса. Значение с выхода просмотровой таблицы поступает на дельта-сигма модулятор, который работает как однобитный ЦАП. Модулятор формирует последовательность нулей и единиц на высокой частоте, соответствующую текущему уровню на входе модулятора, после чего двухуровневый выходной сигнал модулятора подается на выход ПЛИС и сглаживается простым RC фильтром НЧ. При изменении приращения фазы изменяется частота формируемого на выходе сигнала. \section{Выполнение работы} \subsection{Разработка модулей} \subsubsection{Накопитель фазы} \textbf{Интерфейс модуля} \begin{frm} \begin{itemize} \item [] \textbf{Входы:} \code{phinc[7:0]} -- величина приращения фазы за один период тактового сигнала; \code{clk} -- тактовый сигнал; \code{clr_n} -- вход асинхронного сброса; \item [] \textbf{Выходы:} \code{phase[7:0]} -- 8 старших значащих битов выхода накопителя; \item [] \textbf{Параметры:} \code{WIDTH} -- разрядность накопителя фазы (значение по умолчанию -- 14). \end{itemize} \end{frm} \textbf{Принцип действия} Накопитель фазы -- это классический аккумулятор, который сохраняет накопленную сумму в регистре и использует её в качестве одного из операндов сумматора на каждом такте. Второй операнд поступает с входа и определяет величину приращения фазы. Разрядность аккумулятора должна быть параметризирована. Входные значения складываются с младшими битами регистра аккумулятора, а на выход поступают старшие 8 разрядов аккумулятора, поэтому при разрядности аккумулятора M и значении N на входе приращения фазы выход фазы будет увеличиваться на единицу один раз в $2^{(M-8)}/N$ тактов. \section{Индивидуальное задание} \section{Выводы} \newpage \appendix \setcounter{secnumdepth}{4} \section{Приложения} \subsection{Исходные коды проекта} \label{appendix:src} % \lstinputlisting[language=Verilog,style=VerilogStyle,caption={Семафор},label={lst:dec}]{src/dec.sv} % \lstinputlisting[language=C,style=CCodeStyle,caption={\code{sem.c}},label={lst:sem}]{src/sem.c} \end{document}