Задержки указанные в описании компоненты KP1533TM9

(Tplhc:time:=15 * TD ;

их мажорируют.

 

LIBRARY ieee;

USE ieee.std_logic_1164.all;

 

USE work.m_prims.all;

 

ENTITY KP1533TM9 IS

GENERIC (Tplhc:time:=15 ns; -- время задержки распространения сигнала при выключении по C

Tphlc:time:=17 ns); -- время задержки распространения сигнала при включении по C

 

PORT (D1 : IN std_logic;

D2 : IN std_logic;

D3 : IN std_logic;

D4 : IN std_logic;

D5 : IN std_logic;

D6 : IN std_logic;

C : IN std_logic;

R1 : IN std_logic;

Q1 : OUT std_logic;

Q2 : OUT std_logic;

Q3 : OUT std_logic;

Q4 : OUT std_logic;

Q5 : OUT std_logic;

Q6 : OUT std_logic);

END KP1533TM9;

 

ARCHITECTURE model OF KP1533TM9 IS

 

BEGIN

DQFFC_16 : m_DQFFC

GENERIC MAP (trise_clk_q=>Tplhc, tfall_clk_q=>Tphlc)

PORT MAP (q=>Q1 , d=>D1 , clk=>C , cl=>R1 );

DQFFC_17 : m_DQFFC

GENERIC MAP (trise_clk_q=>Tplhc, tfall_clk_q=>Tphlc)

PORT MAP (q=>Q2 , d=>D2 , clk=>C , cl=>R1 );

DQFFC_18 : m_DQFFC

GENERIC MAP (trise_clk_q=>Tplhc, tfall_clk_q=>Tphlc)

PORT MAP (q=>Q3 , d=>D3 , clk=>C , cl=>R1 );

DQFFC_19 : m_DQFFC

GENERIC MAP (trise_clk_q=>Tplhc, tfall_clk_q=>Tphlc)

PORT MAP (q=>Q4 , d=>D4 , clk=>C , cl=>R1 );

DQFFC_20 : m_DQFFC

GENERIC MAP (trise_clk_q=>Tplhc, tfall_clk_q=>Tphlc)

PORT MAP (q=>Q5 , d=>D5 , clk=>C , cl=>R1 );

DQFFC_21 : m_DQFFC

GENERIC MAP (trise_clk_q=>Tplhc, tfall_clk_q=>Tphlc)

PORT MAP (q=>Q6 , d=>D6 , clk=>C , cl=>R1 );

END model;

 

Обратим внимание на следующие строки.

DQFFC_16 : m_DQFFC

GENERIC MAP (trise_clk_q=>Tplhc, tfall_clk_q=>Tphlc)

PORT MAP (q=>Q1 , d=>D1 , clk=>C , cl=>R1 );

 

Здесь идёт обращение к примитиву m_DQFFC из пакета m_prims ( см. файл m_prims.vhd). Для понимания работы модели Д-триггера m_DQFFC , откройте фал m_prims.vhd и посмотрите описание m_DQFFC.

Регистры с трёхстабильными выходами в своем описании используют примитив m_tsb пакета m_prims. Советуем ознакомиться с файлом m_prims.vhd.

Для более компактного, чем имеет место быть в используемых библиотеках, описания моделей микросхем можно использовать развитые средства VHDL- оператор generate и др. Сравните библиотечное описание регистра ИР22 и приведенное ниже

Пример описания регистра ИР22 с использованием оператора generate

 

 

LIBRARY ieee;

USE ieee.std_logic_1164.all;

 

USE work.m_prims.all;

 

ENTITY KP1533IR22 IS

GENERIC (Tplh:time:=12 ns;

Tphl:time:=16 ns;

Tpzh:time:=40 ns;

Tpzl:time:=30 ns;

NN: positive := 8

);

PORT (D0 : IN std_logic;

D1 : IN std_logic;

D2 : IN std_logic;

D3 : IN std_logic;

D4 : IN std_logic;

D5 : IN std_logic;

D6 : IN std_logic;

D7 : IN std_logic;

C : IN std_logic;

EZ : IN std_logic;

Q0 : OUT std_logic;

Q1 : OUT std_logic;

Q2 : OUT std_logic;

Q3 : OUT std_logic;

Q4 : OUT std_logic;

Q5 : OUT std_logic;

Q6 : OUT std_logic;

Q7 : OUT std_logic);

END KP1533IR22;

 

ARCHITECTURE model OF KP1533IR22 IS

SIGNAL L1 : std_logic;

SIGNAL N1 : std_logic;

SIGNAL N2 : std_logic;

SIGNAL N3 : std_logic;

SIGNAL N4 : std_logic;

SIGNAL N5 : std_logic;

SIGNAL N6 : std_logic;

SIGNAL N7 : std_logic;

SIGNAL N8 : std_logic;

signal N,D,Q : std_logic_vector(1 to NN);

 

BEGIN

 

N<=(N1 & N2& N3 & N4 & N5 & N6 & N7 & N8);

(Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7)<=Q;

D<=(D0, D1, D2, D3, D4, D5, D6, D7);

 

 

L1 <= NOT ( EZ );

 

G1: for i in 1 to NN generate

DLATCH_3 : m_DLATCH

GENERIC MAP (trise_clk_q=>0 ns, tfall_clk_q=>0 ns)

PORT MAP (q=>N(i) , d=>D(i) , enable=>C );

end generate;

G2: for j in 1 to nn generate

TSB_142 : m_TSB

GENERIC MAP (trise_i1_o=>Tphl, tfall_i1_o=>Tplh, tpd_en_o=>Tpzl, Tpd_en_1=>Tpzh)

PORT MAP (O=>Q(j) , i1=>N(j) , en=>L1 );

end generate;

END model;

 

3)КАК ПОДКЛЮЧАТЬ БИБЛИОТЕКИ к вашему проекту?

Использовать библиотеки можно с применением разных приемов:

1)Либо включая их файлы в состав проекта и заново транслируя их, начиная с файла m_prims.vhd.Потом, например, КР15ХХ.vhd,- при этом автоматически пакет включается в рабочую библиотеку проекта- по умолчанию WORK,

2) либо один раз, протранслировав его и включив его в библиотеку пользователя.

Последовательность действий при создании и подключении библиотеки пользователя в системе ISIM смотрите в руководстве по системе:

 

4 . Как пользоваться схемным редактором ?

Помимо алгебраической формы описания схем, использовавшейся в ранее приведенных примерах, можно использовать графическую форму.

Графические редакторы имеются в САПР ISe и САПР ACTIVE-HDL

Типичный порядок действий.

1.Создание графических образов элементов из их HDL-описаний

2.создание на экране поля для рисунка схемы.

3.перенос на экран изображений элементов.

4 соединение элементов проводниками

5.сохранение рисунка схемы в файле.

 

Для графического редактора САПР ISE это выглядит примерно так:

Создаю новый проект- например с именем prim_sh и указываю его каталог.

Создаю новый файл его описания. Project> new source >shematics

Указываю этим, что использую схемное описание SHEMATICS(а не HDL описание )- файлы схем имеют раснирение .sch

Появляется поле для рисунка в схемном редактора и внизу его

Строка с design,files,libraries,symbol.

Подключаю к проекту библиотеку kr1533.vhd ,указывая путь к файлам и копируя в него все или не все выделенные файлы

Для этого Project>add copy of sourсe

Выделяю нужный элемент в списке элементов библиотеки.

Например KR1533IR37.vhd

В DESIGN UTILITYes выбираю CREATE SHEMATICS

Выбираю sYMBOLS и смотрю, появился ли среди стандартных символов элементов ПЛИС Спартан 3 новый с названием KR1533IR37.

И так создаю символы для всех используемых в схеме элементов.

Начинаю рисовать схему из этих элементов.

Выделяю элемент курсором и переношу на поле схемы- появляется изображение элемента в форме прямоугольника.

Переношу в поле схемы символы всех нужных элементов на нужное место

В вертикальном меню справа от рисунка схемы пиктограммы операций-

Соединяю элементы проводниками-wire или шинами bus

Добавляю в рис.схемы порты ввода-вывода ADD IO Markers-

Проверяю правильность рисунка CHECK DESIGN RULES

Сохраняю файл схемы

СОЗДАЮ ТЕСТБЕНЧ Project> new source>vhdl testbench

Указываю для какого модуля создается-

И тд

 

 

ЛАБОРАТОРНАЯ РАБОТА № 2