Провозившись с реализацией fft на fpga, я было подумал какой это гимор, на процах ведь проще. Однако после этой статьи задумался - даже описание моей реализации займет меньше текста)
Попробую упростить. Конвейер - это способ разбить длинные(имеющие большую задержку) логические цепи на короткие(имеющие меньшую задержку). Меньше задержка = выше частота. Выше частота=выше производительность. Побочные эффекты - больше требуется регистров, а также значительно более трудная и ненаглядная отладка.
Не попытка ли это плодить сущности? Настроить таймер/уарт/etc это лишь записать насколько регистров. Это довольно просто и интуитивно. А плодить rtos, и еще сверху оверхед - разумно ли это? Я не критикую, просто дискуссия.
Вот сугубо практическая задача. dma принимает с внешнего источника пакеты - кольцевой буфер, прерывания на середине и конце буфера - ну как обычно. Как это на этой недожаве реализовывать?
ZC конечно хороша, но коррелятор на нее в time domain весьма ресурсен, и на мой взгляд неоправданно вносит сложность. Попробуйте комплексную m последовательность. Она работает ± также. На приеме никакого "единичного пика" шириной в 1 отсчет не происходит даже в самых лабораторных условия. Но есть максимум корреляции. Один, если допплер умеренный. Ну а дальше дело уже значительно проще.
Все таки про пилоты хотелось бы более детальной инфы). Метод восстановления из "учебника" конечно понятен. Однако все же практический опыт гораздо ценнее - вот допустим юзается сглаживание пилотов с несколькими символами. Но как быть с первым(или несколько первых) символом в пакете? Все что - есть - это пилоты этого символа, которые содержат шум и замирания точно также как и все остальные. А методы аппроксимации пилотов на остальные поднесущие - можно кубический сплайн поюзать, а можно и кусочнолинейную - есть ли разница на практике?
Я юзаю подобные методы, описанные в статье, для подачи тестовых последовательностей(i q) в приемник, точнее на вход fpga. Правильно наложить шум для имитации - полезно и необходимо, особенно при низких snr, например, -20дб для отладки корреляции с pss.
Забыл когда в последний раз юзал внешний лог анализатор. Внутрисхемный - очень удобно. В quartus это signaltap. В gowin - gao. После отладки в gao на альтеровские плис смотреть нет никакого желания.
Провозившись с реализацией fft на fpga, я было подумал какой это гимор, на процах ведь проще. Однако после этой статьи задумался - даже описание моей реализации займет меньше текста)
Попробую упростить. Конвейер - это способ разбить длинные(имеющие большую задержку) логические цепи на короткие(имеющие меньшую задержку). Меньше задержка = выше частота. Выше частота=выше производительность. Побочные эффекты - больше требуется регистров, а также значительно более трудная и ненаглядная отладка.
Разумно ли вообще сейчас что-то пилить на древних устаревших и дорогих mcu? Китайские кортексы ххх32 дешевы, мощны и куча периферии.
Клод отлично и красиво пишет на верилоге. Сам тестит. Сказка и только - но жаль не работает этот код.
Для PCI я писал еще на ahdl в 2003 году, убиралось в 256 ячеек.
Не попытка ли это плодить сущности? Настроить таймер/уарт/etc это лишь записать насколько регистров. Это довольно просто и интуитивно. А плодить rtos, и еще сверху оверхед - разумно ли это? Я не критикую, просто дискуссия.
Вот сугубо практическая задача. dma принимает с внешнего источника пакеты - кольцевой буфер, прерывания на середине и конце буфера - ну как обычно. Как это на этой недожаве реализовывать?
Целая коллекция отказов)
Если не секрет - чьи ацп/трансиверы?
ZC конечно хороша, но коррелятор на нее в time domain весьма ресурсен, и на мой взгляд неоправданно вносит сложность. Попробуйте комплексную m последовательность. Она работает ± также. На приеме никакого "единичного пика" шириной в 1 отсчет не происходит даже в самых лабораторных условия. Но есть максимум корреляции. Один, если допплер умеренный. Ну а дальше дело уже значительно проще.
Спасибо за коммент.
Все таки про пилоты хотелось бы более детальной инфы). Метод восстановления из "учебника" конечно понятен. Однако все же практический опыт гораздо ценнее - вот допустим юзается сглаживание пилотов с несколькими символами. Но как быть с первым(или несколько первых) символом в пакете? Все что - есть - это пилоты этого символа, которые содержат шум и замирания точно также как и все остальные. А методы аппроксимации пилотов на остальные поднесущие - можно кубический сплайн поюзать, а можно и кусочнолинейную - есть ли разница на практике?
Как при приеме восстанавливается частотный профиль канала? И где архитектурно.
Коррекция пик фактора вносит искажения, которые считаются допустимыми? Или неким образом подмешиваются/изменяются некие служебные поднесущие?
Как допплер на приеме учитывается, особенно при сетках типа 15кГц?
Клод кодит на верилоге красивый код, даже на сложных промтах, успешно синтезируется. Но одна беда - он не рабочий.
Я юзаю подобные методы, описанные в статье, для подачи тестовых последовательностей(i q) в приемник, точнее на вход fpga. Правильно наложить шум для имитации - полезно и необходимо, особенно при низких snr, например, -20дб для отладки корреляции с pss.
Забыл когда в последний раз юзал внешний лог анализатор. Внутрисхемный - очень удобно. В quartus это signaltap. В gowin - gao. После отладки в gao на альтеровские плис смотреть нет никакого желания.
Может не стоит тогда отдавать все китайцам и делать часть (или все) производства тут? Да не, бред какой-то, отдадим им и что-нибудь придумаем
8 слоев 0.1/0.1 точно делают тут
Резонит же делает
Отпадать необходимость в модуляции несущей никак не может если передается что-то
Зачем это когда есть ofdm?
Как в кикаде обстоит дело с аналогами snippets/reuse block?