Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ Вопросы системного уровня проектирования _ Цифровой фильтр

Автор: Мур Apr 19 2018, 10:32

Приветствую знатоков. 1111493779.gif

Прошу подсказку в простом вопросе.
Filter Design & toll в приемлемом варианте фильтра по идее получить исходный код HDL ( Targets -> Generate HDL -> Global Setting-> Ports -> Input data type/Output data type )

Цитата
ENTITY filter IS
PORT( clk : IN std_logic;
clk_enable : IN std_logic;
reset : IN std_logic;
filter_in : IN real; -- ?????
filter_out : OUT real -- ??????
);
END filter;

Хоть тип шин входа и выхода и выбираешь стандартным STD_LOGIC_VECTOR генерация дает почему-то Real, что обнуляет ценность исходника для прямого применения.

В чем же секрет?

Что я пропустил?...

Автор: Acvarif Apr 19 2018, 11:06

Цитата(Мур @ Apr 19 2018, 13:32) *
В чем же секрет?

С помощью Матлаб можно получить коэффициенты фильтра.
Если фильтр предполагается использовать в ПЛИС то лучше код написать самостоятельно, подставив в него коэфф из матлаб.
Проверено. Работает.



Автор: Мур Apr 19 2018, 11:20

Цитата(Acvarif @ Apr 19 2018, 15:06) *
С помощью Матлаб можно получить коэффициенты фильтра.
Если фильтр предполагается использовать в ПЛИС то лучше код написать самостоятельно, подставив в него коэфф из матлаб.
Проверено. Работает.


Сие известно...
Только последние версии MATLAB претендуют на сквозное проектирование, когда математическая формальность может иметь прямой выход на поведенческое\архитектурное описание на HDL . Причем синтезабельное!...

Древние методы постепенно уходят в историю. Или вы утверждаете, что все это просто рюшечки и бантики?

Автор: Acvarif Apr 19 2018, 11:52

Цитата(Мур @ Apr 19 2018, 14:20) *
Сие известно...
Только последние версии MATLAB претендуют на сквозное проектирование, когда математическая формальность может иметь прямой выход на поведенческое\архитектурное описание на HDL . Причем синтезабельное!...

Древние методы постепенно уходят в историю. Или вы утверждаете, что все это просто рюшечки и бантики?

Не могу утверждать. Не проверял.
Если там real то код точно не для ПЛИС. real это вроде плавающий формат со знаком.
Прежде чем применить такой код нужно будет обеспечить ему на входе нужный формат данных.
Тоесть входные данные конвертировать из std_logic_vector в real.
А это уже химия. Хотя можно попробывать...

Автор: Мур Apr 19 2018, 12:02

Цитата(Acvarif @ Apr 19 2018, 15:52) *
Не могу утверждать. Не проверял.
Если там real то код точно не для ПЛИС. real это вроде плавающий формат со знаком.
Прежде чем применить такой код нужно будет обеспечить ему на входе нужный формат данных.
Тоесть входные данные конвертировать из std_logic_vector в real.
А это уже химия. Хотя можно попробывать...

Это понятно. Вопрос ведь в корректности применения инструментария. Такой ломовой метод ,похоже, ошибочен. Его можно применять в тестировании, как часть бенча. Но нуждаюсь я в том, чтобы меня направили на путь истинный. Он наверняка есть, но надо выдерживать некие каноны этапности и выборочности в Симулинке определенных библиотечных компонент. Надо усвоить прежде всего химию Матлаба, чтобы всю мощь его иметь в друзьях, а не во врагах.

Автор: Acvarif Apr 19 2018, 12:14

Цитата(Мур @ Apr 19 2018, 15:02) *
Это понятно. Вопрос ведь в корректности применения инструментария. Такой ломовой метод ,похоже, ошибочен. Его можно применять в тестировании, как часть бенча. Но нуждаюсь я в том, чтобы меня направили на путь истинный. Он наверняка есть, но надо выдерживать некие каноны этапности и выборочности в Симулинке определенных библиотечных компонент. Надо усвоить прежде всего химию Матлаба, чтобы всю мощь его иметь в друзьях, а не во врагах.

Про друзья это да.
В свое время тоже пробовал генерить для Xilinx. Также наткнулся на real и все...
Думаю если такой механизм заложен то не для рюшечек. Очевидно придется изучать матчасть..

Автор: RobFPGA Apr 19 2018, 12:18

Приветствую!

Цитата(Acvarif @ Apr 19 2018, 15:14) *
Про друзья это да.
В свое время тоже пробовал генерить для Xilinx. Также наткнулся на real и все...
Думаю если такой механизм заложен то не для рюшечек. Очевидно придется изучать матчасть..
Скорее всего нужно формат входов/выходов правильно указывать - для этого надо добавлять в simulink модель соответствующие конвертеры после/перед портами. Ну и при дизайне фильтра указывать параметры fixed point формата.

Успехов! Rob.


Автор: petrov Apr 19 2018, 12:56

Цитата(Мур @ Apr 19 2018, 13:32) *
В чем же секрет?


Начните с чего-нибудь попроще в симулинке, например с сумматора, умножителя, сдвигового регистра с отводами, как с fixed point типом данных работать, с синхронным режимом enabled подсистем.

Автор: Мур Apr 19 2018, 13:27

Цитата(petrov @ Apr 19 2018, 16:56) *
Начните с чего-нибудь попроще в симулинке, например с сумматора, умножителя, сдвигового регистра с отводами, как с fixed point типом данных работать, с синхронным режимом enabled подсистем.

Спасибо ...уже!
Просто были ошибочные представления о самом Матлаб. Магия рюшечек сработала, когда делал оценку-прикид в APPS и соблазн привел к некоторому разочарованию.

Копаюсь в кубиках...

Автор: Мур Apr 20 2018, 07:39

Там не сложно оказалось...

Просто предварительно(после того как станет понятно какой фильтр подходит). Следует в filterbuilder в Data Types выставить галочку Arithmetic -> Fixed point
...а дальше все как обычно, что я описывал

Автор: syoma Apr 26 2018, 08:13

Мур, я так понимаю, что Вы свою задачу решили. Просто хотел сказать, что да - получить приемлемый исходник на HDL с помощью MathLab можно. В том числе для fixed point.

Автор: Мур Apr 27 2018, 07:52

Цитата(syoma @ Apr 26 2018, 12:13) *
Мур, я так понимаю, что Вы свою задачу решили. Просто хотел сказать, что да - получить приемлемый исходник на HDL с помощью MathLab можно. В том числе для fixed point.


Да. Все в порядке. Кроме одного,- предельная частота исполнения 45МГц. Меня это устраивает, но напрягает...

Автор: syoma Apr 30 2018, 06:07

Цитата(Мур @ Apr 27 2018, 09:52) *
Да. Все в порядке. Кроме одного,- предельная частота исполнения 45МГц. Меня это устраивает, но напрягает...

Это от того, что вы еще не разобрались полностью с времянками и как их настраивать в Матлабе. У нас все это бегает на частотах до 250Мгц без особого напряга.

Автор: Мур May 2 2018, 11:24

Цитата(syoma @ Apr 30 2018, 10:07) *
Это от того, что вы еще не разобрались полностью с времянками и как их настраивать в Матлабе. У нас все это бегает на частотах до 250Мгц без особого напряга.


Есть ли локализованное место, где бы эти вопросы были бы освещены?
...Я встречал одно видео по поводу бабочки FFT, где лихо шаманят с быстродействием. Я понял, что это с опытом приходит...

Автор: Hale Aug 2 2018, 23:28

Про HDL не знаю, но те к-ты сверх-узкополосных полосовых фильтров Чебышева, что я считал в Октаве (бесплатный аналог Матлаба), идеально работают в наших ФПГА. Так что не вижу на что жаловаться.
А вот тот код что вы кинули... это что? Симулинк?
Многие люди путают сам Матлаб и Симулинк, к нему прилагающийся.
Да, и обходился я пакетом Signal. По мануалу, плюс код минимизации, потому что у Чебышева частота отсечки неявная, и ее надо подгонять.

Автор: Stanislav Aug 3 2018, 00:30

"Можно ли получить приемлемый исходник на HDL с помощью MathLab?"

С помощью MathLab ни приемлемый, ни неприемлемый исходник на HDL получить нельзя.

Автор: Herz Aug 6 2018, 11:19

В самом деле, http://electronix.ru/redirect.php?https://en.wikipedia.org/wiki/MATHLAB никакого отношения к МАТЛАБу не имеет.

Автор: Skryppy Aug 16 2018, 10:02

Чтобы получить синтезируемый hdl код из fdatool, надо после получения нужной ачх перейти на вкладку quantization и выставить нужную разрядность входных/выходных портов. Только после этого генерить код.
Вообще, если вам нужен максимально оптимизированный код под вашу плис, используйте matlab system generator. Тогда полученные фильтры на virtex7 работают на частотах
выше 400 МГц.
Красивый HDL код получается при генерации из Матлаб кода с помощью матлаб APPS-> HDL Coder (Hdl coder project).

Автор: Kluwert Aug 22 2018, 06:14

Получить можно. В отличии от старых версий Матлаба, где-то с версии 7.9 Матлаб из fdatool начал выдавать вполне читабельные и хорошо откомменченные исходники. По-крайней мере, руками вы напишите точно так же.

А дальше - проблема та же, что и с рукописными фильтрами. И в Инете полно инфы и мы в конторах, где я работал и работаю, неоднократно (даже на спор) проверяли. Не смотря на все шаманские игры с прописыванием таймквестов, включения лоджиклоков и т.д. и т.п., там где сгенерённый мегафункцией производителя фильтр легко выжимает 330-350МГц для примера, из рукописного (или Матлабовского), если у него не смешной совсем порядок только, с трудом удаётся дотащить, дай бог, до 200. Один раз, вручную распихав фильтр по DSP-блокам, удалось почти до 280 его дотянуть для того же камня, но это - мартышкин труд.

Поэтому, общая рекомендация такова: если у вас камень мощный, а вам достаточно относительно невысоких скоростей, то и генерите себе из Матлаба на здоровье. Если же нужно выжать из камня по максимуму, то увы.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)