pirri 0 11 ноября, 2009 Опубликовано 11 ноября, 2009 · Жалоба Помогите, пожалуйста, разобраться: Необходимо перенести сигнал с IF=15MГц в baseband. Переношу с помощью смесителя на основе алгоритма CORDIC. Сама написать VHDL-код для него я не осилила, поэтому использую чужой, успешно опробованный в других проектах. Код работает, сигнал смещается, но на графике FFT смещенного сигнала в матлабе на частоте -15МГц присутствует пик, точно на частоте осциллятора. Что это такое? Как этого избежать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Помогите, пожалуйста, разобраться: Необходимо перенести сигнал с IF=15MГц в baseband. Переношу с помощью смесителя на основе алгоритма CORDIC. Сама написать VHDL-код для него я не осилила, поэтому использую чужой, успешно опробованный в других проектах. Код работает, сигнал смещается, но на графике FFT смещенного сигнала в матлабе на частоте -15МГц присутствует пик, точно на частоте осциллятора. Что это такое? Как этого избежать? Перенесенная постоянная составляющая вхордного сигнала. Отфильтровать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Перенесенная постоянная составляющая вхордного сигнала. Отфильтровать. Возможно будет не понятно, что имел ввиду Oldring. Поясню. Фильтровать нужно постоянную составляющую до того, как подаете сигнал на смеситель. Как это сделать, посмотреть можно здесь http://electronix.ru/forum/index.php?act=S...f=2&t=54351 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pirri 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Спасибо. Если это часть входного, почему ее нет на FFT сигнала, перенесенного в Матлабе умножением на синус (signal*e^(-jwt))? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bahurin 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Спасибо. Если это часть входного, почему ее нет на FFT сигнала, перенесенного в Матлабе умножением на синус (signal*e^(-jwt))? добавьте в матлабе постоянную составляющую к исходному сигналу и она будет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pirri 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Простите, но не понимаю я: на вход Сordic смесителя я подаю сигнал из Матлаб программы, сигнал, в котором нет этой составляющей (на спектре ее нет). Она появляется только после смещения на VHDL. Занимаюсь ЦОС только 4 месяца, не судите строго :unsure: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
diwil 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Простите, но не понимаю я: на вход Сordic смесителя я подаю сигнал из Матлаб программы, сигнал, в котором нет этой составляющей (на спектре ее нет). Она появляется только после смещения на VHDL. Занимаюсь ЦОС только 4 месяца, не судите строго :unsure: А вычисления потом целочисленные или в плавающей точке? Если целочисленные, ибо кордик, то тогда так (наверное :) ) : - при преобразовании float -> int делают так: 1. int = ( (1<<(N-1)) - 1 )*float, где N - число бит всего в целочисленном представлении сигнала. 2. Иногда еще к этому произведению добавляют 0.5 для округления обрезанием :) 3. в том и другом случае int_max + int_min == -1, т.е. сумма отсчетов синусоиды за период может быть не равна нулю. Причем чем меньше амплитуда сигнала, равно как и маленькая разрядность числа (N) , тем больше может быть уровень постоянной составляющей. Значит, на входе может быть постоянная составляющая, котороая, будучи умноженной на синус даст синус. Далее... кордик... тоже вестч в себе: - Операция x <= x - (y>>>n); (n - номер шага кордика) на каждом шаге дает ошибку, равно как и умножение на 0.60725... В самом простом случае вылезут спуры и их будет тем больше, чем меньше разрядность. Причем это не те спуры, которые получаются при табличной реализации синуса. Следовательно надо сначала проверить какие они и посмотреть какие комбинаторные составляющие они могут дать. - Несколько помогает округление: xx <= x - ( (y + (1<<(n-1))) >>> n); - dithering помогает хорошо, но надо хорошо посмотреть на выход. У меня, на первой реализации кордика получился плохой дизер и поползла постоянная составляющая. А она, умножаясь на синус сигнала дает палку в спектре выходного сигнала. В плавающей точке, наверное, могут наблюдаться те же эффекты... Только вопрос - ну видна палка на частоте гетеродина, ну и что? Если сигнал переносится в частоту ноль (или около того), то точно совершенно его полоса меньше частоты IF. На выходе уже перенесенный сигнал отфильтровать в своей полосе и счастье будет рядом :) Из опыта лишь могу добавить, что в случае большого усиления после смесителя, мне пришлось для избавления от постоянной составляющей (-120дБ от уровня сигнала... я, типа, извращенец) всякими хитрыми способами переделывать округления промежуточных результатов, использовать округление в кордике и делать смещенное округление в первом фильтре как: assign out_i = (x3_i[DON-1-COMB_RID_3] == 1'b0) ? (x3_i[DON-1-COMB_RID_3 : DON-COMB_RID_3-DDA] + x3_i[DON-COMB_RID_3-DDA-1]) : (x3_i[DON-1-COMB_RID_3 : DON-COMB_RID_3-DDA]);// - x3_i[DON-COMB_RID_3-DDA-1]); assign out_q = (x3_q[DON-1-COMB_RID_3] == 1'b0) ? (x3_q[DON-1-COMB_RID_3 : DON-COMB_RID_3-DDA] + x3_q[DON-COMB_RID_3-DDA-1]) : (x3_q[DON-1-COMB_RID_3 : DON-COMB_RID_3-DDA]);// - x3_q[DON-COMB_RID_3-DDA-1]); т.е. отрицательные числа округлять, а положительные не трогать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Какой уровень этой палки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pirri 0 12 ноября, 2009 Опубликовано 12 ноября, 2009 · Жалоба Спасибо всем за скорую помощь, я - бестолочь. =) Я симулировала 1 мкс, а входных данных хватало на 300 нс. Поэтому в оставшееся время смеситель обрабатывал нули, генерируя на выходе синусоиду. Отсюда и "палка". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться