|
||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Оператор проверкиОператор проверки ASSERTотносится к категории конструкций, не подлежащих реализации в аппаратуре. Оператор служит для выявления специфических ситуаций, которые могут возникать в процессе компиляции и моделирования (т. е. программной интерпретации описания проекта), и выдачи в этих ситуациях сообщения разработчику. <оператор проверки>::= ASSERT <булевское выражение> [ REPORT <строка сообщения> ] [ SEVERETY <уровень важности>]; При выполнении этого оператора в процессе моделирования проверяется условие, и если получено значение TRUE, выполняется переход к следующему оператору программы. В противном случае на терминал выводится строка сообщения. Если опция "REPORT <строка сообщения>" отсутствует, выдается стандартное сообщение "Assertion violation" (нарушение условий проверки). После этого поведение моделировщика определяется значением уровня важности. Уровень важности — это выражение (обычно константа) типа SEVERITY_LEVEL. ASSERT NOT control_level'event REPORT "Изменение сигнала control_level" SEVERITY warning; Следующий пример иллюстрирует введение сигнализации о возникновении при моделировании недопустимой ситуации — одновременной подачи на входы R и S триггера сигналов логической единицы: ASSERT R='1' NAND S='1'; Отсутствие в этой записи ключевых слов REPORT и SEVERITY означает, что используются значения по умолчанию. То есть, если при моделировании возникнет ситуация, когда сигналы R и S одновременно установлены в единицу, на терминал выводится строка "Assertion violation", и моделирование прекращается.
АТРИБУТЫ В VHDL
Атрибуты – квази-объекты, отражающие некоторые свойства объектов Бывают предопределенные атрибуты и атрибуты, вводимые программистом
Атрибут может использоваться как обычная переменная в выражениях того типа, к которому относится атрибут
attribute_name::= prefix ' attribute_designator [ expression} prefix::=name attribute_designator::=name
Предопределенные: атрибуты сигналов S'DELAYED (н.п x’delayed 5ns - совпадает с типом сигнала и имеет значение равное значению сигнала за 5 ns перед обращением S'STABLE имеет значение true или False S'QUIET имеет значение true или False???? S'TRANSACTION S'EVENT имеет значение true или False S'ACTIVE имеет значение true или False вычислено новое значение но не кончено ожидание S'LAST_EVENT дает временную переменную равную времени от последнего изменения сигнала до текущего момента S'LAST_ACTIVE дает временную переменную равную времени от последнего воздействия на сигнал до текущего момента (не совпадает с last_event при наличии слова after в определяющем выражении
S'LAST_VALUE - Значение до последнего перехода
Process(clk,a) Begin If clk=’1’ and clk’event then
IF s/=s’delayed 5ns then aseert false severity error; If s’quiet 5ns then == if nor s’transaction 5 ns
Атрибуты типов
Process(clk,reset) Type state_type is (st,w1,w2,w3,w4,w5….); Variable state:state_type; Begin If reset=’1’ then state:=state’left Elsif clk=’1’ and clk’event then If x1=’1’ and x2=’0’ then If state=state_type’left then state=state_type’right; Else state=state_type’leftof(state) End if; Elsif x1=’1’ then If state=state_type’rigght then state=state_type’left; Else state=state_type’rightof(state) End if;
else null; end if; end process;
Атрибуты массивов
Type array_type is array (integer range <>) of byte;
Function something (x: array_type…….) Begin … For I in x’range loop if i= x’right then…. Else …… Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |