Jump to content

    

RobFPGA

Свой
  • Content Count

    1579
  • Joined

  • Last visited

Community Reputation

0 Обычный

1 Follower

About RobFPGA

  • Rank
    Профессионал

Recent Profile Visitors

10381 profile views
  1. Приветствую! А зачем вам forever в таске? forever выполняется всегда (вот бы не подумал ) без всякого условия! То есть ваш код выглядит для сима так task process_zone; ... forever begin: b_forever @(posedge clk) begin : b_posedge ... i = state_zone == ST_ZONE ? i + 1 : 0; process_zone_end = state_zone == ST_END_ZONE; end // b_posedge end // b_forever endtask : process_zone а значит вы не выходите из taska, а так как output переменные присваиваются при выходе из task то на выходе у вас нет изменения внешней переменной state_next_zone. Меняется только локальная переменная process_zone_end. Удачи! Rob.
  2. Приветствую! Тормоза это да, что есть, то есть ... хотя как по наполнению, так и по интеграции оболочка tcl в Vivado мне больше нравится чем в Qu. Ну может допилят когда-нибудь - или если не смогут заменять на новый стартап :) Удачи! Rob.
  3. Приветствую! Сами по себе блокирующие присваивания не источник проблем. Тут так же будут генерироваться флопы. Ну а при синтезе из высокоуровневых языков так проще конвертировать логику алгоритма. Ведь в концепции оных присвоения значений переменным всегда блокирующие. Так и есть. Но и Vivado в свое время был стартапом граф. оболочки для разработки FPGA . Помню реклама была типа "Honey, ask your son to stop developing for FPGA" и карапуз на фоне бука с открытой BD Vivado - А теперь мы все что те карапузы, ни как не остановимся ... Удачи! Rob.
  4. Приветствую! Все перечисленное имеет отношение к любым электронным компонентам и системам, а не только FPGA Поэтому и решения стандартные, как и в других подобных случаях - делаете несколько управляющих блоков с одинаковым функционалом выполненных на разной элементной базе, разном материале печаток и разной технологии сборки и мажоритируете их. Всего то Удачи! Rob.
  5. Приветствую! С какого это перепугу? Этот враппер генерируется когда вы пакуете в автозак в репозиторий ваш IP. Если не хотите такого халявного беспредела сделайте свой топ врапер, например типа такого: Такой топ пакуется без всяких проблем c автоматическим распознаванием AXI. Останется только добавить параметры set_property enablement_dependency {$AXI_NUM>0} [ipx::get_bus_interfaces s00 -of_objects [ipx::current_core]] set_property enablement_dependency {$AXI_NUM>0} [ipx::get_bus_interfaces s00_aclk -of_objects [ipx::current_core]] set_property enablement_dependency {$AXI_NUM>0} [ipx::get_bus_interfaces s00_arstn -of_objects [ipx::current_core]] ... set_property enablement_dependency {$AXI_NUM>15} [ipx::get_bus_interfaces s15 -of_objects [ipx::current_core]] set_property enablement_dependency {$AXI_NUM>15} [ipx::get_bus_interfaces s15_aclk -of_objects [ipx::current_core]] set_property enablement_dependency {$AXI_NUM>15} [ipx::get_bus_interfaces s15_arstn -of_objects [ipx::current_core]] Удачи! Rob.
  6. Приветствую! Ничего не понятно - кто что генерирует? Я так понял что top_component это враппер вашего IP котрый для вас визард сгенерировал и вы его трогать боитесь? Не бойтесь, можете править как хотите или использовать как образец для создания своего враппера для компонента. В котором уже сами управляйте назначением/заглушкой портов в зависимости от параметра. Удачи! Rob.
  7. Приветствую Можно! Нужно только реализовать внутри FPGA контроллер IDE / SCSI / SATA / NVMe / ... / ... и подключить к нему диск с нужным файлом. Удачи! Rob.
  8. Приветствую! Можно ... НО с определенно, конечной точностью - а затем результат на идеальный интегратор .... медленнее, но на выходе все же получите туже пилу Удачи! Rob.
  9. Приветствую! DC offset? - никак. Я бы подумал над тем зачем вам в цепи обработки сигнала интегратор. Если, для того чтобы интегрировать ошибку в петле снаружи FPGA – то тогда эту петлю надо замыкать. Ну а если для фильтрации - то тогда использовать фильтр не содержащий идеального интегратора. Удачи! Rob.
  10. Приветствую! При одном условии - если на выходе ADC нет постоянного смещения (DC offset). А оно (смещение) обычно присутствует. Удачи! Rob.
  11. Приветствую! Нут так MB изначально идет замороженным полуфабрикатом. Который готовить надо самому, прожаривая опции и параметры до нужной консистенции и приправляя требуемой периферией. Что бы было идеально на ваш вкус. Ну или шеф-повара FPGAшника искать чтобы за вас блюдо системы готовил Удачи! Rob.
  12. Приветствую! Почему же нет - можете хоть десяток-другой Microblaze влепить в одной FPGA. Удачи! Rob.
  13. Приветствую! Мы можем! Если вы объявили массив с packed и unpacked диапазонами: reg [packed_dimension_A] array_name [unpacked_dimension_B]; То порядок следования индексов для доступа должен быть правильный array_name [unpacked_dimension_B_index][packed_dimension_A_index | packed_dimension_A_range] = ... Кроме того unpacked_dimension не допускается задания диапазона доступа - допустим только индекс элемента. Поэтому в вашем случае надо бы написать так bc_fifo [z] = 2'b00; Удачи! Rob.
  14. Приветствую! Ищите по словам twin-axial cable или Direct Attach Copper Cable Assemblies Например можно и 25G передавать 2+ метра . Удачи! Rob.
  15. Приветствую! Что вы имеете в виду "автоматически заменять" Для SV на этапе запуска сима (elaboration) можно заменить значения любого parameter в иерархии модулей проекта. Соответственно сим запустится в конфигурации с изменёнными параметрами. Но только на этапе запуска - в процессе работы тестбенча значения уже не изменить. Подстановку FIFO, RAM и других платформно-зависимых примитивов можно делать по разному - через кодогенерацию из скриптов, выбором через parameter из списка заранее сгенерированных IP корок. Но мне кажется что более правильный путь это вынос из основного кода этой функциональности в собственные модули которые могут конфигурироваться через набор parameter. С уходом по возможности от использования не конфигурируемых IP от вендоров. В таком случае миграция на другое семейство или вендора будет проще. Чем более универсальную генерилку вы сделаете тем более она будет похожа на qsys в Qu или ip-inegrator в Vivado . Но в этом случае вам придется больше на Tcl писать, а не на SV. Мне попадались такие "уникальные" генерилки в виде части BSP для разных FPGA-шных плат. В большинстве своем кошмар. Оно и понятно - сил на создание более или менее универсального решения требуется много. Поэтому сопровождать это очень тяжело. В результате для плат на последних семействах FPGA генерилки выдают код который со времен царя гороха не обновлялся. Удачи! Rob.