Перейти к содержанию
    

blackfin

Свой
  • Постов

    4 144
  • Зарегистрирован

  • Победитель дней

    4

Весь контент blackfin


  1. Не только дискретизация вносит ошибку в измерение фазы. Аналоговый фильтр (так же как и цифровой) с помощью которого делают преобразование Гильберта имеет очень длинную импульсную характеристику. Поэтому и переходной процесс в этом фильтре тоже будет длинным. Но переходной процесс в фильтре будет вносить искажения в полученный комплексный сигнал, если сам сигнал изменяется быстрее, чем закончился переходной процесс. Как следствие, для сигналов с быстро меняющейся частотой возникнет ошибка в измерении фазы в полученном аналитическом сигнале.
  2. Ну, если всё знаете, то давайте точную численную оценку для величины ошибки измерения частоты вашим методом.. :) Параметры сигнала у вас есть. ТС их уже неоднократно озвучил..
  3. Вникал.. А вот вы, похоже, так и не вникли.. :) И фаза ему не нужна. Это ваши очередные фантазии. Ему нужна частота:
  4. Вы, похоже, не очень-то внимательно прочитали все пожелания ТС'а: Как быстро? Думаю, можно считать, что быстро. За 1 период частоты основной гармоники запросто. Думаю, это можно считать быстро. А теперь представьте себе "гармонический" сигнал на интервале одна(!) секунда у которого частота изменяется 200 раз за эту секунду, причем, по случайному закону в пределах от 10 Гц до 400 Гц. Смогут ли все эти ваши алгоритмы (ФАПЧ и прочие Фурье с Гильбертами) вычислить все эти двести(!) различных частот основной "гармоники"..? :)
  5. Не факт.. "Дьявол прячется в деталях..": Так что формально, первый может получать и "500 000 руб. до вычета налогов".. :)
  6. В инструкции на любой измерительный прибор указана точность, с которой этот прибор измеряет физическую величину. Ошибка измерения может быть как со знаком плюс, так и со знаком минус. Мы выбираем знак ошибки для наихудшего сценария. Так мы получим верхнюю оценку точности нашего измерителя.
  7. Можно прикинуть ошибку измерения, при условии что: Пусть измеренные значения гармонического сигнала \(S(t)=A\cdot\sin(\omega t+\varphi)\) в точках \(t_1,t_2,t_3\) равны: \(\\ S_1'=S_1+\delta_1, \\ S_2'=S_2+\delta_2, \\ S_3'=S_3+\delta_3, \) где: \(S_1,S_2,S_3\) - точные значения сигнала, а \(\delta_1,\delta_2,\delta_3\) - включают в себя шумы, нелинейные искажения и погрешности измерительного прибора. Тогда измеренная по трем точкам частота сигнала равна: \(F+\delta F = \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+\delta_1+S_3+\delta_3}{2S_2+2\delta_2}\big]\) где: \(\Delta t=t_3-t_2=t_2-t_1\) Выберем момент времени \(t_2\) таким, что: \(|\delta_1|<< |S_2|,|\delta_2|<< |S_2|,|\delta_3|<<|S_2|\). Тогда находим: \(\\ F+\delta F = \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+\delta_1+S_3+\delta_3}{2S_2\cdot(1+\frac{\delta_2}{S_2})}\big] \approx \\ \approx \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+\delta_1+S_3+\delta_3}{2S_2}\cdot(1-\frac{\delta_2}{S_2})\big] = \\ = \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[(\frac{S_1+S_3}{2S_2}+\frac{\delta_1+\delta_3}{2S_2})\cdot(1-\frac{\delta_2}{S_2})\big] \approx \\ \approx \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+S_3}{2S_2}+\frac{\delta_1+\delta_3}{2S_2} - \frac{S_1+S_3}{2S_2}\cdot\frac{\delta_2}{S_2}\big]\\ \) Рассмотрим наихудший случай, когда все три погрешности суммируются с одинаковым знаком. Полагая: \(\delta_1 = \delta_3=\delta\) и \(\delta_2=-\delta\cdot sign(\frac{S_1+S_3}{S_2})\) находим: \(\\ F+\delta F \approx \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+S_3}{2S_2}+\frac{\delta}{S_2} + \big|\frac{S_1+S_3}{2S_2}\big|\cdot\frac{\delta}{S_2}\big] \) Учитывая, что для идеального синусоидального сигнала \(\big|\frac{S_1+S_3}{2S_2}\big|\leqslant 1\), находим для наихудшего случая: \(\\ F+\delta F \approx \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+S_3}{2S_2}+\frac{\delta}{S_2} + \frac{\delta}{S_2}\big] = \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+S_3}{2S_2}+\frac{2\delta}{S_2}\big] \) Теперь воспользуемся разложением функции \(\arccos(x)\) в ряд Тейлора: \(\\ F+\delta F \approx \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+S_3}{2S_2}+\frac{2\delta}{S_2}\big] \approx \\ \approx \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+S_3}{2S_2}\big]-\frac{1}{2\pi\cdot\Delta t}\cdot \frac{1}{\sqrt{1-\Big[\frac{S_1+S_3}{2S_2}\Big]^2}}\cdot\frac{2\delta}{S_2} \) Так как производная функции \(\arccos(x)\) при \(x \to \pm1\) стремится к \(-\infty\), нам нужно ограничить значения \(S_1,S_2,S_3\) используемые при вычислении частоты соотношением: \(\big|\frac{S_1+S_3}{S_2}\big|\leqslant 1\) Тогда для максимальной погрешности измерения находим: \(\\ F+\delta F \approx \frac{1}{2\pi\cdot\Delta t}\cdot\arccos\big[\frac{S_1+S_3}{2S_2}\big]-\frac{1}{2\pi\cdot\Delta t}\cdot \frac{2}{\sqrt{3}}\cdot\frac{2\delta}{S_2} \) Заметим, что при \(-\frac{1}{2} \leqslant x \leqslant +\frac{1}{2}\) функция \(\arccos(x)\) принимает значения в диапазоне: \(\frac{\pi}{3}\leqslant \arccos(x) \leqslant \frac{2\pi}{3}\) Из этого неравенства мы можем найти диапазон частот, которые могут быть с приемлемой точностью измерены данным методом: \( \frac{1}{6\Delta t} \leqslant F \leqslant \frac{1}{3\Delta t} \) или \( \frac{F_d}{6} \leqslant F \leqslant \frac{F_d}{3} \), где \(F_d\) - частота дискретизации. При этом относительная ошибка измерения частоты не превышает: \( \frac{\delta F}{F} \leqslant \frac{12}{\pi\sqrt{3}}\cdot\frac{\delta}{S_2}\) Теперь, учитывая что: \(100 \leqslant SNR\), находим относительную ошибку измерения частоты: \(\frac{\delta F}{F} \leqslant \frac{12}{\pi\sqrt{3}}\cdot\frac{\delta}{S_2} = \frac{12}{\pi\sqrt{3}}\cdot 10^{-5}\), при условии, что выбранные для измерения частоты значения \(S_1',S_2',S_3'\) удовлетворяют ограничению: \(|S_1'+S_3'|\leqslant |S_2'|\).
  8. Найти экстремумы функции..
  9. Сравнил по случаю две стратегии имплементации в V22.2.1. Результаты такие: Crossbar: 8x8, шина: AXIS - 72 бит ПЛИС: XCKU060-2-i Частота: 500 MHz -mode out_of_context Synthesis: Flow_AlternateRoutability Implementation: Performance_RefinePlacement Slack = +0.001 ns Synthesis: Flow_AlternateRoutability Implementation: Performance_NetDelay_low Slack = +0.028 ns PS. В проекте очень мало логики (~3%) и много проводов. Logic Level Distribution +-----------------+-------------+----+-----+-----+-----+ | End Point Clock | Requirement | 0 | 1 | 2 | 3 | +-----------------+-------------+----+-----+-----+-----+ | clk | 2.000ns | 39 | 168 | 482 | 311 | +-----------------+-------------+----+-----+-----+-----+
  10. Так стратегии P&R меняются от версии к версии Vivado и я заметил, что в V21.2 запас по slacks на одних и тех же проектах немного больше, чем в V22.2. Но это не точно, так как зависит, возможно, от характеризации самих кристаллов. Со временем, у Xilinx'а появляются более точные временные модели задержек внутри чипов. IMHO. Ну и самые последние версии Vivado часто оказываются глючными. Так что у нас в конторе в ходу версия V21.2, как самая стабильная. Но ничто не мешает попробовать собрать проект и в версии V21.2, и в версии V22.2 и сравнить результаты. :)
  11. Это все бла-бла-бла.. Вы зачем-то стали задавать ТС'у вопросы, но в ответ на ответы на эти вопросы не дали ему ни одного реального совета. А вместо этого пустились в пространные рассуждения о трудностях проектирования.. 🙂 И что с того, что не 100% ? А если там 99% ?
  12. А есть другие варианты, если времянки не сходятся в зашифрованном модуле? Что там можно переписывать, если доступ есть только к нетлисту? Это как раз не проблема. После синтеза на вкладке "Статистика" Vivado указывает все требуемые для модуля ресурсы.
  13. Простейший план такой: 1. Открываем синтезированный дизайн: Open Synthesized Design 2. В окне "Netlist" находим зашифрованный модуль 3. Правой кнопкой мыши: Floorplanning->Draw Pblock 4. Рисуем "Pblock" подходящего размера 5. В окне "Pblock Properties" на вкадке "Statistics" проверяем статистику: %Util ~= 90% ... 95% 6. В окне "Pblock Properties" на вкадке "Properties" убираем флаг: "IS_SOFT", ставим флаг: "EXCLUDE_PLACEMENT" 7. Нажимаем кнопку "Сохранить" 8. Запускаем имплементацию Этот план может сработать, если все критические пути находятся внутри зашифрованного модуля.
  14. А с чего вы решили, что у вас в проекте есть атрибут mark_debug? Если у вас в проекте:
  15. Если при имплементации получаются большие задержки в проводах, то можно назачить pblocks, которые не позволят синтезатору размещать критические части логики на большой площади. Но это надо смотреть как ложится на кристалл уже имплементированный дизайн.
  16. Там же ещё в настройках каждой стратегии можно крутить параметры. Мне вот такие настройки помогли: Красным выделены выбранные параметры стратегии.
  17. Здесь: UG949, начиная с 3-ей главы. И если есть возможность, лучше перейти на Vivado 2021.2
  18. Там есть ограничение: t2 - t1 == t3 - t2. Иначе формула не работает. Поэтому годятся не все 10 сочетаний. Её и не будет, так как для вычисления частоты "ω" достаточно всего трех точек.
  19. Для вычисления трех неизвестных параметров гармонического сигнала A, ω, φ достаточно трех уравнений: S1 = A*sin[ω*t1 + φ], S2 = A*sin[ω*t2 + φ], S3 = A*sin[ω*t3 + φ]. Для 5 точек можно улучшить оценку, если вычислить все эти параметры четыре раза и результаты усреднить: A1, ω1, φ1 вычисляем для точек: t1, t2, t3. A2, ω2, φ2 вычисляем для точек: t2, t3, t4. A3, ω3, φ3 вычисляем для точек: t3, t4, t5. A4, ω4, φ4 вычисляем для точек: t1, t3, t5. Искомые значения: A = (A1+A2+A3+A4)/4; ω = (ω1+ω2+ω3+ω4)/4; φ = (φ1+φ2+φ3+φ4)/4.
  20. Это если известен закон по которому изменяется частота. Если закон по которому изменяется частота заранее не известен, то имеем смесь гармоник с неизвестными частотами и фазами..
×
×
  • Создать...