Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Зашумление частоты
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Bomj
Товарищи разработчики подскажите, поделитесь опытом!
Есть задача для повышения помехоусточивости зашумить частоту 150кГц по случайному/псевдослучайному закону на несколько процентов. Т.е. нужен грязный генератор.
Как это наиболее просто сделать? Частоту могу формировать из любой частоты ... не знаю куда копать ...
Shtirlits
Цитата(Bomj @ Jul 29 2009, 23:21) *
Товарищи разработчики подскажите, поделитесь опытом!

Под формулировку задачи подходит мой опыт:
для симулятора я писал тестбенч, которые генерировал две частоты, одну чистую, вторую грязную. Грязная получалась суммированием различных частот с коэффициентами. В другом проекте тестовая частота периодически менялась от нижней до верхней границы линейно.
В общем, тупо применялась фантазия на тему, а какое оно может быть в реальной жизни.
Вам может быть в железе надо? Тут опыта нет, только домыслы.
Например, некоторые виды джиттера можно изобразить на clock manager-ах FPGA двигая фазу туда и сюда.
Еще есть так называемый "spread spectrum clock".
Остальные решения - к специалистам.
Bomj
если не трудно дайте тестбенч на любом hdl, лучше всего на verilog. почитаю ...
я почемуто все думаю в сторону xor операций и рядов...
мне нужно придумать простой код, посколько потом это все будет выполнено на cpld.
des00
Цитата(Bomj @ Jul 29 2009, 13:21) *
Товарищи разработчики подскажите, поделитесь опытом!
Есть задача для повышения помехоусточивости зашумить частоту 150кГц по случайному/псевдослучайному закону на несколько процентов. Т.е. нужен грязный генератор.
Как это наиболее просто сделать? Частоту могу формировать из любой частоты ... не знаю куда копать ...


не совсем понял что значит зашумить частоту. добавить шума снизив SNR сигнала или добавить временного джиттера или поставить несколько паразитов рядышком? методы во всех этих случаях разные.
Bomj
Мне нужно получить прямоугольный сигнал 150кГц, скважность не важно - условие чтобы передний форонт плавал в пределах нескольких процентов от частоты 150кГц.

условие - чтобы фронт плавал хаотически, не по линейному закону.

можно сделать счетчик на счетчике который будет плавно менять частоту - но это линейная зависимость. надо както получить чтото нелинейное.

можно собрать генератор псевдослучайной последовательности и этим генератором управлять задающим генератором, но это не простое решение. я думаю есть 100% простое решение на нескольких элементах.

расскажите про нескольких паразитов рядышком - что вы имеете в виду?
Shtirlits
Цитата(Bomj @ Jul 30 2009, 10:37) *
условие - чтобы фронт плавал хаотически, не по линейному закону.

Давайте сначала определимся, хаотически (непредсказуемо и неповторимо) или достаточно нелинейно?

А копните в сторону систем связи на 2.4GHz, там всякие ZigBee, 802.15.4 используют широкоспектральный псевдослучайный сигнал.
Как-то ведь они его делают и предсказывают в приемнике.
Bomj
точно сказать смогу после того как запущу систему и испытаю.
давайте начнем с самого простого - думаю это второй ваш вариант - достаточно нелинейно.

у меня не система радиосвязи, ничего сложного не нужно. шум нужен для повышения помехоусточивости и поскольку далее сигнал используется для управления механическим устройством - исключить резонансы.
Shtirlits
Цитата(Bomj @ Jul 30 2009, 11:01) *
давайте начнем с самого простого - думаю это второй ваш вариант - достаточно нелинейно.

Хорошо.
А еще вопрос, задний фронт может стоять как вкопанный?
Да, про системы связи я неподумав сказал. Там широкий спектр обеспечивается кодированием данных.
Еще приходит в голову LFSR (http://ru.wikipedia.org/wiki/Linear_feedback_shift_register), простой способ сделать псевдослучайную последовательность в PLD. Дальше результат этого LFSR используйте для определения периода следующего импульса.
sazh
Цитата(Bomj @ Jul 30 2009, 10:37) *
Мне нужно получить прямоугольный сигнал 150кГц, скважность не важно - условие чтобы передний форонт плавал в пределах нескольких процентов от частоты 150кГц.

можно собрать генератор псевдослучайной последовательности и этим генератором управлять задающим генератором, но это не простое решение. я думаю есть 100% простое решение на нескольких элементах.

расскажите про нескольких паразитов рядышком - что вы имеете в виду?


периодически загружать в счетчик значение, эквивалентное константа + код на выходе генератора псевдослучайной последовательности.
Bomj
господа, про генератор псевдослуч послед я писал в начале, это вариант рабочий.
интересно есть ли еще проще варианты, может быть с применением внкшних RC цепочек...
XVR
Цитата(Bomj @ Jul 30 2009, 11:30) *
господа, про генератор псевдослуч послед я писал в начале, это вариант рабочий.
интересно есть ли еще проще варианты, может быть с применением внкшних RC цепочек...
Вообще то генератор ПСЧ на LFSR всяко проще, чем RC цепочка, так как он может быть реализован в CPLD, а RC цепочка нет rolleyes.gif
Код
module lfsr_gen(input clk, output dat);
reg [7:0] lfsr = 8'b0;

always @(posedge clk)
lfsr <= {lfsr[6:0], ~(lfsr[7]^lfsr[0])};

assign dat = lfsr[0];

endmodule
des00
Цитата(Bomj @ Jul 30 2009, 01:37) *
Мне нужно получить прямоугольный сигнал 150кГц, скважность не важно - условие чтобы передний форонт плавал в пределах нескольких процентов от частоты 150кГц.

условие - чтобы фронт плавал хаотически, не по линейному закону.


понятно надо внести джиттер, проще всего это как раз сделать на

Цитата
можно собрать генератор псевдослучайной последовательности и этим генератором управлять задающим генератором, но это не простое решение. я думаю есть 100% простое решение на нескольких элементах.


все зависит от длины последовательности

Цитата
расскажите про нескольких паразитов рядышком - что вы имеете в виду?


например поставить рядышком пару частот 150.1 Кгц и 149.9 Кгц.
x736C
Еще вопрос, каким должен быть характер джиттера.
Если применить генератор ПСП и реализовать все только средствами ПЛ, то вносимый джиттер будет дискретным. Так ведь?
Shtirlits
Цитата(x736C @ Jul 30 2009, 15:22) *
Еще вопрос, каким должен быть характер джиттера.
Если применить генератор ПСП и реализовать все только средствами ПЛ, то вносимый джиттер будет дискретным. Так ведь?

Присоединяюсь к вопросу.
Не боюсь показаться занудой, но джиттер всегда дискретный, вопрос лишь в масштабе шага.
x736C
Переформулирую вопрос.
Если джиттер — фазовая модуляция тактового сигнала,
интересуют необходимые и достаточные параметры модулирующего сигнала.

По поводу того, что джиттер всегда дискретный, не понял. Поясните, пожалуйста, не боясь показаться занудой.
Shtirlits
Цитата(x736C @ Jul 30 2009, 18:38) *
По поводу того, что джиттер всегда дискретный, не понял. Поясните, пожалуйста, не боясь показаться занудой.

Также можно сказать, что дискретного джиттера не бывает.
Мне просто кажется, что неуместно разделение джиттера на классы. Намой взгляд лучше подробно описать характеристики, потому что один класс плавно перетекает в другой при изменении параматров или учитывании тех или иных свойств.
Допускаю, что это от необразованности.

Если реализовать на CPLD схему, у которой период выхода определяется количеством периодов тактовой частоты, то джиттер будет дискретным. Если не учитывать джиттер источника тактового сигнала и все остальное, что влияет на выход.
des00
Цитата(x736C @ Jul 30 2009, 06:22) *
Еще вопрос, каким должен быть характер джиттера.
Если применить генератор ПСП и реализовать все только средствами ПЛ, то вносимый джиттер будет дискретным. Так ведь?


ну вообще если делать по хорошему то ПСП не пойдет, нужен генератор с нормальным распределением, в этом случае очень просто управлять его параметрами за счет задания дисперсии шума. Как сделать простой генератор с нормальным распределением можно почитать в атаче
Bomj
всем спасибо, хорошо работает на генераторе псевдослуч послед.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.