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

 
 
> FIR фильтр на VHDL с помощью fdatool, проблемы с быстродействием
mr.alexeevas
сообщение Jun 25 2013, 09:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Добрый день!

Столкнулся с такой проблемой: реализую полосовой фильтр на частоту 1 МГц, использую окно Блекмана, на 512 коэффициентов. ПЛИС Altera Cyclone IV E EP4CE115F29C7N. Загвоздка в том, что нужно сделать фильтр с частотой сэмплирования в 40 МГц, но чтобы он работал на тактовой частоте в 240 МГц (для экономии ресурсов, т.е. умножителей). В fdatool все настроил и при генерации VHDL кода, указываю, чтобы структура была каскадная. Все генерируется, но вот работать на частоте тактирования в 240 МГц отказывается, максимум на 120 МГц выходит. Аналогичный фильтр, но в FIR Compiler генерируется, разводится и работает, но у меня нет лицензии на него.

Помогите решить данную проблему, может в коде что-то подправить или в fdatool есть нюансы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Anatoliy
сообщение Jun 25 2013, 09:56
Сообщение #2


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 25 2013, 11:36) *
Добрый день!

Столкнулся с такой проблемой: реализую полосовой фильтр на частоту 1 МГц, использую окно Блекмана, на 512 коэффициентов. ПЛИС Altera Cyclone IV E EP4CE115F29C7N. Загвоздка в том, что нужно сделать фильтр с частотой сэмплирования в 40 МГц, но чтобы он работал на тактовой частоте в 240 МГц (для экономии ресурсов, т.е. умножителей). В fdatool все настроил и при генерации VHDL кода, указываю, чтобы структура была каскадная. Все генерируется, но вот работать на частоте тактирования в 240 МГц отказывается, максимум на 120 МГц выходит. Аналогичный фильтр, но в FIR Compiler генерируется, разводится и работает, но у меня нет лицензии на него.

Помогите решить данную проблему, может в коде что-то подправить или в fdatool есть нюансы.

Pipelining в перемножителях включен?
А почему так не хотите?
http://electronix.ru/forum/index.php?showt...t&p=1031347
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 25 2013, 11:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 25 2013, 13:56) *
Pipelining в перемножителях включен?
А почему так не хотите?
http://electronix.ru/forum/index.php?showt...t&p=1031347



Pipelining включен.
А вот ссылка не открывается.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 25 2013, 14:08
Сообщение #4


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 25 2013, 13:07) *
Pipelining включен.

Это не тот Pipelining,если включали его при генерации hdl-кода.Нужно перемножители ручками подключать и в них уже включать Pipelining(причём не меньше 3). Я так до 240 МГц разгонял фильтр на третьем циклоне.
Вообще то отучайтесь использовать матлабовский код выше 120 МГц.
Попробуйте ещё раз ссылку.Правда тот проект на 240 МГц тоже не пойдёт,нужно дорабатывать как сказано выше.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 27 2013, 12:39
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 25 2013, 18:08) *
Это не тот Pipelining,если включали его при генерации hdl-кода.Нужно перемножители ручками подключать и в них уже включать Pipelining(причём не меньше 3). Я так до 240 МГц разгонял фильтр на третьем циклоне.


Я руками подключил умножители, поэксперементировал с Pipelining, поставил еще регистров, но максимум чего добился это 170 МГц, можете подсказать, чтобы еще такого в матлабовском коде можно подправить?

Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2013, 05:54
Сообщение #6


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 27 2013, 13:39) *
Я руками подключил умножители, поэксперементировал с Pipelining, поставил еще регистров, но максимум чего добился это 170 МГц, можете подсказать, чтобы еще такого в матлабовском коде можно подправить?

В таких случаях совет стандартный : анализировать отчёт тайм-квеста,искать пути которые валятся,принимать меры.Насколько я помню матлаб реализует дерево сумматоров - оно Вам нужно?
Вот отчёт тайм-квеста на тот вариант, который я выкладывал(для Циклона-3).
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 28 2013, 06:16
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 28 2013, 09:54) *
В таких случаях совет стандартный : анализировать отчёт тайм-квеста,искать пути которые валятся,принимать меры.Насколько я помню матлаб реализует дерево сумматоров - оно Вам нужно?
Вот отчёт тайм-квеста на тот вариант, который я выкладывал(для Циклона-3).


Да, тот код оригинальный и реализация получается быстродействующая, но дело в том, что необходимо сделать фильтр с тактовой 240 МГц, а вот данные должны приниматься и выдаваться с частотой в 40 МГц.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2013, 06:51
Сообщение #8


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 28 2013, 07:16) *
Да, тот код оригинальный и реализация получается быстродействующая, но дело в том, что необходимо сделать фильтр с тактовой 240 МГц, а вот данные должны приниматься и выдаваться с частотой в 40 МГц.

Ну так добавьте сигнал enable. В чём проблема?
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2013, 09:26
Сообщение #9


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Вам не нужно добиваться быстродействия фильтра 240МГц,40МГц достаточно.Сигнал enable должен быть активным один такт на каждые шесть тактов клока. А чтобы таймквест правильно посчитал слэки ему нужно указать что фильтр работает со скважностью 6. Это делается командой set_multicycle_path.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jun 28 2013, 10:09
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 28 2013, 13:26) *
Вам не нужно добиваться быстродействия фильтра 240МГц,40МГц достаточно.Сигнал enable должен быть активным один такт на каждые шесть тактов клока. А чтобы таймквест правильно посчитал слэки ему нужно указать что фильтр работает со скважностью 6. Это делается командой set_multicycle_path.


Быстродействие в 240 МГц нужно для экономии умножителей, т.к. их в моем фильтре 512, и получается, что если быстродействие 240, а данные на 40, то можно использовать в 6 раз меньше коэффициентов.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 28 2013, 16:25
Сообщение #11


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jun 28 2013, 12:09) *
Быстродействие в 240 МГц нужно для экономии умножителей, т.к. их в моем фильтре 512, и получается, что если быстродействие 240, а данные на 40, то можно использовать в 6 раз меньше коэффициентов.

Ясно.Только не коэффициентов а умножителей.Так Вам не понятно как такой фильтр реализовать?У Вас же есть матлабовский hdl-файл,разберитесь как он работает,принцип перенесите на мой быстродействующий фильтр.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 1 2013, 04:35
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jun 28 2013, 20:25) *
Ясно.Только не коэффициентов а умножителей.Так Вам не понятно как такой фильтр реализовать?У Вас же есть матлабовский hdl-файл,разберитесь как он работает,принцип перенесите на мой быстродействующий фильтр.


Да, умножителей)
Думаю так и сделаю, но пока не получается подключить аппаратный умножитель, т.к. умножение происходит внутри цикла в вашем фильтре. Я новичок в этом деле, всего пару месяцев работаю с ПЛИС на VHDL.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jul 1 2013, 06:05
Сообщение #13


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(mr.alexeevas @ Jul 1 2013, 05:35) *
Да, умножителей)
Думаю так и сделаю, но пока не получается подключить аппаратный умножитель, т.к. умножение происходит внутри цикла в вашем фильтре. Я новичок в этом деле, всего пару месяцев работаю с ПЛИС на VHDL.

Ключевое слово generate.Осваивайте.
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 1 2013, 11:43
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(_Anatoliy @ Jul 1 2013, 10:05) *
Ключевое слово generate.Осваивайте.

Не понимаю, как в той структуре можно использовать generate. Если вносить под процесс, то quartus ругается, что он ожидает loop, если процесс убрать, то проблема с объявлением переменных. К тому же, не понимаю, как тогда испрользовать rising_edge
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 1 2013, 11:49
Сообщение #15


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(mr.alexeevas @ Jul 1 2013, 14:43) *
Не понимаю, как в той структуре можно использовать generate. Если вносить под процесс, то quartus ругается, что он ожидает loop, если процесс убрать, то проблема с объявлением переменных. К тому же, не понимаю, как тогда испрользовать rising_edge

пример на основе компаратора
Количество разрядов сравниваемых данных (чисел) компаратора задается в GENERIC

Описание портов:
CLK – тактовая частота;
RESET − асинхронный сброс;
А, В – сравниваемые N-разрядные данные;
ALB, AGB, ALEB, AGEB, AEB, ANEB – результаты сравнения чисел А и В;
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity comp is
GENERIC(width: INTEGER:=3);
Port ( CLK: in STD_LOGIC;
RESET: in STD_LOGIC;
A, B: in STD_LOGIC_VECTOR(width downto 0);
ALB, AGB: out STD_LOGIC;
ALEB, AGEB: out STD_LOGIC;
AEB, ANEB: out STD_LOGIC );
end comp;

architecture Behavioral of comp is
begin
process(CLK,RESET)
begin
  if (RESET = '1') then
      ALB  <= '0';
      AGB  <= '0';
      ALEB <= '0';
      AGEB <= '0';
      AEB  <= '0';
      ANEB <= '0';
  elsif (CLK'event and CLK ='1') then  
    if ( A < B ) then ALB <= '1';
    else ALB <= '0';
    end if;
  if ( A > B ) then AGB <= '1';
    else AGB <= '0';
    end if;
  if ( A <= B ) then ALEB <= '1';
    else ALEB <= '0';
    end if;
  if ( A >= B ) then AGEB <= '1';
    else AGEB <= '0';
    end if;
  if ( A = B ) then AEB <= '1';
    else AEB <= '0';
    end if;
  if ( A /= B ) then ANEB <= '1';
    else ANEB <= '0';
    end if;  end if;
end process;

end Behavioral;


или конкретней формулируйте вопросы...


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
mr.alexeevas
сообщение Jul 1 2013, 12:10
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 29-04-13
Из: Санкт-Петербург
Пользователь №: 76 668



Цитата(Maverick @ Jul 1 2013, 15:49) *
или конкретней формулируйте вопросы...


Речь идет об использовании generate, а не generic.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mr.alexeevas   FIR фильтр на VHDL с помощью fdatool   Jun 25 2013, 09:36
|- - mr.alexeevas   Цитата(_Anatoliy @ Jun 25 2013, 18:08) По...   Jun 26 2013, 04:51
||- - _Anatoliy   Цитата(mr.alexeevas @ Jun 26 2013, 05:51)...   Jun 26 2013, 07:07
||- - mr.alexeevas   Цитата(_Anatoliy @ Jun 26 2013, 11:07) Ст...   Jun 26 2013, 10:41
||- - Maverick   Цитата(mr.alexeevas @ Jul 1 2013, 15:10) ...   Jul 1 2013, 12:21
|- - _Anatoliy   Цитата(mr.alexeevas @ Jul 1 2013, 13:43) ...   Jul 1 2013, 12:21
|- - mr.alexeevas   Цитата(_Anatoliy @ Jul 1 2013, 16:21) Код...   Jul 2 2013, 10:36
|- - _Anatoliy   Цитата(mr.alexeevas @ Jul 2 2013, 11:36) ...   Jul 2 2013, 12:30
|- - mr.alexeevas   Цитата(_Anatoliy @ Jul 2 2013, 16:30) Вни...   Jul 3 2013, 04:53
- - mr.alexeevas   Спасибо, разобрался. Действительно, быстродействие...   Jul 1 2013, 12:51
- - _Anatoliy   Цитата(mr.alexeevas @ Jul 1 2013, 14:51) ...   Jul 1 2013, 13:11
- - mr.alexeevas   Цитата(_Anatoliy @ Jul 1 2013, 17:11) Я с...   Jul 2 2013, 04:53


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

 


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


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