1 |
2 |
plutonium |
\documentclass[a4paper,BCOR7mm,12pt,pointlessnumbers,bibtotoc]{scrartcl}
|
2 |
|
|
|
3 |
|
|
\usepackage{amsmath,epsfig}
|
4 |
|
|
\usepackage{amssymb,amsfonts}
|
5 |
|
|
\usepackage{color}
|
6 |
|
|
\usepackage{array,booktabs}
|
7 |
|
|
\usepackage{graphicx}
|
8 |
|
|
\usepackage{caption}
|
9 |
|
|
\usepackage[hypcap=true,labelformat=simple]{subcaption}
|
10 |
|
|
\renewcommand{\thesubfigure}{(\alph{subfigure})}
|
11 |
|
|
\usepackage{tikz}
|
12 |
|
|
\usetikzlibrary{arrows,automata}
|
13 |
|
|
\usepackage{listings}
|
14 |
|
|
\usepackage{hyperref}
|
15 |
|
|
\usepackage{enumitem}
|
16 |
|
|
|
17 |
|
|
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}} % centering column type with fixed width
|
18 |
|
|
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}} % right aligned column type with fixed width
|
19 |
|
|
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} % left aligned column type with fixed width
|
20 |
|
|
|
21 |
|
|
\newcommand{\ceil}[1]{\left\lceil #1 \right\rceil} %\left\lceil #1 \right\rceil
|
22 |
|
|
|
23 |
|
|
\begin{document}
|
24 |
|
|
%\maketitle
|
25 |
|
|
\begin{center}
|
26 |
|
|
\Large Efficient Booth Array Multiplier for Xilinx FPGAs\\[0.4cm]
|
27 |
|
|
\large Martin Kumm \\[0.5cm]
|
28 |
|
|
\large \today \\[0.5cm]
|
29 |
|
|
\end{center}
|
30 |
|
|
|
31 |
|
|
\section{Introduction}
|
32 |
|
|
|
33 |
|
|
This IP core provides a resource efficient implementation of a Booth Array Multiplier for Xilinx FPGAs. For details about the architecture see \cite{kaz15}.
|
34 |
|
|
|
35 |
|
|
\section{Interface}
|
36 |
|
|
|
37 |
|
|
The top level entity is found in \verb|mult_booth_array.vhd|. The generics as well as the portare described in Table~\ref{tab:generics} and Table~\ref{tab:port}, respectively.
|
38 |
|
|
|
39 |
|
|
\begin{table}[!h]
|
40 |
|
|
\renewcommand{\arraystretch}{1.1}
|
41 |
|
|
\caption{Description of the generics}
|
42 |
|
|
\label{tab:generics}
|
43 |
|
|
\centering
|
44 |
|
|
\begin{tabular}{lccL{7cm}}
|
45 |
|
|
\toprule
|
46 |
|
|
Generic & Type & Default & Description\\
|
47 |
|
|
\cmidrule(rl){1-1} \cmidrule(rl){2-2} \cmidrule(rl){3-3} \cmidrule(rl){4-4}
|
48 |
|
|
\verb|word_size_a| & integer & 8 & Input word size operand $A$\\
|
49 |
|
|
\verb|word_size_b| & integer & 8 & Input word size operand $B$\\
|
50 |
|
|
\verb|sync_in_out| & boolean & false & If true, registers are placed at inputs and outputs (for timing results)\\
|
51 |
|
|
\verb|use_pipelining| & boolean & true & If true, the multiplier is internally pipelined (highly recommented)\\
|
52 |
|
|
\bottomrule
|
53 |
|
|
\end{tabular}
|
54 |
|
|
\end{table}
|
55 |
|
|
|
56 |
|
|
\begin{table}[!h]
|
57 |
|
|
\renewcommand{\arraystretch}{1.1}
|
58 |
|
|
\caption{Description of the port}
|
59 |
|
|
\label{tab:port}
|
60 |
|
|
\centering
|
61 |
|
|
\begin{tabular}{lcccL{5cm}}
|
62 |
|
|
\toprule
|
63 |
|
|
Generic & Direction & Type & Word Size & Description\\
|
64 |
|
|
\cmidrule(rl){1-1} \cmidrule(rl){2-2} \cmidrule(rl){3-3} \cmidrule(rl){4-4} \cmidrule(rl){5-5}
|
65 |
3 |
plutonium |
\verb|clk_i| & in & \verb|sl| & 1 & Clock input (used when \verb|use_pipelining=true| or \verb|sync_in_out=true|)\\
|
66 |
|
|
\verb|rst_i| & in & \verb|sl| & 1 & Reset input (used when \verb|use_pipelining=true| or \verb|sync_in_out=true|)\\
|
67 |
|
|
\verb|ce_i| & in & \verb|sl| & 1 & Clock enable input (used when \verb|use_pipelining=true| or \verb|sync_in_out=true|)\\
|
68 |
|
|
\verb|a_i| & in & \verb|slv| & \verb|word_size_a| & Input operand $A$\\
|
69 |
|
|
\verb|b_i| & in & \verb|slv| & \verb|word_size_b| & Input operand $B$\\
|
70 |
|
|
\verb|p_o| & out & \verb|slv| & \verb|word_size_a+word_size_b| & Product output $P=A \times B$\\
|
71 |
2 |
plutonium |
\bottomrule
|
72 |
|
|
\end{tabular}
|
73 |
|
|
\end{table}
|
74 |
|
|
|
75 |
|
|
|
76 |
|
|
\section{Simulation \& Test}
|
77 |
|
|
|
78 |
|
|
For simulation and test, the testbench (\verb|tb_mult_booth_array.vhd|) was created which uses a random number generator together with assert statements to verify the designs (against a naive VHDL multiplication).
|
79 |
|
|
|
80 |
|
|
\bibliographystyle{alpha}
|
81 |
|
|
\bibliography{booth_array_multiplier}
|
82 |
|
|
|
83 |
|
|
\end{document}
|
84 |
|
|
|
85 |
|
|
|
86 |
|
|
|