86 lines
6.5 KiB
TeX
86 lines
6.5 KiB
TeX
\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{Самостоятельная подготовка}
|
||
Вариант 9 для первой группы $x_n = 9 * 3 - 21 = 6$.
|
||
|
||
\begin{figure}[H]
|
||
\centering
|
||
\resizebox{\textwidth}{!}{\input{pics/03-fpga-04-sigdel.pgf}}
|
||
\caption{1}
|
||
\label{pic:1}
|
||
\end{figure}
|
||
|
||
\begin{enumerate}
|
||
\item $x_n = 6, \varepsilon_n = 127$, уровень квантования 127;
|
||
\item $u_{n + 1} = x_n - \varepsilon_n = 6 – 127 = -121$, при этом $\varepsilon_n = -128-(-121)=-7$, а уровень квантования -128;
|
||
\item $u_{n + 2} = x_n - \varepsilon_n = 6 – (–7) = 13$, при этом $\varepsilon_n = 127 - 13 = 104$, а уровень квантования 127;
|
||
\item $u_{n + 3} = x_n - \varepsilon_n = 6 – 104 = -98$, при этом $\varepsilon_n= -128-(-98) = -30$, а уровень квантования -128;
|
||
\item $u_{n + 4} = x_n - \varepsilon_n = 26 – (–30) = 106$, при этом ξn= 127-106 = 11, а уровень квантования 127 F: Un+1=XN-ξn=26 – 11 = 15, при этом ξn= 127-15 = 112, а уровень квантования 127
|
||
G: Un+1=XN-ξn=26 – 112 = -86, при этом ξn= -128-(-86) = -42, а уровень квантования -128 H: Un+1=XN-varepsilonn=26 – (–42) = 88, при этом ξn= 127-88 = 39, а уровень квантования 127
|
||
\end{enumerate}
|
||
|
||
\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}
|