gosha 0 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба type ipv4_rx_header_type is record is_valid : std_logic; protocol : std_logic_vector (7 downto 0); data_length : STD_LOGIC_VECTOR (15 downto 0); -- user data size, bytes src_ip_addr : STD_LOGIC_VECTOR (31 downto 0); num_frame_errors : std_logic_vector (7 downto 0); last_error_code : std_logic_vector (3 downto 0); -- see RX_EC_xxx constants is_broadcast : std_logic; -- set if the msg received is a broadcast end record; entity UDP_Complete_nomac is Port ( -- UDP TX signals .... udp_txi : in udp_tx_type; -- UDP tx cxns .... udp_rxo : out udp_rx_type; -- IP RX signals ip_rx_hdr : out ipv4_rx_header_type; .... ); end UDP_Complete_nomac; Здравствуйте. При использовании компонента UDP_Complete_nomac на VHDL из verilog, как подключить порты ip_rx_header из verilog или SV файла ? Или единственное решение: обертка на VHDL компонента UDP_Complete_nomac, в которой структуры разбиваются на отдельные std_logic_vector, и выводятся в описание портов как отдельные std_logic_vector ? Заранее спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба 3 hours ago, gosha said: Или единственное решение: обертка на VHDL компонента UDP_Complete_nomac, в которой структуры разбиваются на отдельные std_logic_vector, и выводятся в описание портов как отдельные std_logic_vector ? да Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба 50 minutes ago, des00 said: да Меня вот тоже этот вопрос интересовал, неужели получается никак нельзя VHDLную структуру засунуть в вериложный порт напрямую? Без оберток? А можно ли некую функцию написать или только лишь обертка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 января, 2019 Опубликовано 17 января, 2019 · Жалоба 12 minutes ago, AVR said: Меня вот тоже этот вопрос интересовал, неужели получается никак нельзя VHDLную структуру засунуть в вериложный порт напрямую? Без оберток? А можно ли некую функцию написать или только лишь обертка? совместимость есть на уровне кривого преобразования std_logic в wire/reg/logic/bit (кривое, потому что у std_logic 9 значений, а тут 4/4/4/2). user defined типы (кроме упакованных структур, которые переводятся в битовые вектора) в ручную. можно через функции, но в ручную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vengin 0 18 января, 2019 Опубликовано 18 января, 2019 · Жалоба Если примменительно к симуляции в Modelsim, то можно передавать VHDL packages в Verilog/SystemVerilog (с некоторыми ограничениями и конвертацией типов). Называется это всё "Sharing User-Defined Types". Необходимый VHDL package нужно компилить с флагом -mixedsvvh. Пример из user manual: Цитата Consider the following VHDL package that you want to use at a SystemVerilog-VHDL boundary: --/*----------pack.vhd---------------*/package pack is type st_pack is record a: bit_vector (3 downto 0); b: bit; c: integer; end record; constant c : st_pack := (a=>"0110", b=>'0', c=>4); end package; You must compile this package with the -mixedsvvh argument for vcom: vcom -mixedsvvh pack.vhd Import this package into the SystemVerilog design, as if it were a SystemVerilog package. --/*------VHDL_entity--------*/use work.pack.all; entity top is end entity; architecture arch of top is component bot port(in1 : in st_pack; in2 : bit_vector(1 to c.c); out1 : out st_pack); end component; begin end arch; /*------SV_file--------*/ import pack::*; // including the VHDL package in SV module bot(input st_pack in1, input bit [1:c.c] in2, output st_pack out1); endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться