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

Inanity

Свой
  • Постов

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

  • Посещение

Весь контент Inanity


  1. Конкретно Arria (да и большинство современных ПЛИС) не имеет никакой defalut - прошивки. Это SRAM-based ПЛИС. Конфигурация хранится в специальной внутренней SRAM памяти. Пока память конфигурации не будет заполнена чем-то осмысленным, ПЛИС не запустится. Максимум, что вы увидите, она будет бесконечно (если нужный флаг выставлен) пытаться считать из внешней ПЗУ свою конфигурацию, но CRC будет не верным, т.к. флешка не зашита или конфигурация битая.
  2. Подождите, что значит не было? Что это за плата? Отладочная или ваша самодельная? Если грубо, то так оно и есть. После включения ПЛИС в зависимости от выбранного режима загрузки пробует загрузиться из внешней ПЗУ. Если всё хорошо, то она переходит в user-mode и загруженная конфигурация стартует.
  3. После обычной загрузки потребление выше, т.к. битстрим реально загружен в ПЛИС. 1. Done на ПЛИСине в каком состоянии после попытки загрузки из EPCQ? 2. Как подключена EPCQ к ПЛИС? x1/x4? Если в битстриме прописано x4, а в железе x1, то ничего не взлетит. 3. Правильно ли на ПЛИС выставлен способ загрузки? Селекторы MSEL.
  4. Именно. Просто немного не так выразился. Чтобы latch-а не было требуется доопределить все состояния регистра в случае использования case или if. Вот народ и начинает писать reg <= reg. Во-первых, это не имеет вообще никакого смысла для синхронных блоков, а для комбинационных генерирует всё тот же latch. Что так: module top ( input wire ena, input wire din, output wire dout, input wire clk ); reg data; assign dout = data; always @* begin if (ena) begin data <= din; end end endmodule Что этак: module top ( input wire ena, input wire din, output wire dout, input wire clk ); reg data; assign dout = data; always @* begin if (ena) begin data <= din; end else begin data <= data; end end endmodule В обоих случаях будет latch, т.к. в первом варианте регистр сохраняет значение неявно, во втором явно. Чтобы latch-a не было, можно сделать хотя бы так: module top ( input wire ena, input wire din, output wire dout, input wire clk ); reg data; assign dout = data; always @* begin if (ena) begin data <= din; end else begin data <= 1'b1; // 1'b0 end end endmodule
  5. Такой код может встретиться у людей, которые таким образом пытаются бороться с latch-ами, не понимая причину их образования. Корректно описанная схема не требует такой избыточности и latch-ей в ней не будет.
  6. А может среда тупо не видит файл инициализации при синтезе? Может он как-то куда-то не подключен? К сожалению/счастью не так много работаю с quartus-ом. Может среда кидает warning, что файл не видит и всё нулями забивает.
  7. Мне кажется это не решение проблемы. Да, память, математику таким образом ещё можно описывать, а иногда даже нужно, для большей переносимости кода, но не все примитивы можно так описать. Тут явно виноват квартус или генератор ядра. Есть ещё вариант вручную вместо генератора ядра описывать параметры конкретного примитива, но это тоже геморрой.
  8. Понимаю, что маловероятно, но может enable памяти не активирован случайно? В RTL всё верное синтезировалось при подключении к памяти?
  9. Как верно приметили выше, причин почему может не работать слишком много. Делайте всё последовательно. Сначала просто подключите DDR к процу и сделайте memtest памяти DDR. Код при этом должен выполняться из BRAM. Потом можно все вектора и код поместить в DDR. P.S. для начала, почему у вас instruction_master проца не подключен к DDR?
  10. Ещё можно удалить папки синтеза и имплементации, которые лежат в папке название_проекта.runs, перезапустись PA и вперёд.
  11. Тут как раз всё ок. В VHDL была такая классная штука как others => '1' или '0'. Вне зависимости от размера регистра данное присвоение все биты взводило либо в 1, либо в 0. В veriloge такой удобной фичи нет, а вот в System Verilog есть. Присвоение reg <= '0 все биты обнуляет.
  12. Что там с warning-ами? За логи warning-ов не расстреливают)
  13. Если у вас выкидывается часть шины, то скорее всего она реально нигде не использована, иначе быть не может. Может этот кусок шины как-то дико в другом месте не очевидным для вас способом мульплексируется. Я, правда, не знаю System Verilog, но не может Vivado генерировать неработающую схему, иначе с ней не реально было бы работать вообще. И никакие настройки синтезатора не должны ломать логику работы схемы (эти настройки влияют только на ресурсы и времянку). Что-то я не понимаю, так должно быть включено. Чтобы синтезатор иерархию не ломал включайте keep_hierarchy. Включенный shreg_extract использует FF для регистров (бывает важно для синхронизаторов). Keep_equivalent_registers думаю и так понятно. Resource_sharing оставьте auto (вообще как-то не приходилось менять).
  14. Здравствуйте. Компилируете дизайн, потом Project Manager -> Implementation -> Open implemented design. Когда дизайн загрузится внизу ищите вкладку Timing. Если её нет, то Project Manager -> Implementation -> Implemented design -> Report Timing Summary
  15. В общем, HSWAPEN подключен к единице (2.5в, т.е. напряжение банка) через 0-омную перемычку, стало быть неиспользованные пины должны быть float. А они таковыми и являются, пока конфигурация не подгружена. Дело не в этом, видимо impact-овский загрузочный битстрим такой... Так все затворы у меня как надо подтянуты, но видимо подтяжка слабая и ПЛИС перебивает её. Но всё равно как-то странно, печально видимо надо будет самому грузить.
  16. Для моего битстрима эти пины использованы, но для загрузочного битстрима Impacta - они не использованы. Прочитайте первый пост ещё раз. Когда через impact программируется флешка, то по факту в ПЛИС загружается специальный битстрим (не мой), этот битстрим пробрасывает флешку на jtag и Impact уже мой битстрим заливает во флешку. Проблема как раз в зашитом в Impact битстриме. Тот, кто разрабатывал Impact и битстрим для программирования флешек, как мне кажется, выставил в настройках проекта галку Unused IOB Pins - pull-up. Таким образом у меня включаются все плечи на мосте и получается КЗ. Timmy, я еще раз проверю HSWAPEN, но по памяти уверен, что он подтянут...
  17. Уже подтянут. Тем более HSWAPEN только в процессе конфигурации определяет состояние пинов. А у них, судя по всему в самом битстриме все неиспользованные пины в единице.
  18. Здравствуйте. Столкнулся с забавной проблемой. Есть самодельная плата с Spartan-6 LX25. По мимо прочего ПЛИС управляет коллекторным двигателем с помощью Н-моста на полевиках. Затворы всех транзисторов подтянуты в неактивное состояние. Когда заливаю свою прошивку по JTAG естественно никаких проблем нет, всё работает. Но если через Impact пытаться зашить флешку (N25Q64), то я так понимаю Impact загружает свой битстрим, в котором флешка как-то прокидывается на JTAG и таким образом прошивается. Так вот оказалось, что по умолчанию в этом программирующем битстриме неиспользованные пины ПЛИС подтянуты в 1! И таким образом у меня на Н-мосте получает КЗ, т.к. все плечи открыты и питание вырубается... Собственно, что делать? Я так и не нашёл настройки, чтобы неиспользованные пины были в Z-состоянии. P.S. Есть, конечно, вариант написать свой golden-загрузочный битстрим и таким образом самому шить флешку, но хотелось бы обойтись без этого.
  19. Двухпортовая память решает проблему одновременного чтения с двух портов, тут как раз всё ок. А вообще по идее instruction master проца не должен писать в эту память, он только читает её. Писать туда может и будет только debug модуль и пользователь через data-порт, если захочет. И поэтому если пользователь через data-порт не начнёт портить свою же память программ, то проблем быть не должно. С точки зрения подключения теоретически здесь вроде как даже получается экономия ресурсов, т.к. не нужно дополнительной логики, чтобы двух мастеров на один ведомый порт подключать.
  20. В debug configuration -> Target connection проверьте system ID и system timestamp.
  21. Это, наверное, какой-нибудь 40G/100G Ethernet. Да, видимо FIFO для такой решения такой задачи слишком затратно. Вот документ с полным описание, даже пример есть в архивчике, глава Gearbox (стр 11-5): https://www.altera.com/content/dam/altera-w...tx_cookbook.pdf Очень похоже на то, что des00 описал. P.S. архив cookbook.zip довольно интересный, не знал, что у альтеры такое есть)
  22. ztaranv, боюсь, что вы неправильно представляете себе идеологию работы на ПЛИС. ПЛИС это не процессор. Это не последовательно исполняющаяся программа, это вообще даже не программа. На VHDL/Verilog словесно описывается электрическая схема соединения логических функций и триггеров.
  23. Здравствуйте. По-моему даже AXI DMA слишком жирно. Используйте Datamover. Одной стороной к DDR3 (S2MM), другой Stream (MM2S), + несложный конечный автомат чтобы писать и читать данные в том порядке, в котором нужно.
  24. Вроде маской закрыто всё, вряд ли. Водкой смойте, если имеется. Жидкостью для очистки мониторов в небольших количествах. Хуже не будет. Главное всё просушить.
×
×
  • Создать...