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

Конфигурация IP Core Altera для QSYS в зависимости от параметров

Здравствуйте, уважаемые форумчане!!!

 

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

 

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

 

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

 

огромная просьба, поделиться примерами tcl кодов, которые реализовывают данные функции, если скините ссылки на документацию, где это описано,тоже буду очень благодарен

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

...

т.е. при выборе 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.

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

еще раз спасибо!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

...

в итоге, я так понял, что скрипт на 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...