%\title{Demodulador QAM}
\documentclass[convert, transparent, 12pt]{standalone}
\usepackage{circuitikz, verbatim, fontspec}
\usepackage[utf8]{inputenc}
\setmainfont{Ubuntu-R.ttf}[Ligatures=TeX]
\begin{comment}
No se usa el paquete babel ya que entra en conflicto con circuitikz. Se usa el símbolo ° generado con el comando ^\circ dentro del modo matemático. Solo así pueden usarse las flechas dentro de los dipolos [phaseshifter], [lowpass] y [adc].
En los bloques FASE1 y PS1 las anclas de conexión no son norte (north) y sur (south), sino east (east) y oeste (west).
\end{comment}
\usetikzlibrary{backgrounds}
\begin{document}
% Diagrama de bloques de un demodulador QAM
\begin{circuitikz}[
thick,
show background rectangle,
background rectangle/.style={fill=yellow!20},
box/.style={draw, font=\itshape}
]
\draw
% Nodos que representan al oscilador local y dos mezcladores
(2,3) node[mixer](m1){}% Detector de producto 1
(2,-3) node[mixer,yscale=-1](m2){}% Detector de producto 2
(5,0) node[oscillator](o1){}% Oscilador local sincronizado
(4.5,0.5) node[above]{$f_{C}$} % Frecuencia del oscilador local
(2, -0.7) to[phaseshifter,>,n=FASE1]++(0,-1) % Desfasador
% Conexiones del oscilador local al desfasador y los detectores de producto
(o1.east) -| (m1.in2)
(o1.east) -| (FASE1.west)
(FASE1.east) -- (m2.in2)
(5,-1.2) node[left]{\large $\varphi=90 ^\circ$}
% Nodos de entrada
node[left,align=center, font=\bf] at(-3,0){Señal\\recibida}
(-3,0) to[short] ++(1,0)
to[twoport,t=DIV,>,n=DIV1]++(1,0)
(DIV1.east) to[short,-*] (0.25,0)
(m1.in1) -| (0.25,0) |- (m2.in1)
node[inputarrow] at(m1.in1){}
node[inputarrow] at(m2.in1){}
% Convertidor Paralelo a Serial (P/S)
(9,0.5) to[twoport,t=P/S,>,n=PS1]++(0,-1)
% Dipolos de la rama superior
(m1.out) to[lowpass,>] ++(4,0) % Filtro Pasabajo 1
to[adc,>] ++(1,0) -| (PS1.west)
% Dipolos de la rama inferior
(m2.out) to[lowpass,>] ++(4,0) % Filtro Pasabajo 2
to[adc,>] ++(1,0) -| (PS1.east)
% Colocación de nodos de flecha
node[inputarrow,rotate=-90] at(PS1.west){}
node[inputarrow,rotate=90] at(PS1.east){}
node[inputarrow,rotate=90] at(m1.in2){}
node[inputarrow,rotate=-90] at(m2.in2){}
% Etapa de salida
(PS1.north) -- ++(1,0) node[inputarrow]{}
node[right,align=center, font=\bf] {Flujo\\digital}
;
\end{circuitikz}
\end{document}