Почему мой фильтр не является точным? - PullRequest
1 голос
/ 18 июля 2009

Я имитирую цифровой фильтр, который является 4-х ступенчатым.

Этапы:

  1. CIC
  2. половина полосы
  3. OSR
  4. 128

Входное значение составляет 4 бита, а выходное значение составляет 24 бита. Я запутался в 24-битном выводе.

Я использую MATLAB для генерации 4-битного синусоидального входа со знаком (с помощью инструмента SD) и моделирую с помощью modelsim Таким образом, на выходе также должна быть синозоида. Проблема в том, что выходные данные содержат только 4 разных данных.

Для 24-битного вывода, разве мы не должны получить 2 ^ 24-1 различных данных? В чем причина этого? Это из-за внутренней ширины бита?

Ответы [ 3 ]

1 голос
/ 19 июля 2009

Я не знаком с Modelsim, и я не понимаю терминологию фильтра, которую вы использовали, но ... Являются ли ваши фильтры линейными системами? Если это так, вход на данной частоте будет вызывать выход на той же частоте, хотя, возможно, разные амплитуды и фазы. Если ваш входной сигнал является одним тоном, сэмплированным таким образом, что в каждом цикле четыре значения, выход будет иметь четыре значения в каждом цикле. Если только один из этапов не выполняет преобразование частоты дискретизации, система ведет себя как ожидалось. Как указывало Донни Дебоер , ширина слова в вычислении не имеет значения, поскольку она может представлять четыре значения ввода.

Опять же, я не знаком с особенностями вашей системы, поэтому, если один из этапов действительно выполняет преобразование частоты дискретизации, это не относится.

0 голосов
/ 22 октября 2009

Это на самом деле довольно просто:

  1. Даже если у вас есть 4 бита ввода, ваши коэффициенты фильтра могут быть больше, чем 4 бита.
  2. Каждый этап математики добавляет биты. Если вы добавите два 4-битных значения, ответ будет 5-битным числом, так что добавление 0xf и 0xf не переполняется. Когда вы умножаете два 4-битных значения, вам действительно нужно 8 бит вывода, чтобы удержать ответ без возможности переполнения. К тому времени, когда вся математика будет сделана, вашему 4-битному входу, очевидно, понадобятся 24-битные, чтобы сохранить максимально возможный выход.
0 голосов
/ 18 июля 2009

Простите, что у меня нет знаний о фильтрах, но интерполирует ли одна из ступеней фильтра входные значения? Если нет, то вы получите только 2 ^ 4 выходных значения (в зависимости от входного разрешения), независимо от вашего выходного разрешения. То, что вы выводите в 24-битный формат, не означает, что вы получите 2 ^ 24 значения ... представьте, что вы запустите цифровой прямоугольный сигнал в преобразователь D-> A. У вас есть все выходное разрешение в мире, но у вас все еще есть только 2 значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...