OpenCores
URL https://opencores.org/ocsvn/dds_synthesizer/dds_synthesizer/trunk

Subversion Repositories dds_synthesizer

[/] [dds_synthesizer/] [trunk/] [doc/] [dds_synthesizer.tex] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 plutonium
\documentclass[a4paper,BCOR7mm,12pt,pointlessnumbers,bibtotoc]{scrartcl}
2
% Define German as thesis language
3
%\usepackage{german}
4
 
5
\usepackage{latexsym,alltt,
6
            textcomp, float}
7
 
8
% Codierung
9
\usepackage[latin1]{inputenc}
10
 
11
% zusaetzliche Symbole
12
\usepackage{textcomp, latexsym}
13
 
14
% Grafiken
15
\usepackage{graphicx, psfrag}
16
 
17
% "H"-Option für Gleitumgebungen
18
\usepackage{float}
19
 
20
% Gleitumgebungen nach Referenz platzieren
21
\usepackage{flafter}
22
 
23
% lange Tabellen
24
\usepackage{longtable}
25
 
26
%Mathematik
27
\usepackage{amsmath}
28
\usepackage{amsfonts}
29
\usepackage{amssymb}
30
 
31
% pdftex
32
\usepackage{hyperref}
33
 
34
% neue deutsche Rechtschreibung
35
%\usepackage{ngerman}
36
 
37
% zusätzliche Spaltendefinitionen für Tabellen
38
\usepackage{array}
39
 
40
% Darstellung mehrerer Bilder als ein Objekt
41
\usepackage{subfigure}
42
 
43
% Drehen von Grafiken (turn,rotate)
44
\usepackage{rotating}
45
 
46
% Weitere Symbole
47
%\usepackage{psnfss}
48
\usepackage{pifont}
49
 
50
%Farben
51
\usepackage{color}
52
 
53
% Absatzabstand etwas groesser
54
\addtolength{\parskip}{1.1ex}
55
 
56
% Blocksatz erzwingen
57
\sloppy
58
 
59
% Abstand zweier Listenelemente kleiner
60
\setlength{\itemsep}{0ex plus0.2ex}
61
 
62
% "Rahmenabstand" für gerahmte Gleichungen
63
\setlength{\fboxsep}{10pt}
64
 
65
\begin{document}
66
%\maketitle
67
\begin{center}
68
\Large Direct Digital Synthesizer IP Core\\[0.4cm]
69
\large Martin Kumm \\[0.5cm]
70
\large \today \\[0.5cm]
71
%\Large 19.12.2007 \\[1.0cm]
72
\end{center}
73
 
74
%\tableofcontents
75
%\newpage
76
 
77
The DDS IP core (\verb|dds_synthesizer|) is a implementation of a direct digital frequency synthesizer (DDS) (also called number controlled oscillator, NCO) which produces a sinewave at the output with a specified frequency and phase (adjustable at runtime). The resolution of the frequency tuning word (FTW), the phase and the amplitude are defined seperately. While the FTW resolution can be set by the generic \verb|ftw_width|, phase and amplitude resolution are defined as constants \verb|phase_width| and \verb|ampl_width| in the seperate package \verb|sine_lut_pkg|. This is generated by a matlab script (\verb|matlab/sine_lut_gen.m|), the m-files are described in their headers. The most relevant LUTs (in the range 8...16Bit) have been generated and are located in the ``\verb|VHDL/sine_lut|'' folder. The nomenclature of the files is \verb|sine_<phase_width>_x_<amplitude_width>_pkg.vhd|. By adding one of these files to the project, the resolution of phase and amplitude is automatically defined.
78
 
79
Figure 1 shows a block diagram of the implemented DDS synthesizer. The signals \verb|clk| and \verb|reset| are not shown here. The resolution parameters have been renamed (\verb|ftw_width|=N, \verb|phase_width|=M and \verb|amplitude_width|=P). Only the first period of the sinewave is stored in the LUT, the two most significant bits of the phase word are used either to shift the input value or to invert the output amplitude, depending on the quadrant of the sinewave. The LUT is clocked, so the total delay from input to output is 3 clock cycles.
80
\begin{figure}[H]
81
  \centering
82
    \includegraphics[width=14cm]{images/dds_implementation}
83
  \caption{Block diagram of the DDS implementation}
84
  \label{fig:dds_implementation}
85
\end{figure}
86
 
87
The output frequency will be determined by the FTW (\verb|ftw_i|)
88
\begin{equation}
89
  f_{DDS}=\frac{FTW}{2^M} f_s \ \ .
90
  \label{equ:ftw}
91
\end{equation}
92
The initial phase (when using more than one synthesizer) can be set by setting the PTW (\verb|phase_i|) to
93
\begin{equation}
94
  \varphi_{DDS}=\frac{PTW}{2^N} 2 \pi \ \ .
95
  \label{equ:ptw}
96
\end{equation}
97
 
98
A Testbench is realized in \verb|dds_synthesizer_tb.vhd|, the corresponding Modelsim project can be found in the \verb|/sim| folder. The ports of the entity are described in Table~\ref{tab:ports}.
99
 
100
\begin{table}[H]
101
  \centering
102
    \begin{tabular}{l|c|c|l}
103
      \hline
104
      \hline
105
        Name & Direction & Wordsize & Description \\
106
        \hline
107
        \verb|clk_i|   & \verb|in|  & 1                  & clock \\
108
        \verb|rst_i|   & \verb|in|  & 1                  & reset  \\
109
        \verb|ftw_i|   & \verb|in|  & \verb|ftw_width|   & Frequency Tuning Word, see Formula (\ref{equ:ftw})  \\
110
        \verb|phase_i| & \verb|in|  & \verb|phase_width| & Phase Tuning Word, see Formula (\ref{equ:ptw})  \\
111
        \verb|phase_o| & \verb|out| & \verb|phase_width| & Instantaneous Phase Output  \\
112
        \verb|ampl_o|  & \verb|out| & \verb|ampl_width | & Amplitude Output  \\
113
      \hline
114
      \hline
115
    \end{tabular}
116
  \caption{Entity port description}
117
  \label{tab:ports}
118
\end{table}
119
 
120
%\bibliographystyle{alpha}
121
%\bibliography{dsp_4_sdr}
122
 
123
\end{document}
124
 
125
 
126
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.