% \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}