\documentclass{scrartcl}

\usepackage{tabularx}
\usepackage{ngerman}
\usepackage{graphicx}
\usepackage[latin1]{inputenc}

\begin{document}

\title{CPLD Auswahl und Design}
\author{Sascha Schade DL1DRS}
\maketitle

\begin{abstract}
Für ein software defined radio (SDR) wurde ein verstellbarer Taktgenerator, der den Analogschalter speist, als Design für einen CPLD synthetisiert und ein passender Baustein ausgewählt. Der \textbf{Xilinx CPLD XC9536XL-5VQG44C} (Digikey 122-1465-ND, 1.09 Euro) erfüllt die Anforderungen. Ein weiterer geeigneter Baustein ist der Altera CPLD EPM3032ATC44-4, der jedoch bei Digikey (544-1152-ND) bereits 1.82 Euro kostet. 
Dieser Bericht fasst einige Ergebnisse der Entwicklung zusammen.
\end{abstract}

\section{Motivation}
Für das Bastelprojekt des diesjährigen Fichtenfielddays wird ein kostengünstiges SDR entwickelt.
Das bisherige Design nutzt mehrere TTL Gatter, um den Takt für den Analogschalter bereitzustellen. Die Auswahl verschiedener
Vorteiler erfolgt mittels Steckbrücken.

Ziel war es, die Taktgenerierung in einem Baustein zu integrieren und gleichzeitig die Vorteilerauswahl elektronisch umzusetzen.
Von der Implementierung in einem CPLD werden folgende Vorteile erwartet:
\begin{itemize}
	\item Reduzierung der Baugröße
	\item Steigerung der Signalintegrität
	\item Wegfall der Steckbrücken
	\item Erweiterung des Vorteilerbereichs
\end{itemize}
Wegen des begrenzten Kostenrahmens soll der Ersatz kostenneutral sein.

\section{Umsetzung}
\subsection{Schaltungsaufgabe}
Die vier Analogschalter müssen einzeln nacheinander angeschaltet werden. Der vom Oszillator bereitgestellte Takt kann zwischen 10~und~160~MHz gewählt werden. Dadurch ergibt sich (ohne weiteren Vorteiler) ein Empfangsbereich zwischen 2.5~und~40~MHz.

Mit den Vorteilern 1, 4, 16 und 64 l"asst sich ein Frequenzbereich von 39~kHz bis 40~MHz abdecken. Zur Ansteuerung gen"ugen zwei Leitungen. Die einzelnen Bereiche sind in Tabelle~\ref{tab:div} dargestellt. 

\begin{table}%
	\centering
	\begin{tabularx}{0.85\textwidth}{Xcrrr}
		\hline
		\texttt{div} & Vorteiler & $f$ bei 10~MHz & $f$ bei 160~MHz & $T$ bei 160 MHz\\
		\hline
		00 & 1	& 2.5 MHz & 40.0 MHz & 25 ns\\
		01 & 4 & 625 kHz & 10.0 MHz & 100 ns\\
		10 & 16 & 156 kHz & 2.5 MHz & 400 ns\\
		11 & 64 & 39 kHz & 625 kHz & 1.6 $\mu$s\\
		\hline
	\end{tabularx}
	\caption{Frequenzbereiche bei verschiedenen Vorteilern}
	\label{tab:div}
\end{table}

\subsection{Schaltungsumsetzung}
Die Schaltung wurde als strikt synchrones Design in VHDL umgesetzt. Alle Register werden mit dem Systemtakt betrieben. Das Design lässt sich sowohl mit der Toolkette von Altera als auch von Xilinx synthetisieren. Die VHDL Datei \texttt{clockgen.vhd} liegt unter \texttt{Software/CPLD}. Die herstellerspezifischen Dateien liegen in \texttt{Software/CPLD/Altera} bzw. \texttt{Software/CPLD/Xilinx}. Beide Projekte sind so eingerichtet, dass die auf die selbe Datei zugreifen, ihre projektspezifischen Dateien jedoch im jeweiligen Unterverzeichnis ablegen. 

Auf Vorschlag von DF9DQ wurde statt der "ublichen Bin"arz"ahler Grayz"ahler eingesetzt. Der mittlere Stromverbrauch des CPLD wird wesentlich von der mittleren Anzahl toggelnder Flipflops pro Takt bestimmt. Beim Binärzähler liegt dieser Wert bei knapp unter zwei, beim Gray-Zähler ist er exakt eins. Dadurch soll die dynamische Stromaufnahme reduziert werden. 

Ein synchroner 6-bit-Grayz"ahler arbeitet als Vorteiler (\texttt{prescaler}). Von ihm wird ein enable Signal (\texttt{ce}) abgeleitet, das einen weiteren synchronen 2-bit-Grayz"ahler ansteuert. Dieses enable Signal abzuleiten ist bei dem Greyz"ahler aufw"andiger und erfordert ein weiteres Register. Die Frequenz dieses enable Signales kann durch einen Eingang (\texttt{div}) aus vier verschiedenen Werten ausgew"ahlt werden. Von dem 2-bit-Z"ahler wird schlie"slich das Ausgabemuster abgeleitet. Die Ausg"ange sind f"ur eine m"oglichst geringe relative Verz"ogerung noch durch ein Register gef"uhrt. 

Die Schaltung hat bewusst keinen Reset Eingang. Moderne Bausteine initialisieren alle Register beim Einschalten auf definierte Werte, die bei der Signaldeklaration im VHDL Quelltext angegeben wurden (bzw 0, wenn kein Wert angegeben wurde). F"ur die XC9500XL Serie ist dies im Datenblatt DS054 ``XC9500XL High-Performance CPLD Family Data Sheet'' auf Seite 4 unten dokumentiert

Der Einsatz eines expliziten Resets ben"otigt ggf. zus"atzliche Ressourcen im Baustein. Auch kann das L"osen des Resets (Flanke $1\rightarrow 0$) als asynchrones Ereignis zu undefiniertem Verhalten f"uhren. Dies ist ausf"uhrlich im Xilinx White Paper 272 diskutiert.

\section{Bauteilauswahl}
Von den CPLDs kamen nur die g"unstigsten Bausteine im Preisbereich ein bis zwei Euro in Frage. Die beiden Marktf"uhrer sind Altera und Xilinx, daher wurden auch nur Bausteine dieser Hersteller ber"ucksichtigt. Um Platinenplatz einzusparen und gleichzeitig noch die L"otbarkeit f"ur Unge"ubte zu gew"ahrleisten, soll ein TQFP Geh"ause gew"ahlt werden. PLCC ist zu gro"s, QFN ist zu schwer zu l"oten.

Das gesamte SDR wird mit 3.3 Volt betrieben, daher sind von Xilinx die Serien XC9500 (5 Volt) und CoolRunner-II (1.8 Volt Corespannung) ungeeignet. Die Serien MAX~7000 und MAX~II von Altera sind zu teuer. "Ubrig bleiben die Serien XC9500XL (3.3 Volt) von Xilinx und MAX~3000A von Altera. Die kleinsten und somit g"unstigsten Bausteine sind XC9536XL (Xilinx) und EPM3032 (MAX~3000A Serie von Altera).

Da der Oszillator bis 160~MHz schwingen kann, muss das CPLD diese Geschwindigkeit verarbeiten k"onnen. Bei Altera muss mindestens der Speedgrade 4~ns gew"ahlt werden, bei Xilinx Speedgrade 5~ns. 

Somit fiel die Wahl auf XC9536XL-5VQG44C von Xilinx und EPM3032ATC44-4 von Altera. Die Beschaffbarkeit und die Preise wurden bei Digikey Deutschland gepr"uft. Auf diese Serien gibt es dort keinen Mengenrabatt. Eine explizite Preisanfrage wurde durchgef"uhrt, die auch keinen Mengenrabatt ergab. 

Das Design musste umgesetzt werden, um zu pr"ufen, ob die Ressourcen des gew"ahlten Bausteines ausreichen und ob der l"angste Pfad in der Logik schnell genug ist, um auch bei maximaler Frequenz des Oszillators zu keinen Timingverletzungen zu f"uhren. 

\section{Ergebnisse}
\subsection{Synthese}
In Abbildung~\ref{fig:altera_rtl} ist die Umsetzung durch das Altera Tool auf Registerebene gezeigt und in Abbildung~\ref{fig:altera_technology_post_fit} auf Technologieebene. 
Die Ergebnisse bei Xilinx unterscheiden sich davon kaum und sind in den Abbildungen~\ref{fig:xilinx_rtl} und~\ref{fig:xilinx_tech} abgedruckt.

\begin{figure}[ht]
	\centering
		\includegraphics[angle=90,height=0.9\textheight]{pics/altera_rtl.pdf}
	\caption{Register Transfer Level der Altera Implementation}
	\label{fig:altera_rtl}
\end{figure}

\begin{figure}[ht]
	\centering
		\includegraphics[angle=90,height=0.9\textheight]{pics/altera_technology_post_fit.pdf}
	\caption{Technologie Umsetzung bei Altera nach dem Fitten}
	\label{fig:altera_technology_post_fit}
\end{figure}

\begin{figure}[ht]
	\centering
		\includegraphics[angle=90,height=0.9\textheight]{pics/xilinx_rtl.pdf}
	\caption{Register Transfer Level der Xilinx Implementation}
	\label{fig:xilinx_rtl}
\end{figure}

\begin{figure}[ht]
	\centering
		\includegraphics[angle=90,height=0.9\textheight]{pics/xilinx_technology.pdf}
	\caption{Technologie Umsetzung bei Xilinx}
	\label{fig:xilinx_tech}
\end{figure}


\subsection{Erreichbare Clock Frequenzen}
Die maximalen Frequenzen, die bei der Simulation mit den Werkzeugen der beiden Hersteller durchgef"uhrt wurden, sind in Tabelle~\ref{tab:speed} und die Ausnutzung der Bausteine in Tabelle~\ref{tab:res} aufgef"uhrt.

\begin{table}[ht]
	\centering
	\begin{tabularx}{0.9\textwidth}{Xrclr}
		\hline
		Device & Speedgrade & $f_{\mbox{max}}$ & Digikey & EUR/100  \\
		\hline
		Altera EPM3032   & 10 ns   & 103.09~MHz & 544-1151-ND & 1.06 \\
		                 & 7 ns    & 138.89~MHz & 544-1153-ND & 1.10 \\
		                 & 4 ns    & 227.27~MHz & 544-1152-ND & 1.82 \\
	  Altera EPM7032AE &         &            &             & $\geq 1.82$\\
	 	Xilinx XC9536XL  & 10 ns   & 100.00~MHz & 122-1385-ND & 0.81 \\
		                 &  7.5 ns & 125.00~MHz & 122-1437-ND & 0.87 \\
		                 &  5 ns   & 178.57~Mhz & 122-1465-ND & 1.09 \\
		\hline
	\end{tabularx}	
	\caption{Erreichbare Clock Frequenzen}
	\label{tab:speed}
\end{table}

\subsection{Bauteilausnutzung}
\begin{table}[ht]%
	\centering
	\begin{tabular}{lcc}
		\hline
		Baustein & Makrozellen\\
		\hline
		Altera EPM3032ATC44-4 & 15/32 (47\%)\\
		Xilinx XC9536XL-5VQG44C &  15/36 (42\%)\\
		\hline
	\end{tabular}
	\caption{Ausnutzung der Bausteine}
	\label{tab:res}
\end{table}


\section{Diskussion}

Die erreichbare Frequenz der Clock wird bei Xilinx durch die minimale Pulsbreite des Clock Signals begrenzt, nicht durch den längsten Pfad innerhalb des Designs. 
Das Design erreicht also die maximal mögliche Frequenz auf dem Chip.

Bei Altera ist die maximale Frequenz durch den Z"ahler begrenzt. Auch hier gibt es keinen anderen Pfad, der die Geschwindigkeit des Designs begrenzt.

Die als Randbedingung vorgegebene Taktfrequenz von 160~MHz wurde von beiden Tools als erreichbar zugesichert.

Sowohl die Funktionale Simulation beider Umsetzungen als auch die Simulation nach dem Fitten hat das gew"unschte Muster an den vier Ausg"angen gezeigt. Ausdrucke aus Modelsim liegen als PDF im Dokumentationsordner. 

\section{Zusammenfassung und Ausblick}
Das Design wurde erfolgreich f"ur zwei Bausteine umgesetzt und simuliert. Das gew"ahlte CPLD ist g"unstig und "uber Digikey leicht in St"uckzahlen zu beschaffen. Die Beschaffung einzelner
Bausteine f"ur einen Test vor dem Einsatz im Prototyp ist noch nicht gekl"art.

Ein abschlie"sender Test mit realer Hardware muss durchgef"uhrt werden. Es wird erwartet, dass dies die Ergebnisse aus den Simulationen best"atigen werden. 
Mehr als die H"alfte der Ressourcen in beiden Bausteinen ist ungenutzt. Dies erm"oglicht noch weitere Funktionen im CPLD zu integrieren. Folgende Weiterentwicklungen sind denkbar:
\begin{itemize}
	\item Eine Auswahl des Teilers durch ein serielles Protokoll. 
	\item Durch die Nutzung der positiven und negativen Flanke des Oszillators könnte die maximale Empfangsfrequenz auf 80~MHz verdoppelt werden (DDR Register).
	\item Vorteiler in 16-er Schritten k"onnten gen"ugen, da der Verh"altnis zwischen maximaler und minimaler Frequenz des Oszillators gerade 16 ist. 
	\item Nutzung eines Enable Einganges, um die Z"ahler anzuhalten. Dies k"onnte den Stromverbrauch im Standby senken.
\end{itemize}

\section*{Anhang}
\subsection*{Pinbelegung XC9536}
Die Lage der I/O Pins kann im Design fast frei gew"ahlt werden. Der Oszillator muss an eine der globalen Taktleitungen angeschlossen werden. Dies kann beim TQFP Geh"ause (VQ44) Pin 43, 44 oder 1 sein. Da ein 3.3~Volt Betrieb vorgesehen ist, muss $V_{CCINT}$ (Pin 15 und 35) auch mit 3.3~Volt verbunden werden.

Weitere Pins sind schon mit einer dedizierten Funktion (Versorgung, JTAG) belegt. Dies ist im Datenblatt \texttt{xilinx-xc9536xl-datasheet-ds056.pdf} auf Seite~6 unten dokumentiert.

\end{document}
