¿Cómo usar parámetros genéricos que dependen de otros parámetros genéricos para las entidades?

Estoy tratando de convertir un código de Verilog que produce un reloj más lento de un reloj más rápido para un módulo UART. El código original de verilog se basa en el módulo en fpga4fun.com, y este es mi intento de traducirlo para mi diseño basado en VHDL.

entity baud_generator is
generic(
    f_clk : integer := 50000000;  -- default: 50 MHz
    baud  : integer := 115200;    -- default: 115,200 baud
    accum_width : integer := 16;
    accum_inc : integer := (baud sll accum_width) / f_clk
);
port(
    clock : in std_logic;
    reset_n : in std_logic;
    enable : in std_logic;
    baud_clock : out std_logic
);  
end entity baud_generator;

Sin embargo, mi compilador, Aldec-HDL, no le gusta la siguiente línea:

 accum_inc : natural := (baud sll accum_width) / f_clk

Aquí está el mensaje de error exacto:

 # Error: COMP96_0300: baud_generator.vhd : (20, 52): Cannot reference "f_clk" until the interface list is complete.
 # Error: COMP96_0300: baud_generator.vhd : (20, 28): Cannot reference "baud" until the interface list is complete.
 # Error: COMP96_0071: baud_generator.vhd : (20, 28): Operator "sll" is not defined for such operands.
 # Error: COMP96_0104: baud_generator.vhd : (20, 27): Undefined type of expression.
 # Error: COMP96_0077: baud_generator.vhd : (20, 27): Assignment target incompatible with right side. Expected type 'INTEGER'.

En verilog, tengo algo como esto:

module baud_generator(
  input clock,
  input reset_n,
  input enable,
  output baud_clock
);
parameter f_clock = 50000000;
parameter baud    = 115200;
parameter accum_width = 16;
parameter accum_inc = (baud << accum_width) / f_clock;
//...
endmodule

¿Qué es lo que necesito modificar en esa línea para hacer feliz al compilador? ¿Es posible usar genéricos encadenados juntos de esa manera?

Respuestas a la pregunta(2)

Su respuesta a la pregunta