реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Quartus. Объединение проектов, Как в Quartus из нескольких проектов "слепить" один большой пр
Flip-fl0p
сообщение Feb 19 2018, 11:17
Сообщение #1


В поисках себя...
****

Группа: Свой
Сообщений: 722
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Господа, а как в Quartus из нескольких проектов "слепить" один большой проект ?
Столкнулся с ситуацией:
Есть проект "SDRAM_controller" - SDRAM контроллера. Он сосотоит из нескольких HDL описаний, в которые входят библиотечные элементы собственной разработки.
Есть проект "DVI_receiver" - приёмника DVI сигнала с выводом его на VGA. Он так-же состоит из нескольких HDL описаний, в которые входят библиотечные элементы собственной разработки.
А так-же есть проект "SCALER" - масштабатор видеопотока. И он тоже состоит из нескольких HDL описаний в который так-же входят библиотечные элементы.
И хочу я создать из этого добра новый большой проект.
Как мне правильно объединить все эти проекты, не добавляя каждый файл вручную по-отдельности.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Feb 19 2018, 11:29
Сообщение #2


Лентяй
******

Группа: Свой
Сообщений: 2 197
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Flip-fl0p @ Feb 19 2018, 14:17) *
Как мне правильно объединить все эти проекты, не добавляя каждый файл вручную по-отдельности.

http://quartushelp.altera.com/17.1/index.h...ary/def_qxp.htm


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 19 2018, 11:38
Сообщение #3


В поисках себя...
****

Группа: Свой
Сообщений: 722
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Stewart Little @ Feb 19 2018, 14:29) *

Так это надо покупать тогда Quartus. А хочется что-то похожее сделать в версии web edition rolleyes.gif
Вроде как можно попробовать создать свой QIP файл на TCL. Сижу разбираюсь с этим.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 22 2018, 06:10
Сообщение #4


В поисках себя...
****

Группа: Свой
Сообщений: 722
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Итак. Что-то похожее на то, что мне нужно я получил:
Можно создать файл с расширением .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 не работает...
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 22 2018, 09:35
Сообщение #5


В поисках себя...
****

Группа: Свой
Сообщений: 722
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Добавлю.
Если вы добавляете проект, в который входит ещё один проект, то надо поступить следующим образом:
В проект 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.gif

P.S. Очень странно что Quartus за поддержку многоуровневых проектов требует $$$.
Go to the top of the page
 
+Quote Post
doom13
сообщение Feb 22 2018, 10:35
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 402
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Хочу полюбопытствовать - где тут работа с проектами, объединение проектов? Тут описано, как своё IP-core, которое состоит из кучи файлов, правильно добавить к проекту.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 22 2018, 10:47
Сообщение #7


В поисках себя...
****

Группа: Свой
Сообщений: 722
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(doom13 @ Feb 22 2018, 13:35) *
Хочу полюбопытствовать - где тут работа с проектами, объединение проектов? Тут описано, как своё IP-core, которое состоит из кучи файлов, правильно добавить к проекту.

А что Вы подразумеваете под термином "Объединение проектов" ?
upd
Да и Quartus 13.1 WE не дает создать собственный IP... Просит $$$
Quartus 15 тоже...
Go to the top of the page
 
+Quote Post
EugeneS
сообщение Feb 22 2018, 12:53
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 28-08-04
Пользователь №: 557




В тему: что означает строка -library "TMDS_RECEIVER" ?
Варианты:
- создать локальную область переменных
- создать блок в иерархии проекта
- трюк для многократного применения повторяющихся библиотечных элементов
- ?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 22 2018, 14:51
Сообщение #9


В поисках себя...
****

Группа: Свой
Сообщений: 722
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(EugeneS @ Feb 22 2018, 15:53) *
В тему: что означает строка -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.gif

А то надоело: чтобы подключить к проекту самописный SDRAM контроллер, надо каждый файл этого несчастного контроллера добавить к текущему проекту. Потом оказывается, что если есть файлы с одинаковым названием Quartus начинает ругаться.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st September 2018 - 01:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.0107 секунд с 7
ELECTRONIX ©2004-2016