importhdl

Импортируйте код Verilog и сгенерируйте модель Simulink

importhdl импортирует и анализирует заданные файлы Verilog®, чтобы сгенерировать соответствующую модель Simulink®.

Синтаксис

importhdl(FileNames)
importhdl(FileNames,Name,Value)

Описание

пример

importhdl(FileNames) импортирует заданные файлы Verilog и генерирует соответствующую модель Simulink.

пример

importhdl(FileNames,Name,Value) импортирует заданные файлы Verilog и генерирует соответствующую модель Simulink с опциями, заданными одним или несколькими аргументами пары "имя-значение".

Примеры

свернуть все

Этот пример показывает, как можно импортировать файл, содержащий код Verilog, и сгенерировать соответствующую модель Simulink™.

Задайте вход файл Verilog

Убедитесь, что файл входа HDL не содержит синтаксических ошибок, является синтезируемым, и использует построения, которые поддерживаются импортом HDL. Этот пример показывает код Verilog компаратора.

edit('comparator.v')

Импортируйте файл Verilog

Чтобы импортировать файл HDL и сгенерировать модель Simulink™, передайте имя файла как вектор символов к функции importhdl.

importhdl('comparator.v')
### Parsing <a href="matlab:edit('comparator.v')">comparator.v</a>. 
### Top Module of the source: 'comparator'. 
### Identified ClkName::clk. 
### Identified RstName::rst. 
### Hdl Import parsing done. 
### Creating Target model comparator
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'comparator'.
### Laying out components.
### Working on hierarchy at ---> 'comparator/comparator'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Setting the model parameters.
### Generated model as C:\Temp\examples\examples\hdlcoder-ex77699673\hdlimport\comparator\comparator.slx.
### HDL Import completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в Командном окне MATLAB™. Импорт обеспечивает ссылку на сгенерированную модель Simulink™ comparator.slx. Сгенерированная модель использует то же имя в качестве главного модуля в файле входа Verilog.

Исследуйте сгенерированную модель Simulink™

Чтобы открыть сгенерированную модель Simulink™, выберите ссылку. Модель сохранена в пути hdlimport/comparator относительно текущей папки. Можно моделировать модель и наблюдать результаты симуляции.

addpath('hdlimport/comparator')
open_system('comparator.slx')
sim('comparator.slx')

Этот пример показывает, как можно импортировать несколько файлов, содержащих код Verilog, и сгенерировать соответствующую модель Simulink™.

Задайте вход Verilog File

Убедитесь, что файлы входа HDL не содержат синтаксических ошибок, являются синтезируемыми, и используют построения, которые поддерживаются импортом HDL. Например, этот код показывает три файла Verilog что инстанцирование модуля использования, чтобы сформировать иерархический проект. Один модуль example1.v реализует простую последовательную схему на основе если еще условие. Другой модуль example2.v реализует простое комбинационное арифметическое выражение.

edit('example1.v')
edit('example2.v')

Главный модуль, содержавшийся в файле example.v, инстанцирует этих двух модулей в example1.v и example2.v

edit('example.v')

Импортируйте файлы Verilog

Чтобы импортировать файл HDL и сгенерировать модель Simulink™, передайте имена файлов как массив ячеек из символьных векторов к функции importhdl. По умолчанию импорт HDL идентифицирует главный модуль и пакет часов при парсинге входного файла.

importhdl({'example.v','example1.v','example2.v'})
### Parsing <a href="matlab:edit('example.v')">example.v</a>. 
### Parsing <a href="matlab:edit('example1.v')">example1.v</a>. 
### Parsing <a href="matlab:edit('example2.v')">example2.v</a>. 
### Top Module of the source: 'example'. 
### Identified ClkName::clk. 
### Hdl Import parsing done. 
### Creating Target model example
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'example'.
### Laying out components.
### Working on hierarchy at ---> 'example/example'.
### Laying out components.
### Working on hierarchy at ---> 'example/example/example1'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Working on hierarchy at ---> 'example/example/example2'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Setting the model parameters.
### Generated model as C:\Temp\examples\examples\hdlcoder-ex56732899\hdlimport\example\example.slx.
### HDL Import completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в Командном окне MATLAB™. Импорт обеспечивает ссылку на сгенерированную модель Simulink™ example.slx. Сгенерированная модель использует то же имя в качестве главного модуля, который содержится в файле входа Verilog example1.v.

Исследуйте сгенерированную модель Simulink™

Чтобы открыть сгенерированную модель Simulink™, выберите ссылку. Модель сохранена в пути hdlimport/example относительно текущей папки. Можно моделировать модель и наблюдать результаты симуляции.

addpath('hdlimport/example')
open_system('example.slx')

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

Simulink.suppressDiagnostic({'example/example/example2/Div'}, ...
                                'SimulinkFixedPoint:util:fxpDivisionByZero')
sim('example')

Вы видите иерархию Подсистем, которые реализуют код Verilog, который использует инстанцирование модуля.

open_system('example/example/example1')

open_system('example/example/example2')

Этот пример показывает, как можно импортировать несколько файлов, содержащих код Verilog, и сгенерировать соответствующую модель Simulink™. Когда вы импортируете несколько файлов, если вы хотите запутать HDL-код или если ваши файлы содержат HDL-код для специфичного для поставщика дюйм/с, можно импортировать HDL-код как модуль BlackBox с помощью функции importhdl.

Задайте вход Verilog Files

Убедитесь, что файлы входа HDL не содержат синтаксических ошибок, являются синтезируемыми, и используют построения, которые поддерживаются импортом HDL. Например, этот код показывает три файла Verilog что инстанцирование модуля использования, чтобы сформировать иерархический проект. Один модуль sequentialexp.v реализует простую последовательную схему на основе если еще условие. Другой модуль comditionalcomb.v реализует простое комбинационное арифметическое выражение.

edit('conditionalcomb.v')
edit('sequentialexp.v')
edit('intelip.v')

Смотрите, что модуль sequentialexp.v инстанцирует Intel® IP, который реализует сумматор с плавающей точкой с одинарной точностью.

Главный модуль top, содержавшийся в файле blackboxtop.v, инстанцирует этих двух модулей в conditionalcomb.v и sequentialexp.v

edit('blackboxtop.v')

Импортируйте файлы Verilog

Чтобы импортировать файл HDL и сгенерировать модель Simulink™, передайте имена файлов как массив ячеек из символьных векторов к функции importhdl. По умолчанию импорт HDL идентифицирует главный модуль и пакет часов при парсинге входного файла.

importhdl({'blackboxtop.v','conditionalcomb.v','sequentialexp.v','intelip.v'}, ...
                            'topModule','top','blackBoxModule','intelip')
### Parsing <a href="matlab:edit('blackboxtop.v')">blackboxtop.v</a>. 
### Parsing <a href="matlab:edit('conditionalcomb.v')">conditionalcomb.v</a>. 
### Parsing <a href="matlab:edit('sequentialexp.v')">sequentialexp.v</a>. 
### Parsing <a href="matlab:edit('intelip.v')">intelip.v</a>. 
### Top Module of the source: 'top'. 
### Identified ClkName::clk. 
### Hdl Import parsing done. 
### Creating Target model top
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'top'.
### Laying out components.
### Working on hierarchy at ---> 'top/top'.
### Laying out components.
### Working on hierarchy at ---> 'top/top/u_comb'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Working on hierarchy at ---> 'top/top/u_seq'.
### Laying out components.
### Working on hierarchy at ---> 'top/top/u_seq/u_intelip'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Setting the model parameters.
### Generated model as C:\Temp\examples\examples\hdlcoder-ex63017378\hdlimport\top\top.slx.
### HDL Import completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в Командном окне MATLAB™. Импорт обеспечивает ссылку на сгенерированную модель Simulink™ top.slx. Сгенерированная модель использует то же имя в качестве главного модуля, который содержится в файле входа Verilog conditionalcomb.v.

Исследуйте сгенерированную модель Simulink™

Чтобы открыть сгенерированную модель Simulink™, выберите ссылку. Модель сохранена в пути hdlimport/top относительно текущей папки. Можно моделировать модель и наблюдать результаты симуляции.

addpath('hdlimport/top')
open_system('top.slx')
set_param('top','SimulationCommand','update')

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

Simulink.suppressDiagnostic({'top/top/u_seq/Div'}, ...
                                'SimulinkFixedPoint:util:fxpDivisionByZero')
sim('top')

Вы видите иерархию Подсистем, которые реализуют код Verilog, который использует инстанцирование модуля.

open_system('top/top/u_comb')

Если вы открываете Подсистему, которая реализует последовательную схему, можно открыть Подсистему u_intelip, чтобы видеть реализацию черного ящика.

open_system('top/top/u_seq')

open_system('top/top/u_seq/u_intelip')

Этот пример показывает, как можно импортировать код Verilog, который содержит эти операторы, и сгенерируйте соответствующую модель Simulink™:

  • Арифметика

  • Логический

  • Xor

  • Поразрядно

  • Условное выражение

  • Реляционный

  • Конкатенация

Задайте вход файл Verilog

Убедитесь, что файл входа HDL не содержит синтаксических ошибок, является синтезируемым, и использует построения для различных операторов. Например, этот код Verilog показывает различные операторы.

edit('VerilogOperators.v')

Импортируйте файл Verilog

Чтобы импортировать файл HDL и сгенерировать модель Simulink™, передайте имя файла как вектор символов к функции importhdl.

importhdl('VerilogOperators.v')
### Parsing <a href="matlab:edit('VerilogOperators.v')">VerilogOperators.v</a>. 
### Top Module of the source: 'VerilogOperators'. 
### Hdl Import parsing done. 
### Creating Target model VerilogOperators
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'VerilogOperators'.
### Laying out components.
### Working on hierarchy at ---> 'VerilogOperators/VerilogOperators'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Generated model as C:\Temp\examples\examples\hdlcoder-ex29847655\hdlimport\VerilogOperators\VerilogOperators.slx.
### HDL Import completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в Командном окне MATLAB™. Импорт обеспечивает ссылку на сгенерированную модель Simulink™ VerilogOperators.slx. Сгенерированная модель использует то же имя в качестве главного модуля в файле входа Verilog.

Исследуйте сгенерированную модель Simulink™

Чтобы открыть сгенерированную модель Simulink™, выберите ссылку. Модель сохранена в пути hdlimport/VerilogOperators относительно текущей папки. Можно моделировать модель и наблюдать результаты симуляции.

addpath('hdlimport/VerilogOperators')
open_system('VerilogOperators.slx')
sim('VerilogOperators.slx')

Этот пример показывает, как можно импортировать несколько файлов, содержащих код Verilog, которые выполняют неявные преобразования типа данных и генерируют соответствующую модель Simulink™. Импорт HDL может выполнить неявное преобразование типа данных такой как в арифметических операциях, преобразовании типа данных, битном выборе и битной конкатенации.

Задайте вход Verilog File

Убедитесь, что файлы входа HDL не содержат синтаксических ошибок, являются синтезируемыми, и используют построения, которые поддерживаются импортом HDL. Например, этот код показывает три файла Verilog что инстанцирование модуля использования, чтобы сформировать иерархический проект. Модули NG1_implicit.v и round_const.v выполняют неявное преобразование типа данных.

edit('NG1_implicit.v')
edit('round_constant.v')

Главный модуль, содержавшийся в файле example.v, инстанцирует этих двух модулей в NG1_implicit.v и round_constant.v.

edit('implicit_top.v')

Импортируйте файлы Verilog

Чтобы импортировать файл HDL и сгенерировать модель Simulink™, передайте имена файлов как массив ячеек из символьных векторов к функции importhdl. По умолчанию импорт HDL идентифицирует главный модуль при парсинге входного файла.

importhdl({'implicit_top.v','NG1_implicit.v','round_constant.v'})
### Parsing <a href="matlab:edit('implicit_top.v')">implicit_top.v</a>. 
### Parsing <a href="matlab:edit('NG1_implicit.v')">NG1_implicit.v</a>. 
### Parsing <a href="matlab:edit('round_constant.v')">round_constant.v</a>. 
### Top Module name: 'top'. 
Warning: Unused input port 'i' in 'rconst' module. 
### Hdl Import parsing done. 
### Creating Target model top
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'top'.
### Laying out components.
### Working on hierarchy at ---> 'top/top'.
### Laying out components.
### Working on hierarchy at ---> 'top/top/NG1'.
### Laying out components.
Configurable Subsystem block 'simulink/Ports & Subsystems/Configurable Subsystem' must be converted to a Variant Subsystem block. Variant subsystems offers enhanced capabilities while maintaining equivalant functionality. Support of Configurable Subsystem will be removed in a future release.
 
### Applying Dot Layout...
### Drawing block edges...
### Working on hierarchy at ---> 'top/top/rconst'.
### Laying out components.
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Generated model file C:\TEMP\Examples\hdlcoder-ex12503110\hdlimport\top\top.slx.
### Importhdl completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в Командном окне MATLAB™. Импорт обеспечивает ссылку на сгенерированную модель Simulink™ implicit_top.slx. Сгенерированная модель использует то же имя в качестве главного модуля, который содержится в файле входа Verilog implicit_top.v.

Исследуйте сгенерированную модель Simulink™

Чтобы открыть сгенерированную модель Simulink™, выберите ссылку. Модель сохранена в пути hdlimport/example относительно текущей папки. Можно моделировать модель и наблюдать результаты симуляции.

addpath('hdlimport/top');
open_system('top.slx')

В Подсистеме rconst один из входных портов не связан. Это - хорошая практика, чтобы избежать неотключенных выходных параметров путем добавления блока Terminator.

addterms('top');
sim('top');

Вы видите иерархию Подсистем, которые реализуют код Verilog, который использует инстанцирование модуля.

open_system('top/top/NG1')

open_system('top/top/rconst')

Этот пример показывает, как можно импортировать файл, содержащий код Verilog, и вывести блоки RAM в модели Simulink™, которая сгенерирована. Можно импортировать код Verilog, который выводит любую из различных RAM в библиотеке HDL RAMs включая hdl. RAM основанные на системном объекте блоки и RAM Блока.

Задайте вход файл Verilog

Убедитесь, что файл входа HDL не содержит синтаксических ошибок, является синтезируемым, и использует построения, которые поддерживаются импортом HDL. Этот пример показывает код Verilog.

edit('simple_dual_port_ram.v')

Импортируйте файл Verilog

Чтобы импортировать файл HDL и сгенерировать модель Simulink™, передайте имя файла как вектор символов к функции importhdl.

importhdl('simple_dual_port_ram.v')
### Parsing <a href="matlab:edit('simple_dual_port_ram.v')">simple_dual_port_ram.v</a>. 
### Top Module name: 'SimpleDualPortRAM'. 
### Identified ClkName::clk. 
### Hdl Import parsing done. 
### Creating Target model SimpleDualPortRAM
### Generating Dot Layout...
### Start Layout...
### Working on hierarchy at ---> 'SimpleDualPortRAM'.
### Laying out components.
### Working on hierarchy at ---> 'SimpleDualPortRAM/SimpleDualPortRAM'.
### Laying out components.
Configurable Subsystem block 'simulink/Ports & Subsystems/Configurable Subsystem' must be converted to a Variant Subsystem block. Variant subsystems offers enhanced capabilities while maintaining equivalant functionality. Support of Configurable Subsystem will be removed in a future release.
 
### Applying Dot Layout...
### Drawing block edges...
### Applying Dot Layout...
### Drawing block edges...
### Setting model parameters.
### Generated model file C:\TEMP\Examples\hdlcoder-ex67646187\hdlimport\SimpleDualPortRAM\SimpleDualPortRAM.slx.
### Importhdl completed.

Импорт HDL анализирует входной файл и отображает сообщения процесса импорта в Командном окне MATLAB™. Импорт обеспечивает ссылку на сгенерированную модель Simulink™ SimpleDualPortRAM.slx. Сгенерированная модель использует то же имя в качестве главного модуля в файле входа Verilog.

Исследуйте сгенерированную модель Simulink™

Чтобы открыть сгенерированную модель Simulink™, выберите ссылку. Модель сохранена в пути hdlimport/SimpleDualPortRAM относительно текущей папки. Можно моделировать модель и наблюдать результаты симуляции.

addpath('hdlimport/SimpleDualPortRAM');
open_system('SimpleDualPortRAM.slx');
sim('SimpleDualPortRAM.slx');

Если вы перемещаетесь по модели, вы видите блок Simple Dual Port RAM.

open_system('SimpleDualPortRAM/SimpleDualPortRAM')

Входные параметры

свернуть все

Имена файлов HDL, чтобы импортировать для генерации модели Simulink. По умолчанию importhdl импортирует файлы Verilog. Импортировать:

  • Один файл HDL, задайте имя файла как вектор символов.

  • Несколько файлов HDL, задайте имена файлов как массив ячеек из символьных векторов.

  • Все файлы HDL в папке, задайте имя папки как вектор символов.

  • Несколько папок и комбинаций файлов и папок, заданных как массив ячеек из символьных векторов.

Пример: importhdl('example') импортирует заданный файл Verilog. Если example является подпапкой в текущей рабочей папке, импорт HDL генерирует модель Simulink для всех файлов .vhd в той папке.

Пример: importhdl({'top.v','subsystem1.v','subsystem2.v'}) импортирует заданные файлы Verilog и генерирует соответствующую модель Simulink.

Пример: importhdl(pwd) импортирует все файлы Verilog в текущей папке и генерирует соответствующую модель Simulink.

Пример: importhdl('root/example/hdlsrc') импортирует все файлы Verilog на заданном пути и генерирует соответствующую модель Simulink. Можно задать относительный или абсолютный путь.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: importhdl('root/example/hdlsrc') импортирует все файлы Verilog в заданном пути и генерирует соответствующую модель Simulink. Можно задать относительный или абсолютный путь.

Язык входного исходного файла, который содержит HDL-код, заданный как вектор символов. Если вы задали файл VHDL®, импорт HDL генерирует ошибку.

Пример: importhdl('fifo.v','Language','Verilog') импортирует файл Verilog fifo.v и генерирует соответствующую модель Simulink fifo.slx.

Имя модуля верхнего уровня в HDL-коде, заданном как вектор символов. Это имя становится именем Подсистемы верхнего уровня, из которой импорт HDL создает иерархию подсистем в сгенерированной модели Simulink. Если файлы входа HDL содержат больше чем один главный модуль, задают модуль верхнего уровня, чтобы использовать для генерации модели Simulink при помощи свойства TopModule.

Пример: importhdl('full_adder.v','TopModule','two_half_adders') импортирует файл Verilog full_adder.v и генерирует соответствующую модель Simulink full_adder.slx с two_half_adders как Подсистема верхнего уровня.

Имена часов, сброса и часов включают сигналы для последовательных схем, заданных как массив ячеек вектора символов. Имена по умолчанию для сигналов пакета часов:

  • Сигнал часов - clk, clock

  • Сбросьте сигнал - rst, reset

  • Часы Включают сигнал - clk_enb, clk_en, clk_enable, enb, enable

Если вы не указываете информацию пакета часов, импорт HDL использует значения по умолчанию. При парсинге входного файла, если импорт HDL идентифицирует имя часов, которое отличается от имени часов, заданного ClockBundle, импорт генерирует ошибку.

Пример: importhdl('example.v','clockBundle',{'clk','rst','clk_enb'}) импортирует файл Verilog example.v с указанной информацией пакета часов.

Имя или имена модулей в файлах входа Verilog, которые будут импортированы как подсистемы BlackBox в сгенерированной модели Simulink. Блок Subsystem, который импортируется как BlackBox, использует порты ввода и вывода, которые вы предоставляете определению модуля. В Подсистеме входные порты соединяются с блоками Терминатора, блоки Константа со значением zero соединяются с выходными портами. Используйте эту возможность импортировать специфичного для поставщика дюйм/с как подсистемы BlackBox в вашей модели.

Пример: importhdl({'example.v,'example1.v','example2.v','xilinxIP.v},'topModule','top','blackBoxModule','xilinxIP') импортирует заданные файлы Verilog witjh xilinxIP как модуль BlackBox. Соответствующей Подсистеме в модели Simulink соединили входные порты с блоками Терминатора и блоками Константа с постоянным значением нуля, соединенного с выходными портами.

Введенный в R2018b