xxxmatrixxx 0 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Здравствуйте, уважаемые форумчане!!! возникла такая задача - необходимо размножить 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 27 25 сентября, 2018 Опубликовано 25 сентября, 2018 · Жалоба Приветствую! ... т.е. при выборе IP Core во время вставки ее в QSYS систему, если пользователь вводит в окошке количество интерфейсов цифру 3, то у меня должно появиться 3 Avalon-MM Master, если 1, то 1 Avalon-MM Master и т.д. в результате в зависимости от параметра появлялись, либо исчезали интерфейсы, относящиеся к Avalon шине, либо какие-либо внешние сигналы я так понял, что сам Quartus и Qsys не позволяют сгенерировать такой tcl код, практических примеров в интернете я тоже не нашел Ну простую заготовку tcl он вроде создать может так что не с нуля все писать. огромная просьба, поделиться примерами tcl кодов, которые реализовывают данные функции, если скините ссылки на документацию, где это описано,тоже буду очень благодаренДля начала ищем инете доку qsys_tcl.pdf с описанием команд (aka Quartus II Handbook Chapter 10. Component Interface Tcl Reference). Затем для примеров ищем в папке Quartus *_hw.tcl файлы от корок и смотрим как там все устроено. Можно найти файл от похожей по поведению корки в qsys и взять его за образец. Ну а дальше сплошное творчество на tcl. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба Спасибо большое за помощь!!! сделал свою кору по аналогии с демультиплексором на avalon-stream(*\altera\13.0sp1\ip\altera\merlin\altera_merlin_demultiplexer\) пришлось написать свой собственный TCL файл, а так же откорректировать файл top уровня моего проекта, чтобы скрипт корректировал данный файл под параметры, задаваемые пользователем в итоге, я так понял, что скрипт на TCL управляет отображением IP Core в QSYS, а так же генерирует сам файл top уровня, открывая его и подставляя параметры пользователя, генерируя требуемый код на verilog(vhdl и т.д.) еще раз спасибо!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 26 сентября, 2018 Опубликовано 26 сентября, 2018 · Жалоба Приветствую! ... в итоге, я так понял, что скрипт на TCL управляет отображением IP Core в QSYS, а так же генерирует сам файл top уровня, открывая его и подставляя параметры пользователя, генерируя требуемый код на verilog(vhdl и т.д.) Да так и есть - все это TCL. Можно из скрипта генерировать динамически целые qsys модули в зависимости от параметров. Удобно еще то что можно собрать в библиотеку блоки кода для работы с часто используемыми шинами, блоками, ... и реюзать потом без лишней copy-paste. 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться