Когда вы создаете свой пользовательский исходный проект, вы можете потребовать пользовательских модулей IP, которые не идут с Altera® Qsys или Xilinx® Vivado®. Чтобы использовать пользовательские модули IP, создайте свою собственную папку репозитория IP, которая содержит подпапки модуля IP. IP Core Generation
рабочий процесс затем использует эти пользовательские модули IP при создании проекта исходного проекта. Можно создать несколько репозиториев IP и добавить все или некоторые модули IP в каждом репозитории к пользовательскому проекту исходного проекта. Можно также снова использовать и совместно использовать репозитории IP через несколько исходных проектов.
Создайте папку репозитория IP где угодно на MATLAB® path. Этот рисунок показывает типичную структуру папки репозитория IP.
Когда вы создадите структуру папок, используйте соглашение о присвоении имен +(company)/+(product)/+(tool)
. В этом примере структурой папок является +(mathworks)/+(hdlcoder)/+(vivado)
. Папка +vivado
действия как репозиторий IP. Эта папка содержит подпапки, соответствующие модулям IP, таким как AXI4StoHDMI
и HDMItoAXIS
. Папка также содержит hdlcoder_video_iplist
Функция MATLAB. Используя эту функцию, задайте модули IP, чтобы добавить к исходному проекту.
Та же папка репозитория может иметь несколько функций MATLAB. Этот рисунок показывает две функции MATLAB, hdlcoder_video1_iplist
и hdlcoder_video2_list
, в +vivado
папка. Функции могут совместно использовать те же модули IP или указать на различные модули IP в репозитории.
Примечание
Если вашим инструментом синтеза является Xilinx Vivado, модули IP в папке репозитория могут быть в формате zip-файла.
Создайте функцию MATLAB, которая задает модули IP, чтобы добавить к исходному проекту. Сохраните эту функцию в папке репозитория IP. Для имени функции используйте соглашение о присвоении имен hdlcoder_<specific_use>_iplist
. Этот пример использует hdlcoder_video_iplist
как имя функции, потому что это предназначается для видео приложений. Используя эту функцию, задайте, хотите ли вы добавить все или некоторые модули IP в репозитории к проекту исходного проекта. Чтобы добавить все модули IP, используйте массив пустой ячейки для ipList
. Этот код MATLAB показывает, как добавить все модули IP в репозитории к исходному проекту.
function [ipList] = hdlcoder_video_iplist( ) % All IP modules in the repository folder. ipList = {};
Если вы не задаете корневой каталог, функция ищет модули IP относительно своего местоположения.
function [ipList, rootDir] = hdlcoder_video_iplist( ) % All IP modules with a root directory. ipList = {};
AXI4StoHDMI
IP и HDMItoAXIS
IP как модули IP, чтобы добавить к вашему пользовательскому исходному проекту.function [ipList] = hdlcoder_video_iplist( ) % AXI4StoHDMI and HDMItoAXIS IP in the repository folder. ipList = {'AXI4StoHDMI','HDMItoAXIS'};
Используя addIPRepository
метод hdlcoder.ReferenceDesign
класс, добавляет функция списка IP к вашему пользовательскому исходному проекту. Этот исходный проект в качестве примера добавляет hdlcoder_video_iplist
к пользовательскому исходному проекту My Reference Design
.
function hRD = plugin_rd() % Reference design definition % Construct reference design object hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado'); hRD.ReferenceDesignName = 'My Reference Design'; hRD.BoardName = 'ZedBoard' % Tool information hRD.SupportedToolVersion = {'2016.2'}; %% Add custom design files hRD.addCustomVivadoDesign( ... 'CustomBlockDesignTcl', 'system_top.tcl', ... 'VivadoBoardPart', 'em.avnet.com:zed:part0:1.0'); % Add IP Repository hRD.addIPRepository(... 'IPListFunction', 'mathworks.hdlcoder.vivado.hdlcoder_video_iplist', 'NotExistMessage', 'IP repository not found'); % ... % ...
Чтобы использовать модули IP, когда генератор кода создаст проект, откройте HDL Workflow Advisor и запустите IP Core Generation
рабочий процесс к задаче Create Project. После выполнения этой задачи вы видите подпапки модуля IP в репозитории, скопированном в ipcore
папка проекта. CustomBlockDesignTcl
может затем использовать эти модули IP.
hdlcoder.Board
| hdlcoder.ReferenceDesign