реклама на сайте
подробности

 
 
> Xilinx ISE BRAM+MULT18X18, как правильно описать
alex_k
сообщение Nov 3 2005, 13:30
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 119
Регистрация: 4-03-05
Пользователь №: 3 067



Возникла следующая фича при проектировании в ISE. Сделал я такой модуль - есть умножитель (A,B 18-и битные входы, P 35-и битный выход) и есть BRAM (RAMB16_S18_S18). Необходимо выходные данные одного из портов брамки подцепить на вход умножителя. Раньше память коэффициентов была вообще 32-х битная и 32-х битный умножитель был собран из 4-х 18х18.
Смысл проблемы в том что пласе-роут ни в какую не хочет использовать брамки расположенные рядом с умножителями. Сейчас у меня получился только один вариант RAMB16_S18_S18 + MULT18X18 и непосредственное задание физразмешения в ucf файле через LOC.
Собственно вопрос можно ли так описать эту конструкцию чтобы пласе-роут сам нормально их разместил рядом без описания привязки в ucf.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alex_k
сообщение Nov 7 2005, 08:37
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 119
Регистрация: 4-03-05
Пользователь №: 3 067



Даже вот такой код - ниже описывать уже некуда, и тот пласе-роут надежно (ни раз на раз, а чтоб от трансляции к трансляции) размещать рядом нихотит. Таблетка XC2VP20, ISE 6.2.03i, опции по умолчанию, какие-то вроде пробовал менять, но без LOC/RLOC в ucf так ничего и не получилось.

entity bram_mult is
Port ( ADDRCOEFF : in std_logic_vector(9 downto 0);
A : in std_logic_vector(17 downto 0);
CLK : in std_logic;
RST : in std_logic;
P : out std_logic_vector(35 downto 0));
end bram_mult;

architecture RTL of bram_mult is

component RAMB16_S18_S18
port (DIA : in STD_LOGIC_VECTOR (15 downto 0);
DIB : in STD_LOGIC_VECTOR (15 downto 0);
DIPA : in STD_LOGIC_VECTOR (1 downto 0);
DIPB : in STD_LOGIC_VECTOR (1 downto 0);
ENA : in STD_logic;
ENB : in STD_logic;
WEA : in STD_logic;
WEB : in STD_logic;
SSRA : in STD_logic;
SSRB : in STD_logic;
CLKA : in STD_logic;
CLKB : in STD_logic;
ADDRA : in STD_LOGIC_VECTOR (9 downto 0);
ADDRB : in STD_LOGIC_VECTOR (9 downto 0);
DOA : out STD_LOGIC_VECTOR (15 downto 0);
DOB : out STD_LOGIC_VECTOR (15 downto 0);
DOPA : out STD_LOGIC_VECTOR (1 downto 0);
DOPB : out STD_LOGIC_VECTOR (1 downto 0)
);
end component;

component MULT18X18S
port (P : out STD_LOGIC_VECTOR (35 downto 0);
A : in STD_LOGIC_VECTOR (17 downto 0);
B : in STD_LOGIC_VECTOR (17 downto 0);
C : in STD_LOGIC;
CE : in STD_LOGIC;
R : in STD_LOGIC
);
end component;

signal MULT_B_IN_i : std_logic_vector(17 downto 0);

begin

coeff_bram_inst : RAMB16_S18_S18 port map(
DIA => (others => '0'),
DIB => (others => '0'),
DIPA => "00",
DIPB => "00",
ENA => '1',
ENB => '1',
WEA => '0',
WEB => '0',
SSRA => RST,
SSRB => RST,
CLKA => CLK,
CLKB => CLK,
ADDRA => ADDRCOEFF,
ADDRB => (others => '0'),
DOA => MULT_B_IN_i(15 downto 0),
DOB => open,
DOPA => MULT_B_IN_i(17 downto 16),
DOPB => open
);

mult_inst : MULT18X18S port map(
P => P,
A => A,
B => MULT_B_IN_i,
C => CLK,
CE => '1',
R => RST
);

end RTL;
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016