Как реализованы модели элементов в библиотеках?
Отметим, что читать это нужно только тем, кто хочет их менять существующие или создавать новые модели элементов. Модели счетчиков и регистров реализованы структурно- из примитивов пакета m_prims.Их синтез в базисе плис может порождать неэффективные схемы (c так называемым управляемым тактовым сигналом). Это вызывает появление соответствующих предупреждений САПР.
Кардинальным решением этой проблемы является переделка моделей на функциональные описания. Но это вопрос будущего, а пока
рассмотрим структуру библиотек подробнее. Библиотека КР1533 описана в виде пакета (PACKAGE) КР1533. Библиотека подразделяется на две части, в одной части описываются компоненты- названия моделей элементов, входные и выходные порты- сигналы, а во второй части библиотеки (после строки END PACKAGE) описывается непосредственно модели- описания интерфейсов(entity) и архитектура-структура и функции моделей. Пример - фрагмент первой части пакета выглядит следующим образом:
Пример - фрагмент модели микросхемы КP1533LA3 из 4-х 2И-НЕ:
PACKAGE KP1533 IS
constant Td :time:= 1 ns;
COMPONENT KP1533LA3
GENERIC (Tp:time:=10 * Td); -- время задержки распространения сигнала
PORT (I1_1,I1_2,I2_1,I2_2,I3_1,I3_2,I4_1,I4_2: IN std_logic; --входные сигналы I1_1,I1_2 - входы первого 2И-НЕ и т.д.
O1,O2,O3,O4: OUT std_logic); -- выходные сигналы O1 - выход первого 2И-НЕ и т.д.
END COMPONENT;
END PACKAGE;
Пример – фрагмент библиотеки КР15ХХ- элемент-компонента LA3 = 2И-НЕ:
PACKAGE KP15ХХ IS
constant Td :time:= 1 ns;
COMPONENT LA3
GENERIC (Tp:time:=10 * Td);
PORT (I1_1,I1_2: IN std_logic;
O1: OUT std_logic);
END COMPONENT;
END PACKAGE;
Описание каждой компоненты (интерфейса модели элемента) должно начинаться с ключевого слова COMPONENT за которым следует название элемента, а заканчиваться END COMPONENT;
Поясним строку constant Td :time:= 1 ns;
В это строке определяем временную константу, которая вводится для параметризации задержек элементов.
GENERIC (Tp:time:=10 * Td); -- время задержки распространения
После GENERIC в скобках перечисляем все временные параметры элемента. Напоминаем, что при Td=1 нс, соответственно 10 * Td это 10 нс. Введение параметра Td даёт преимущества в том, что если вы используете функционально идентичные элементы других серий, например элементы Фирмы Филипс, вам не нужно менять каждую строчку в библиотеке моделей элементов, где есть зависимость от временного параметра. Вы просто меняете цифру стоящую у Td.Однако, если в вашем проекте используется несколько серий элементов, то придется либо подключать несколько библиотек, либо при инсталляции компонент в модели схемы явно передавать значения параметров- задержек, либо скорректировать библиотеку, включив в нее модели с разными именами элементов - например КР1533ЛФ3,КР1554ЛА3, К155 и т.п., и использовать разные имена коэффициентов задержек (например, ТD1533, ТD1554,ТD155 ) ,
Пример.
В некотором компоненте имеем
GENERIC (Tp:time:=10 * Td); -- Tp=10 нс, при Td=1 нс, но если к примеру для 1554 серии задержка равна 7 нс, то в этом случае Td=0.7 нс .
Кроме параметров задержек в описании интерфейсов элементов задаются имена портов.
PORT (I1_1,I1_2,I2_1,I2_2,I3_1,I3_2,I4_1,I4_2: IN std_logic; --входные сигналы I1_1,I1_2 - входы первого 2И-НЕ и т.д.
O1,O2,O3,O4: OUT std_logic); -- выходные сигналы O1 - выход первого 2И-НЕ и т.д.
После ключевого слова PORT в скобках перечисляете все входные и выходные сигналы элементов.
Как указывалось, после описания компонент-интерфейсов элементов в пакете следует описание их функций
Формат описания второй части пакета- библиотеки. Это непосредственно функциональное описание элементов. Пример представления микросхемы ЛА3:
Пример описания модели корпуса микросхемы KP1533LA3:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY KP1533LA3 IS
GENERIC (Tp:time:=10 ns); -- время задержки распространения сигнала
PORT (I1_1 : IN std_logic;
I1_2 : IN std_logic;
I2_1 : IN std_logic;
I2_2 : IN std_logic;
I3_1 : IN std_logic;
I3_2 : IN std_logic;
I4_1 : IN std_logic;
I4_2 : IN std_logic;
O1 : OUT std_logic;
O2 : OUT std_logic;
O3 : OUT std_logic;
O4 : OUT std_logic);
END KP1533LA3;
ARCHITECTURE model OF KP1533LA3 IS
BEGIN
O1 <= NOT ( I1_1 AND I1_2 ) AFTER Tp;
O2 <= NOT ( I2_1 AND I2_2 ) AFTER Tp;
O3 <= NOT ( I3_1 AND I3_2 ) AFTER Tp;
O4 <= NOT ( I4_1 AND I4_2 ) AFTER Tp;
END model;
Пример описания функции 2ИНЕ- LA3:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY LA3 IS
GENERIC (Tp:time:=10 ns); -- âðåìÿ çàäåðæêè ðàñïðîñòðàíåíèÿ ñèãíàëà
PORT (I1_1 : IN std_logic;
I1_2 : IN std_logic;
O1 : OUT std_logic
);
END LA3;
ARCHITECTURE model OF LA3 IS
Begin
O1 <= NOT ( I1_1 AND I1_2 ) AFTER Tp;
End;
В примере Tp – это средняя задержка сигнала.
Не забываем после ENTITY X (X – название элемента) заново описать интерфейс элемента - временные параметры и входные и выходные порты. Описание непосредственно логики работы начинается после ARCHITECTURE:
ARCHITECTURE model OF KP1533LA3 IS
BEGIN
-- далее описываете функции
Завершается описание модели строкой END ;
Примечание. Название сигнала не должно начинаться с цифры, только с буквы, в противном случае будет выдана синтаксическая ошибка.
Представим пример модели более сложного элемента, который использует примитивы файла m_prims.vhd. Рассмотрим модель КР1533ТМ9 (модель описывает корпус микросхемы и состоит из шести D- триггеров).
Отметим ,что хотя в примере задержки не параметризованы- указаны константы из справочника ( по небрежности разработчиков библиотеки), это не влияет на правильность описания модели элемента, так как