fantom4ik 0 28 января, 2008 Опубликовано 28 января, 2008 (изменено) · Жалоба Зравствуйте, товарищи. Нужна Ваша помощ (очень-очень сильно). Занимаюсь написанием диплома по выше указанной теме. Универсальность фильтра состоит в следующем: 1. Перезагружаемые коэффициенты 2. Выбор порядка фильтра Теории налил достаточно, проделал работу в MatLab. Вообщем, воды хватает. Для окончания работы осталось описать выбранную структурную схему на VHDL и создать test-bench. Все это для Vertex-II из-за наличия аппартных умножителей 18Х18. БИХ-фильтр задуман как последовательное соединение звеньев 2-го порядка (максимальный порядок N=12). MatLab позволяет расчитать матрицу коэффициентов именно для такого порядка фильтра. Выбрано звено 2-го порядка: Это общая структурная схема (моя). В ее целесообразности я не уверен. Вот некоторые задумки. 1. Последовательность ввода данных следующая: => ввод порядка фильтра за такт в параллельном коде => ввод коэффициентов звеньев в параллельном коде (максимум за 30 тактов т.к. максимальный порядок фильтра 12, следовательно 6 звеньев 2-го порядка по 5 коэффициентов в каждом) => отсчеты входного сигнала с АЦП также поступают в параллельном коде. Синтезируется счётчик для тактирования ввода данных: process(clk) begin if rising _edge(clk) then takt = takt +1; if (takt=1) then porydok <= data else if ((takt>1) and (takt<52)) then 'далее присвоение коэффициентов' else if (takt>51) then 'входные отсчеты (отсчет за такт с АЦП)' Я так понимаю, что проще работать с целыми числами, поэтому перед вводом коэффициентов необходимо домножать их например, на 1024, а выходной сигнал с фильтра сдвигать на 10 отсчетов. Допустим входной отсчет 14 разрядный (положительное число в прямом коде), а коэффициенты в прямом и доп. коде также 14 разрядные. Мои сложности: 1. Слабое представление об Xilinx ISE и VHDL. 2. Сроки сжаты. Прошу помощи как реализации звена 2-го порядка на VHDL, представленного на рисунке выше, так и всего проекта. Как в дружбу так и в службу(за деньдюшки). Если здесь так не принято (я совсем новичок), прошу прощения и и жду советов по работе. Спасибо. С уважением ко всем прочитавшим, я. Изменено 28 января, 2008 пользователем fantom4ik Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба С фиксированной точкой универсальным БИХ фильтр никогда не будет. Разве что с плавающей. Ну для студенческого сойдет, точите язык для дискуссий. 18х18 умножителей у меня иногда не хватало для работы с 12разрядными входными данными. Реализация видна в МАТЛАБЕ. Открываете Filter designer-проектируете фильтр-затем слева нажимаете Realize model - ставите галочку build model using basic elements- - нажимаете realize model. открывается новое окно Simulinka. там икона вашего фильтра двойной клик но ней и Вы увидете схему с разрядами. Да - там еще была на уровне Filter designer иконка - set quantanization parameters - ее тоже надо выбрать и в ней выбрать параметры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба Можно попробовать AcselDSP или SystemGenerator которые позволяют генерировать код (VHDL Verilog) из Matlab Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 28 января, 2008 Опубликовано 28 января, 2008 (изменено) · Жалоба Можно попробовать AcselDSP или SystemGenerator которые позволяют генерировать код (VHDL Verilog) из Matlab Там универсальности не получится ибо порождается схема определенной структуры (естественно с определенным числом умножителей и т.д.). Разве что под универсальностью понимать способность забить в окошко ввода вектор коэффициентов любой длины ;-) Ну а алгоритмические вещи куда как удобнее писать на чистом вхдл Изменено 28 января, 2008 пользователем alexadmin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex5991 0 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба Можно попробовать AcselDSP или SystemGenerator которые позволяют генерировать код (VHDL Verilog) из Matlab Так ведь сам MATLAB, в частности и fdatool позволяют генерировать HDL код. fdatool: меню Targets->Generate HDL. fdatool не позводяеь делать презагружаемые коэффициенты, но это можно сделать в SIMULINK, у которого тоже есть Simulink HDL coder. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tue 0 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба Действительно, матлаб умеет сам генерировать чистый синтезируемый код фильтров, а блок для ввода нужных коэффициентов написать самостоятельно (можно даже в том же матлаб - Embedded Matlab Function) Насчет универсальности БИХ-фильтра не так все просто, как с КИХ-фильтрами. Можете также добавить в диплом анализ устойчивости вашего (довольно длинного) БИХ-фильтра, учета конечной разрядности, анализ на шумы квантования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AsJohnAs 0 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба Разрядность БИХ фильтра и его устойчивость получаются очень тесно связаны. А при увеличении разрядности понижается общая максимальная частота работы схемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fantom4ik 0 28 января, 2008 Опубликовано 28 января, 2008 · Жалоба Спасибо за советы коллеги ). Буду пробовать FDATool. О результатах сообщу уже под утро. Пока не очень получается с тест-бенчем для MATLAB чтобы посмореть на результаты фильтрации. Как это грамотно сделать для сгенеренного фильтра? Т.е. хочется посмотреть как скомпиленный ТБ в симулинке пройдет через сгенеренный блок фильтра! А еще не понял как подгружать коэффициенты в МАТЛАБЕ в блок фильтра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fantom4ik 0 29 января, 2008 Опубликовано 29 января, 2008 · Жалоба А вообще решил усоренными темпами освоить VERILOG ... И на нем описать свой проект. :07: А то адекватно на fdatool не получается :crying: Вернее, он по своему делат (своё звено 2-го порядка) да код страшный какой-то. Жду помощи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tue 0 29 января, 2008 Опубликовано 29 января, 2008 · Жалоба Непонятно что вы хотите, чтобы делал тестбенч. Вы хотите просто подать какой-то сигнал на фильтр или же что-то другое ? (непонятна фраза "Т.е. хочется посмотреть как скомпиленный ТБ в симулинке пройдет через сгенеренный блок фильтра!" ) Код может казаться страшным, если не знать какую структуру БИХ-фильтра реализует HDL-кодер. Наберите в матлабе команду "doc dfilt.df2sos" или "dfilt.df2tsos" - откроется подробная схема реализации секции 2-го порядка (из пакета Filter Design Toolbox). Про структуры реализации БИХ-фильтров лучше всего почитать какую-нибудь книгу по ЦОС (например Айфичер Э. Джервис Б. Цифровая обработка сигналов - 562-я страница и далее). Не все структуры одинаково полезны. По вашей картинке если честно не понял что у вас за структура. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tda 0 13 февраля, 2008 Опубликовано 13 февраля, 2008 · Жалоба Есть такая программка. Генерирует VHDL код БИХ фильтра для FPGA Xilinx. Вводятся коэффициенты, их количество, разрядность мантиссы, порядка, жмётся кнопка. В программе встроенный симулятор фильтра с частотным анализом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AsJohnAs 0 13 февраля, 2008 Опубликовано 13 февраля, 2008 · Жалоба Все это хорошо но попробуйте это чудо из матлаба запустить на более менее высоких частотах... Только серьезная переработка полученного из матлаба кода привела к удобоворимым результатам. Так что я бы на вашем месте не очень расчитывал на подобные мегасовтинки. Там очень много самим потом делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться