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

 
 
> Не хватает аппаратных умножителей, подскажите новичку
degifted
сообщение Jun 23 2008, 16:47
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 17-02-08
Из: Минск, Беларусь
Пользователь №: 35 136



Добрый день,

подскажите пожалуйста новичку в ПЛИСах, как решить следующую проблему. Использую SpartanIIIe, проектирую восьмикратный интерполятор аудиосигнала (три последовательно подключённых FIR фильтра (сдандартная корка FIR Compiler), каждый повышает samplerate вдвое). Проект умещается в ресурсы плисины, но на этапе place-and-route возникает ошибка, что не хватает аппаратных умножителей, поскольку уже используется столько-то block ram. Как я понял, управляющие сигналы для MUL и BRAM в структуре Spartan3e пересекаются, что исключает их одновременное использование. Пробовал уменьшать количество MUL/BRAM, но избавиться от ошибки не удалось без существенного ухудшения характеристик интерполятора. Можно ли это как-то обойти? Может существуют в свободном доступе более оптимальные корки FIR фильтров? Или скорее всего придётся перейти на более жирную плис?

Параметры проектируемого интерполятора:
Stopband attenuation: -120dB
Passband ripple: 0.00001dB
Passband: 0-0.4536fs
Stopband: 0.5-1fs
Interpolation rate: 8
Stages: 3
Clock: 33MHz
Input samplerate: 44.1kHz
Input data width: 16
Output data width: 20
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
Doka
сообщение Jun 23 2008, 17:15
Сообщение #2


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



>> Можно ли это как-то обойти?

можно.. например, используя умножители на константу, если в вашей реализации такое возможно.

а вообще интересный пост: ни порядка фильтра (число умножений) , ни модели чипа в рамках семейства (число аппаратных умножений)
т.е. читай: "как обойтись без <абстрактное число> умножителей притом без существенного ухудшения характеристик интерполятора".


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
degifted
сообщение Jun 23 2008, 17:42
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 17-02-08
Из: Минск, Беларусь
Пользователь №: 35 136



Цитата(Doka @ Jun 23 2008, 20:15) *
>> Можно ли это как-то обойти?

можно.. например, используя умножители на константу, если в вашей реализации такое возможно.

хм. а как это поможет, можно поподробнее?

Цитата
а вообще интересный пост: ни порядка фильтра (число умножений) , ни модели чипа в рамках семейства (число аппаратных умножений)
т.е. читай: "как обойтись без <абстрактное число> умножителей притом без существенного ухудшения характеристик интерполятора".

пардон, писал по запарке. чип xc3s250e-4tq144, количество MULT18X18SIOs - 8, RAMB16s - 12.
порядок первого фильтра: 386
второго: 70
третьего: 46
все фильтры симметричные, т.е. количество умножений должно быть вдвое меньше

впрочем я поторопился с постом... умножил клок на фильтры вдвое и всё вместилось:
Number of RAMB16s: 10/24
Number of MULT18X18SIOs: 8/12
Go to the top of the page
 
+Quote Post
maxfox2k
сообщение Jun 26 2008, 05:01
Сообщение #4


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

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



Цитата(degifted @ Jun 23 2008, 20:42) *
хм. а как это поможет, можно поподробнее?
пардон, писал по запарке. чип xc3s250e-4tq144, количество MULT18X18SIOs - 8, RAMB16s - 12.
порядок первого фильтра: 386
второго: 70
третьего: 46
все фильтры симметричные, т.е. количество умножений должно быть вдвое меньше

впрочем я поторопился с постом... умножил клок на фильтры вдвое и всё вместилось:
Number of RAMB16s: 10/24
Number of MULT18X18SIOs: 8/12

да, у xilinx подколка с умножителями и памятью. нельзя заисползовать все ram и умножители
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jun 26 2008, 06:55
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(maxfox2k @ Jun 26 2008, 09:01) *
да, у xilinx подколка с умножителями и памятью. нельзя заисползовать все ram и умножители

На самом деле можно, если память использовать в шестнадцатиразрядном (или более узком) режиме, так как вход умножителя пересекается только со старшей частью шины данных памяти.
Go to the top of the page
 
+Quote Post
petrov
сообщение Jun 26 2008, 07:48
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



degifted, вы вдумайтесь встроенные умножители на сотнях мегагерц работают, а вы с аудиосигналом работаете, одного умножителя хватит чтобы все операции умножения в вашем интерполяторе выполнить. Надо ведь аппаратуру разрабатыть а не из пушки по воробьям стрелять шлёпая в коде * аля программер.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jun 26 2008, 08:33
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(petrov @ Jun 26 2008, 11:48) *
degifted, вы вдумайтесь встроенные умножители на сотнях мегагерц работают, а вы с аудиосигналом работаете, одного умножителя хватит чтобы все операции умножения в вашем интерполяторе выполнить. Надо ведь аппаратуру разрабатыть а не из пушки по воробьям стрелять шлёпая в коде * аля программер.

Вы прежде чем камнями кидаться посмотрите внимательно, каких там порядков фильтры и сколько их.
Go to the top of the page
 
+Quote Post
petrov
сообщение Jun 26 2008, 09:11
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(DmitryR @ Jun 26 2008, 12:33) *
Вы прежде чем камнями кидаться посмотрите внимательно, каких там порядков фильтры и сколько их.


Даже если на такой низкой частоте 33 МГц работать можно выполнить одним умножителем 33МГц/44кГц = 748 умножений.
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Jun 26 2008, 10:00
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(petrov @ Jun 26 2008, 13:11) *
Даже если на такой низкой частоте 33 МГц работать можно выполнить одним умножителем 33МГц/44кГц = 748 умножений.


Вы правы, чтобы повысить частоту дискретизации аудиосигнала хватит одно умножителя.
Но вот для того чтобы это сделать, нужно в предмете разбираться, понимать, уметь проектировать.
Боюсь что это уже должен быть не новичек. А на корке слепить - лекго. Вот только одно не понятно, а че, сразу-то интерполятор на 8 на корках не генериться?






Цитата(DmitryR @ Jun 26 2008, 12:33) *
Вы прежде чем камнями кидаться посмотрите внимательно, каких там порядков фильтры и сколько их.


Посмотрели. И условия посмотрели. Вон они какие

Stopband attenuation: -120dB??? А оно надо?
А вот это
Passband ripple: 0.00001dB??? Оно надо.
И как это все реализовать, если
Input data width: 16

И если задуматься над этими цифрами, то окажется что не надо такой порядок интерполятора использовать.
Go to the top of the page
 
+Quote Post
petrov
сообщение Jun 26 2008, 10:06
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Михаил_K @ Jun 26 2008, 14:00) *
Вы правы, чтобы повысить частоту дискретизации аудиосигнала хватит одно умножителя.
Но вот для того чтобы это сделать, нужно в предмете разбираться, понимать, уметь проектировать.
Боюсь что это уже должен быть не новичек. А на корке слепить - лекго. Вот только одно не понятно, а че, сразу-то интерполятор на 8 на корках не генериться?
Посмотрели. И условия посмотрели. Вон они какие

Stopband attenuation: -120dB??? А оно надо?
А вот это
Passband ripple: 0.00001dB??? Оно надо.
И как это все реализовать, если
Input data width: 16

И если задуматься над этими цифрами, то окажется что не надо такой порядок интерполятора использовать.


Сейчас в FDAtool прикинул, порядок FIR фильтра для интерполяции в 8 раз - 650, делаем полифазную структуру ибо нефиг на нули умножать, и обсчитываем всё одним умножителем на 33 МГц. ИМХО скорее надо в таких вещах разбираться, эффект больше чем от бездумного использования корок.
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Jun 26 2008, 10:22
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(petrov @ Jun 26 2008, 14:06) *
Сейчас в FDAtool прикинул, порядок FIR фильтра для интерполяции в 8 раз - 650, делаем полифазную структуру ибо нефиг на нули умножать, и обсчитываем всё одним умножителем на 33 МГц. ИМХО скорее надо в таких вещах разбираться, эффект больше чем от бездумного использования корок.


650/8 = 81,25, т.е. делаем 82.
82 * 44100 = 3616200.
Чутка по больше частоту нужно, но не очень.

biggrin.gif

А разбираться нужно несомненно.

Кстати, у меня порядок получился 313.
А вот когда ето все заквантовать до 16 разярдов..... smile.gif
Go to the top of the page
 
+Quote Post
petrov
сообщение Jun 26 2008, 10:39
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Михаил_K @ Jun 26 2008, 14:22) *
650/8 = 81,25, т.е. делаем 82.
82 * 44100 = 3616200.
Чутка по больше частоту нужно, но не очень.


3,6МГц на одну фазу


Цитата(Михаил_K @ Jun 26 2008, 14:22) *
Кстати, у меня порядок получился 313.
А вот когда ето все заквантовать до 16 разярдов..... smile.gif


Да порядок можно в некоторых пределах менять в зависимости от требований. Да и 16 бит не хватит для 120 dB подавленя.
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Jun 26 2008, 10:57
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(petrov @ Jun 26 2008, 14:39) *
3,6МГц на одну фазу



Точно. Вечером да и еще к коцу недели нулей перед глазами больше становиться wacko.gif
Go to the top of the page
 
+Quote Post

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

 


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


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