Jump to content

    

des00

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

    7997
  • Joined

Everything posted by des00


  1. Вот такой пример: децимация сигнала в 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)); Теперь собственно вопросы, 1. Почему частота f2 отображается не зеркально, относительно частоты найквиста децимированного домена? Ведь при рассчете децимирующих фильтров, обеспечивают затухание в полосе Fn-BW : Fn, где Fn - частота найквиста исходного домента, BW - полоса сигнала. 2. Почему для децимации через FFT складываются непосредственно две половинки (математически это верно, т.к. для коэффциентов старшей половинки, будет умножение на exp(-1*2pi) = 1, но, по логике вопроса 1 там же должно быть зеркальное отображение старшей половинки спектра перед сложением? Понимаю что матлаб считает верно, но логика здравого смысла говорит что это не соответствует действительности и проблема либо в трактовании результатов, либо в использовании матлаба. Что я делаю не так? Спасибо.
  2. оке, значит в управлении нет косяка, что записали то и читается, никто задержку не меняет. Тогда какая у вас частота DCO и частота калибровки задержки? Не работал с этим АЦП, не знаю что там на DCO) на 200МГц, 1 шаг задержки у вас 78пс, всего шагов 31, т.е. вы можете задержать на половину периода частоты 200МГц.
  3. вот только поля у него все разные, поэтому задача не решается. ЗЫ. и вы забыли разделить в вашем коде результат на 32.
  4. вот только вопрос ТС не в смещении конкретного поля, а в индексе имени конкретного поля, а все поля у ТС разные) За сим, всеж никакими)
  5. ну это же просто забитая константа, если на константах то можно и через макросы и константы и функции с забитыми константами. Но вы же про другое спрашиваете.
  6. поставьте в режим VAR_LOAD и проверьте поведение, чтобы гарантировать однозначность установленной задержки.
  7. штатно нет, но можно это сделать в прошивке ПЛИС. благо они на просторах сети есть, вместе с описанием протокла)
  8. в свое время, пробовал в проекте из 700 файлов, собрать их в инклудники, по типам, и подключить к ПО. Получилось порядка 5-8 файлов. Все работало кроме вивады. она собирала, но не могла прыгать по модулям при интерактивной работе со схематиками. В итоге пришлось отказаться от такой техники
  9. вы меня извинте, но у меня даже студенты 3го курса читают внимательнее. там черным по белому написано какое напряжение питание банка(и только оно) нужно для конкретного режима работы. ну включите логику здравого смысла, по 3.3 естественно, но при этом драйвер может стоять в режиме работы, не гарантирующем надежность и стабильность работы.
  10. да можно как угодно делать) эта фича чисто для ленивых разработчиков)
  11. ну мабыть, но было все тоже самое, многопортовый ДДР контроллер, приемники видеосигнала, источники с оптики и HDL дезайнер). Удачи в поиске исполнителей, вроде задача не сложная, но обьемная)
  12. уже ответил вам, напряжение банка. Очевидно же, что при питании банка 1.2В, LVCMOS_33 не получить никак, точно также как и при питании 3.3В, не получить LVCMOS_18. А вообще, у каждой плис есть документация с табличкой допустимых режимов ввода вывода. Вот например Для xilinx 7 series в приложении. ничем. И как вы уже заметили, возможности по току, в разных режимах отличаются. Поэтому возможен хак, когда драйвер конфигурируется в наибольший ток, установкой режима с малым напряжением, а на деле подается честные 3.3В. В этом режиме может сгореть выходной драйвер.
  13. Проект до жути знакомый, припоминаю участие в нечто подобном лет 5 назад) Но помочь не смогу, времени нет.
  14. Нет, какое будет питание, такое и LVCMOS, а на таблице пороги напряжений нуля или единицы. А задается по разному потому что драйвер ПЛИС может быть спроектирован не универсальными и с ограничениями в некоторых режимах. Например, у вашей любимой альтеры, LVCMOS 3.3 может работать только с током драйвера 2ма, тогда как LVCMOS 2.5 2/4/8 mA. Используется режим работы и при рассчете выполнения временных констрейнов (там по хорошему же еще надо емкость линии задавать на ближнем и дальнем конце и т.д.). Подытожу, лучше ставить то, что у вас будет в реальности и следить за тем, каким напряжением питаете банк. В противном случае, корректная работа софта и плис не гарантируется.
  15. ЕМНИП там есть ошибка в дровах современных квартусов с энумерацией, до 13.1 все прекрасно работало совместно, начиная с 15.1 все сломалось. Лечил подменой dll в 15.1 от 13.1 и перезапуском jtag сервера.
  16. ну статус вы себе сами любой можете поставить, в рамках правил форума. А констрейны пинов, ну вот например из текущего под 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[*] т.е. задание стандарта ввод-вывода по умолчанию, позволяет не указывать стандарт для большинства пинов. В противном случае, нужно будет прописывать все)
  17. меньше констрейнов размещения писать. также как и на альтере кстати
  18. и что? для вьезжания в суть темы пройдитесь там по подфоруму. или вы хотите что бы за вас искали и вам в рот все закладывали? Там тем про путь ПЛИС - железо штук 10, с указанием этапов, инструментов и т.д. День потратить перечитать весь подфорум, благо он небольшой.
  19. есть же целый подфорум, ссылку вам уже давал. это уже за гранью ХДЛ. Ищите ответы в том подфоруме.
  20. ИМХО не все там так просто, в противном случае технологии структурированных ASIC (например eASIC) не использовались бы. За сим, полагаю, не стоит вот так прям подписываться сворачивать горы)
  21. охотно верю, это было давно и там задача была по оптимизации ресурсов. кстати, ЕМНИП, для ASIC там надо еще закладывать всякую отладку, вроде Design For Test называется технология, когда то давно интересовался этой темой, но сейчас не до этого)
  22. ЕМНИП там все свое, что-то наверное уже поддерживается на более высоком уровне синтезатора для всех, не совсем оптимальном наверное, но вот помню как @SMи @yes обсуждали на форуме особенности использования memory compiler для ASIC, было это лет 15-12 назад. Т.е. когда то даже вот такие простые вещи делались не с описания) @SM делал свои делители, свои умножители и другую математику для своего проца, что-то выкладывал на форум) Крутой чел, жаль давно не интересен ему форум) В общем там вся своя кухня)
  23. он вам про другое говорит. Например дсп ячейки для плис данность, для азик либо покупать либо делать. И да, это не просто умножить написать, это на более низком уровне расписывать и оптимизировать. SRL16 элементы в плис тоже данность, в азик покупать/делать и т.д. Жаль Сергей Марков (SM) давно не заходит на форум, у него опыта и там и там был вагон, особенно по оптимизации по площади, он бы вас проконсультировал, наверное