Перейти к содержанию
    

Mathlab/Simulink IIR filter - непонятное поведение

Создал в Simulink IIR filter (direct form II transposed). Сделал такую же поведенческую модель в Hdl. Рассчитал коэффициенты для одной полосы аудио параметрического эквалайзера (Gain, Fc, Q). Подаю на обе модели шум. Модель на Hdl считает в double. Сравниваю результат работы Hdl модели и Simulink модели, - ачх одинаковые, за исключением референсного уровня, в  Simulink он 0 db, как и тестовый шум, a в Hdl модели он смещен примерно на  минус 20 db. В чем может быть причина, чего я не понимаю? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете рассказать как ваша модель hdl считает в double? Под double вы подразумеваете 64 бита в формате fixed_64_63 или я чего-то не понимаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Skryppy сказал:

Можете рассказать как ваша модель hdl считает в double? Под double вы подразумеваете 64 бита в формате fixed_64_63 или я чего-то не понимаю.

Да, автор не уточнил, что у него за модель.

В VHDL еcть тип real. Для модели, не предназначенной для синтеза, его использовать никто не запрещает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извиняюсь, не уточнил. На самом деле есть 2 модели - первая для быстрой оценки, ускорения верификации, там применен Real (Verilog), вторая - для синтеза, в ней используются Xilinx IP core Float Point, там честные IEE754 Double. Результаты работы у них одинаковые, как и написал выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как вы получаете АЧХ фильтра? Смотрите на спектр выходного сигнала, когда на вход подаёте белый шум? Я бы на вашем месте сделал несколько контрольных точек внутри схемы. Но сначала проверил бы отдельно сам фильтр (коэффициенты, коэффициент усиления, если такой имеется как отдельный параметр, и т.д.).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Расхождение в 20 дБ может быть из-за разного количества бит для хранения промежуточных результатов.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще один момент, о котором забыл упомянуть. Поведенческая модель сгенерена HDL кодером, рабочая для синтеза написана от руки (pipeline, multichannel, coefficient load, etc). Повторюсь, работают одинаково(как и Simulink модель), за исключением смещения уровня (обе смещают одинаково в минус уровень), в отличии от Simulink модели, у которой референс в нуле. Меня терзают смутные сомненья, - Simulink и сгенеренная HDL кодером, это творенья Mathworks, но работают по разному.

Изменено пользователем ncs5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, ncs5 said:

  "Расхождение в 20 дБ может быть из-за разного количества бит для хранения промежуточных результатов."

 

 

Все вообще в 64 битах производится (вход, обработка, промежуточные, коэффициенты, выход).

 
 
 
 

 

Изменено пользователем ncs5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...