Настройка портов, идентификаторов и комментариев
С помощью HDL-порта и свойств идентификатора можно настроить порты, идентификаторы и комментарии в сгенерированном коде.
Задайте эти свойства как аргументы имя-значение для generatehdl
функция. Name
- имя свойства и Value
- соответствующее значение. Можно задать несколько аргументов имя-значение в любом порядке как 'Name1',Value1,...,'NameN',ValueN
.
Для примера:
fir = dsp.FIRFilter('Structure','Direct form antisymmetric'); generatehdl(fir,'InputDataType',numerictype(1,16,15),'ClockInputPort','clk_input');
ClockEnableInputPort
- Имя входного порта включения синхроимпульса'clk_enable'
(по умолчанию) | символьный вектор | строковый скалярИмя входного порта включения синхроимпульса, заданное как 'clk_enable'
, вектор символов или строковый скаляр.
Если вы задаете значение, которое является зарезервированным словом на целевом языке, кодер добавляет постфикс _rsvd
на это значение. Вы можете обновить значение постфикса при помощи ReservedWordPostfix
свойство. Для получения дополнительной информации смотрите Разрешение конфликтов зарезервированного HDL-текста.
ClockEnableOutputPort
- Имя выходного порта включения синхроимпульса'ce_out'
(по умолчанию) | символьный вектор | строковый скалярИмя выходного порта включения синхроимпульса, заданное как 'ce_out'
, вектор символов или строковый скаляр. Это свойство применяется только к Многоскоростные Фильтры, которые используют один входной синхроимпульс (поведение по умолчанию ClockInputs
). Для получения примера смотрите Clock Ports для Многоскоростных фильтров. Для получения дополнительной информации смотрите Опции Генерации кода для Многоскоростных фильтров.
Если вы задаете значение, которое является зарезервированным словом на целевом языке, кодер добавляет постфикс _rsvd
на это значение. Вы можете обновить значение постфикса при помощи ReservedWordPostfix
свойство. Для получения дополнительной информации смотрите Разрешение конфликтов зарезервированного HDL-текста.
ClockInputPort
- Имя входного порта синхроимпульса'clk'
(по умолчанию) | символьный вектор | строковый скалярИмя входного порта синхроимпульса, заданное как 'clk'
, вектор символов или строковый скаляр.
Если вы задаете значение, которое является зарезервированным словом на целевом языке, кодер добавляет постфикс _rsvd
на это значение. Вы можете обновить значение постфикса при помощи ReservedWordPostfix
свойство. Для получения дополнительной информации смотрите Разрешение конфликтов зарезервированного HDL-текста.
InputPort
- Имя входного порта фильтра'filter_in'
(по умолчанию) | символьный вектор | строковый скалярИмя входного порта фильтра, заданное как 'filter_in'
, вектор символов или строковый скаляр.
Если вы задаете значение, которое является зарезервированным словом на целевом языке, кодер добавляет постфикс _rsvd
на это значение. Вы можете обновить значение постфикса при помощи ReservedWordPostfix
свойство. Для получения дополнительной информации смотрите Разрешение конфликтов зарезервированного HDL-текста.
InputType
- Тип данных входного порта фильтра'std_logic_vector'
(по умолчанию) | 'signed/unsigned'
| 'wire'
Тип данных входного порта фильтра, заданный как один из следующих:
'std_logic_vector'
или 'signed/unsigned'
(когда целевой язык является VHDL)
'wire'
(когда целевой язык является Verilog)
OutputPort
- Имя выходного порта фильтра'filter_out'
(по умолчанию) | символьный вектор | строковый скалярИмя выходного порта фильтра, заданное как 'filter_out'
, вектор символов или строковый скаляр.
Если вы задаете значение, которое является зарезервированным словом на целевом языке, кодер добавляет постфикс _rsvd
на это значение. Вы можете обновить значение постфикса при помощи ReservedWordPostfix
свойство. Для получения дополнительной информации смотрите Разрешение конфликтов зарезервированного HDL-текста.
OutputType
- Тип данных выходного порта фильтра'Same as input data type'
(по умолчанию) | 'std_logic_vector'
| 'signed/unsigned'
| 'wire'
Тип данных выходного порта фильтра в сгенерированном HDL-коде, заданный как один из следующих:
'Same as input data type'
, 'std_logic_vector'
, или 'signed/unsigned'
(когда целевой язык является VHDL)
'wire'
(когда целевой язык является Verilog)
ResetInputPort
- Имя порта сброса фильтра'reset'
(по умолчанию) | символьный вектор | строковый скалярИмя порта сброса фильтра, заданное как 'reset'
, вектор символов или строковый скаляр. Используйте ResetAssertedLevel
свойство для контроля поведения этого порта.
Если вы задаете значение, которое является зарезервированным словом на целевом языке, кодер добавляет постфикс _rsvd
на это значение. Вы можете обновить значение постфикса при помощи ReservedWordPostfix
свойство. Для получения дополнительной информации смотрите Разрешение конфликтов зарезервированного HDL-текста.
RemoveResetFrom
- Подавить генерацию сбросов из регистров сдвига'none'
(по умолчанию) | 'ShiftRegister'
Подавьте генерацию сбросов из регистров сдвига, заданную как 'none'
или 'ShiftRegister'
. Чтобы пропустить сигналы сброса из регистров сдвига, установите это свойство на 'ShiftRegister'
. Отключение сигналов сброса от регистров сдвига может привести к более эффективной реализации FPGA. Для получения дополнительной информации см. «Подавление генерации логики сброса».
ResetAssertedLevel
- Установленный (активный) уровень входного сигнала сброса'active-high'
(по умолчанию) | 'active-low'
Заданный (активный) уровень входного сигнала сброса, заданный как один из следующих:
'active-high'
- Чтобы сбросить регистры в создании фильтра, входной сигнал сброса должен управляться высоко (1).
Для примера этот код проверяет, reset
ли активно высоко перед заполнением
delay_pipeline
зарегистрироваться.
Delay_Pipeline_Process : PROCESS (clk, reset) BEGIN IF reset = '1' THEN delay_pipeline(0 TO 50) <= (OTHERS => (OTHERS => '0'));
'active-low'
- Чтобы сбросить регистры в создании фильтра, входной сигнал сброса должен управляться низко (0).
Для примера этот код проверяет, reset
ли активен низко перед заполнением
delay_pipeline
зарегистрироваться.
Delay_Pipeline_Process : PROCESS (clk, reset) BEGIN IF reset = '0' THEN delay_pipeline(0 TO 50) <= (OTHERS => (OTHERS => '0'));
ResetType
- Стиль сброса для регистров'async'
(по умолчанию) | 'sync'
Стиль сброса для регистров, заданный как один из следующих:
'async'
- Кодер использует асинхронные сбросы. Блок процесса HDL не проверяет наличие активного синхроимпульса перед выполнением сброса. Для примера:
delay_pipeline_process : PROCESS (clk, reset) BEGIN IF Reset_Port = '1' THEN delay_pipeline (0 To 50) <= (OTHERS =>(OTHERS => '0')); ELSIF Clock_Port'event AND Clock_Port = '1' THEN IF ClockEnable_Port = '1' THEN delay_pipeline(0) <= signed(Fin_Port); delay_pipeline(1 TO 50) <= delay_pipeline(0 TO 49); END IF; END IF; END PROCESS delay_pipeline_process;
'sync'
- Кодер использует синхронный стиль сброса. В этом случае блок HDL-процесса проверяет фронт перед выполнением сброса. Для примера:
delay_pipeline_process : PROCESS (clk, reset) BEGIN IF rising_edge(Clock_Port) THEN IF Reset_Port = '0' THEN delay_pipeline(0 To 50) <= (OTHERS =>(OTHERS => '0')); ELSIF ClockEnable_Port = '1' THEN delay_pipeline(0) <= signed(Fin_Port); delay_pipeline(1 TO 50) <= delay_pipeline(0 TO 49); END IF; END IF; END PROCESS delay_pipeline_process;
BlockGenerateLabel
- Постфикс к меткам блочных сечений'_gen'
(по умолчанию) | символьный вектор | строковый скалярПостфикс меток сечений блоков, заданный как '_gen'
, вектор символов или строковый скаляр. Это свойство применяется только в том случае, если конечным языком является VHDL. Кодер добавляет этот постфикс к меткам разделов блоков VHDL GENERATE
операторы.
InstanceGenerateLabel
- Постфикс к меткам сечений экземпляра'_gen'
(по умолчанию) | символьный вектор | строковый скалярПостфикс к меткам сечений образца, заданный как '_gen'
, вектор символов или строковый скаляр. Это свойство применяется только в том случае, если конечным языком является VHDL. Кодер добавляет этот постфикс к меткам раздела образца VHDL GENERATE
операторы.
OutputGenerateLabel
- Постфикс к выходным меткам блоков назначения'outputgen'
(по умолчанию) | символьный вектор | строковый скалярПостфикс к выходным меткам блоков назначения, заданный как 'outputgen'
, вектор символов или строковый скаляр. Это свойство применяется только в том случае, если конечным языком является VHDL. Кодер добавляет этот постфикс к выходам выходного блока назначения VHDL GENERATE
операторы.
ClockProcessPostfix
- Имена процессов синхроимпульса от Postfix до HDL'_process'
(по умолчанию) | символьный вектор | строковый скалярИмена процессов синхроимпульса Postfix в HDL, заданные как '_process'
, вектор символов или строковый скаляр. Кодер использует HDL-процессные блоки, чтобы изменить содержимое регистров в фильтре. Метка блока определяется из имени регистра и этого постфикса. Для примера в следующем объявлении блока кодер выводит метку процесса из имени регистра delay_pipeline
и постфикс по умолчанию '_process'
.
delay_pipeline_process : PROCESS (clk, reset) BEGIN
CoeffPrefix
- Префикс для имен коэффициентов фильтра'coeff'
(по умолчанию) | символьный вектор | строковый скалярПрефикс для имен коэффициентов фильтра, задается как 'coeff'
, вектор символов или строковый скаляр. Кодер выводит имена коэффициентов, добавляя специфические для фильтра характеристики к этому префиксу.
Тип фильтра | Имя коэффициента |
---|---|
КОНЕЧНАЯ ИМПУЛЬСНАЯ ХАРАКТЕРИСТИКА | Кодер добавляет число коэффициентов к CoeffPrefix , начиная с 1. Для примера значение по умолчанию для первого коэффициента coeff1 . |
БИХ |
Кодер добавляет следующие символы к
Для примера значение по умолчанию для первого коэффициента числителя третьего раздела |
Для примера:
firfilt = design(fdesign.lowpass,'equiripple', ... 'FilterStructure','dfsymfir','SystemObject',true); generatehdl(firfilt,'InputDataType',numerictype(1,16,15), ... 'CoefficientSource','Internal','CoeffPrefix','mycoeff');
Кодер заменяет префикс имени коэффициента по умолчанию на пользовательское значение:
ARCHITECTURE rtl OF firfilt IS -- Local Functions -- Type Definitions TYPE delay_pipeline_type IS ARRAY (NATURAL range <>) OF signed(15 DOWNTO 0); -- sfix16_En15 -- Constants CONSTANT mycoeff1 : signed(15 DOWNTO 0) := to_signed(-159, 16); -- sfix16_En16 CONSTANT mycoeff2 : signed(15 DOWNTO 0) := to_signed(-137, 16); -- sfix16_En16 CONSTANT mycoeff3 : signed(15 DOWNTO 0) := to_signed(444, 16); -- sfix16_En16 CONSTANT mycoeff4 : signed(15 DOWNTO 0) := to_signed(1097, 16); -- sfix16_En16 ...
Это свойство применяется только при установке CoefficientSource
на 'Internal'
.
ComplexImagPostfix
- Постфикс в мнимую часть имен комплексных сигналов'_im'
(по умолчанию) | символьный вектор | строковый скалярПостфикс в мнимую часть имен комплексных сигналов, заданный как '_im'
, вектор символов или строковый скаляр. См. Использование комплексных данных и коэффициентов.
ComplexRealPostfix
- Постфикс в действительную часть имен комплексных сигналов'_re'
(по умолчанию) | символьный вектор | строковый скалярПостфикс в действительную часть имен комплексных сигналов, заданный как '_re'
, вектор символов или строковый скаляр. См. Использование комплексных данных и коэффициентов.
EntityConflictPostfix
- Постфикс для дублирования имен сущностей или модулей'_block'
(по умолчанию) | символьный вектор | строковый скалярПостфикс для дублирования имен сущностей или модулей, заданный как '_block'
, вектор символов или строковый скаляр. Кодер добавляет этот постфикс, чтобы разрешить повторяющиеся имена сущностей VHDL или модулей Verilog. Для примера, если кодер обнаруживает два объекта с именем MyFilt
кодер называет первую сущность MyFilt
и второй образец MyFilt_block
.
InstancePrefix
- Префикс для имени образца компонента'u_'
(по умолчанию) | символьный вектор | строковый скалярПрефикс для имени образца компонента, заданный как 'u_'
, вектор символов или строковый скаляр.
PackagePostfix
- имя файла пакета Postfix to VHDL'_pkg'
(по умолчанию) | символьный вектор | строковый скалярИмя файла пакета Postfix to VHDL, заданное как '_pkg'
, вектор символов или строковый скаляр. Кодер выводит имя пакета путем добавления этого постфикса к имени фильтра. Эта опция применяется только в том случае, если для проекта требуется файл пакета.
ReservedWordPostfix
- Постфикс на зарезервированные слова'_rsvd'
(по умолчанию) | символьный вектор | строковый скалярПостфикс к зарезервированным словам, заданный как '_rsvd'
, вектор символов или строковый скаляр. Это свойство применяется к значениям имен, постфиксов или меток, заданным в виде вектора символов или строкового скаляра в Name,Value
аргументы в виде пар в generatehdl
. Если заданное значение является зарезервированным словом на целевом языке, кодер добавляет этот постфикс к значению. Для примера, если вы звоните generatehdl
с парой аргументов 'Name','mod'
кодер формирует имя mod_rsvd
в сгенерированном коде фильтра. См. «Зарезервированные Таблицы Word».
SplitEntityArch
- Разделение сущности и кода архитектуры VHDL'off'
(по умолчанию) | 'on'
Разделение сущности и кода архитектуры VHDL, заданное как 'off'
или 'on'
. Когда для этого свойства задано значение 'on'
кодер генерирует сущность VHDL и архитектурный код фильтра в двух отдельных файлах. Кодер выводит имена файлов из имени фильтра, добавляя постфиксы _entity
и _arch
в имя базового файла. Чтобы задать пользовательские значения постфикса, установите SplitEntityFilePostfix
и SplitArchFilePostfix
свойства.
SplitArchFilePostfix
- имя файла архитектуры Postfix to VHDL'_arch'
(по умолчанию) | символьный вектор | строковый скалярИмя файла архитектуры Postfix to VHDL, заданное как '_arch'
, вектор символов или строковый скаляр.
Это свойство применяется только при установке SplitEntityArch
на 'on'
.
SplitEntityFilePostfix
- имя файла сущности Postfix to VHDL'_entity'
(по умолчанию) | символьный вектор | строковый скалярИмя файла сущности Postfix to VHDL, заданное как '_entity'
, вектор символов или строковый скаляр.
Это свойство применяется только при установке SplitEntityArch
на 'on'
.
UserComment
- Добавление пользовательских комментариев к сгенерированному HDL-кодуДобавьте комментарии пользователя к сгенерированному HDL-коду, заданному в виде вектора символов или строкового вектора. Комментарии пользователя появляются в блоке комментария заголовка в верхней части сгенерированных файлов, перед которым следуют символы комментариев, характерные для целевого языка. Когда вы включаете новые линии или линии в комментарии пользователя, кодер издает однострочные комментарии для каждой новой линии. Для примера:
firfilt = dsp.FIRFilter; generatehdl(firfilt,'InputDataType',numerictype(1,16,15), ... 'UserComment','This is a comment line.\nThis is a second line.')
firfilt
является следующим:-- ------------------------------------------------------------- -- -- Module: firfilt -- Generated by MATLAB(R) 9.1 and the Filter Design HDL Coder 3.1. -- Generated on: 2016-11-08 15:28:25 -- This is a comment line. -- This is a second line. -- -- ------------------------------------------------------------- -- ------------------------------------------------------------- -- HDL Code Generation Options: -- -- TargetLanguage: VHDL -- Name: firfilt -- InputDataType: numerictype(1,16,15) -- UserComment: User data, length 47 -- GenerateHDLTestBench: off -- ------------------------------------------------------------- -- HDL Implementation : Fully parallel -- Folding Factor : 1 -- ------------------------------------------------------------- -- Filter Settings: -- -- Discrete-Time FIR Filter (real) -- ------------------------------- -- Filter Structure : Direct-Form FIR -- Filter Length : 2 -- Stable : Yes -- Linear Phase : Yes (Type 2) -- Arithmetic : fixed -- Numerator : s16,15 -> [-1 1) -- -------------------------------------------------------------
VectorPrefix
- Префикс для имен векторных сигналов VHDL'vector_of_'
(по умолчанию) | символьный вектор | строковый скалярПрефикс для имен векторных сигналов VHDL, заданный как 'vector_of_'
, вектор символов или строковый скаляр.
Если вы используете функцию fdhdltool
для генерации HDL-кода можно задать соответствующие свойства в диалоговом окне Генерация HDL.
Свойство | Расположение в диалоговом окне |
---|---|
Input data type Output data type Clock enable output port Input port Output port | Global Settings вкладка > Ports вкладка |
Дополнительные свойства порта и идентификатора |
Верхний раздел Global Settings вкладки и Global Settings вкладки > General вкладки |
Проверьте вкладку основной Global Settings, а также Ports и General вкладки Global Settings.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.