Модуль NCO в новых PIC-ах для DDS произвольной формы сигнала

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Модуль NCO в новых PIC-ах для DDS произвольной формы сигнала

Сообщение КРАМ »

Модуль 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 раза.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15541
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение BOB51 »

:hunger:
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение Мурик »

Чем это лучше обычного ЦАПа? Хотя судя по описанию это больше похоже на ШИМ с переменной скважностью.

КРАМ писал(а):При использовании новейших PIC18F25Q43 с DMA и осциллятором 64 МГц описанная задача станет фоновой и не требующей от ядра МК вообще никаких ресурсов кроме нескольких строк в прерывании от DMA один раз на период синтезируемого сигнала. К слову, отпускная стоимость упомянутого PIC18 у Микрочипа, как неожиданно выяснилось - менее 1 бакса
Ну если так считать, можно взять STM32F030F4P6 стоимостью 0.25$ работающий на 48 МГц (разгоняется до 96 МГц) и имеющий DMA и 32-ух битный таймер. А дальше DMA + Timer PWM решают задачу.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение КРАМ »

Чем это лучше обычного ЦАПа? Хотя судя по описанию это больше похоже на ШИМ с переменной скважностью.
.....
....А дальше DMA + Timer PWM решают задачу.

Судя "по описанию", Вы ни хрена ничего не поняли. Учите матчасть.
На STM32 за четверть доллара тоже можно сделать DDS. Только он займет практически все ресурсы МК. И дело тут не в PWM или DAC. Последние вообще в процедуре прямого синтеза лишь преобразуют код в аналог. Основная задача создать генератор этого кода с разрешением (перестройкой) по частоте в доли процента.
ЗЫ. К слову, последнюю неделю переделывал один из наших (в смысле нашей компании) проектов с STM32F051 на упомянутый выше PIC18. Ну то есть такое ощущение, что я пересел с запорожца на мерседес. А задач по сути было две. Синтезировать синус 80...180 Гц и измерять ЧМ сигнал с центральной частотой 8 МГц и изменяемой девиацией от нуля до 2 МГц. Измерять нужно девиацию, частоту модуляции и центральную частоту. Все аппаратно.
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение NStorm »

Там еще всякая интересная периферия добавлена в новых PICах: https://www.microchip.com/design-center ... ndependent
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение КРАМ »

Вот я как раз для измерений ЧМ сигнала и воспользовался SMT модулем. Плюс к этому полный "коммунизм" с синхронизациями всего от всего, кучей CLC и PWM-ов со своими таймерами, практически неограниченый ремап периферии на пины - ограничения незначительны настолько, что я на двух УАРТах, SPI, SMT, таймере взятом наобум, и так же наобум выбранном PWM угадал на 100% подключение пинов. Расположение которых я взял так, как это было удобно в топологии довольно плотной платы.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15541
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение BOB51 »

Вот мы и наблюдаем результат эволюционного развития "стандартных" семейств в ответ на АРМ технологии...
Давно уже про то говорено было.
:beer:
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение dosikus »

Каждое переполнение модуля NCO помимо генерации импульса настроенной длительности, генерируется прерывание, в котором и следует перегрузить очередное значение сигнала из таблицы в PWM или DAC.

----
При использовании новейших PIC18F25Q43 с DMA и осциллятором 64 МГц описанная задача станет фоновой и не требующей от ядра МК вообще никаких ресурсов кроме нескольких строк в прерывании от DMA один раз на период синтезируемого сигнала.


Когда тебе и гонюбесов показали то же самое на stm32 - причем полностью аппаратное , без каких либо прерываний , да и выхлоп БЫЛ 3Хфазного синуса. Напомни мне, кто воротил носом и презрительно фыркал?

http://mcu.goodboard.ru/viewtopic.php?id=31
На STM32 за четверть доллара тоже можно сделать DDS. Только он займет практически все ресурсы МК.

Наглое вранье.

BOB51, оно тебе не надо, так и будет валяться... :)))
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15541
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение BOB51 »

dosikus писал(а):...

BOB51, оно тебе не надо, так и будет валяться... :)))

Точно как и STM32!
:)))
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение КРАМ »

Когда тебе и гонюбесов показали то же самое на stm32 - причем полностью аппаратное , без каких либо прерываний , да и выхлоп БЫЛ 3Хфазного синуса. Напомни мне, кто воротил носом и презрительно фыркал?

Ты это о ком? :shock:

Наглое вранье.

Пацан сказал - пацан сделал... :)))
Но тебе и делать не требуется. Все что требуется, это рассказать как ты реализуешь, скажем, сетку синусоид с частотами от 100 до 100,99 Гц с шагом в 0,01Гц.
Не нужно код. Просто принцип.
:tea:
Может ты забыл, но я напомню, речь идет о DDS с цифровой перестройкой, а не о простом синтезе какой то синусоиды...
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение dosikus »

Может и не с такой точностью, но уж звездеть о том что DDS сожрет все ресурсы- не надо.
А принцип тебе уже выше на пальцах изложили - Реквесты DMA от 32х битного таймера +PWM (до 4х каналов == до 4х фаз )
Последний раз редактировалось dosikus Вт апр 14, 2020 11:16:02, всего редактировалось 1 раз.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение КРАМ »

А принцип тебе уже выше на пальцах изложили - DMA +PWM на 32х битном таймере.

Ты видимо совсем не в теме... :facepalm:
Досикус, зачем ты лезешь в тему, в которой ВООБЩЕ некопенгаген? Просто позвиздеть ни о чем?
Какое отношение PWM имеет к обсуждаемому вопросу? Какое отношение DMA имеет к обсуждаемому вопросу?
Способ вывода в ЦАП (PWM или потенциальный DAC - неважно), как и сам этот ЦАП тут не обсуждался. От слова вообще.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение dosikus »

Не уподобляйся местным хомячкам.
Причем здесь DMA ?

При использовании новейших PIC18F25Q43 с DMA и осциллятором 64 МГц описанная задача станет фоновой и не требующей от ядра МК вообще никаких ресурсов кроме нескольких строк в прерывании от DMA один раз на период синтезируемого сигнала.


Однако это твое.

Переброс массива таблицы синуса через DMA в модуль PWM таймера.
У тебя 20битный NCO, в прерывании( о боже) заносится в PWM из таблицы.
Здесь реквест от 32х битного таймера пинает DMA, занося одновременно 4( Карл, 4) значения для 4х PWM выхлопов.
И все это чисто аппаратно - и " задача станет фоновой" и даже без прерываний.
Ну и кто некопенгаген?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение КРАМ »

Ну и кто некопенгаген?

Досикус, ты настолько самоуверен, что продолжаешь нести ахинею и даже не возьмешь за труд ИЗУЧИТЬ вопрос.

Мое упоминание о DMA было ОПЦИОНАЛЬНЫМ, во первых, а во вторых, без АППАРАТНОГО модуля NCO, который собственно и формирует сетку частот высокого разрешения, DMA нахер не нужен... Ну то есть вообще в нем нет никакого смысла. Патамушта при софтверной реализации NCO КАЖДОЕ прерывание от тактирующей накачки потребует вычисления новой суммы, правого сдвига на маскируемое число разрядов для определения указателя на ROM, и лишь потом пересылку из ROM в DAC/PWM. Это классический DDS. Еще хуже будет с софтверным повторением NCO и пересылкой значений по переполнению аккумулятора NCO.
Учи матчасть, Досикус... :)))
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение dosikus »

Ну и алаверды . Ты видимо уверовал в свою чушь и ее неповторимость...
Ты несешь полную хрень и твой NCO и на не упал.
Вся "сетка частот" формируется таймерами аппаратно и твои "софтверные повторения нахренненужного NCO" и на не упали.
Получаем действительно полностью аппаратное решение супротив жалкого суррогата на пЫк18.
Так что прежде сам RTFM...
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение КРАМ »

Вся "сетка частот" формируется таймерами аппаратно...

Ну так в чем проблема, Досикус? Расскажи нам, убогим, как сформировать сетку частот 100 Гц...100,99 Гц с шагом 0,01 Гц?
А то ты юлишь, чего то там несешь про PWM, хотя о нем речи вообще не идет.
PS Ладно, Досикус, ты уже достаточно облажался... Читай THEORY OF OPERATION в даташите на
AD9837
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение Reflector »

Патамушта при софтверной реализации NCO КАЖДОЕ прерывание от тактирующей накачки потребует вычисления новой суммы, правого сдвига на маскируемое число разрядов для определения указателя на ROM, и лишь потом пересылку из ROM в DAC/PWM. Это классический DDS.

Зачем ждать следующего прерывания чтобы сложить пару чисел и взять из таблицы нужное значение? Можно за раз заполнить буфер произвольного размера, что заметно быстрее, а DMA потом из этого буфера будет гнать данные в DAC/PWM.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение КРАМ »

Зачем ждать следующего прерывания чтобы сложить пару чисел и взять из таблицы нужное значение? Можно за раз заполнить буфер

:facepalm:
Это беда.... Милейший, возьмите за труд прочесть теорию, чтобы не писать пургу про заранее заполненный буфер...
Весь смысл DDS - это СКОЛЬЗЯЩАЯ ФАЗА. Это позволяет отказаться от кратности периода синтезируемого сигнала и периода накачки. Это какого же размера нужно иметь буфер, чтобы получить наименьшее общее кратное для частоты накачки и сигнала 100 Гц с шагом в 0,01 Гц? :))) :))) :)))
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение dosikus »

PS Ладно, Досикус, ты уже достаточно облажался...


Ну ты и юморист. Описываешь, с щенячьим восторгом свои розовые мечты, позиционируя как убер способности и прерогативу пык.
А когда тебя тыкают носом в то, что уже давно подобное реализовано на stm32 - обвиняешь оппонента в тупости и некомпетентности.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25121
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Модуль NCO в новых PIC-ах для DDS произвольной формы сиг

Сообщение КРАМ »

А когда тебя тыкают носом в то, что уже давно подобное реализовано на stm32

Подобное на STM? Ты вообще о чем? Ты меня потчуешь каким то говном вообще из другой оперы.
Еще раз предлагаю не молоть всякую пустопорожнюю пургу, а просто и со вкусом объяснить нам о том, каким образом с помощью таймера АППАРАТНО организовать сетку частот 100 Гц с шагом 0,01 Гц.
И не нужно меня никуда отсылать. Просто расскажи своими словами. Можешь даже только для двух частот: 100,00Гц и 100,01 Гц, например.
Ответить

Вернуться в «PIC»