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

Передать структуру из компонентка VHDL в verilog или system_verilog

	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 ?

Заранее спасибо.

 

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


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

3 hours ago, gosha said:

Или единственное решение: обертка на VHDL компонента UDP_Complete_nomac, в которой структуры разбиваются на отдельные std_logic_vector, и выводятся в описание портов как отдельные std_logic_vector ? 

да

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


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

50 minutes ago, des00 said:

да

Меня вот тоже этот вопрос интересовал, неужели получается никак нельзя VHDLную структуру засунуть в вериложный порт напрямую? Без оберток? А можно ли некую функцию написать или только лишь обертка?

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


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

12 minutes ago, AVR said:

Меня вот тоже этот вопрос интересовал, неужели получается никак нельзя VHDLную структуру засунуть в вериложный порт напрямую? Без оберток? А можно ли некую функцию написать или только лишь обертка? 

совместимость есть на уровне кривого преобразования std_logic в wire/reg/logic/bit (кривое, потому что у std_logic 9 значений, а тут 4/4/4/2). user defined типы (кроме упакованных структур, которые переводятся в битовые вектора) в ручную. можно через функции, но в ручную.

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


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

Если примменительно к симуляции в 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

 

 

 

 

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


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

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

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

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

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

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

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

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

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

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