entity multiplier is
  port ( clk, reset : in bit;
         multiplicand, multiplier : in integer;
         product : out integer );
end entity multiplier;

--------------------------------------------------

architecture mixed of multiplier is

  signal partial_product, full_product : integer;
  signal arith_control, result_en, mult_bit, mult_load : bit;

begin -- mixed

  arith_unit : entity work.shift_adder(behavior)
    port map ( addend => multiplicand, augend => full_product,
               sum => partial_product,
               add_control => arith_control);

  result : entity work.reg(behavior)
    port map ( d => partial_product, q => full_product,
               en => result_en, reset => reset);

  multiplier_sr : entity work.shift_reg(behavior)
    port map ( d => multiplier, q => mult_bit,
               load => mult_load, clk => clk);

  product <= full_product;

  control_section : process is
    -- variable declarations for control_section
    -- . . .
  begin -- control section
    -- sequential statements to assign values to control signals
    -- . . .
    wait on clk, reset;
  end process control_section;

end architecture mixed;

<div align="center"><br /><script type="text/javascript"><!--
google_ad_client = "pub-7293844627074885";
//468x60, Created at 07. 11. 25
google_ad_slot = "8619794253";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />&nbsp;</div>