How to use general parameters that depend on other general parameters for objects?

I am trying to convert some Verilog code that produces a slower clock with a faster clock for the UART module. Verilog source code is based on a module on fpga4fun.com, and this is my attempt to translate it for my VHDL based project.

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;

However, my Aldec-HDL compiler does not like the following line:

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

Here is the exact error message:

 # 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'.

In verilog, I have something like this:

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

What do I need to change on this line to make the compiler happy? Can generic drugs be used together?

+3
source share
2 answers

, ( ) .

accum_inc , .

, SLL (shift logic left) (unsigned signed ieee.numeric_std ieee.numeric_bit), . , .

+6

, accum_inc , ( , )

, - (, , ):

constant accum_inc : integer := (baud * (2**accum_width)) / f_clk;

, , integer , , , unsigned / .

+2

All Articles