rst_n был прибит к единице, и состояние модулей после конфигурации задавали
только начальные значения регистров. Теперь короткий сброс на 256 тактов.
Симуляция проходит. Отсутствия байт на UART это не вылечило -- коммит
самостоятельный, как гигиена, а не как исправление.
LED_SRC=3 гонит на светодиод делитель прямо от clk, мимо тракта. Период,
отличный от секунды, означает, что clk не равен SYS_CLK_HZ -- тогда неверны
и частота PDM, и скорость UART, и шкала мигания.
README: UART обратно на G5, добавлены номера контактов гребёнки и заметка
про VCCIO6/7, подаваемое снаружи.
На Dock-плате приёмник встроенного моста BL616 заведён на C3 (IOB56B,
подписан FPGA_UART_TX, контакт 21 гребёнки, банк 4 с фиксированными 3.3 В).
G5 -- это просто контакт 22, он годится только для внешнего моста, посаженного
на гребёнку. Прошивка исправно передавала кадры в неподключённый вывод,
отсюда полное отсутствие байт на ПК при живом тракте.
В README распиновка дополнена номерами контактов гребёнки и заметкой про
VCCIO6/7, которое на этой плате подаётся снаружи.
MIC_CLK J11, MIC_DAT J10, MIC_SEL K7 -- все в банке 7. DATA получила
подтяжку вниз: микрофон отпускает шину на половину периода, а без микрофона
вход давал бы неопределённость вместо однозначного признака обрыва.
Выводы clk и LED на двойных функциях, без разрешения CPU/SSPI/READY как
обычных размещение падает. Проверено сквозной сборкой: битстрим собирается,
Fmax 164 МГц против требуемых 50, нарушений нет.
Разбор кадров и запись .raw/.bin не трогали. Заменена только шкала: у
микрофона нет опорного напряжения, уровни считаются от полной шкалы.
Бит1 STATUS теперь показывается как насыщение дециматора.
Модель -- сигма-дельта первого порядка с высокоимпедансным состоянием вне
рабочей фазы, так что выборка не в той фазе видна сразу. Три режима дают
точно вычислимый ответ: постоянные 1 и 0 -- плюс/минус полная шкала, а
чередование 1010 -- ровно ноль, эта частота попадает в нуль АЧХ CIC.
Четвёртый режим синусный, проверяется размах.
Буфер ФНЧ получил начальное значение: иначе первые свёртки тянули
неопределённость через весь тракт.
Микрофон тактируется на 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 дБ.
FIFO, сборка кадра с CRC-16, передатчик UART и индикация переносятся
из имеющегося наработанного тракта без изменения логики. В STATUS бит1
переопределён под насыщение дециматора: DRDY здесь нет.