Тракт молча отдавал нули: CIC с 26-битными аккумуляторами в железе не считает,
хотя синтез, трассировка, тайминг и симуляция чистые. Порог найден перебором на
плате с приёмом по UART: 26, 24 и 20 бит мертвы, 18, 16 и 10 работают.
Порядок 3 требует ровно 18 бит вместо 24 и попадает в рабочую область.
Характеристики от этого стали лучше: подавление в задерживании 76 дБ вместо 72,
сворачиваемых полос 92 дБ вместо 77, полоса та же 0.032 дБ. Коэффициенты ФНЧ
пересчитаны под sinc^3, сдвиг выхода уменьшен до 13 -- усиление CIC теперь
50^3, и коэффициенты по-прежнему укладываются в 18 бит.
Сброс по включению убран: он тоже убивает тракт, проверено прошивкой в обе
стороны. Маяк светодиода вынесен в условную генерацию, чтобы его широкий
счётчик не собирался в рабочем режиме.
Проверено на плате: 1481 кадр за 6 с, 74050 отсчётов, CRC без ошибок,
STATUS чистый, на входе живой звук.
Микрофон тактируется на 3.125 МГц (50/16, Normal mode). CIC снимает поток
до 62.5 кГц без умножителей, дальше симметричный ФНЧ на 221 отвод даёт
12 500 Гц: он же давит полосы, сворачивающиеся при децимации на 5, и
выравнивает спад CIC.
Коэффициенты считает tools/gen_fir_coefs.py и кладёт в fir_coefs_pkg.vhd.
Масштаб подобран так, что постоянная единица на выводе данных микрофона
даёт полную шкалу 24 бит, поэтому шкала выхода -- dBFS.
Достигнуто: неравномерность полосы 0..5 кГц 0.032 дБ, подавление от
6250 Гц 72 дБ, подавление сворачиваемых полос 77 дБ.