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

Смешанный проект

Добрый день!

В простом примере для вставки vhdl проекта в verilog достаточно описать

D1 name (
.clk(clock),
.d(DataIn),
.q(DataOut)
)

И это вполне работает. А как быть если модуль, написанный в vhdl, имеет параметр описанный generic?

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


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

В этом случае нужно сделать vhdl wrapper, в котором этот параметр назначается. Тогда всё сведется к вашему простому примеру.

 

А как быть если модуль, написанный в vhdl, имеет параметр описанный generic?

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


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

пример vhdl wrapper

 

library IEEE;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_1164.all;
ENTITY myadder8_top IS
PORT (
AP:  IN std_logic_vector(7 downto 0);
BP: IN std_logic_vector(7 downto 0);
C_INP: IN std_logic;
QP: OUT std_logic_VECTOR (8 downto 0);
CLKP: IN  std_logic);
END myadder8_top;

ARCHITECTURE use_core of myadder8_top IS

component myadder8
Generic(
DATA_WIDTH: integer := 3
);
port (
A: IN std_logic_VECTOR(7 downto 0);
B: IN std_logic_VECTOR(7 downto 0);
C_IN: IN std_logic;
Q: OUT std_logic_VECTOR(8 downto 0);
CLK: IN std_logic
);
end component;

BEGIN

myadder8_1 : myadder8
port map (
A => AP,
B => BP,
C_IN => C_INP,
Q => QP,
CLK => CLKP
);
end use_core;

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


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

Уточню, а то слишком скомкано описал.

Итак есть проект на vhdl в нем описан регистр с задаваемым параемтром

entity Reg is
generic(
    dwidth:natural:=8
);
Port(
  clk,ena:in std_logic;
  Din:in std_logic_vector(dwidth-1 downto 0);
  Dout:out std_logic_vector(dwidth-1 downto 0)
);

В проекте верхнего уровня на vhdl данный регистр вставляется так

component reg is
generic(
    dwidth:natural:=8
);
Port(
  clk,ena:in std_logic;
  Din:in std_logic_vector(dwidth-1 downto 0);
  Dout:out std_logic_vector(dwidth-1 downto 0)
);
begin
D1:Reg
generic map(
    dwidth=>8
)
Port map(
  clk=>clk,
  ena=>ena,
  Din=>Data,
  Dout=>Dout
);

С этим проблем нет. В любом новом проекте на vhdl мне достаточно заменить значение dwidth у конкретного компонента и все будет как надо.

Теперь другая сторона. Есть проект на verilog, он будет иметь верхний уровень. Есть необходимость в него встроить ранее созданный проект (вот пусть выше описанный reg с параметром dwidth)

Reg D1
//Что делать вот с этой частью взятой из vhdl?
generic map(
    dwidth=>8
)
//тут описываем соединение портов
(
  .clk(clk),
  .ena(ena),
  .Din(Data),
  .Dout(Dout)
);
Как задавать аналог generic map в верилоге?

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


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

Вам же Fat Robot уже всё ответил. Сделайте обёртку с параметрами.

 

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


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

я Вам привел пример обертки, далее для подсоединения в верилоге Вы уже используете порты vhdl wrapper (myadder8_top - в моем примере)

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


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

module Reg
#(
    parameter dwidth = 8
)
(
  .clk(clk),
  .ena(ena),
  .Din(Data),
  .Dout(Dout)
);

up_counter #(.dwidth(dwidth )) Instance_0
(
  .clk(clk),
  .ena(ena),
  .Din(Data),
  .Dout(Dout)
)

endmodule

 

 

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


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

Приветствую!

 

Если тип параметров в модуле VHDL простой (std_logic, std_logic_vector, integer, ...) и напрямую мапится в Verilog

то вставляете vhdl модуль как обычный модуль Verilog с соответствующими параметрами .

 

Успехов! Rob.

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


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

Спасибо всем за подсказки.

Искал как раз строку #(parameter name=x).

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


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

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

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

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

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

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

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

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

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

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