«Бог не меняет того, что (происходит) с людьми, пока они сами не изменят своих помыслов.» Коран, Сура 12:13

Проектирование цифровых систем на языках описания аппаратуры/Лекция 8

Материал из Wiki
Перейти к: навигация, поиск
Лекции ПЦСЯОА

Лекции

Практические

Доп. материалы

Заголовок
Описание логических элементов, нерегулярных и регулярных логических схем
Автор
Ланкевич Ю.Ю.
Нижний колонтитул
Проектирование цифровых систем на языках описания аппаратуры/Лекция 8
Дополнительный нижний колонтитул
Ланкевич Ю.Ю., 15:49, 6 октября 2020


Содержание

Слайд:Описание логических элементов, нерегулярных и регулярных логических схем

  • Описание систем ДНФ
  • Описание программируемой логической матрицы (ПЛМ)
  • Многоуровневые и полиномиальные представления
  • Описание нерегулярных логических схем
  • Описание регулярных схем
    • Оператора generate
    • Сдвиговый регистр
    • Многоразрядный сумматор

Слайд:Описание систем ДНФ

Поведение комбинационных логических элементов описывается булевыми функциями, которые чаще всего представляются в виде таблиц истинности либо ДНФ. Многовыходные логические элементы описываются в виде систем ДНФ. Система ДНФ булевых функций может быть совместно минимизирована в классе ДНФ и логические выражения могут быть упрощены. Минимизированная система ДНФ в матричной форме представлена в таблице. От данной таблицы легко перейти к выражениям на языке VHDL, используя только логические операторы и операторы назначения сигналов.

Tx Bf
b1 b2 a1 a2 c2 s2 s1
- - 1 1 1 0 0
1 1 - 1 1 0 0
1 1 1 - 1 0 0
1 1 0 0 0 1 0
1 1 1 1 0 1 0
0 - 1 0 0 1 0
0 - 0 1 0 1 0
- 0 1 0 0 1 0
- 0 0 1 0 1 0
1 0 - - 0 0 1
1 0 - - 0 1 0
entity adder_2 is
    port ( a1, b1, a2, b2 : in BIT;
           c2, s2, s1     : out BIT);
end adder_2;
architecture functional_dnf of adder_2 is
begin
    c2 <= (a1 and a2) or
          (b1 and b2 and a1) or
          (b1 and b2 and a2);
    s2 <= (b1 and b2 and not a1 and not a2) or
          (b1 and b2 and a1 and a2) or
          (not b1 and a1 and not a2) or
          (not b1 and not a1 and a2) or
          (not b2 and a1 and not a2) or
          (not b2 and not a1 and a2);
    s1 <= (b1 and not b2) or
          (not b1 and b2);
end functional_dnf;

Слайд:Описание программируемой логической матрицы

В общем случае ПЛМ предназначена для реализации системы ДНФ булевых функций f(x) = ( f1(x), …, fm(x)), x = (x1, …, xn), заданных на k общих элементарных конъюнкциях, и состоит из двух последовательно соединенных подсхем. На входные шины ПЛМ подаются сигналы, соответствующие литералам входных переменных xi , i = 1, ..., n. На матричной подсхеме первого уровня (матрице И) реализуется k элементарных конъюнкций системы ДНФ, матричная подсхема второго уровня (матрица ИЛИ) служит для реализации дизъюнкций элементарных конъюнкций. ПЛМ, изображенная ниже, реализует следующую систему ДНФ булевых функций:
f1 = x̅13 ∨ x1x3 = k1∨k3;
f2 = x̅12x3 = k2;
f3 = x̅12x3 ∨ x1x3 = k2 ∨ k3.

Пример ПЛМ

Слайд:Многоуровневые и полиномиальные представления

Многоуровневые (алгебраические скобочные выражения в базисе операторов И, ИЛИ, НЕ) представления булевых функций однозначно переписываются в виде выражений языка VHDL с использованием операторов AND, OR, NOT и скобок. Например, булева функция
f = x̅1x2x3 ∨ x2x3x4 ∨ x124∨ x134
может быть записана в виде полинома Жегалкина
f = x1⊕x2x3⊕x1x4,
которому соответствует следующее выражение языка VHDL
f <= x1 xor (x2 and x3) xor (x1 and x4);
В полином Жегалкина входят только положительные литералы (литералы без знака инверсии).

Слайд:Описание регулярных схем

Пример логической схемы

Слайд:Описание регулярных схем

Ниже приведено описание логической схемы с помощью оператора создания экземпляра компонента. Схема состоит из трех компонент – логических элементов NAO22, NAO2, т.е. используются только два типа элементов.

 entity circuit1 is
 port ( y, c, b, x1 : in bit;
        a           : out bit);
 end circuit1;
 architecture struct_1 of circuit1 is
     component nao22
         port ( a, b, c, d : in bit;
                y : out bit);
     end component;
     component nao2
         port ( a, b, c : in bit;
                y       : out bit);
     end component;
     signal w, d: bit;
     begin
         m_3: nao2   port map (b => y, y => A, c => d, a => w);
         met1: nao22 port map (a => Y, b => C, c => b, D => x1, y => w);
         met2: NAO22 port map (y, b, c, c, d);
     end struct_1;
 entity nao2 is
     port ( a, b, c : in bit;
            y       : out bit);
 end nao2;
 architecture beh_1 of nao2 is
 begin
     y <=(not a ) or (not b and not c);
 end beh_1;
 entity nao22 is
     port ( a, b, c, d : in bit;
            y : out bit);
 end nao22;
 architecture beh_2 of nao22 is
 begin
     y <=(not a and not b) or (not c and not d);
 end beh_2;

Слайд:Описание регулярных схем

! Каждый оператор создания экземпляра компонента должен иметь метку.
Метки играют роль имен элементов схемы. Карта портов дается в скобках после ключевых слов port map. Назначение портов компонентов является как позиционным, так и ключевым.
! Для выходных неиспользуемых портов компонентов нужно употребить ключевое слово open.
Следующий фрагмент VHDL-кода показывает, что при создании экземпляра компонента add1 на вход b1 можно подать константу 0 и выход c1 не использовать.

P1: add1 port map (b1 => '0', b2 =>x, s1 => s1, c1 => open);

Слайд:Описание систем ДНФ