|
Не хватает аппаратных умножителей, подскажите новичку |
|
|
|
Jun 23 2008, 16:47
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
 |
Ответов
(1 - 12)
|
Jun 23 2008, 17:42
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Jun 26 2008, 05:01
|
Частый гость
 
Группа: Участник
Сообщений: 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 и умножители
|
|
|
|
|
Jun 26 2008, 10:00
|
Знающий
   
Группа: Свой
Сообщений: 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 И если задуматься над этими цифрами, то окажется что не надо такой порядок интерполятора использовать.
|
|
|
|
|
Jun 26 2008, 10:06
|
Гуру
     
Группа: Свой
Сообщений: 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 МГц. ИМХО скорее надо в таких вещах разбираться, эффект больше чем от бездумного использования корок.
|
|
|
|
|
Jun 26 2008, 10:22
|
Знающий
   
Группа: Свой
Сообщений: 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. Чутка по больше частоту нужно, но не очень. А разбираться нужно несомненно. Кстати, у меня порядок получился 313. А вот когда ето все заквантовать до 16 разярдов.....
|
|
|
|
|
Jun 26 2008, 10:39
|
Гуру
     
Группа: Свой
Сообщений: 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 разярдов.....  Да порядок можно в некоторых пределах менять в зависимости от требований. Да и 16 бит не хватит для 120 dB подавленя.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|