Jump to content
    

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

в модуле

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
 

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

Edited by jenya7

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Edited by jenya7

Share this post


Link to post
Share on other sites

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

Edited by gridinp

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...