Перейти к содержанию
    

Объявление генериков

в модуле

module eth_mac_1g_rgmii_fifo #
(
    // target ("SIM", "GENERIC", "XILINX", "ALTERA")
    parameter TARGET = "GENERIC",
    // IODDR style ("IODDR", "IODDR2")
    // Use IODDR for Virtex-4, Virtex-5, Virtex-6, 7 Series, Ultrascale
    // Use IODDR2 for Spartan-6
    parameter IODDR_STYLE = "IODDR2",
    // Clock input style ("BUFG", "BUFR", "BUFIO", "BUFIO2")
    // Use BUFR for Virtex-6, 7-series
    // Use BUFG for Virtex-5, Spartan-6, Ultrascale
    parameter CLOCK_INPUT_STYLE = "BUFG",
    // Use 90 degree clock for RGMII transmit ("TRUE", "FALSE")
    parameter USE_CLK90 = "TRUE",
    parameter AXIS_DATA_WIDTH = 8,
    parameter AXIS_KEEP_ENABLE = (AXIS_DATA_WIDTH>8),
    parameter AXIS_KEEP_WIDTH = (AXIS_DATA_WIDTH/8),
    parameter ENABLE_PADDING = 1,
    parameter MIN_FRAME_LENGTH = 64,
    parameter TX_FIFO_DEPTH = 4096,
    parameter TX_FIFO_RAM_PIPELINE = 1,
    parameter TX_FRAME_FIFO = 1,
    parameter TX_DROP_OVERSIZE_FRAME = TX_FRAME_FIFO,
    parameter TX_DROP_BAD_FRAME = TX_DROP_OVERSIZE_FRAME,
    parameter TX_DROP_WHEN_FULL = 0,
    parameter RX_FIFO_DEPTH = 4096,
    parameter RX_FIFO_RAM_PIPELINE = 1,
    parameter RX_FRAME_FIFO = 1,
    parameter RX_DROP_OVERSIZE_FRAME = RX_FRAME_FIFO,
    parameter RX_DROP_BAD_FRAME = RX_DROP_OVERSIZE_FRAME,
    parameter RX_DROP_WHEN_FULL = RX_DROP_OVERSIZE_FRAME
)

в компоненте

component eth_mac_1g_rgmii_fifo 
generic
(
    TARGET                 : string; 
    IODDR_STYLE            : string;  
    CLOCK_INPUT_STYLE      : string;  
    USE_CLK90              : string;  
    AXIS_DATA_WIDTH        : integer; 
    AXIS_KEEP_ENABLE       : integer; 
    AXIS_KEEP_WIDTH        : integer; 
    ENABLE_PADDING         : integer; 
    MIN_FRAME_LENGTH       : integer; 
    TX_FIFO_DEPTH          : integer;
    TX_FIFO_RAM_PIPELINE   : integer;  
    TX_FRAME_FIFO          : integer;  
    TX_DROP_OVERSIZE_FRAME : integer;  
    TX_DROP_BAD_FRAME      : integer; 
    TX_DROP_WHEN_FULL      : integer; 
    RX_FIFO_DEPTH          : integer; 
    RX_FIFO_RAM_PIPELINE   : integer; 
    RX_FRAME_FIFO          : integer; 
    RX_DROP_OVERSIZE_FRAME : integer; 
    RX_DROP_BAD_FRAME      : integer;  
    RX_DROP_WHEN_FULL      : integer 
);

делаю мап

U_ETH_MAC : eth_mac_1g_rgmii_fifo
generic map
(
    TARGET            => "GENERIC",
    IODDR_STYLE       => "IODDR",
    CLOCK_INPUT_STYLE => "BUFR",
    USE_CLK90         => "TRUE",
    AXIS_DATA_WIDTH   => 8,
    AXIS_KEEP_ENABLE  => AXIS_DATA_WIDTH>8,
    AXIS_KEEP_WIDTH   => AXIS_DATA_WIDTH/8,
    ENABLE_PADDING    => 1,
    MIN_FRAME_LENGTH  => 64,
    TX_FIFO_DEPTH     => 4096,
    TX_FIFO_RAM_PIPELINE => 1,
    TX_FRAME_FIFO     => 1,
    TX_DROP_OVERSIZE_FRAME => TX_FRAME_FIFO,
    TX_DROP_BAD_FRAME => TX_DROP_OVERSIZE_FRAME,
    TX_DROP_WHEN_FULL => 0,
    RX_FIFO_DEPTH          => 4096,
    RX_FIFO_RAM_PIPELINE   => 1,
    RX_FRAME_FIFO          => 1,
    RX_DROP_OVERSIZE_FRAME => RX_FRAME_FIFO,
    RX_DROP_BAD_FRAME      => RX_DROP_OVERSIZE_FRAME,
    RX_DROP_WHEN_FULL      => RX_DROP_OVERSIZE_FRAME
)

получаю

Quote

Error (10482): VHDL error at mac_udp.vhd(599): object "AXIS_DATA_WIDTH" is used but not declared
Error (10482): VHDL error at mac_udp.vhd(600): object "AXIS_DATA_WIDTH" is used but not declared
Error (10482): VHDL error at mac_udp.vhd(606): object "TX_FRAME_FIFO" is used but not declared
Error (10482): VHDL error at mac_udp.vhd(607): object "TX_DROP_OVERSIZE_FRAME" is used but not declared
Error (10482): VHDL error at mac_udp.vhd(612): object "RX_FRAME_FIFO" is used but not declared
Error (10482): VHDL error at mac_udp.vhd(613): object "RX_DROP_OVERSIZE_FRAME" is used but not declared
Error (10482): VHDL error at mac_udp.vhd(614): object "RX_DROP_OVERSIZE_FRAME" is used but not declared
 

в чём тут дело? я не могу приравнять один генерик к другому? он его не видит?

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так ведь AXIS_DATA_WIDTH это параметр внутри eth_mac_1g_rgmii_fifo, а снаружи он как будет виден?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 1/26/2023 at 4:56 PM, gridinp said:

так ведь AXIS_DATA_WIDTH это параметр внутри eth_mac_1g_rgmii_fifo, а снаружи он как будет виден?

в смысле? также как и все другие.

если вместо

AXIS_DATA_WIDTH   => 8,
AXIS_KEEP_ENABLE  => AXIS_DATA_WIDTH>8,
AXIS_KEEP_WIDTH   => AXIS_DATA_WIDTH/8,

RX_DROP_OVERSIZE_FRAME => RX_FRAME_FIFO,
RX_DROP_BAD_FRAME      => RX_DROP_OVERSIZE_FRAME,
RX_DROP_WHEN_FULL      => RX_DROP_OVERSIZE_FRAME

я напишу

AXIS_DATA_WIDTH   => 8,
AXIS_KEEP_ENABLE  => 0,
AXIS_KEEP_WIDTH   => 1,

RX_DROP_OVERSIZE_FRAME => 1,
RX_DROP_BAD_FRAME      => 1,
RX_DROP_WHEN_FULL      => 1

то всё скомпилируется.

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

конечно, если до U_ETH_MAC : объявить константу AXIS_DATA_WIDTH  := 8; и .т. д. тоже будет компилироваться.

Изменено пользователем gridinp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...