From b312dca6a3f46172eb14de72c1895522a1858755 Mon Sep 17 00:00:00 2001 From: Arthur HUGEAT Date: Wed, 10 Apr 2019 17:22:56 +0200 Subject: [PATCH] Ajout de MIN/100. --- ifcs2018_journal.tex | 106 ++++++++++++++++++++++++++++++++++----------------- images/min_100.pdf | Bin 0 -> 29435 bytes 2 files changed, 71 insertions(+), 35 deletions(-) create mode 100644 images/min_100.pdf diff --git a/ifcs2018_journal.tex b/ifcs2018_journal.tex index 5d09450..895a6bf 100644 --- a/ifcs2018_journal.tex +++ b/ifcs2018_journal.tex @@ -710,15 +710,16 @@ find an optimal solution faster. This section presents the results of the complementary quadratic program aimed at minimizing the area occupation for a targeted rejection level. -The experimental setup is also composed of three cases. The raw input is the same +The experimental setup is composed of four cases. The raw input is the same as in the previous section, from a PRN generator, which fixes the input data size $\Pi^I$. -Then the targeted rejection $\mathcal{R}$ has been fixed to either 40, 60 or 80~dB. -Hence, the three cases have been named: MIN/40, MIN/60, MIN/80. +Then the targeted rejection $\mathcal{R}$ has been fixed to either 40, 60, 80 or 100~dB. +Hence, the three cases have been named: MIN/40, MIN/60, MIN/80 and MIN/100. The number of configurations $p$ is the same as previous section. Table~\ref{tbl:gurobi_min_40} shows the results obtained by the filter solver for MIN/40. Table~\ref{tbl:gurobi_min_60} shows the results obtained by the filter solver for MIN/60. Table~\ref{tbl:gurobi_min_80} shows the results obtained by the filter solver for MIN/80. +Table~\ref{tbl:gurobi_min_100} shows the results obtained by the filter solver for MIN/100. \renewcommand{\arraystretch}{1.4} @@ -777,13 +778,32 @@ Table~\ref{tbl:gurobi_min_80} shows the results obtained by the filter solver fo \end{tabular} } \end{table} + +\begin{table}[h!tb] + \caption{Configurations $(C_i, \pi_i^C, \pi_i^S)$, rejections and areas (in arbitrary units) for MIN/100} + \label{tbl:gurobi_min_100} + \centering + {\scalefont{0.77} + \begin{tabular}{|c|ccccc|c|c|} + \hline + $n$ & $i = 1$ & $i = 2$ & $i = 3$ & $i = 4$ & $i = 5$ & Rejection & Area \\ + \hline + 1 & - & - & - & - & - & - & - \\ + 2 & (15, 7, 17) & (51, 14, 0) & - & - & - & 100~dB & 1365 \\ + 3 & (3, 3, 15) & (27, 9, 0) & (27, 9, 0) & - & - & 100~dB & 1002 \\ + 4 & (3, 3, 15) & (31, 9, 0) & (19, 7, 0) & (3, 3, 0) & - & 101~dB & 909 \\ + 5 & (3, 3, 15) & (23, 8, 1) & (19, 7, 0) & (3, 3, 0) & (3, 3, 0) & 101~dB & 810 \\ + \hline + \end{tabular} + } +\end{table} \renewcommand{\arraystretch}{1} -% JMF : je croyais que dans un cas le monolithique n'y arrivait juste pas : tu as retire' ce cas ? -From these tables, we can first state that all configurations reach the targeted rejection +From these tables, we can first state that almost configurations reach the targeted rejection level or even better thanks to our underestimate of the cascade rejection as the sum of the -individual filter rejection -% we have stages lesser is the area occupied in arbitrary unit. JMF : je ne comprends pas cette phrase +individual filter rejection. The only exception is for the monolithic case ($n = 1$) in +MIN/100. With our filter configurations there is no solution able to reach 100~dB of rejection. +% we have stages lesser is the area occupied in arbitrary unit. JMF : je ne comprends pas cette phrase, AH: C'est déjà dit à la dernière phrase de ce paragraphe Futhermore, the area of the monolithic filter is twice as big as the two cascaded filters (1131 and 1760 arbitrary units v.s 547 and 903 arbitrary units for 60 and 80~dB rejection respectively). More generally, the more filters are cascaded, the lower the occupied area. @@ -806,6 +826,7 @@ given by the quadratic solver. Figure~\ref{fig:min_40} shows the rejection of the different configurations in the case of MIN/40. Figure~\ref{fig:min_60} shows the rejection of the different configurations in the case of MIN/60. Figure~\ref{fig:min_80} shows the rejection of the different configurations in the case of MIN/80. +Figure~\ref{fig:min_100} shows the rejection of the different configurations in the case of MIN/100. \begin{figure} \centering @@ -828,40 +849,51 @@ Figure~\ref{fig:min_80} shows the rejection of the different configurations in t \label{fig:min_80} \end{figure} +\begin{figure} +\centering +\includegraphics[width=\linewidth]{images/min_100} +\caption{Signal spectrum for MIN/100} +\label{fig:min_100} +\end{figure} + We observe that all rejections given by the quadratic solver are close to the experimentally measured rejection. All curves prove that the constraint to reach the target rejection is -respected with both monolithic or cascaded filters. +respected with both monolithic (except in MIN/100 which has no monolithic solution) or cascaded filters. -Table~\ref{tbl:resources_usage} shows the resource usage in the case of MIN/40, MIN/60 and -MIN/80 \emph{i.e.} when the target rejection is fixed to 40, 60 and 80~dB. We +Table~\ref{tbl:resources_usage} shows the resource usage in the case of MIN/40, MIN/60; +MIN/80 and MIN/100 \emph{i.e.} when the target rejection is fixed to 40, 60, 80 and 100~dB. We have taken care to extract solely the resources used by the FIR filters and remove additional processing blocks including FIFO and PL to PS communication. +\renewcommand{\arraystretch}{1.2} \begin{table} \caption{Resource occupation. The last column refers to available resources on a Zynq-7010 as found on the Redpitaya.} \label{tbl:resources_usage_comp} \centering - \begin{tabular}{|c|c|ccc|c|} + {\scalefont{0.90} + \begin{tabular}{|c|c|cccc|c|} \hline - $n$ & & MIN/40 & MIN/60 & MIN/80 & \emph{Zynq 7010} \\ \hline\hline - & LUT & 343 & 334 & 772 & \emph{17600} \\ - 1 & BRAM & 1 & 1 & 1 & \emph{120} \\ - & DSP & 27 & 39 & 55 & \emph{80} \\ \hline - & LUT & 1252 & 2862 & 5099 & \emph{17600} \\ - 2 & BRAM & 2 & 2 & 2 & \emph{120} \\ - & DSP & 0 & 0 & 0 & \emph{80} \\ \hline - & LUT & 891 & 2148 & 2023 & \emph{17600} \\ - 3 & BRAM & 3 & 3 & 3 & \emph{120} \\ - & DSP & 0 & 0 & 19 & \emph{80} \\ \hline - & LUT & 662 & 1729 & 2451 & \emph{17600} \\ - 4 & BRAM & 4 & 4 & 4 & \emph{120} \\ - & DPS & 0 & 0 & 7 & \emph{80} \\ \hline - & LUT & - & 1259 & 2602 & \emph{17600} \\ - 5 & BRAM & - & 5 & 5 & \emph{120} \\ - & DPS & - & 0 & 0 & \emph{80} \\ \hline + $n$ & & MIN/40 & MIN/60 & MIN/80 & MIN/100 & \emph{Zynq 7010} \\ \hline\hline + & LUT & 343 & 334 & 772 & - & \emph{17600} \\ + 1 & BRAM & 1 & 1 & 1 & - & \emph{120} \\ + & DSP & 27 & 39 & 55 & - & \emph{80} \\ \hline + & LUT & 1252 & 2862 & 5099 & 640 & \emph{17600} \\ + 2 & BRAM & 2 & 2 & 2 & 2 & \emph{120} \\ + & DSP & 0 & 0 & 0 & 66 & \emph{80} \\ \hline + & LUT & 891 & 2148 & 2023 & 2448 & \emph{17600} \\ + 3 & BRAM & 3 & 3 & 3 & 3 & \emph{120} \\ + & DSP & 0 & 0 & 19 & 27 & \emph{80} \\ \hline + & LUT & 662 & 1729 & 2451 & 2893 & \emph{17600} \\ + 4 & BRAM & 4 & 4 & 4 & 4 & \emph{120} \\ + & DPS & 0 & 0 & 7 & 19 & \emph{80} \\ \hline + & LUT & - & 1259 & 2602 & 2505 & \emph{17600} \\ + 5 & BRAM & - & 5 & 5 & 5 & \emph{120} \\ + & DPS & - & 0 & 0 & 19 & \emph{80} \\ \hline \end{tabular} + } \end{table} +\renewcommand{\arraystretch}{1} If we keep the previous estimation of cost of one DSP in terms of LUT (1 DSP $\approx$ 100 LUT) the real resource consumption decreases as a function of the number of stages in the cascaded @@ -873,22 +905,26 @@ filters is less than expected. Finally, table~\ref{tbl:area_time_comp} shows the computation time to solve the quadratic program. +\renewcommand{\arraystretch}{1.2} \begin{table}[h!tb] \caption{Time to solve the quadratic program with Gurobi} \label{tbl:area_time_comp} \centering -\begin{tabular}{|c|c|c|c|}\hline -$n$ & Time (MIN/40) & Time (MIN/60) & Time (MIN/80) \\\hline\hline -1 & 0.07~s & 0.02~s & 0.01~s \\ -2 & 7.8~s & 16~s & 14~s \\ -3 & 4.7~s & 14~s & 28~s \\ -4 & 39~s & 20~s & 193~s \\ -5 & 126~s & 12~s & 170~s \\\hline +{\scalefont{0.90} +\begin{tabular}{|c|c|c|c|c|}\hline +$n$ & Time (MIN/40) & Time (MIN/60) & Time (MIN/80) & Time (MIN/100) \\\hline\hline +1 & 0.07~s & 0.02~s & 0.01~s & - \\ +2 & 7.8~s & 16~s & 14~s & 1.8~s \\ +3 & 4.7~s & 14~s & 28~s & 39~s \\ +4 & 39~s & 20~s & 193~s & 522~s ($\approx$ 9~min) \\ +5 & - & 12~s & 170~s & 1048~s ($\approx$ 17~min) \\\hline \end{tabular} +} \end{table} +\renewcommand{\arraystretch}{1} The time needed to solve this configuration is significantly shorter than the time -needed in the previous section. Indeed the worst time in this case is only 3~minutes, +needed in the previous section. Indeed the worst time in this case is only 17~minutes, compared to 3~days in the previous section: this problem is more easily solved than the previous one. diff --git a/images/min_100.pdf b/images/min_100.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9e51e703792382049ab2062b1a1dfefa04adabd0 GIT binary patch literal 29435 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 J^nw}7{{j-