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

blackfin

Свой
  • Постов

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

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

    3

Сообщения, опубликованные blackfin


  1. 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 файл с помощью опции:

    image.thumb.jpeg.c6f4d7fce1284386f14eff71b136cd5c.jpeg

     

    См: UG901, стр 18.

     

    PS. И есть ещё такой способ:

    image.thumb.jpeg.f6e9aaf45e50bd82adaf6f5811347423.jpeg

  2. On 3/10/2023 at 11:14 AM, OparinVD said:

    Отладка с чипскопом показала, что сдвиг проходит успешно, а вот освободившиеся байты заполняются нулями.

    А сигнал S_AXIS_TKEEP поправить не забыли?

  3. 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)\) вычисляются не в каждом такте, а только в четных тактах клока.

  4. On 3/5/2023 at 3:32 PM, looser said:

    Но если вы пытаетесь этот процесс дискретизировать - все становится сильно иначе, мягко говоря.

    Не только дискретизация вносит ошибку в измерение фазы. Аналоговый фильтр (так же как и цифровой) с помощью которого делают преобразование Гильберта имеет очень длинную импульсную характеристику. Поэтому и переходной процесс в этом фильтре тоже будет длинным. Но переходной процесс в фильтре будет вносить искажения в полученный комплексный сигнал, если сам сигнал изменяется быстрее, чем закончился переходной процесс. Как следствие, для сигналов с быстро меняющейся частотой возникнет ошибка в измерении фазы в полученном аналитическом сигнале.

  5. On 3/5/2023 at 2:50 PM, Hazagarov said:

    Я, измеряя фазу, знаю о частоте всё.

    Ну, если всё знаете, то давайте точную численную оценку для величины ошибки измерения частоты вашим методом.. :)
    Параметры сигнала у вас есть. ТС их уже неоднократно озвучил..

  6. On 3/5/2023 at 2:35 PM, Hazagarov said:

    Ортогональный метод измерения фазы вполне подойдет для быстрых изменений. И частоту посчитать тоже можно. Вы не вникали в метод) я понял по сообщению.

    Вникал.. А вот вы, похоже, так и не вникли.. :) И фаза ему не нужна. Это ваши очередные фантазии. Ему нужна частота:

     

  7. 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 Гц.

     

    Смогут ли все эти ваши алгоритмы (ФАПЧ и прочие Фурье с Гильбертами) вычислить все эти двести(!) различных частот основной "гармоники"..?  :)

  8. 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 руб. до вычета налогов".. :)

  9. On 2/20/2023 at 11:27 AM, aBoomest said:

    2. Откуда берется предположение, что ...

    В инструкции на любой измерительный прибор указана точность, с которой этот прибор измеряет физическую величину.

    Ошибка измерения может быть как со знаком плюс, так и со знаком минус.

    Мы выбираем знак ошибки для наихудшего сценария.

    Так мы получим верхнюю оценку точности нашего измерителя.

  10. On 2/20/2023 at 11:58 AM, quark said:

    Один ватт на квадратный метр - это примерная мощность солнечного излучения в космосе, на уровне орбиты Земли.

    Не болтайте ерундой!!! :)

    Wiki:

    Quote

    Полное количество солнечной радиации, получаемой на верхней границе земной атмосферы, составляет в среднем 1366 Вт/м²[5][6][7].

     

  11. 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'|\).

     

  12. 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 |
    +-----------------+-------------+----+-----+-----+-----+

     

  13. 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 и сравнить результаты. :)

  14. 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% ?

  15. On 2/9/2023 at 10:51 AM, des00 said:

    А кто сказал что она не сходится именно в зашифрованном модуле? ТС нигде не писал об этом, ...

    Читайте внимательно:

    On 2/7/2023 at 2:11 PM, Koluchiy said:

    Имеем проект, в котором основную часть занимает ядро с закрытыми исходниками.

    При компиляции, в этом ядре не сходятся времянки.

     

  16. 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 указывает все требуемые для модуля ресурсы.

  17. On 2/9/2023 at 9:58 AM, des00 said:

    ага, а если там логика, дсп и память, да все не раскладывается в линейку/квадратик, вот там будет потом космос, с попыткой разложить его туда, куда он не лезет

    И что, для вас это проблема? :)

    UG909, page 34:
    image.thumb.jpeg.fab22f84126d618d426f2ff49a9588f2.jpeg

  18. 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. Запускаем имплементацию

     

    Этот план может сработать, если все критические пути находятся внутри зашифрованного модуля.
     

×
×
  • Создать...