Source: https://www.les-electroniciens.com/sites/default/files/cours/cours-vhdl-10-partie6-combinatoire-sequentiel.pdf