% vim: set ts=2 sw=2 noet:
\begin{tikzpicture}[
		dot/.style = {
			circle,
			fill = black, draw = black,
			minimum size = 1.5mm,
			outer sep = 0, inner sep = 0,
		},
		block/.style = {
			rectangle, draw, thick,
			black, fill = white,
			minimum height = 8mm, minimum width = 8mm,
		},
		prod/.style = {
			circle, draw, thick,
			black, fill = white,
			minimum size = 6mm,
			inner sep = 0, outer sep = 0,
		},
		sum/.style = {
			circle, draw, thick,
			black, fill = white,
			minimum size = 4mm,
		},
	]

	\matrix[column sep = 5mm, row sep = 3mm] {
		\node[block] (B0) {\(z^{-1}\)}; & \node[dot] (D0) {}; &
		\node[block] (B1) {\(z^{-1}\)}; & \node[dot] (D1) {}; &
		\node[block] (B2) {\(z^{-1}\)}; & \node[dot] (D2) {}; & \node (dots) {\ldots}; & 
		\node[block] (Bk) {\(z^{-1}\)}; & \node[dot] (Dk) {};
		\\
		& \node[prod] (P0) {\(\times\)}; &
		& \node[prod] (P1) {\(\times\)}; &
		& \node[prod] (P2) {\(\times\)}; & &
		& \node[prod] (Pk) {\(\times\)}; &
		\\
		& & & & \node[sum] (S) {\(\Sigma\)}; \\
	};

	\draw[thick]
		% tapped delayed line
		(B0.west) -- ++(-5mm,0) node[left] {\(s\)}
		(B0.east) -- (D0) -- (B1.west)
		(B1.east) -- (D1) -- (B2.west)
		(B2.east) -- (D2) -- (dots) -- (Bk.west) 
		(Bk.east) -- (Dk) -- ++(5mm,0)
		% taps asd sum
		(D0) -- (P0) |- (S)
		(D1) -- (P1) -- ++(0,-6mm) -- (S)
		(D2) -- (P2) -- ++(0,-6mm) -- (S)
		(Dk) -- (Pk) |- (S)
		% product weights
		(P0.west) -- ++(-3mm,0) node[left] {\(h_1\)}
		(P1.west) -- ++(-3mm,0) node[left] {\(h_2\)}
		(P2.west) -- ++(-3mm,0) node[left] {\(h_3\)}
		(Pk.west) -- ++(-3mm,0) node[left] {\(h_l\)}
		% result
		(S.south) |- ++(1cm,-3mm) node[right] {\(r\)}
	;

\end{tikzpicture}
