Александр77 1 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба Добрый день! В простом примере для вставки vhdl проекта в verilog достаточно описать D1 name ( .clk(clock), .d(DataIn), .q(DataOut) ) И это вполне работает. А как быть если модуль, написанный в vhdl, имеет параметр описанный generic? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FatRobot 0 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба В этом случае нужно сделать vhdl wrapper, в котором этот параметр назначается. Тогда всё сведется к вашему простому примеру. А как быть если модуль, написанный в vhdl, имеет параметр описанный generic? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба пример 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба Уточню, а то слишком скомкано описал. Итак есть проект на 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 в верилоге? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба Вам же Fat Robot уже всё ответил. Сделайте обёртку с параметрами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба я Вам привел пример обертки, далее для подсоединения в верилоге Вы уже используете порты vhdl wrapper (myadder8_top - в моем примере) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба Понял. Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба Приветствую! Если тип параметров в модуле VHDL простой (std_logic, std_logic_vector, integer, ...) и напрямую мапится в Verilog то вставляете vhdl модуль как обычный модуль Verilog с соответствующими параметрами . Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Александр77 1 12 мая, 2016 Опубликовано 12 мая, 2016 · Жалоба Спасибо всем за подсказки. Искал как раз строку #(parameter name=x). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться