Модуль NCO (Numerically Controlled Oscillator) является ядром любой микросхемы DDS (прямого цифрового синтеза). Но в специализированных микросхемах старшие разряды (обычно 10...12 из 28...32) сумматора модуля подключены к ROM в которой прописана форма синтезируемого сигнала. То есть на каждый такт суммирования (опорной частоты DDS) генерируется один отсчет выходного сигнала. В модулях NCO PIC-ов, естественно, нет такой возможности и единственная форма сигнала, которую этот модуль может генерировать - импульсы фиксированной длительности синтезируемой частоты следования. Для синтеза собственно сигналов произвольной формы нужно настроить синтезируемую частоту модуля на частоту ВЫБОРОК синтезируемого сигнала произвольной формы. Например мы хотим синтезировать синус частотой 1,111 кГц с дискретностью по времени в 256 отсчетов. Значит нам нужно настроить NCO модуль на частоту 284,416 кГц. Выбираем в качестве накачки NCO осциллятор МК с включенной PLL. Пусть это будет 32 МГц (8 MIPS). При 20-разрядном сумматоре модуля NCO код искомой частоты (значение инкрементного регистра NCO) будет: N=FoutDDS*2^20/Fosc=284416*2^20/32000000=9320. С учетом округления реальная частота составит: F=32000000*9320/2^20=284424 Гц, а синтезируемый синус будет иметь частоту 1111,03 Гц. Каждое переполнение модуля NCO помимо генерации импульса настроенной длительности, генерируется прерывание, в котором и следует перегрузить очередное значение сигнала из таблицы в PWM или DAC. Таким образом, на крошечном и дешевом PIC10F322 можно сделать настоящий DDS. Правда из-за такого способа синтеза на выходе простейшей RC не обойтись, но даже простейший ФНЧ на ОУ даст очень неплохой результат. При использовании новейших PIC18F25Q43 с DMA и осциллятором 64 МГц описанная задача станет фоновой и не требующей от ядра МК вообще никаких ресурсов кроме нескольких строк в прерывании от DMA один раз на период синтезируемого сигнала. К слову, отпускная стоимость упомянутого PIC18 у Микрочипа, как неожиданно выяснилось - менее 1 бакса...
Последний раз редактировалось КРАМ Пн апр 13, 2020 17:24:38, всего редактировалось 2 раз(а).
Чем это лучше обычного ЦАПа? Хотя судя по описанию это больше похоже на ШИМ с переменной скважностью.
КРАМ писал(а):
При использовании новейших PIC18F25Q43 с DMA и осциллятором 64 МГц описанная задача станет фоновой и не требующей от ядра МК вообще никаких ресурсов кроме нескольких строк в прерывании от DMA один раз на период синтезируемого сигнала. К слову, отпускная стоимость упомянутого PIC18 у Микрочипа, как неожиданно выяснилось - менее 1 бакса
Ну если так считать, можно взять STM32F030F4P6 стоимостью 0.25$ работающий на 48 МГц (разгоняется до 96 МГц) и имеющий DMA и 32-ух битный таймер. А дальше DMA + Timer PWM решают задачу.
Чем это лучше обычного ЦАПа? Хотя судя по описанию это больше похоже на ШИМ с переменной скважностью. ..... ....А дальше DMA + Timer PWM решают задачу.
Судя "по описанию", Вы ни хрена ничего не поняли. Учите матчасть. На STM32 за четверть доллара тоже можно сделать DDS. Только он займет практически все ресурсы МК. И дело тут не в PWM или DAC. Последние вообще в процедуре прямого синтеза лишь преобразуют код в аналог. Основная задача создать генератор этого кода с разрешением (перестройкой) по частоте в доли процента. ЗЫ. К слову, последнюю неделю переделывал один из наших (в смысле нашей компании) проектов с STM32F051 на упомянутый выше PIC18. Ну то есть такое ощущение, что я пересел с запорожца на мерседес. А задач по сути было две. Синтезировать синус 80...180 Гц и измерять ЧМ сигнал с центральной частотой 8 МГц и изменяемой девиацией от нуля до 2 МГц. Измерять нужно девиацию, частоту модуляции и центральную частоту. Все аппаратно.
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO
подробнее>>
КРАМ
Заголовок сообщения: Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг
Вот я как раз для измерений ЧМ сигнала и воспользовался SMT модулем. Плюс к этому полный "коммунизм" с синхронизациями всего от всего, кучей CLC и PWM-ов со своими таймерами, практически неограниченый ремап периферии на пины - ограничения незначительны настолько, что я на двух УАРТах, SPI, SMT, таймере взятом наобум, и так же наобум выбранном PWM угадал на 100% подключение пинов. Расположение которых я взял так, как это было удобно в топологии довольно плотной платы.
Каждое переполнение модуля NCO помимо генерации импульса настроенной длительности, генерируется прерывание, в котором и следует перегрузить очередное значение сигнала из таблицы в PWM или DAC.
---- При использовании новейших PIC18F25Q43 с DMA и осциллятором 64 МГц описанная задача станет фоновой и не требующей от ядра МК вообще никаких ресурсов кроме нескольких строк в прерывании от DMA один раз на период синтезируемого сигнала.
Когда тебе и гонюбесов показали то же самое на stm32 - причем полностью аппаратное , без каких либо прерываний , да и выхлоп БЫЛ 3Хфазного синуса. Напомни мне, кто воротил носом и презрительно фыркал?
Когда тебе и гонюбесов показали то же самое на stm32 - причем полностью аппаратное , без каких либо прерываний , да и выхлоп БЫЛ 3Хфазного синуса. Напомни мне, кто воротил носом и презрительно фыркал?
Пацан сказал - пацан сделал... Но тебе и делать не требуется. Все что требуется, это рассказать как ты реализуешь, скажем, сетку синусоид с частотами от 100 до 100,99 Гц с шагом в 0,01Гц. Не нужно код. Просто принцип. Может ты забыл, но я напомню, речь идет о DDS с цифровой перестройкой, а не о простом синтезе какой то синусоиды...
Может и не с такой точностью, но уж звездеть о том что DDS сожрет все ресурсы- не надо. А принцип тебе уже выше на пальцах изложили - Реквесты DMA от 32х битного таймера +PWM (до 4х каналов == до 4х фаз )
Последний раз редактировалось dosikus Вт апр 14, 2020 11:16:02, всего редактировалось 1 раз.
А принцип тебе уже выше на пальцах изложили - DMA +PWM на 32х битном таймере.
Ты видимо совсем не в теме... Досикус, зачем ты лезешь в тему, в которой ВООБЩЕ некопенгаген? Просто позвиздеть ни о чем? Какое отношение PWM имеет к обсуждаемому вопросу? Какое отношение DMA имеет к обсуждаемому вопросу? Способ вывода в ЦАП (PWM или потенциальный DAC - неважно), как и сам этот ЦАП тут не обсуждался. От слова вообще.
Не уподобляйся местным хомячкам. Причем здесь DMA ?
Цитата:
При использовании новейших PIC18F25Q43 с DMA и осциллятором 64 МГц описанная задача станет фоновой и не требующей от ядра МК вообще никаких ресурсов кроме нескольких строк в прерывании от DMA один раз на период синтезируемого сигнала.
Однако это твое.
Переброс массива таблицы синуса через DMA в модуль PWM таймера. У тебя 20битный NCO, в прерывании( о боже) заносится в PWM из таблицы. Здесь реквест от 32х битного таймера пинает DMA, занося одновременно 4( Карл, 4) значения для 4х PWM выхлопов. И все это чисто аппаратно - и " задача станет фоновой" и даже без прерываний. Ну и кто некопенгаген?
Досикус, ты настолько самоуверен, что продолжаешь нести ахинею и даже не возьмешь за труд ИЗУЧИТЬ вопрос.
Мое упоминание о DMA было ОПЦИОНАЛЬНЫМ, во первых, а во вторых, без АППАРАТНОГО модуля NCO, который собственно и формирует сетку частот высокого разрешения, DMA нахер не нужен... Ну то есть вообще в нем нет никакого смысла. Патамушта при софтверной реализации NCO КАЖДОЕ прерывание от тактирующей накачки потребует вычисления новой суммы, правого сдвига на маскируемое число разрядов для определения указателя на ROM, и лишь потом пересылку из ROM в DAC/PWM. Это классический DDS. Еще хуже будет с софтверным повторением NCO и пересылкой значений по переполнению аккумулятора NCO. Учи матчасть, Досикус...
Ну и алаверды . Ты видимо уверовал в свою чушь и ее неповторимость... Ты несешь полную хрень и твой NCO и на не упал. Вся "сетка частот" формируется таймерами аппаратно и твои "софтверные повторения нахренненужного NCO" и на не упали. Получаем действительно полностью аппаратное решение супротив жалкого суррогата на пЫк18. Так что прежде сам RTFM...
Вся "сетка частот" формируется таймерами аппаратно...
Ну так в чем проблема, Досикус? Расскажи нам, убогим, как сформировать сетку частот 100 Гц...100,99 Гц с шагом 0,01 Гц? А то ты юлишь, чего то там несешь про PWM, хотя о нем речи вообще не идет. PS Ладно, Досикус, ты уже достаточно облажался... Читай THEORY OF OPERATION в даташите на AD9837
Патамушта при софтверной реализации NCO КАЖДОЕ прерывание от тактирующей накачки потребует вычисления новой суммы, правого сдвига на маскируемое число разрядов для определения указателя на ROM, и лишь потом пересылку из ROM в DAC/PWM. Это классический DDS.
Зачем ждать следующего прерывания чтобы сложить пару чисел и взять из таблицы нужное значение? Можно за раз заполнить буфер произвольного размера, что заметно быстрее, а DMA потом из этого буфера будет гнать данные в DAC/PWM.
Зачем ждать следующего прерывания чтобы сложить пару чисел и взять из таблицы нужное значение? Можно за раз заполнить буфер
Это беда.... Милейший, возьмите за труд прочесть теорию, чтобы не писать пургу про заранее заполненный буфер... Весь смысл DDS - это СКОЛЬЗЯЩАЯ ФАЗА. Это позволяет отказаться от кратности периода синтезируемого сигнала и периода накачки. Это какого же размера нужно иметь буфер, чтобы получить наименьшее общее кратное для частоты накачки и сигнала 100 Гц с шагом в 0,01 Гц?
Ну ты и юморист. Описываешь, с щенячьим восторгом свои розовые мечты, позиционируя как убер способности и прерогативу пык. А когда тебя тыкают носом в то, что уже давно подобное реализовано на stm32 - обвиняешь оппонента в тупости и некомпетентности.
А когда тебя тыкают носом в то, что уже давно подобное реализовано на stm32
Подобное на STM? Ты вообще о чем? Ты меня потчуешь каким то говном вообще из другой оперы. Еще раз предлагаю не молоть всякую пустопорожнюю пургу, а просто и со вкусом объяснить нам о том, каким образом с помощью таймера АППАРАТНО организовать сетку частот 100 Гц с шагом 0,01 Гц. И не нужно меня никуда отсылать. Просто расскажи своими словами. Можешь даже только для двух частот: 100,00Гц и 100,01 Гц, например.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения