Jump to content

    

All Activity

This stream auto-updates     

  1. Past hour
  2. вот пример, аналогичный тому что я пиводил ранее, но с учетом подсказки выше в обсуждении, о том что выгодно считать симметричную характеристику. % FIR least-squares Hilbert transformer % filter designed using the FIRLS function. Fs = 8; % Частота дискретизации (кГц) N = 40; % порядок фильтра F = [0.005, Fs/2-0.005]; % Frequency Vector A = [1, 1]; % Amplitude Vector W = [1]; % Weight Vector b = firls(N, F/(Fs/2), A, W, 'hilbert'); % b0 = zeros(size(b)); b0((end+1)/2) = 1; hfvt = fvtool(b0,1,b,1); hfvt.Analysis = 'freq'; hfvt.PhaseUnits = 'degrees'; тут b - импульсная характеристика рассчитанного фильтра, b0 - ИХ задержки на половину порядка рассчитанного фильтра. половина коэффициентов действительно получается нулевыми я не нашел, как в fvtool построить отношение амплитудных характеристик двух фильтров и разность фазовых характеристик но есть пример расчета частотных характеристик вручную, с выводом разности фаз w = 0:1e-4:.5; % цифровая нормированная частота f = w*Fs; % частота (кГц) % комплексные частотные харатеристики h = sum(b .'.*exp(-1i*2*pi*w.*(1:N+1).')); h0 = sum(b0.'.*exp(-1i*2*pi*w.*(1:N+1).')); % АЧХ (дБ) h_magn = mag2db(abs(h)); h0_magn = mag2db(abs(h0)); % ФЧХ (°) h_phas = rad2deg(unwrap(angle(h))); h0_phas = rad2deg(unwrap(angle(h0))); % % plot(f,h0_magn,f,h_magn); % plot(f,h0_phas,f,h_phas); % разность ФЧХ plot(f,h0_phas-h_phas);
  3. Это как бы самый правильный вариант - топ является враппером для бд, который связан с пинами плис через констрэйны - можно конечно топ и ручками писать если иначе никак, например, свести в кучу врапперы одной или нескольких бд и ряда других ядер или ртл. Сейчас вроде как сделали вложенные бд (DXP), но мне пока хватает и объединения блоков (hier) - средний проект это порядка 200 ip (включая фикции типа слайсов) и разом все на экран это уже перебор. Опять же многие вещи делаются автоматом во враппере бд - например, буфера для тристэйт пинов ядра SPI будут сгенерены вивадой - вам только названия сигналов согласовать с констрэйнами останется. Конечно можно, но все придется писать ручками - имхо садомазо будет еще то. Ну и я не знаю как будет (и будет ли) работать автоматический экспорт драйверов в сдк для ядер с AXI-интерфейсами для управления с процессора, да и сам конфиг процессора то же - возможно это только в бд работает. К сожалению есть и другие крайности - например, если захотите использовать нативный интерфейс вместо акси в ядре ддр, то эта фишка доступна только в ртл, а размещение ядра ддр4 там может привести к появлению на jtag второго микроблэйза из этого ядра, который вам совсем не сдался и его придется учитывать при сборе прошивки. Чем дальше в лес, тем толще глюки... В последних вивадах заметил еще одну тенденцию - ядра для видео-обработки написаны на хлс и являются конфигурируемыми, что пока не доступно простым смертным.
  4. Ну, тогда, видимо, единственным корректным способом переноса остаётся экспорт/импорт tcl, и его же в реп и класть.
  5. Приветствую! У меня top всегда RTL . А BD использую по мере необходимости как модули в иерархии. Но многие делают BD как топ, особенно если есть готовый board_file шаблон. Тенденция однако печальная. Некоторые IP корки присутствуют только для использования на BD (IP integration only). Часто связанно это с наличием в этих корках скриптов которые генерят BD динамически во время этапа validation. Некоторые чисто RTL корки (как например AXI interconnect RTL v1.7 в 2020.2 ) уже помечены как Discontinued. Удачи! Rob.
  6. вы для 15нс памяти волновое сопротивление трассы по плате учитывать хотите?
  7. Порочна, на фронтах может возникнуть звон (овершуты и андершуты), вплоть до двойного срабатывания, если особо не повезет. Моделирование тут очень полезно своей наглядностью и экспериментами "а что если".
  8. Есть только пара мелких замечаний, которые вам сейчас никак не помогут. 1) R34 (RSET) велено ставить 5k с допуском 1%, а у вас 4,7k 2) IO выводы не толерантны к 3,3В, у вас подтяжка сброса и MDIO к странным 3,0В. 3) F_VTT настроен как имеющий внешнее питание, а на самом деле никуда не подключен. Понятно, что оптика у вас не используется, но прямого разрешения так делать в даташите нет. 4) SIGDET - вход без внутренней подтяжки болтается в воздухе. Не поймал ли он активный уровень и не включил ли выбор оптики вместо витой пары?
  9. Если 4% это 100k LUTs, то речь, видимо, о XCVU440.. Круто! На спичках уже можно не экономить.. :)
  10. Вы top на bd оформляете? Я как помню, вроде как основное преимущество bd озвучивали то, что можно быстро скидать модуль из готовых отлаженных блоков, и уже его враппер подключать к проекту. Но как-то мне не показалось, что на bd получается быстрее, чем текстом, если использовать не портянки портов, а упаковывать это всё в SV интерфейсы. Есть случаи, когда без bd просто в принципе не обойтись? Ну, скажем, на SoC'ах PS или это тоже можно без bd сделать?
  11. Приветствую! Да уж проблем хватает. На сколько помню изначально это был стартап оболочки для быстрой разработки проектов "наброской" готовых кубиков на BD. И автоматической генерации кода внутри BD со сквозным распространением параметров и их валидацией. Но такая концепция требует много проверок и взаимосвязей при усложнении дизайна и иерархии. Отсюда IMHO и ограничения на тип сигналов на портах и такие тормоза при работе с BD. Ну а проблемы со сложностью коннекта к блокам BD можно обойти макросами и некоторой само-организаций (для V/SV). У меня давно уже многие стандартные шины к BD конектятся так module my_name ( `AXI4L_PORT_SLAVE(s_ctrl, 20, 32), ... ); `AXI4L_WIRE_BUS(m_tcp0_ctrl 16, 32, s_ctrl_aclk, s_ctrl_aresetn); `AXI4L_WIRE_BUS(m_tcp1_ctrl, 16, 32, s_ctrl_aclk, s_ctrl_aresetn); ... `AXI4_WIRE_BUS(m_0_axi, 40, 256, 4, 0, axi_aclk, axi_aresetn); ... usr_sys_bd i_usr_sys_bd ( .S00_aclk (s_ctrl_aclk ), .S00_arstn (s_ctrl_aresetn), // `AXI4L_PORT_CONNECT_NOCR(S00, s_ctrl), `AXI4L_PORT_CONNECT_IF_NOCR(M01, if_dma_ctrl), `AXI4L_PORT_CONNECT_IF_NOCR(M02, if_prc_ctrl), `AXI4L_PORT_CONNECT_NOCR(M03, m_tcp0_ctrl), `AXI4L_PORT_CONNECT_NOCR(M04, m_tcp1_ctrl), `AXI4L_PORT_CONNECT_NOCR(M06, m_phy0_ctrl), `AXI4L_PORT_CONNECT_NOCR(M07, m_phy1_ctrl), // .S00_AXI_aclk (axi_aclk ), .S00_AXI_arstn(axi_sresetn), // `AXI4_PORT_CONNECT_NOCR(S00_AXI, s_axi, 0), `AXI4_PORT_CONNECT_NOCR(M00_AXI, m_0_axi, 0), `AXI4_PORT_CONNECT_NOCR(M01_AXI, m_1_axi, 0) ); Удачи! Rob.
  12. Юноша, у вас похоже сложно с соображалкой, вам все уже сказали, нужно еще что-то разжевать?
  13. В первую очередь есно за наглядность и структурированность большого проекта. На vhdl видел обе крайности - все-в-одном и "бесконечное" дерево - оба представляют собой сомнительное удовольствие для написания ручками, а про наглядность можно и не упоминать - ее тут просто нет. БД это по факту красивая надстройка над проектом типа "бесконечное" дерево, только ползать по нему самому не надо. Редактор бд все еще желает лучшего, но он намного удобнее и функциональнее "списка" с микроблэйзом в ISE. Валидация бд то же полезна, но к сожалению не всегда видит косяки и цепляется там где не должна. Для облегчения сохранения в гитах в последних вивадах сделан огромный шаг - надеюсь не последний. Про непереносимость - даже классический vhdl не всегда легко перенесется с хilinx на альтеру, да и между поколениями плис можно легко что-нибудь словить. Недавно разбирал проект от известной фирмы для их новых чипов - проект универсальный под обе оболочки - виваду и альтеру, но программер такое ощущение вылез из пещеры с ISE и пытался использовать виваду как привык - в бд были такие финты наделаны, что я был в шоке - то что можно было сделать штатными ядрами зачем то делалось на ртл без всякой надобности. С враппером в виваде все достаточно просто - язык на выбор - vhdl или verilog, а если имена пинов не полениться и присвоить одни и те же в бд и констрэйнах, то и писать его не надо - разок сгенерить - дальше само автоматом.
  14. Те, что Вы изначально привели в качестве примера, управляются 5-ю вольтами. О каких 100-400 может идти речь? А что конкретно за трансформатор? Какой коэффициент трансформации? Можете, наверное, нагрузить его на вход переключателя, поставив параллельно мощный стабилитрон.
  15. Теперь вечерняя тишина!) Сложно видимо с подтягиваниями)))
  16. Ссылки на даташиты приведены в первом посте. Одни даташит на 10 страниц, другой - на 18 страниц. Если найдёте подходящий параметр, я буду благодарен. Но, кажется я понимаю почему просимулировать проще. Я сегодня поигрался с IBIS-ом ISSI-вской памяти и её выходной буфер ведет себя совсем не как идеальный источник напряжения + внутреннее сопротивление. Возник другой вопрос. Похоже, что некий усреднённый импеданс выходных буферов SRAM несколько выше, чем 50 ом. Возможно ли, так скажем, подкрутить размерами дорожки и толщиной платы (дорожки делаем тоньше, экранирующий полигон отодвигаем дальше) волновое сопротивление линии до 100-150 ом, чтобы память работала с наименьшей длительностью фронтов? Вообще, порочна ли практика такой подкрутки?
  17. Today
  18. Заметил уже и по своему опыту - люди "пропитанные" vhdl на хлс-е писать или не могут совсем, или с большим трудом и долгими причитаниями. Парадигмы разные + проблемы системного проектирования. Когда так низко пишешь под железо понимание принципов его работы обязательно иначе результат не обрадует совсем. Сам на хлс-е функционально-монструозные ядра стараюсь не делать - принцип "разделяй и властвуй" все еще работает.
  19. Что-то геморная штука эти bd, как я посмотрю. А в чём цымес, так сказать? Экономия на вводе? Так в хорошем программерском текстовом редакторе оно и поудобнее будет и, побыстрее. И всё равно ведь потом враппер текстовый подключать, а там этот архаичный Verilog с множеством портов (вместо удобных SV интерфейсов), тоже писанины прилично и, главное, поле для ошибок немалое (пропустишь сигнал или не туда подключишь). Наглядность? Тоже сомнительно, особенно если учесть, что при любом телодвижении норовит перерисовать схему. Ну, и проприетарное решение, переносимости ноль. И в завершение проблемы с повторяемостью при переносе в другой проект и сохранением в системах контроля версий. За что боремся?
  20. Попробовал на 2021.1 исключить всю папку ip из bd - сломался миг ддр3, вернул только подпапку с миг-ом в ip (там xci и пара prj) - бд открылась нормально - параметры у ядер на месте, проверка бд проходит без ошибок, запуск генерации "продукта" с поядерным синтезом то же выполнилась. Итого в новом формате папка ip с xci и доп файлами все же нужна, либо проверяйте сами каким еще ядрам такая чистка может навредить - xilinx решил по простому оставить все. В старых версиях они так же нужны, но так же не для всех ядер и при выполнении для бд команды "reset output product" вивада оставляет только xci, а нагенеренный мусор удаляет - в новом формате проекта его держат в папке *.gen.
  21. При добавлении файла bd в проект, оно само создаёт IP (xci файлы). Vivado 2018.2.
  22. почему нельзя обойтись без инструментальных и дифференциальных?
  23. Почитайте вот эту тему, лучше последние 2 страницы, в начале там много болтовни и чепухи:
  24. Устойчивость не нормальная :). Потому и задал вопрос. Дело в том, что сейчас - вообще не подключена индуктивность - только активное сопротивление и устойчивости нет...
  25. Хабр в очередной раз подтвердил свое звание - околотехнический ресурс для домохозяек
  1. Load more activity