desmond breezey 0 19 ноября, 2014 Опубликовано 19 ноября, 2014 · Жалоба и все таки попробуйте в матлабе fdatool промоделировать, а также Вы получите коефициенты фильтра (скажу по секрету он и готовое описание для ПЛИС дает фильтра - вопрос же оптимальности реализации фильтра в ПЛИС я думаю у Вас не стоит) Я так и получал коэффициенты. Знаю, что так можно получить и код на VHDL. Но он мне не подходит. Потому что не оптимален. Более того, в генерируемом коде еще и хрен разберешься... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
desmond breezey 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба Я хоть в правильном направлении иду? Есть еще один непонятный момент, который в Лайонсе не особо освещен. Пусть коммутатор в начальном положении. Спустя такт он переключает поток входных данных на следующий субфильтр. При этом, данные на первом субфильтре уже отфильтрованы - ведь субфильтр работает на частоте дискретизации в 6 раз меньше, чем происходит переключение коммутатора. Что происходит с выходными данными первого субфильтра? Они поступают на сумматор и ждут отфильтрованные данные со следующих субфильтров? То есть, счетчик на коммутаторе надо сделать таким,чтобы он считал 7 тактов, а не 6? 6 тактов на переключение коммутатора + 1 такт для суммирования? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба то есть данные поступают раз в 6 тактов, а используете вы их раз в 7 тактов... через 42 такта че будет? у меня есть подозрение что вы мыслите последовательно, а мыслить надо параллельно... представьте что все все делают одновременно и стройте систему из блоков, один перемножают, другие складывают.... вы можете складывать каждый такт, просто раз в 6 тактов выдавать сигнал верности данных,... зачем велосипед изобретать, сделайте фильтр матлабом, прочтите, поймите как работает и оптимизируйте кривые места Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба а почему Вы не хотите поставить N FIR фильтров последовательно и получить необходимую децимацию и характеристику с помощью коеффициентов фильтров? Нужна другая децимация - загружаете новые коеффициенты в FIR фильтры Зачем полифазник? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
desmond breezey 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба то есть данные поступают раз в 6 тактов, а используете вы их раз в 7 тактов... через 42 такта че будет? у меня есть подозрение что вы мыслите последовательно, а мыслить надо параллельно... представьте что все все делают одновременно и стройте систему из блоков, один перемножают, другие складывают.... вы можете складывать каждый такт, просто раз в 6 тактов выдавать сигнал верности данных,... зачем велосипед изобретать, сделайте фильтр матлабом, прочтите, поймите как работает и оптимизируйте кривые места Да,я уже понял, что глупость сморозил. Разве проще будет проанализировать ~1.5 тысячи строк от Матлаба, чем выяснить, где какая ошибка у меня и как её исправить? а почему Вы не хотите поставить N FIR фильтров последовательно и получить необходимую децимацию и характеристику с помощью коеффициентов фильтров? Нужна другая децимация - загружаете новые коеффициенты в FIR фильтры Зачем полифазник? Потому что задание - разработать полифазный фильтр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба Разве проще будет проанализировать ~1.5 тысячи строк от Матлаба, чем выяснить, где какая ошибка у меня и как её исправить? конечно проще:) потому что то решение работает, а ваше нет. А по стилю изложения вы не очень уверено владеете темой и ошибки могут быть такие чудные что их фиг найдешь:))) Поиск ошибки часто дороже чем сделать заново. я бы начал со схемы. какие данные куда поступают, в каком количестве с какой частотой, как преобразуются и откуда выходят в каком количестве и с какой частотой.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба Потому что задание - разработать полифазный фильтр. а вы удивите своего преподавателя, залабайте фир с децимацией выхода с тапами на блоке памяти, используемой как сдвиговый регистр, и ячейкой MAC в качестве основного движка. В зависимости от тактовой, будет либо минимальный вариант по ресурсу ПЛИС, либо не очень минимальный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
desmond breezey 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба а вы удивите своего преподавателя, залабайте фир с децимацией выхода с тапами на блоке памяти, используемой как сдвиговый регистр, и ячейкой MAC в качестве основного движка. В зависимости от тактовой, будет либо минимальный вариант по ресурсу ПЛИС, либо не очень минимальный. Боюсь, что я не понимаю, о чем вы говорите. Я же говорю,что занимаюсь этим делом совсем недолго. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба Боюсь, что я не понимаю, о чем вы говорите. Я же говорю,что занимаюсь этим делом совсем недолго. включайте голову, нарисуйте на бумажке неполифазный дециматор, распишите его математику и все увидите. задача 9 класс средней школы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
desmond breezey 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 (изменено) · Жалоба Самый простой вариант, который я вижу: в обычном КИХ фильтре сделать линию задержки, в которой накапливается число входных отсчетов, равное значению коэффициента децимации, из них выбираются те, которые не отбрасываются, умножаются на коэффициенты,склдаываются и подаются на выход. Конкретно под мою задачу: за 6 тактов накапливаем 6 отсчетов. Нам нужен только самый первый. Умножаем его на соот. коэффициент и отправляем на выход. Освобождаем линию задержки, снова копим 6 отсчетов, берем самый старый отсчет на линии, умножаем на коэффициент, подаем на выход. Изменено 20 ноября, 2014 пользователем desmond breezey Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба Повторю еще раз. Возьмите матлаб симулинк и реализуйте свой фильтр там. Уже давно бы сделали так (там освоиться с базой 1 день), вместо гадания на кофейной гуще Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба Повторю еще раз. Возьмите матлаб симулинк и реализуйте свой фильтр там. Уже давно бы сделали так (там освоиться с базой 1 день), вместо гадания на кофейной гуще я же desmond breezey с самого начала советую матлаб... Но ТС отказывается прислушивается к советам... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
desmond breezey 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба я же desmond breezey с самого начала советую матлаб... Но ТС отказывается прислушивается к советам... Не правда. Я с самого начал знал о возможностях Матлаба в этой области - и генерирование фильтров, и получение сразу кода на VHDL. Просто в коде, который генерирует Матлаб, разобраться проблематично. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба Конкретно под мою задачу: за 6 тактов накапливаем 6 отсчетов. Нам нужен только самый первый. Умножаем его на соот. коэффициент и отправляем на выход. Освобождаем линию задержки, снова копим 6 отсчетов, берем самый старый отсчет на линии, умножаем на коэффициент, подаем на выход. что есть линия задержки? 6 регистров которые передают значение друг другу. что есть освобождение линии задержки и снова копим 6 отсчетов? это фактически замена всех значений новыми, через 6 тактов новые значения выдавят старые И того ваша задача (ну в том виде что вы формулируете) сводиться к созданию цепочки из 6 регистров которые передают данные друг другу, а также параллельно им счетчика который каждый 6 клок, забирает из последнего регистра цепочки данные, умноженные на коэффициент... и теперь вопрос, что не получилось? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
desmond breezey 0 20 ноября, 2014 Опубликовано 20 ноября, 2014 · Жалоба что есть линия задержки? 6 регистров которые передают значение друг другу. что есть освобождение линии задержки и снова копим 6 отсчетов? это фактически замена всех значений новыми, через 6 тактов новые значения выдавят старые И того ваша задача (ну в том виде что вы формулируете) сводиться к созданию цепочки из 6 регистров которые передают данные друг другу, а также параллельно им счетчика который каждый 6 клок, забирает из последнего регистра цепочки данные, умноженные на коэффициент... и теперь вопрос, что не получилось? Ну просто изначально я не по этому пути шел. Чисто гипотетически, было сказано делать полифазный фильтр, потому что это самая оптимальная структура. В принципе, если такая структура будет удовлетворять требованиям по быстродействию, то думаю, что и так примут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться