|
|
  |
Изменение фазы РЧ сигнала на небольшой угол |
|
|
|
Aug 27 2009, 16:52
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(Taradov Alexander @ Aug 27 2009, 08:55)  Раз уж речь зашлп о ПЛИС, возникает вопрос: Вам это в цифровой форме нужно или в аналоговой? В цифровой.
|
|
|
|
|
Aug 27 2009, 17:24
|

Участник

Группа: Участник
Сообщений: 56
Регистрация: 25-08-09
Из: Украина, Харьков
Пользователь №: 52 034

|
Цитата В цифровой. Если я все правильно понял - то Вам будет достаточно организовать задержку, которая и обеспечит сдвиг фазы. Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус. Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать. Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов.
Сообщение отредактировал i.cf - Aug 27 2009, 17:28
|
|
|
|
|
Aug 27 2009, 17:55
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(i.cf @ Aug 27 2009, 20:24)  Если я все правильно понял - то Вам будет достаточно организовать задержку, которая и обеспечит сдвиг фазы. Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус. Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать. Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов. А разве временная задержка и фазовый сдвиг это одно и тоже? P.S. В уравнении колебания S(t)=S*cos(w*t+Phi) задержка должна прибавляться ко времени, которое умножено на частоту, а фаза то складывается с произведением частоты и времени. То есть задержка и фаза по разному учитываются.
|
|
|
|
|
Aug 27 2009, 18:02
|

Профессионал
    
Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202

|
Цитата(Vagant @ Aug 27 2009, 21:55)  А разве временная задержка и фазовый сдвиг это одно и тоже?
P.S. В уравнении колебания S(t)=S*cos(w*t+Phi) задержка должна прибавляться ко времени, которое умножено на частоту, а фаза то складывается с произведением частоты и времени. То есть задержка и фаза по разному учитываются. Да, но можно посмотреть с другой стороны на это S(t)=S*cos(w*t+Phi) = S*cos(w*(t-t0)+(Phi+w*t0)). w*t0 - константа, искомый сдвиг. То что время немного поменялось - это не страшно. PS: единственное неудобство тут то, что нужно иметь достаточно большое число отсчетов, чтобы обеспечить плавное изменение фазы. Если привлекапть математику, то может потребоваться сложная обработка (фильтрация). Но зато можно иметь совсем мало отсчетов.
Сообщение отредактировал Taradov Alexander - Aug 27 2009, 18:04
|
|
|
|
|
Aug 27 2009, 18:16
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(Taradov Alexander @ Aug 27 2009, 21:06)  Тогда из исходного синуса нужно еще косинус получить. Если он будет, то вышеупомянутая фильтрация не нужна и предложеный метод - это то, что я и имел в виду. В общем формулы тригонометрии помогут. Спасибо. Попробую вариант с вращением.
|
|
|
|
|
Aug 27 2009, 18:45
|

Участник

Группа: Участник
Сообщений: 56
Регистрация: 25-08-09
Из: Украина, Харьков
Пользователь №: 52 034

|
Цитата(Taradov Alexander @ Aug 27 2009, 21:02)  Да, но можно посмотреть с другой стороны на это S(t)=S*cos(w*t+Phi) = S*cos(w*(t-t0)+(Phi+w*t0)). Вот именно! И можно увидеть, что Phi можно заменить на w*tдоб. Специально расписываю: Код S(t)=S*cos(w*t+Phi) Phi = w*tдоб w = 2pi * 8MHz tдоб = Phi/w = Phi / (2pi*8000000)
Для Phi = 360 = 2pi tдоб = = 2pi / (2pi*8000000) - 1/8000000 = 0,125 * 10^-6
Для Phi = 180 = pi tдоб = = pi / (2pi*8000000) - 1/8000000 = 0,0625 * 10^-6
Для Phi = 1 = pi/180 tдоб = = (pi/180) / (2pi*8000000) - 1/8000000 = ,0003472 * 10^-6 Цитата(Vagant @ Aug 27 2009, 20:55)  А разве временная задержка и фазовый сдвиг это одно и тоже? Вот и получается, что почти тоже самое! Как получить угол в градусах в зависимости от tдоб я написал в посте, просто не расписывал. Что Вас там смутило?
Сообщение отредактировал i.cf - Aug 27 2009, 18:46
|
|
|
|
|
Aug 27 2009, 20:24
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(i.cf @ Aug 27 2009, 21:45)  Что Вас там смутило? Для моей системы задержки порядка микросекунд слишком велики поэтому такой метод мне не подходит.
Сообщение отредактировал Vagant - Aug 27 2009, 20:36
|
|
|
|
|
Sep 18 2009, 04:42
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(i.cf @ Aug 28 2009, 02:54)  Если я все правильно понял - то Вам будет достаточно организовать задержку, которая и обеспечит сдвиг фазы. Так, задержка на 1/(8 * 10^6) = 0,125мкс - сдвиг на один период. Половина этой задержки - сдвиг на 180, 1/4-я - сдвиг на 90, 1/360-я - сдвиг на 1 градус. Подавайте оцифрованный сигнал в параллельном виде на МК/ПЛИС, а выдавайте через определенное время, которое будете задавать. Для этого Вам нужно будет организовать программно некоторое подобие очереди (FIFO) с постоянным количеством элементов. Можно умножить частоту раза в два, а потом двигать фазу как захочется при помощи CDCF5801A . У нее шаг примерно полградуса.
|
|
|
|
|
Sep 22 2009, 10:38
|

Местный
  
Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881

|
Цитата(Vagant @ Aug 27 2009, 22:04)  А можно ли использовать такой подход:
Вращение вектора, представляющего гармоническое колебание, на угол phi можно представить как результат произведения его компонент на cos(phi) и sin(phi). То есть надо составить таблицу коэффициентов для разных углов вращения и для нужного угла умножать компоненты сигнала на соответствующие этому углу коэффициенты, а потом эти произведения (новые компоненты сигнала) сложить чтобы получить сигнал после вращения. На случай, если еще актуально. Если у Вас комплексный вектор и реализовывать предполагается на ПЛИС, то никаких таблиц и умножений в общем то не надо. Есть алгоритм CORDIC, при помощи которого все это делается проще. Про этот алгоритм в сети достаточно много информации. Например, можно почитать в приложенном файле.
|
|
|
|
|
Oct 22 2009, 13:07
|
Частый гость
 
Группа: Участник
Сообщений: 111
Регистрация: 25-09-07
Пользователь №: 30 820

|
Цитата(hobgoblin @ Sep 22 2009, 13:38)  На случай, если еще актуально. Если у Вас комплексный вектор и реализовывать предполагается на ПЛИС, то никаких таблиц и умножений в общем то не надо. Есть алгоритм CORDIC, при помощи которого все это делается проще. Про этот алгоритм в сети достаточно много информации. Например, можно почитать в приложенном файле. Да, ещё актуально. Спасибо большое.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|