Bad0512 2 11 июля, 2012 Опубликовано 11 июля, 2012 · Жалоба У меня другой вопрос, написал фильтр на verilog. Регистр сдвига сделан на двухпортовой памяти, коэффициенты так же хранятся в двухпортовой памяти. Количество коэффициентов, TAPS = 120. Входные данные и коэффициенты имеют разрядность = 32. Какую разрядность должен иметь MAC? И как правильно сделать усечение для получения 32 битного результата на выходе. P.S. Максимальная разрядность MAC расчитывается (разр. коэфф. + разрядность входа) + log2(TAPS) ??? У меня сделано так, на выход подаю старшие 32 бита MAC. В итоге имею на выходе фильтра дрейфующую в небольших пределах постоянку. Как победить? Найти информацию по теме "реализация деления знаковых целых чисел на степень двойки". Можно и самостоятельно понять суть проблемы : берёте отрицательное 16-разрядное число, отбрасываете у него 8 младших разрядов, затем сравниваете полученное число с исходным, поделённым на 256 на калькуляторе... Думаете... Объясняете полученные результаты... Пишите код. Всё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 11 июля, 2012 Опубликовано 11 июля, 2012 · Жалоба Найти информацию по теме "реализация деления знаковых целых чисел на степень двойки". Можно и самостоятельно понять суть проблемы : берёте отрицательное 16-разрядное число, отбрасываете у него 8 младших разрядов, затем сравниваете полученное число с исходным, поделённым на 256 на калькуляторе... Думаете... Объясняете полученные результаты... Пишите код. Всё. Не совсем понял вас. Как делить на степерь двойки я знаю. Есть 120 коэффициентов, при перемножении коэффициентов с максимальным уровнем входного сигнала на выходе каждого умножителя разрядная сетка будет скакать в пределах 32...64 бита (зависит от конкретного коэффициента фильтра), потом эти значения попадают на сумматор, на котором тоже увеличивается разрядная сетка. Вот собственно вопрос, как правильно сделать усечение на выходе, чтобы использовать максимально разрядную сетку? Так как не всегда старшие биты сумматора будут нести информацию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 11 июля, 2012 Опубликовано 11 июля, 2012 · Жалоба Не совсем понял вас. Как делить на степерь двойки я знаю. Есть 120 коэффициентов, при перемножении коэффициентов с максимальным уровнем входного сигнала на выходе каждого умножителя разрядная сетка будет скакать в пределах 32...64 бита (зависит от конкретного коэффициента фильтра), потом эти значения попадают на сумматор, на котором тоже увеличивается разрядная сетка. Вот собственно вопрос, как правильно сделать усечение на выходе, чтобы использовать максимально разрядную сетку? Так как не всегда старшие биты сумматора будут нести информацию. хмм, ну как бы 1. усиление фильтра посчитать 2. правила округления вспомнить Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 12 июля, 2012 Опубликовано 12 июля, 2012 · Жалоба Не совсем понял вас. Как делить на степерь двойки я знаю. Есть 120 коэффициентов, при перемножении коэффициентов с максимальным уровнем входного сигнала на выходе каждого умножителя разрядная сетка будет скакать в пределах 32...64 бита (зависит от конкретного коэффициента фильтра), потом эти значения попадают на сумматор, на котором тоже увеличивается разрядная сетка. Вот собственно вопрос, как правильно сделать усечение на выходе, чтобы использовать максимально разрядную сетку? Так как не всегда старшие биты сумматора будут нести информацию. Вы уж определитесь чего вам больше хочется - использовать разрядную сетку МАКСИМАЛЬНО - тогда вообще ничего усекать нельзя (любое усечение по определнию снижает точность представления) , или всё-таки "правильно сделать усечение". Именно про этот второй пункт я вам и намекал. Нельзя просто отбрасывать младшие разряды, следствие этого - та самая мелкая постоянка на выходе фильтра. Чтобы усекать правильно, надо как минимум одинаковым образом усекать как положительные, так и отрицательные числа. Ну а способов тут несколько, подумайте сами и выбирайте наиболее вам подходящий. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuchynski 0 30 июля, 2012 Опубликовано 30 июля, 2012 · Жалоба Когда-то такой прогой пользовался. На малых скоростях должна работать. ps. clk в несколько раз больше частоты дискретизации, в зависимости от размера фильтра. Filter.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться