Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конфигурация IP Core Altera для QSYS в зависимости от параметров
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Среды разработки - обсуждаем САПРы
xxxmatrixxx
Здравствуйте, уважаемые форумчане!!!

возникла такая задача - необходимо размножить IP Core интерфейса, написанного мною на verilog, в зависимости от параметров, задаваемых пользователем при выборе IP Core в QSYS

т.е. при выборе IP Core во время вставки ее в QSYS систему, если пользователь вводит в окошке количество интерфейсов цифру 3, то у меня должно появиться 3 Avalon-MM Master, если 1, то 1 Avalon-MM Master и т.д. в результате в зависимости от параметра появлялись, либо исчезали интерфейсы, относящиеся к Avalon шине, либо какие-либо внешние сигналы

я так понял, что сам Quartus и Qsys не позволяют сгенерировать такой tcl код, практических примеров в интернете я тоже не нашел

огромная просьба, поделиться примерами tcl кодов, которые реализовывают данные функции, если скините ссылки на документацию, где это описано,тоже буду очень благодарен
RobFPGA
Приветствую!
Цитата(xxxmatrixxx @ Sep 25 2018, 20:39) *
...
т.е. при выборе IP Core во время вставки ее в QSYS систему, если пользователь вводит в окошке количество интерфейсов цифру 3, то у меня должно появиться 3 Avalon-MM Master, если 1, то 1 Avalon-MM Master и т.д. в результате в зависимости от параметра появлялись, либо исчезали интерфейсы, относящиеся к Avalon шине, либо какие-либо внешние сигналы

я так понял, что сам Quartus и Qsys не позволяют сгенерировать такой tcl код, практических примеров в интернете я тоже не нашел
Ну простую заготовку tcl он вроде создать может так что не с нуля все писать.

Цитата(xxxmatrixxx @ Sep 25 2018, 20:39) *
огромная просьба, поделиться примерами tcl кодов, которые реализовывают данные функции, если скините ссылки на документацию, где это описано,тоже буду очень благодарен
Для начала ищем инете доку qsys_tcl.pdf с описанием команд (aka Quartus II Handbook Chapter 10. Component Interface Tcl Reference). Затем для примеров ищем в папке Quartus *_hw.tcl файлы от корок и смотрим как там все устроено. Можно найти файл от похожей по поведению корки в qsys и взять его за образец. Ну а дальше сплошное творчество на tcl.

Удачи! Rob.



xxxmatrixxx
Спасибо большое за помощь!!!

сделал свою кору по аналогии с демультиплексором на avalon-stream(*\altera\13.0sp1\ip\altera\merlin\altera_merlin_demultiplexer\)

пришлось написать свой собственный TCL файл, а так же откорректировать файл top уровня моего проекта, чтобы скрипт корректировал данный файл под параметры, задаваемые пользователем

в итоге, я так понял, что скрипт на TCL управляет отображением IP Core в QSYS, а так же генерирует сам файл top уровня, открывая его и подставляя параметры пользователя, генерируя требуемый код на verilog(vhdl и т.д.)

еще раз спасибо!!!
RobFPGA
Приветствую!
Цитата(xxxmatrixxx @ Sep 26 2018, 14:38) *
...
в итоге, я так понял, что скрипт на TCL управляет отображением IP Core в QSYS, а так же генерирует сам файл top уровня, открывая его и подставляя параметры пользователя, генерируя требуемый код на verilog(vhdl и т.д.)
Да так и есть - все это TCL. Можно из скрипта генерировать динамически целые qsys модули в зависимости от параметров. Удобно еще то что можно собрать в библиотеку блоки кода для работы с часто используемыми шинами, блоками, ... и реюзать потом без лишней copy-paste.

CODE
proc add_mm_ctrl_port {{name_bus "avmm_ctrl"} {name_port "avmm_ctrl"} {addr_wh 14} {name_clk ""} {name_rst ""}} {

if {$name_clk==""} {
set name_clk ${name_bus}_clk
}

if {$name_rst==""} {
set name_rst ${name_bus}_rst
}

add_interface ${name_bus} avalon end
set_interface_property ${name_bus} associatedClock ${name_clk}
set_interface_property ${name_bus} associatedReset ${name_rst}
...
add_interface_port ${name_bus} ${name_port}_waitrequest waitrequest Output 1
add_interface_port ${name_bus} ${name_port}_address address Input ${addr_wh}
add_interface_port ${name_bus} ${name_port}_write write Input 1
add_interface_port ${name_bus} ${name_port}_writedata writedata Input 32
add_interface_port ${name_bus} ${name_port}_byteenable byteenable Input 4
add_interface_port ${name_bus} ${name_port}_read read Input 1
add_interface_port ${name_bus} ${name_port}_readdata readdata Output 32
add_interface_port ${name_bus} ${name_port}_readdatavalid readdatavalid Output 1
}

...
add_mm_ctrl_port "dma_ctrl" "dma_ctrl" 14 "ctrl_clk" "ctrl_rst"
...


Удачи! Rob.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.