Jump to content

    

des00

Модераторы
  • Content Count

    7999
  • Joined

Posts posted by des00


  1. 18 hours ago, andyp said:

    Ну так у меня ж вторая палка отфильтрована, так что ничего удивительного.

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

  2. On 8/10/2020 at 7:26 PM, andyp said:

    Как-то так

    %Y2d = (X(1:512) + X(513:end))/2; 
    Y2d = [X(1:256) X(1024 - 256 + 1:end)]; 

    Сравнил СКО(sum(abs(x2d-y2d))^2) обоих вариантов, с сигналом, который децимирован во временном домене.

    Мой вариант: СКО = 1.473579e-26

    Ваш вариант: СКО = 2.636617e+05

    Quote

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

    Я специально ее туда поставил, чтобы посмотреть завороты и вот тут, что-то пошло не так с пониманием)

    Quote

    К вопросам 

    1. Потому что отражается от частоты Найквиста до децимации

    Вчера пришел к выводу что не правильно трактую результат работы FFT и @RobFPGA это подвердил). Изначально я считал что FFT в матлабе дает результат в диапазоне [0:FS/2], т.е. в попугаях частота найквиста исходная 1024, децимированная 512. Отсюда и не понятка. 

    Quote

    2. Зачем что-то складывать вместо того, чтобы просто  взять нужные точки?

    да я полез в CP-SC модуляцию, FS эквалайзирование и возник вопрос отображения ошибки в домене 1sps на коэффициенты в домене Nsps.

  3. Вот такой пример: децимация сигнала в 2 раза методом отбрасывания отсчетов и децимация за счет сложения половинок фурье.

    close all; 
    clear all; 
    
    n = 0:1023;
    
    f1 = 12; 
    f2 = 600; 
    
    % complex signal 
    x =      cos((2*pi/1024)*f1*n) + 1i*sin((2*pi/1024)*f1*n)  +...
        0.1*(cos((2*pi/1024)*f2*n) + 1i*sin((2*pi/1024)*f2*n)) + ...
        0.01*randn(size(n)) ;
    X   = fft(x, 1024); 
    
    % true decimation
    x2d = x(1:2:end);
    X2d = fft(x2d, 512);
    
    % decimation througth FFT 
    Y2d = (X(1:512) + X(513:end))/2; 
    y2d = ifft(Y2d);
    
    subplot(3,2,1);
    plot(1:1024, x);
    subplot(3,2,2);
    plot((0:1023), 20*log10(abs(X)));
    
    subplot(3,2,3);
    plot(1:512, x2d);
    subplot(3,2,4);
    plot((0:511), 20*log10(abs(X2d)));
    
    subplot(3,2,5);
    plot(1:512, y2d);
    subplot(3,2,6);
    plot((0:511), 20*log10(abs(Y2d)));
    
    fprintf("compare result = %0d\n", sum(x2d-y2d));

    Теперь собственно вопросы,

    fft.thumb.png.cb433b386af21a91f0ecf1d10b89d327.png

    1. Почему частота f2 отображается не зеркально, относительно частоты найквиста децимированного домена? Ведь при рассчете децимирующих фильтров, обеспечивают затухание в полосе Fn-BW : Fn, где Fn - частота найквиста исходного домента, BW - полоса сигнала.

    2. Почему для децимации через FFT складываются непосредственно две половинки (математически это верно, т.к. для коэффциентов старшей половинки, будет умножение на exp(-1*2pi) = 1, но, по логике вопроса 1 там же  должно быть зеркальное отображение старшей половинки спектра перед сложением?

    Понимаю что матлаб считает верно, но логика здравого смысла говорит что это не соответствует действительности и проблема либо в трактовании результатов, либо в использовании матлаба. Что я делаю не так?

    Спасибо.

     

     

  4. On 8/7/2020 at 8:37 PM, Art55555 said:

    Да, сделал так.

    Данные реагируют, гуляют, как на тестовой паттерне, так и на реальном сигнале. А вот DCO стоит намерво(( "А" и всё.

    оке, значит в управлении нет косяка, что записали то и читается, никто задержку не меняет. Тогда какая у вас частота DCO и частота калибровки задержки? Не работал с этим АЦП, не знаю что там на DCO) на 200МГц, 1 шаг задержки у вас 78пс, всего шагов 31, т.е. вы можете задержать на половину периода частоты 200МГц.

  5. 3 minutes ago, RobFPGA said:

    Приветствую!

    Все же  TC нужно именно позиция (индекс)  регистра по  имени поля. При условии что регистры у него все 32 битные то в моем примере эта задача решается 

    вот только поля у него все разные, поэтому задача не решается.

    ЗЫ. и вы забыли разделить в вашем коде результат на 32. 

  6. 45 minutes ago, RobFPGA said:

    Ну не так уж и никаким :yes3:

    Если тип структуры известен и она пакованная и вы хотите знать смещение конкретного поля то можно

    вот только вопрос ТС не в смещении конкретного поля, а в индексе имени конкретного поля, а все поля у ТС разные) За сим, всеж никакими) 

  7. 15 minutes ago, Darky777 said:

    Что, даже дефайнами не наложить никак?

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

  8. в свое время, пробовал в проекте из 700 файлов, собрать их в инклудники, по типам, и подключить к ПО. Получилось порядка 5-8 файлов. Все работало кроме вивады. она собирала, но не могла прыгать по модулям при интерактивной работе со схематиками. В итоге пришлось отказаться от такой техники

  9. 5 hours ago, MaratZuev said:

    Спасибо, конечно, но что можно взять из этой таблички для LVCMOSXX, кроме того, какие банки могут по этим стандартам работать?

    вы меня извинте, но у меня даже студенты 3го курса читают внимательнее. там черным по белому написано какое напряжение питание банка(и только оно) нужно для конкретного режима работы.

    5 hours ago, MaratZuev said:

    Рискую показаться тупым, но ... если я установлю для определённого вывода в среде проектирования стандарт одного уровня (скажем LVCMOS1.2), а запитаю банк от другого напряжения (скажем 3.3В): по каким уровням (порогам) будет работать этот вывод?

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

  10. 44 minutes ago, andrew_b said:

    А если сэмулировать стандарт по умолчанию?

    
    set_property IOSTANDARD LVDS_25 [get_ports *]

    А потом переопределить для конкретных ног?

    да можно как угодно делать) эта фича чисто для ленивых разработчиков)

  11. 4 hours ago, SonicTel said:

    не думаю что данный проект вам знаком) ждем откликов.

    ну мабыть, но было все тоже самое, многопортовый ДДР контроллер, приемники видеосигнала, источники с оптики и HDL дезайнер). Удачи в поиске исполнителей, вроде задача не сложная, но обьемная)

  12. 44 minutes ago, MaratZuev said:

    LVCMOS определяет пороги, а вот кто определяет само LVCMOS? Установки или питание - я про это спрашивал.

    уже ответил вам, напряжение банка. Очевидно же, что при питании банка 1.2В, LVCMOS_33 не получить никак, точно также как и при питании 3.3В, не получить LVCMOS_18. А вообще, у каждой плис есть документация с табличкой допустимых режимов ввода вывода. Вот например Для xilinx 7 series в приложении. xilinx_io.thumb.png.50446688dd36fed565fc6e8070074408.png

    44 minutes ago, MaratZuev said:

    Вот варианты выбора стандартов моей любимой альтеры (чем отличается 3.3-V LVCMOS от 3.3-V LVCMOS (default)?)

    ничем. И как вы уже заметили, возможности по току, в разных режимах отличаются. Поэтому возможен хак, когда драйвер конфигурируется в наибольший ток, установкой режима с малым напряжением, а на деле подается честные 3.3В. В этом режиме может сгореть выходной драйвер.

  13. 6 hours ago, MaratZuev said:

    Правильно ли я понимаю, что, если я запрограммирую вывод на LVCMOS 1.8V, и на выход, работающий по такому стандарту, подам высокий уровень, то, судя по последнему столбцу, он имеет полное право установиться в 1.45В (даже, если питание этой ПЛИС, как у меня, будет 3.3В)

    Нет, какое будет питание, такое и LVCMOS, а на таблице пороги напряжений нуля или единицы. А задается по разному потому что драйвер ПЛИС может быть спроектирован не универсальными и с ограничениями в некоторых режимах. Например, у вашей любимой альтеры, LVCMOS 3.3 может работать только с током драйвера 2ма, тогда как LVCMOS 2.5 2/4/8 mA. Используется режим работы и при рассчете выполнения временных констрейнов (там по хорошему же еще надо емкость линии задавать на ближнем и дальнем конце и т.д.).

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

     

  14. ЕМНИП там есть ошибка в дровах современных квартусов с энумерацией, до 13.1 все прекрасно работало совместно, начиная с 15.1 все сломалось. Лечил подменой dll в 15.1 от 13.1 и перезапуском jtag сервера.

  15. 38 minutes ago, MaratZuev said:

    С т.з. констрейнов, да и всего остального ....

    ну статус вы себе сами любой можете поставить, в рамках правил форума. А констрейны пинов, ну вот например из текущего под xilinx:

    set_property PACKAGE_PIN C18 [get_ports adc0_dco_p]
    set_property PACKAGE_PIN C19 [get_ports adc0_dco_n]
    set_property IOSTANDARD LVDS_25 [get_ports adc0_dco*]
    set_property DIFF_TERM true [get_ports adc0_dco*]

    явно прописываются настройки порта ввода/вывода.

    Вот пример для альтеры

    set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"
    ....
    set_location_assignment PIN_50 -to fsdo
    set_instance_assignment -name CURRENT_STRENGTH_NEW 4MA -to fsdo
    set_instance_assignment -name WEAK_PULL_UP_RESISTOR ON -to fsdo
    ...
    set_instance_assignment -name IO_STANDARD "2.5-V LVTTL" -to nrz_in_d[*]

    т.е. задание стандарта ввод-вывода по умолчанию, позволяет не указывать стандарт для большинства пинов. В противном случае, нужно будет прописывать все)

  16. 12 minutes ago, Мур said:

    Оооо...  какое древнее!

    БМК не есть ASIC!   Там некое подобие однократно программируемого CPLD...  Или я что-то не понял?  ASIC это ЧИСТАЯ кремневая пластина....  в начале технологической цепочки

    Меня приглашают к себе...  буржуи.   Тут, где я работаю,- чистые FPGA.

    и что? для вьезжания в суть темы пройдитесь там по подфоруму. или вы хотите что бы за вас искали и вам в рот все закладывали? Там тем про путь ПЛИС - железо штук 10, с указанием этапов, инструментов и т.д. День потратить перечитать весь подфорум, благо он небольшой.

  17. 7 minutes ago, Мур said:

    А если конструктивно,- мне важно узнать, что точно необходимо для создания ASIC(кроме денег)?

    есть же целый подфорум, ссылку вам уже давал. это уже за гранью ХДЛ.

    Ищите ответы в том подфоруме.

  18. 6 minutes ago, Мур said:

    Так что трудно представить что-то сложнее FPGA!

    ИМХО не все там так просто, в противном случае технологии структурированных ASIC (например eASIC) не использовались бы. За сим, полагаю, не стоит вот так прям подписываться сворачивать горы)

  19. 2 minutes ago, lexx said:

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

    охотно верю, это было давно и там задача была по оптимизации ресурсов. кстати, ЕМНИП, для ASIC там надо еще закладывать всякую отладку, вроде Design For Test называется технология, когда то давно интересовался этой темой, но сейчас не до этого)