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

 
 
> ошибка при компиляции vhdl фильтра
NikSave
сообщение Nov 12 2012, 14:40
Сообщение #1


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

Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592



Написал фильтр, который работает в более мощной ПЛИС. Попытался его перенести в ПЛИС xc6vlx75t-1ff484. При компиляции появились ошибки:
ERROR:Place:1073 - Placer was unable to create RPM[DSP_Cascade_RPMs] for the
component XLXI_291/Maddsub_Ire[11][13]_K[5][15]_MuLt_206_OUT of type DSP48E1
for the following reason.
The reason for this issue:
The logic does not fit onto the chip in this form. Note that this logic had
to be merged with an already existing RPM which may have caused this issue.
The following components are part of this structure:
ERROR:Place:1073 - Placer was unable to create RPM[DSP_Cascade_RPMs] for the
component XLXI_291/Maddsub_Ire[11][13]_K[5][15]_MuLt_206_OUT of type DSP48E1
for the following reason.
The reason for this issue:
The logic does not fit onto the chip in this form. Note that this logic had
to be merged with an already existing RPM which may have caused this issue.
The following components are part of this structure:
ERROR:Pack:1654 - The timing-driven placement phase encountered an error.

Если длину фильтра ставлю 48 отводов компиляция проходит успешно. При 50 отводах возникают показанные ошибки (желательно 64 отвода). Все происходит под ISE13.1. В чем проблема не понимаю. Может кто подскажет. Заранее спасибо за ответ
Текст самого фильтра представлен ниже:
entity filterchet is
generic (N : integer := 50;
BitSignal : integer := 14
);
Port ( clk : in STD_LOGIC;
Iin : in STD_LOGIC_VECTOR (BitSignal-1 downto 0);
Addr : in STD_LOGIC_VECTOR (7 downto 0);
we : in STD_LOGIC;
Coeff: in STD_LOGIC_VECTOR (15 downto 0);
Iout : out STD_LOGIC_VECTOR (13 downto 0)
);
end filterchet;

architecture Behavioral of filterchet is

type TMassiv is array (0 to N*2-1) of std_logic_vector(BitSignal-1 downto 0);
type TMassivCoef is array (0 to N-1) of std_logic_vector(15 downto 0);
type TMassivMult is array (0 to N-1) of std_logic_vector(BitSignal+16-1 downto 0);
type TMassivR is array (0 to N-1) of std_logic_vector(31 downto 0);

signal Ire : TMassiv;
signal K : TMassivCoef;
signal Mult : TMassivMult;

signal R : TMassivR;

begin

process (we)
begin
if we'event and we='1' then K(conv_integer(Addr)) <= Coeff;
end if;
end process;

process(clk)
begin
if clk'event and (clk='1') then
Ire(0) <= Iin;
for i in 1 to N*2-1 loop
Ire(i) <= Ire(i-1);
end loop;
end if;
end process;

process (clk)
begin
if clk'event and (clk='1') then
for i in 0 to N-1 loop
Mult(i) <= signed(Ire(i*2+1)) * signed(K(i));
end loop;

R(0) <= sxt(Mult(0), 32);

for i in 1 to N-1 loop
R(i) <= signed(Mult(i)) + signed(R(i-1));
end loop;
end if;
end process;

process (clk)
begin
if (clk'event) and (clk='1') then
Iout(13) <= R(N-1)(31);
Iout(12 downto 0) <= R(N-1)(25 downto 13);
end if;
end process;

end Behavioral;
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
inventor
сообщение Nov 13 2012, 14:47
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



а 32 и 16 поместит?
Go to the top of the page
 
+Quote Post
NikSave
сообщение Nov 13 2012, 15:35
Сообщение #3


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

Группа: Участник
Сообщений: 87
Регистрация: 26-05-09
Пользователь №: 49 592



Цитата(inventor @ Nov 13 2012, 18:47) *
а 32 и 16 поместит?

Я пока не пробовал. как-то это коряво выглядит Но, подозреваю, что получиться. Ведь небывает так, что имеем 288 блоков DSP и использовать их не получается. Кстати этот фильтр в ПЛИС xc6vlx240t длинной 112 отводов прекрасно укладывался аж в двух экземплярах на два канала. А в этой ПЛИС прям беда. :-)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 03:42
Рейтинг@Mail.ru


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