|
FIR фильтр на VHDL с помощью fdatool, проблемы с быстродействием |
|
|
|
Jun 25 2013, 09:36
|

Участник

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

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

Утомлённый солнцем
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Jun 25 2013, 11:07
|

Участник

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

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

Участник

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

|
Цитата(_Anatoliy @ Jun 25 2013, 18:08)  Попробуйте ещё раз ссылку. Скиньте пожалуйста ссылку еще раз, она некорректно создана.
|
|
|
|
|
Jun 26 2013, 10:41
|

Участник

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

|
Цитата(_Anatoliy @ Jun 26 2013, 11:07)  Странно,у меня открывается. раздел Важные темы,тема "Схемотехнические трюки для ПЛИСоводов",лист №9,посты 132 и 133. Спасибо, пойду проверю этот фильтр.
|
|
|
|
|
Jun 27 2013, 12:39
|

Участник

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

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

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

|
Цитата(mr.alexeevas @ Jun 27 2013, 13:39)  Я руками подключил умножители, поэксперементировал с Pipelining, поставил еще регистров, но максимум чего добился это 170 МГц, можете подсказать, чтобы еще такого в матлабовском коде можно подправить? В таких случаях совет стандартный : анализировать отчёт тайм-квеста,искать пути которые валятся,принимать меры.Насколько я помню матлаб реализует дерево сумматоров - оно Вам нужно? Вот отчёт тайм-квеста на тот вариант, который я выкладывал(для Циклона-3).
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 28 2013, 06:16
|

Участник

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

|
Цитата(_Anatoliy @ Jun 28 2013, 09:54)  В таких случаях совет стандартный : анализировать отчёт тайм-квеста,искать пути которые валятся,принимать меры.Насколько я помню матлаб реализует дерево сумматоров - оно Вам нужно? Вот отчёт тайм-квеста на тот вариант, который я выкладывал(для Циклона-3). Да, тот код оригинальный и реализация получается быстродействующая, но дело в том, что необходимо сделать фильтр с тактовой 240 МГц, а вот данные должны приниматься и выдаваться с частотой в 40 МГц.
|
|
|
|
|
Jun 28 2013, 10:09
|

Участник

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

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

Участник

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

|
Цитата(_Anatoliy @ Jun 28 2013, 20:25)  Ясно.Только не коэффициентов а умножителей.Так Вам не понятно как такой фильтр реализовать?У Вас же есть матлабовский hdl-файл,разберитесь как он работает,принцип перенесите на мой быстродействующий фильтр. Да, умножителей) Думаю так и сделаю, но пока не получается подключить аппаратный умножитель, т.к. умножение происходит внутри цикла в вашем фильтре. Я новичок в этом деле, всего пару месяцев работаю с ПЛИС на VHDL.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|