В Verilog я могу определить параметр, а затем использовать его для определения другого параметра. Например:
module stuff1 #(
parameter AW = 16,
parameter DW = 16,
parameter FW = AW + DW + 2,
) (
input wire [AW-1:0] adr,
input wire [DW-1:0] dat,
output wire [FW-1:0] fifo
);
endmodule
Как я могу сделать что-то похожее в VHDL generic? Пример:
library ieee;
use ieee.std_logic_1164.all;
entity stuff1 is
generic(
AW : integer := 15;
DW : integer := 15;
FW : integer := AW + DW + 2
);
port(
adr : in std_logic_vector(AW-1 downto 0);
dat : in std_logic_vector(DW-1 downto 0);
fifo : out std_logic_vector(FW-1 downto 0)
);
end entity;
architecture rtl of stuff1 is
begin
end architecture;
Когда я пытаюсь скомпилировать этот код, я получаю следующую ошибку в VHDL:
..\..\simtools\ghdl\bin\ghdl.exe -a bus_direct_server.vhdl
stuff1.vhdl: generic "aw" is not visible here
stuff1.vhdl: generic "dw" is not visible here
Мне интересно, возможно ли в VHDL автоматически вычислять параметр FW из AW и DW? или Верилог был более притягателен в этом случае?