Files
AD7766_fw/README.md
T
2026-08-11 12:19:34 +03:00

4.2 KiB
Raw Blame History

AD7766 на Tang Primer 25K

Отладочная прошивка для AD7766: непрерывная оцифровка дифференциального входа и выдача отсчётов по UART для просмотра в Signal_analayzer.

MCLK 1.000 МГц -> ODR 125 kSPS -> дециматор sinc^1 /10 -> 12 500 Гц -> кадры по 50 отсчётов -> UART 921600.

Параметры и обоснования со ссылками на даташит — docs/design.md. Распиновка — docs/pinout.md.

Состав

Файл Назначение
src/Top.vhd верхний уровень: только экземпляры и связи, без логики
src/SPI_Master.vhd битовый уровень обмена: CS, SCLK, защёлка SDO
src/SPI_Ctrl.vhd MCLK, сброс через SYNC/PD, запуск чтения по спаду DRDY
src/decimator.vhd усреднение по 10 отсчётам
src/fifo_top.vhd буфер отсчётов, заглушка под IP-ядро Gowin
src/Packets_creator.vhd сборка кадра с CRC-16
src/UART.vhd передатчик, взят из zvp_da_common без изменений
src/led_status.vhd индикация частотой мигания
src/AD7766.cst привязка выводов
tb/ad7766_model.vhd поведенческая модель АЦП по Table 3
tb/tb_top.vhd сквозной тест: модель -> ПЛИС -> UART -> разбор кадра
tools/uart_capture.py приём кадров, запись .raw и .bin
tools/uart_live.py живой просмотр: осциллограмма, спектр, счётчики

Симуляция (GHDL)

ghdl -a --std=08 --workdir=build src/fifo_top.vhd src/UART.vhd src/led_status.vhd src/SPI_Master.vhd src/SPI_Ctrl.vhd src/decimator.vhd src/Packets_creator.vhd src/Top.vhd tb/ad7766_model.vhd tb/tb_top.vhd && ghdl -e --std=08 --workdir=build tb_top && ./tb_top --stop-time=20ms

Модель выдаёт группами по 10 одинаковых слов, поэтому усреднённый отсчёт обязан совпасть со значением группы побитово. Число проверяемых кадров задаётся -gFRAMES=N (один кадр ~4 мс модельного времени).

Запись с железа

py -3 tools/uart_capture.py --list
py -3 tools/uart_capture.py --port COM5 --seconds 10 --out test1

Получаются test1.raw (весь поток как пришёл, для отладки канала), test1.bin (только отсчёты, читается read_24bit_bin()) и test1.log.

В Signal_analayzer для этих данных: 'FS': 12500, 'V_REF': 5.

Живой просмотр

py -3 tools/uart_live.py --port COM10

Осциллограмма, спектр и счётчики кадров в реальном времени — чтобы посмотреть сигнал до того, как писать запись. Управление кнопками внизу окна: запись, автомасштаб, вычитание постоянной составляющей, вид спектра, пауза. Те же действия продублированы клавишами r, a, d, s, f, выход — q.

Запись встроена в просмотр по необходимости: COM-порт держит один процесс, и запустить uart_capture.py на том же порту параллельно нельзя. Для записи без просмотра остаётся uart_capture.py — он же нужен, когда важно фиксированное время записи.

Разбор кадров у обоих инструментов общий (FrameParser в uart_capture.py): формат описан в одном месте, так что просмотр и запись не могут разойтись.