Commit Graph
15 Commits
Author SHA1 Message Date
Gromov_IA 2672f8b8a8 Стенд: ЦАП PCM5102A, кнопка усиления, линия LVDS, UART через BL616
- вторая ветвь тракта: отсчёты ФНЧ -> пересчёт в 48 828 Гц -> I2S на
  PCM5102A (dac_stream.v, i2s_transmitter.v), тест tb_dac_stream.v;
- кнопка S1 (H11): усиление ветви ЦАП ступенями по +6 дБ, показ ступени
  светодиодом (gain_button.vhd), тест tb_gain_button.vhd;
- микрофон через линию SN65LVDS: точка выборки MIC_SMP_CNT = 12 по
  измерению на плате (pdm_rx.vhd), в tb_top модель линии;
- новая распиновка: MIC_CLK K8, MIC_DAT K9, ЦАП G1/G2/L4/L3, UART_TX C3
  на встроенный мост BL616;
- сборка под GW5A-25 ревизии A, настройки PnR (CPU/SSPI/READY как GPIO);
- отладочный выход PLL 80 МГц на E3.
2026-10-02 14:21:06 +03:00
nikit3s 668c0564e9 Порядок CIC 3 вместо 4: аккумуляторы шире 18 бит не работают в кристалле
Тракт молча отдавал нули: 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 чистый, на входе живой звук.
2026-08-18 12:06:43 +03:00
nikit3s f936d86f89 Сброс по включению вместо константы
rst_n был прибит к единице, и состояние модулей после конфигурации задавали
только начальные значения регистров. Теперь короткий сброс на 256 тактов.
Симуляция проходит. Отсутствия байт на UART это не вылечило -- коммит
самостоятельный, как гигиена, а не как исправление.
2026-08-17 18:58:37 +03:00
nikit3s 58e6a11a3f Маяк 1 Гц на светодиод для проверки системной частоты
LED_SRC=3 гонит на светодиод делитель прямо от clk, мимо тракта. Период,
отличный от секунды, означает, что clk не равен SYS_CLK_HZ -- тогда неверны
и частота PDM, и скорость UART, и шкала мигания.

README: UART обратно на G5, добавлены номера контактов гребёнки и заметка
про VCCIO6/7, подаваемое снаружи.
2026-08-17 18:13:16 +03:00
nikit3s 5fbb3c3eb9 Возврат UART на G5
Встроенный мост ограничен по скорости, используется внешний, посаженный
на контакт гребёнки. Пин C3 был ошибочной правкой.
2026-08-17 18:06:14 +03:00
nikit3s df179829bf UART на C3: G5 никуда не подключён
На Dock-плате приёмник встроенного моста BL616 заведён на C3 (IOB56B,
подписан FPGA_UART_TX, контакт 21 гребёнки, банк 4 с фиксированными 3.3 В).
G5 -- это просто контакт 22, он годится только для внешнего моста, посаженного
на гребёнку. Прошивка исправно передавала кадры в неподключённый вывод,
отсюда полное отсутствие байт на ПК при живом тракте.

В README распиновка дополнена номерами контактов гребёнки и заметкой про
VCCIO6/7, которое на этой плате подаётся снаружи.
2026-08-17 18:01:01 +03:00
nikit3s 4aa221105a Светодиод с выбираемым источником для поиска обрыва тракта
Генерик LED_SRC переключает индикацию между стробами ФНЧ, CIC и PDM.
По умолчанию рабочий режим, поведение не меняется.
2026-08-17 17:42:42 +03:00
nikit3s d3ec80b461 Привязка выводов микрофона, подтяжка вниз на DATA
MIC_CLK J11, MIC_DAT J10, MIC_SEL K7 -- все в банке 7. DATA получила
подтяжку вниз: микрофон отпускает шину на половину периода, а без микрофона
вход давал бы неопределённость вместо однозначного признака обрыва.
2026-08-14 17:53:35 +03:00
nikit3s a4a12fbc0d README: заметка о сборке
Выводы clk и LED на двойных функциях, без разрешения CPU/SSPI/READY как
обычных размещение падает. Проверено сквозной сборкой: битстрим собирается,
Fmax 164 МГц против требуемых 50, нарушений нет.
2026-08-14 16:17:05 +03:00
nikit3s 41f00b37be README: параметры тракта, формат кадра, распиновка и запуск 2026-08-14 16:10:57 +03:00
nikit3s c1ac8d59ca Приёмные скрипты: шкала dBFS вместо вольт
Разбор кадров и запись .raw/.bin не трогали. Заменена только шкала: у
микрофона нет опорного напряжения, уровни считаются от полной шкалы.
Бит1 STATUS теперь показывается как насыщение дециматора.
2026-08-14 16:10:57 +03:00
nikit3s 61488b41e2 Тестбенч: модель микрофона и сквозная проверка тракта
Модель -- сигма-дельта первого порядка с высокоимпедансным состоянием вне
рабочей фазы, так что выборка не в той фазе видна сразу. Три режима дают
точно вычислимый ответ: постоянные 1 и 0 -- плюс/минус полная шкала, а
чередование 1010 -- ровно ноль, эта частота попадает в нуль АЧХ CIC.
Четвёртый режим синусный, проверяется размах.

Буфер ФНЧ получил начальное значение: иначе первые свёртки тянули
неопределённость через весь тракт.
2026-08-14 16:07:41 +03:00
nikit3s 708eda782b Верхний уровень, ограничения и проект Gowin
Выводы микрофона в .cst пока закомментированы: номера подставим при
разводке. Бит1 STATUS кадра занят насыщением выхода дециматора.
2026-08-14 16:02:40 +03:00
nikit3s 2af3a91ec9 Приём PDM и дециматор: CIC sinc^4 /50 плюс ФНЧ /5
Микрофон тактируется на 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 дБ.
2026-08-14 16:02:40 +03:00
nikit3s 2d66c49031 Модули буфера, упаковки кадров и UART
FIFO, сборка кадра с CRC-16, передатчик UART и индикация переносятся
из имеющегося наработанного тракта без изменения логики. В STATUS бит1
переопределён под насыщение дециматора: DRDY здесь нет.
2026-08-14 15:54:53 +03:00