importhdl

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

Описание

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

пример

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 для всего .v файлы. Если importhdl не может найти подпапку, которая имеет имя example, это ищет путь MATLAB® файлы HDL, которые имеют имя example.

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

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

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

Пример: importhdl('subfolder') импорт все файлы Verilog под заданной подпапкой и генерирует соответствующую модель Simulink. По умолчанию, importhdl подпапки синтаксических анализов, которые содержат рекурсивные папки.

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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-коде в виде вектора символов. Это имя становится именем Subsystem верхнего уровня, из которого импорт 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часы

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

  • Часы Включают сигнал - 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, использует порты ввода и вывода, которые вы предоставляете определению модуля. В Подсистеме входные порты соединяются с блоками Terminator, блоками Constant со значением zero соединяются с выходными портами. Используйте эту возможность импортировать специфичного для поставщика дюйм/с как подсистемы BlackBox в вашей модели.

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

Автоматически расположите блоки в модели Simulink, сгенерированной путем выполнения importhdl. По умолчанию, autoPlace on. importhdl затем использование Simulink.BlockDiagram.arrangeSystem улучшить макет модели путем перестройки, изменяя размер, и перемещая блоки и выправляя сигнальные линии.

Пример: importhdl('example.v','autoPlace','on') импортирует файл Verilog example.v и генерирует модель Simulink с расширенным макетом модели.

Введенный в R2018b