% \title{Modulador QAM}
\documentclass[convert, transparent, 12pt]{standalone}
\usepackage{circuitikz, verbatim, fontspec}
\setmainfont{Ubuntu-R.ttf}[Ligatures=TeX]
\usetikzlibrary{backgrounds}
\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 en los dipolos [phaseshifter], [lowpass] y [dac]
\end{comment}
% Estilo de bloque sumador
\tikzstyle{suma} = [draw, line width=1.5pt, circle, minimum size=1cm]
\begin{document}
\begin{circuitikz}[
thick,
show background rectangle,
background rectangle/.style={fill=yellow!20},
box/.style={draw, font=\itshape}
]
\draw
% Nodos de entrada y conversor serie a paralelo
node[left,align=center, font=\bf] at(-1,0){Flujo \\de datos} % Flujo de datos de entrada
(-1,0) to[short,o-] ++(0.2,0)
to[twoport,t=S/P,>,n=SP1]++(2.5,0) % Conexión al convertidor Serial a Paralelo
% Conexiones hasta los convertidores [dac]
(SP1.east) to[short,-*] (2,0) --(2,3) -- (2,-3)
% Nodos que representan un oscilador local y dos mezcladores
(6,0) node[oscillator](o1){} % Oscilador
(5.5,0.5) node[above]{$f_{C}$} % Frecuencia f_{C} del mezclador
(7.5,3) node[mixer](m1){} % Mezclador 1
(7.5,-3) node[mixer,yscale=-1](m2){} % Mezclador 2
(7.5, -0.7) to[phaseshifter,>,n=FASE1]++(0,-1) -- (m2.in2) % Conexiones al desfasador y mezclador 2
% Salida del oscilador al desfasador y al mezclador 1
(o1.west) -| (m1.in2) node[inputarrow] at(m2.in1){}
(o1.west) -| (FASE1.west) % Conexión al desfasador
(6.5,-1.2) node[left]{\large $\varphi=90 ^{\circ}$} % Etiqueta del desfase a 90°
node[suma] at(10,0)(sum1){\Large$\Sigma$}
node[inputarrow] at(m1.in1){}
node[inputarrow,rotate=90] at(m1.in2){}
node[inputarrow,rotate=-90] at(m2.in2){}
(m1.out) to [short]++(2,0) -| (sum1.north) node[inputarrow, rotate=-90] {}
(m2.out) to [short]++(2,0) -| (sum1.south) node[inputarrow, rotate=90] {}
(sum1.east) -- ++(1,0) node[inputarrow, rotate=0]{}
;
\draw
% Dipolos de la rama superior
(2,3) to[dac,>] ++(3,0)
to[lowpass,>] ++(1,0)
to (m1.in1)
% Dipolos de la rama inferior
(2,-3) to[dac,>] ++(3,0)
to[lowpass,>] ++(1,0)
to (m2.in1)
% Etapa de salida
node[right,align=center, font=\bf] at(11.5,0){Salida\\QAM}
;
\end{circuitikz}
\end{document}