![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
blackfin
-
Постов
4 126 -
Зарегистрирован
-
Победитель дней
3
Сообщения, опубликованные blackfin
-
-
Вышла книга: Software Defined Radio with Zynq UltraScale+ RFSoC
Кто-нибудь может скачать и поделиться?
-
On 3/14/2023 at 12:02 PM, 1891ВМ12Я said:
Или как то задать опцию, которая попадет при компиляции до каждого Verilog-файла, чтобы сработал ifdef. Если возможно, то где как это задать?
1. Сделать два различных "include" файла inc1.h и inc2.h:
inc1.h
`define A ...
inc2.h
`define B ...
2. Подключать в проект либо первый, либо второй inc*.h файл с помощью опции:
См: UG901, стр 18.
PS. И есть ещё такой способ:
-
-
On 3/10/2023 at 11:14 AM, OparinVD said:
Отладка с чипскопом показала, что сдвиг проходит успешно, а вот освободившиеся байты заполняются нулями.
А сигнал S_AXIS_TKEEP поправить не забыли?
-
On 3/7/2023 at 11:20 AM, _sda said:
Понадобилось мне в одном проекте реализовать много БИХ-фильтров первого порядка с такой структурой:
Его передаточная функция H(z) = (1 - z^-1) / (1 - K*z^-1); (1)
Для реализации в FPGA добавил пару регистров с целью повысить максимальную тактовую
Стандартный подход основан на использовании Polyphase Decomposition:
\(H(z)=\frac{1-z^{-1}}{1-K\cdot z^{-1}}=\frac{(1-z^{-1})\cdot(1+K\cdot z^{-1})}{1-K^2\cdot z^{-2}}=\frac{1-z^{-1}+K\cdot z^{-1}-K\cdot z^{-2}}{1-K^2\cdot z^{-2}}=\)
\(=\frac{1-K\cdot z^{-2}-(1-K)\cdot z^{-1}}{1-K^2\cdot z^{-2}}=\frac{1-K\cdot z^{-2}}{1-K^2\cdot z^{-2}}-\frac{1-K}{1-K^2\cdot z^{-2}}\cdot z^{-1}=H_1(z^2)-H_2(z^2)\cdot z^{-1}\)
Семплы на выходе обоих фильтров \(H_1(z^2)\) и \(H_2(z^2)\) вычисляются не в каждом такте, а только в четных тактах клока.
-
On 3/7/2023 at 2:36 PM, aBoomest said:
Все написанное просто мысли. Ни один метод не отсек. Изучаю. Анализирую. Сравниваю.
Тогда начните с классики.. :)
Эту тему обсуждают на форуме уже больше 13 лет:
-
On 3/5/2023 at 3:32 PM, looser said:
Но если вы пытаетесь этот процесс дискретизировать - все становится сильно иначе, мягко говоря.
Не только дискретизация вносит ошибку в измерение фазы. Аналоговый фильтр (так же как и цифровой) с помощью которого делают преобразование Гильберта имеет очень длинную импульсную характеристику. Поэтому и переходной процесс в этом фильтре тоже будет длинным. Но переходной процесс в фильтре будет вносить искажения в полученный комплексный сигнал, если сам сигнал изменяется быстрее, чем закончился переходной процесс. Как следствие, для сигналов с быстро меняющейся частотой возникнет ошибка в измерении фазы в полученном аналитическом сигнале.
-
On 3/5/2023 at 2:50 PM, Hazagarov said:
Я, измеряя фазу, знаю о частоте всё.
Ну, если всё знаете, то давайте точную численную оценку для величины ошибки измерения частоты вашим методом.. :)
Параметры сигнала у вас есть. ТС их уже неоднократно озвучил.. -
On 3/5/2023 at 2:35 PM, Hazagarov said:
Ортогональный метод измерения фазы вполне подойдет для быстрых изменений. И частоту посчитать тоже можно. Вы не вникали в метод) я понял по сообщению.
Вникал.. А вот вы, похоже, так и не вникли.. :) И фаза ему не нужна. Это ваши очередные фантазии. Ему нужна частота:
-
On 3/1/2023 at 2:07 PM, Hazagarov said:
Чудится мне, что унесло людей куда-то не совсем туда.
Вы, похоже, не очень-то внимательно прочитали все пожелания ТС'а:
On 1/27/2023 at 8:26 AM, aBoomest said:Вопрос такой: какие существуют алгоритмы ЦОС определения частоты сигнала. ... построение "в упор" спектра сигнала и т.п. - не интересуют.
On 1/27/2023 at 3:07 PM, aBoomest said:Сигналы в теории примерно 0 - 600 Гц. В реальности на практике 10 - 400 Гц.
On 1/30/2023 at 9:31 AM, aBoomest said:On 1/29/2023 at 10:50 PM, thermit said:А какая точность нужна? Как быстро меняется частота?
Как быстро? Думаю, можно считать, что быстро. За 1 период частоты основной гармоники запросто. Думаю, это можно считать быстро.
А теперь представьте себе "гармонический" сигнал на интервале одна(!) секунда у которого частота изменяется 200 раз за эту секунду, причем, по случайному закону в пределах от 10 Гц до 400 Гц.
Смогут ли все эти ваши алгоритмы (ФАПЧ и прочие Фурье с Гильбертами) вычислить все эти двести(!) различных частот основной "гармоники"..? :)
-
On 3/2/2023 at 4:53 PM, baumanets said:
И один получает в 2 раза больше другого.
Не факт.. "Дьявол прячется в деталях..":
On 3/2/2023 at 4:53 PM, baumanets said:от 120 000 руб. до вычета налогов
до 250 000 руб. до вычета налогов
Так что формально, первый может получать и "500 000 руб. до вычета налогов".. :)
-
On 2/20/2023 at 11:27 AM, aBoomest said:
2. Откуда берется предположение, что ...
В инструкции на любой измерительный прибор указана точность, с которой этот прибор измеряет физическую величину.
Ошибка измерения может быть как со знаком плюс, так и со знаком минус.
Мы выбираем знак ошибки для наихудшего сценария.
Так мы получим верхнюю оценку точности нашего измерителя.
-
On 2/20/2023 at 11:58 AM, quark said:
Один ватт на квадратный метр - это примерная мощность солнечного излучения в космосе, на уровне орбиты Земли.
Не болтайте ерундой!!! :)
Wiki:
Quote -
On 2/16/2023 at 1:29 PM, V_G said:
Если формула для частоты выведена для синусоидального сигнала, то куда уплывет эта оценка при наличии гармоник, шумов и помех?
Можно прикинуть ошибку измерения, при условии что:
On 1/27/2023 at 4:12 PM, aBoomest said:СНР норм. Больше 100 точно.
Пусть измеренные значения гармонического сигнала \(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'|\).
-
On 2/15/2023 at 10:26 AM, aBoomest said:
Я попробовал расписать эту формулу (эти суммы) , но что-то пока не догоняю. :)
"Да просто все", ©:
-
On 2/14/2023 at 10:36 AM, aBoomest said:
Почему f*(t3 - t1) < 1 ? Типа если это не так, то отсчеты взяты на расстоянии больше чем 1 период, и тогда смысл алгоритма теряется? Верно?
Да, всё верно.
-
On 2/13/2023 at 11:13 AM, aBoomest said:
Не подскажите вывод формулы?
-
On 2/9/2023 at 4:24 PM, Koluchiy said:
Подскажите, а почему именно на эту версию? А не на 2022 например?
Сравнил по случаю две стратегии имплементации в 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 | +-----------------+-------------+----+-----+-----+-----+
-
On 2/9/2023 at 4:24 PM, Koluchiy said:
Подскажите, а почему именно на эту версию? А не на 2022 например?
Так стратегии P&R меняются от версии к версии Vivado и я заметил, что в V21.2 запас по slacks на одних и тех же проектах немного больше, чем в V22.2.
Но это не точно, так как зависит, возможно, от характеризации самих кристаллов. Со временем, у Xilinx'а появляются более точные временные модели задержек внутри чипов. IMHO.
Ну и самые последние версии Vivado часто оказываются глючными. Так что у нас в конторе в ходу версия V21.2, как самая стабильная.
Но ничто не мешает попробовать собрать проект и в версии V21.2, и в версии V22.2 и сравнить результаты. :)
-
On 2/9/2023 at 10:54 AM, des00 said:
он не показывает ресурсы разводки(а проблема с ними), он не учитывает регистры которые будут размешаться в DSP/RAMB, оне может не показывать склейки памяти и ЕМНП, он не показывает утилизацию SLICE.
Это все бла-бла-бла.. Вы зачем-то стали задавать ТС'у вопросы, но в ответ на ответы на эти вопросы не дали ему ни одного реального совета. А вместо этого пустились в пространные рассуждения о трудностях проектирования.. 🙂
On 2/9/2023 at 10:54 AM, des00 said:ну тс же вам ответил уже на этот вопрос чуть ниже
И что с того, что не 100% ? А если там 99% ?
-
On 2/9/2023 at 10:51 AM, des00 said:
А кто сказал что она не сходится именно в зашифрованном модуле? ТС нигде не писал об этом, ...
Читайте внимательно:
On 2/7/2023 at 2:11 PM, Koluchiy said:Имеем проект, в котором основную часть занимает ядро с закрытыми исходниками.
При компиляции, в этом ядре не сходятся времянки.
-
On 2/9/2023 at 10:44 AM, des00 said:
Это я все к тому, что нарезав от балды Pблоки, можно ухудшить ситуацию, вместо ее улучшения.
А есть другие варианты, если времянки не сходятся в зашифрованном модуле?
On 2/9/2023 at 9:58 AM, des00 said:я бы переписал эту часть логики, либо у вас проект плохо влезает в чип и он сильно заполнен.
Ну и все что с этим связано: константы времени исполнения в мультициклы или ложные пути и т.дЧто там можно переписывать, если доступ есть только к нетлисту?
On 2/9/2023 at 10:44 AM, des00 said:проблема адекватно оценить требуемые ресурсы модуля, с учетом того что они различаются для разных стратегий сборки
Это как раз не проблема. После синтеза на вкладке "Статистика" Vivado указывает все требуемые для модуля ресурсы.
-
-
On 2/7/2023 at 2:11 PM, Koluchiy said:
Имеем проект, в котором основную часть занимает ядро с закрытыми исходниками.
При компиляции, в этом ядре не сходятся времянки.
..., в одной из стратегий не сходится на 0.01 нс.
Простейший план такой:
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. Запускаем имплементациюЭтот план может сработать, если все критические пути находятся внутри зашифрованного модуля.
Новости из мира FPGA
в Работаем с ПЛИС, области применения, выбор
Опубликовано · Пожаловаться
@andrewkrot, спасибо!