Flip-fl0p 4 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Господа, а как в Quartus из нескольких проектов "слепить" один большой проект ? Столкнулся с ситуацией: Есть проект "SDRAM_controller" - SDRAM контроллера. Он сосотоит из нескольких HDL описаний, в которые входят библиотечные элементы собственной разработки. Есть проект "DVI_receiver" - приёмника DVI сигнала с выводом его на VGA. Он так-же состоит из нескольких HDL описаний, в которые входят библиотечные элементы собственной разработки. А так-же есть проект "SCALER" - масштабатор видеопотока. И он тоже состоит из нескольких HDL описаний в который так-же входят библиотечные элементы. И хочу я создать из этого добра новый большой проект. Как мне правильно объединить все эти проекты, не добавляя каждый файл вручную по-отдельности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 42 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Как мне правильно объединить все эти проекты, не добавляя каждый файл вручную по-отдельности. http://quartushelp.altera.com/17.1/index.h...ary/def_qxp.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба http://quartushelp.altera.com/17.1/index.h...ary/def_qxp.htm Так это надо покупать тогда Quartus. А хочется что-то похожее сделать в версии web edition :rolleyes: Вроде как можно попробовать создать свой QIP файл на TCL. Сижу разбираюсь с этим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба Итак. Что-то похожее на то, что мне нужно я получил: Можно создать файл с расширением .qip и в нем описать все файлы проектов. Допустим у меня есть отдельный проект, который называется "TMDS_RECEIVER". В проект входят следующие файлы: "TMDS_RECEIVER.vhd" "TMDS_DECODER.vhd" "OUT_FIFO.vhd" "KAA_RESET_BRIDGE.vhd" "KAA_PULSE_GENERATOR.vhd" "DDR_REG.vhd" "LVDS_RX.vhd" Я хочу проект "TMDS_RECEIVER" применить в проекте более высокого уровня, например в проекте "DVI_RECEIVER". Для этого я в проекте "TMDS_RECEIVER" создал файл TMDS_RECEIVER.qip который содержит описание всех, входящих в него файлов: set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "TMDS_RECEIVER.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "TMDS_DECODER.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "OUT_FIFO.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "KAA_RESET_BRIDGE.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "KAA_PULSE_GENERATOR.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "DDR_REG.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "LVDS_RX.vhd" ] И в проект "DVI_RECEIVER" мне достаточно просто добавить файл TMDS_RECEIVER.qip. Список файлов, из которых состоит проект можно посмотреть в файле .rpt, который автоматически генерируется Quartus'ом. К примеру у меня найти его можно по пути ...\TMDS_RECEIVER\output_files\TMDS_RECEIVER.map.rpt Из явных преимуществ - это то, что qip файл пишется очень быстро и просто. И если, например у меня подключается несколько проектов, которые содержат файлы с одинаковыми именами, то никаких конфликтов не происходит( это основная проблема была, т.к проекты содержат большое количество повторяющихся библиотечных элементов собственной разработки). Из недостатков - требуется на VHDL в явном виде описать,подключаемый компонент в области декларации архитектуры, поскольку direct instantiation не работает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба Добавлю. Если вы добавляете проект, в который входит ещё один проект, то надо поступить следующим образом: В проект TMDS_RECEIVER, который входит в проект DVI_RECEIVER, входит проект LVDS_RX. Так вот, чтобы DVI_RECEIVER не ругался на отсутствие LVDS_RX файл TMDS_RECEIVER.qip должен содержать строчку set_global_assignment -library "TMDS_RECEIVER" -name QIP_FILE [file join $::quartus(qip_path) "LVDS_RX/LVDS_RX.qip" ] Т.е весь TMDS_RECEIVER.qip файл выглядит так: set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "TMDS_RECEIVER.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "TMDS_DECODER.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "OUT_FIFO.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "KAA_RESET_BRIDGE.vhd" ] set_global_assignment -library "TMDS_RECEIVER" -name QIP_FILE [file join $::quartus(qip_path) "LVDS_RX/LVDS_RX.qip" ] Вот теперь работать с проектами стало гораздо легче. :1111493779: P.S. Очень странно что Quartus за поддержку многоуровневых проектов требует $$$. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
doom13 0 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба Хочу полюбопытствовать - где тут работа с проектами, объединение проектов? Тут описано, как своё IP-core, которое состоит из кучи файлов, правильно добавить к проекту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба Хочу полюбопытствовать - где тут работа с проектами, объединение проектов? Тут описано, как своё IP-core, которое состоит из кучи файлов, правильно добавить к проекту. А что Вы подразумеваете под термином "Объединение проектов" ? upd Да и Quartus 13.1 WE не дает создать собственный IP... Просит $$$ Quartus 15 тоже... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EugeneS 0 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба В тему: что означает строка -library "TMDS_RECEIVER" ? Варианты: - создать локальную область переменных - создать блок в иерархии проекта - трюк для многократного применения повторяющихся библиотечных элементов - ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 22 февраля, 2018 Опубликовано 22 февраля, 2018 · Жалоба В тему: что означает строка -library "TMDS_RECEIVER" ? Варианты: - создать локальную область переменных - создать блок в иерархии проекта - трюк для многократного применения повторяющихся библиотечных элементов - ? Если честно, я не могу этого сказать. Я когда смотрел описание команды set_global_assignment Не нашел внятного описания ключа -library В документе https://www.altera.com/en_US/pdfs/literatur...ts_qii51008.pdf также нет внятного описания. По большей части я взял qip файл, который Quartus создает при генерации PLL для семейства Cyclone V, и сделал по образу и подобию. Главное что работает как надо. И ещё можно добавить: Если в начале VHDL файла написать Library TMDS_RECEIVER; то можно делать direct instantiation TMDS_RECEIVER_comp : entity TMDS_RECEIVER.TMDS_RECEIVER port map ( ... ... ... ); И самое приятное, что если запускать Moldelsim из под Quartus - он всё прекрасно понимает :laughing: А то надоело: чтобы подключить к проекту самописный SDRAM контроллер, надо каждый файл этого несчастного контроллера добавить к текущему проекту. Потом оказывается, что если есть файлы с одинаковым названием Quartus начинает ругаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться