% \title{Demodulador GMSK}
\documentclass[12pt]{standalone}
\usepackage{circuitikz, fontspec, verbatim}
\setmainfont{Ubuntu-B.ttf} % Archivo de fuente negrilla Ubuntu para etiquetas de nodos.
\begin{comment}
Este esquema muestra el diagrama de bloques de un Demodulador GMSK, en el cual la señal recibida se divide en dos y alimenta dos detectores de producto que mezclan la señal recibida con idéntica portadora pero con desfase de 90 grados en la rama inferior. Las salidas de los detectores (I y Q) pasan a través de filtros pasabajos y alimentan al bloque Generador de fase, cuya salida pasa a través de un circuito derivador del cual se obtiene la señal de datos. El Generador de fase se encarga de calcular las fases, mediante la operación trigonométrica:
$
tan^{-1}(x)=\frac{I}{Q}
$
No se usa el paquete babel ya que entra en conflicto con circuitikz e impide visualizar las flechas de los distintos nodos. El diagrama fue adaptado de la página web http://www.rfwireless-world.com/Terminology/MSK-GMSK.html y fue compilado con una versión del paquete Circuitikz anterior a la 0.6 por lo que puede haber diferencias en la orientación de las flechas procedentes del oscilador local.
\end{comment}
\begin{document}
\begin{circuitikz}[thick]
\draw
% Nodos que representan al oscilador local y dos detectores de producto
(2,3) node[mixer](mix1){}% Detector de producto 1
(2,-3) node[mixer,yscale=-1](mix2){}% Detector de producto 2
(5.5,0) node[oscillator](osc){}% Oscilador local sincronizado
(5,0.5) node[above]{$f_{C}$} % Frecuencia del oscilador local
(2, -0.7) to[phaseshifter, >, n=fase]++(0,-1) % Desfasador
% Nodos de entrada
node[left,align=center, font=\bf] at(-4,0){Señal\\recibida}
(-4,0) to[short] ++(1,0)
to[twoport,t=DIV,>,n=div]++(1,0) % Divisor de la señal recibida
(div.east) to[short,-] (-0.7,0)
(mix1.in1) -| (-0.7,0) |- (mix2.in1)
node[inputarrow] at(mix1.in1){}
node[inputarrow] at(mix2.in1){}
% Conexiones del oscilador local al desfasador y los detectores de producto
(osc.east) -| (mix1.in2)
(osc.east) -| (fase.west)
(fase.east) -- (mix2.in2)
(5.1,-1.2) node[left]{\large $\varphi=90^\circ$}
% Rama superior
(mix1.out) to[lowpass,>,n=fpb1] ++(5,0) % Filtro Pasabajo 1
% Rama inferior
(mix2.out) to[lowpass,>,n=fpb2] ++(5,0) % Filtro Pasabajo 2
% Generador de fases
node[draw, line width=2pt, align=center, font=\bf, minimum height=2cm, minimum width=2cm] at(8,0)(genf){Generador\\de fase}
(fpb1.east) -| (genf.north)
(fpb2.east) -| (genf.south)
node[font=\bf] at($(fpb1.east)+(0.5,0.5)$) {$I$}
node[font=\bf] at($(fpb2.east)+(0.5,0.5)$) {$Q$}
% Colocación de nodos de flecha
node[inputarrow,rotate=-90] at(genf.north){}
node[inputarrow,rotate=90] at(genf.south){}
node[inputarrow,rotate=90] at(mix1.in2){}
node[inputarrow,rotate=-90] at(mix2.in2){}
% Etapa de salida
(genf.east) to[twoport,t=\bf \Large{${d} \over {dt}$},>,n=der]++(4,0) node[inputarrow]{}
% Bloque derivador
node[right, align=center, font=\bf] {Señal\\de datos}
;
\end{circuitikz}
\end{document}