Проектирование цифровых систем на языках описания аппаратуры/Лекция 7
- Заголовок
- Описание поведения и структур цифровых схем. Многозначная логика. Разрешающие функции.
- Автор
- Ланкевич Ю.Ю.
- Нижний колонтитул
- Проектирование цифровых систем на языках описания аппаратуры/Лекция 7
- Дополнительный нижний колонтитул
- Ланкевич Ю.Ю., 12:32, 5 октября 2020
Слайд:Многозначная логика
Когда сигнал имеет один драйвер (иногда драйвер называют контейнером), то значение сигнала легко определить, потому что, когда процесс приостанавливается, значение сигнала из драйвера передается сигналу. Однако во многих практических ситуациях один и тот же сигнал может назначаться в различных (нескольких) процессах. Например, шина данных в персональном компьютере может получать данные из процессора, памяти (ОЗУ), жесткого диска и других устройств. Сигнал от многих источников называется в языке VHDL разрешаемым (resolved), для таких сигналов требуется написание функции разрешения (разрешающей функции). Разрешающая функция – это функция определения значения сигнала по его значениям из различных источников. Далее будем рассматривать два источника и для этого случая изучать функции разрешения в электронных схемах. Для моделирования процессов прохождения сигналов в реальных электронных схемах используется многозначная логика. Тип bit обобщается на случай девяти значений сигнала
'U' -- не инициализировано; 'X' -- неизвестное значение (сильный источник сигнала); '0' -- логический 0 (сильный источник сигнала); '1' -- логическая 1 (сильный источник сигнала); 'Z' -- высокий импеданс (цепь не подключена к источнику); 'W' -- неизвестное значение (слабый источник сигнала); 'L' -- логический 0 (слабый источник сигнала); 'H' -- логическая 1 (слабый источник сигнала); '-' -- безразличное значение (don't care).
Заметим, что неизвестное значение 'X' не эквивалентно неопределенному значению '-'. Безразличное значение эффективно используется при логическом синтезе схемы и логической оптимизации. Человек, знакомый, например, с методами минимизации не полностью определенных булевых функций, может вспомнить о том, что некоторые безразличные значения '-' функции заменяются при минимизации определенными (0,1) с целью получения лучшего результата. Расширение типа bit на случай девяти значений сигнала привело к понятию типа std_logic. Основное назначение типа std_logic – это повысить точность моделирования и дать "легальную" возможность разработчику делать многократные присваивания одному и тому же сигналу.
Library IEEE; use IEEE.std_logic_1164.all; entity test_flag is end; architecture beh of test_flag is Signal FlagC : std_logic := 'Z'; signal Carry : boolean; begin ALU: process (carry) begin if Carry then FlagC <= '1'; end if; end process ALU; COMM: process (carry) begin FlagC <= 'Z'; end process COMM; Carry <= true, false after 100 ns, true after 200 ns; end beh;
В данном примере для сигнала FlagC не требуется разрешающая функция, хотя операторы назначения данного сигнала имеются в двух процессах
Легко проверить моделированием, что сигнал FlagC будет иметь значение‘1’. Почему же в данном примере не требуется написание разрешающей функции?
Дело в том, что для сигналов типа std_logic допустимы присваивания из нескольких источников, и при этом не требуется написание разрешающей функции – данная функция находится в пакете STD_LOGIC_1164,
который всегда требуется указывать, если используется тип std_logic и, естественно, тип std_logic_vector.
! Типы std_logic, std_logic_vector являются разрешаемыми типами, для сигналов данного типа допустимы присваивания из нескольких источников.
Тип std_ulogic (и тип std_ulogic_vector) является не разрешаемым перечислимым типом с множеством значений {'U','X','0','1','Z','W','L','H','-'}.
Для сигналов типа std_ulogic запрещено использовать много источников сигнала, поэтому требуется написание собственной разрешающей функции.
Тип std_logic называется разрешаемым типом, он является подтипом типа std_ulogic. Буква u в названии типа std_ulogic сигнализирует о термине unresolved (не разрешаемый).
Итак, типы std_logic, std_ulogic – это перечислимые типы. Их определение содержится в пакете std_logic_1164.