Для проектирования фильтра в ТЗ дано его разностное уравнение и соответствующие коэффициенты. Так как ячейка памяти может содержать 8ми разрядно двоичное число, причем старший разряд – знаковый, то необходимо провести округление коэффициентов фильтра до семи разрядов.
При помощи программы Matlab выберем способ округления. Для этого построим АЧХ фильтров при различном округлении (рис. 3) и сравним с АЧХ заданного фильтра. На основе сравнения выберем тот способ, который лучше удовлетворяет ТЗ и виду фильтра (ВЧ).
Возьмем способ округления – отбрасыванием дробной части (зеленый график) (рис. 4).
рис. 3
рис. 4
Исходные коэффициенты (Dec) | Исходные коэффициенты (Bin) | Округленные коэффициенты* (Dec) | Округленные коэффициенты* (Bin) (ПК) | Округленные коэффициенты (Hex) | |
B1 | 0.023815103093366 | 0,00000110 | 3 | 00000011 | 03 |
B2 | 0.014780763864104 | 0,00000011 | 1 | 00000001 | 01 |
B3 | -0.067269084707391 | -0,00010001 | -8 | 10001000 | 88 |
B4 | 0.054715869201380 | 0,00001110 | 7 | 00000111 | 07 |
B5 | 0.089243271343775 | 0,00010110 | 11 | 00001011 | 0B |
B6 | -0.295613381939767 | -0,01001011 | -37 | 10100101 | A5 |
B7 | 0.394551759773816 | 0,01100101 | 50 | 00110010 | 32 |
B8 | -0.295613381939767 | -0,01001011 | -37 | 10100101 | A5 |
B9 | 0.089243271343775 | 0,00010110 | 11 | 00001011 | 0B |
B10 | 0.054715869201380 | 0,00001110 | 7 | 00000111 | 07 |
B11 | -0.067269084707391 | -0,00010001 | -8 | 00001000 | 88 |
B12 | 0.014780763864104 | 0,00000011 | 1 | 00000001 | 01 |
B13 | 0.023815103093366 | 0,00000110 | 3 | 00000011 | 03 |
|
|
Сумма модулей исходных коэффициентов:
1.48542670807338
Сумма модулей коэффициентов числителя:
1.43750000000000
В ТЗ дано следующее разностное уравнение:
,М=12
Т.к. заданные коэффициенты симметричны, то разностное уравнение можно преобразовать к следующему виду:
Такое преобразование разностного уравнения позволит сократить программу вычисления отсчета на 7 циклов.
Необходимо учесть, что в некоторых случая сумма двух отсчетов может переполнить 8ми разрядную сетку. Поэтому примем, что входные отсчеты по модулю меньше 0.5(10). Тогда сумма этих отсчетов не будет приводить к переполнению разрядной сетки.