[an error occurred while processing this directive]
|
Берём N-разрядный сумматор, на его выходе ставим регистр, выход регистра обратно на один из входов сумматора(буквально мегафункция altaccumulate у альтеры). На другой вход сумматора подаём N-разрядное число delta. Таким образом накапливающий сумматор генерирует линейно изменяющуюся фазу по mod 2^N, её производная то бишь частота равна w= delta*fclk (углов/с), fclk - клок регистра, 0..2*pi у нас это 0..2^N-1, таким образом имеем f=delta*fclk/2^N (1/c), delta=round((f/fclk)*2^N), минимальный шаг по частоте fclk/2^N, увеличивая разрядность уменьшаем шаг по частоте, меандр берём со старшего разряда регистра аккумулятора, обычный счётчик это частный случай DDS при delta=1, меандр в общем случае получится с джиттером +-период тактовой частоты. Если надо без джиттера то, берём M старших разрядов аккумулятора в качестве адреса для таблицы одного периода синуса(2^M выборок), выход таблицы на ЦАП, восстанавливающий аналоговый фильтр по котельникову, компаратор, имеем меандр почти без джиттера.
E-mail: info@telesys.ru