Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота №2
„Розробка на структурному рівні”
Виконав
студент групи СКС-5
Львів-2004
1.Мета роботи: створення та перевірка структурних VHDL-описів кристалу та зовнішніх корпусних контактних майданчиків.
2.Теоретична частина:
На цьому етапі переходять від функціонального опису кристалу до структурного. Тут кристал розбивається на два конструктиви:
1). Безпосередньо схема кристалу (core).
2). Зовнішні корпусні контактні майданчики (pads).
Структурний рівень передбачає опис цих двох конструктивів мовою структурного опису VHDL.
Відмінність структурного опису VHDL від функціонального полягає в тому, що в структурному описі оперують реальними бібліотечними елементами кристалу.
Створити структурний опис, який за обсягом на кілька порядків більший за функціональний, важко. Тому пакет Alliance передбачає два незалежних способи автоматизоавного отримання структурного опису для core та pads:
1) За допомогою текстового редактора створюється файл мовою С. Цей файл є проміжним форматом для створення структурного опису. У ньому за допомогою викликів спеціальних функцій формується виборка необхідних елементів з бібліотеки кристалу. Далі програмою-компілятором GENLIB проміжний С-файл переводять у необхідний структурний опис. У системі Alliance цей спосіб є рекомендованим.
2) Другий спосіб не вимагає додаткового набору інформації. Достатньо скористатись програмою-генератором LOGIC, на вхід якої задають функціональний VHDL-опис, а на виході отримують структурний VHDL-опис. Виборка бібліотечних елементів кристалу відбувається автоматично.
Після отримання структурних описів для core та pads, виконується симуляція на структурному рівні. Користуючись симулятором ASIMUT, перевіряють роботу тестових наборів на структурній VHDL-моделі безпосередньо схеми кристалу core. При виникненні помилки слід повернутись на попередні рівні. Симуляція для структурного опису зовнішніх корпусних контактних майданчиків pads не потрібна, оскільки цей опис не містить логічних перетворень сигналів.
3.Послідовність виконання роботи:
1. Зареєструватись з термiналу в системi.
2. Ознайомитись з прикладом розробки на структурному рівні чотирирозрядного накопичувального суматора.
3. Отримати та виконати iндивiдуальне завдання.
4. Оформити та захистити у викладача звіт про лабораторну роботу.
4.Структура мікросхеми лічильника К155ИЕ5:
EMBED Visio.Drawing.6
EMBED Visio.Drawing.6
5.Структурний VHDL-опис схеми лічильника К155ИЕ5:
core.c:
/*
genlib.h is required for all genlib programs.
it defines the set of functions we will use for schematic capture
*/
#include <genlib.h>
/*
core.c is to become the `core' executable program. So we must
define a main procedure main()
*/
main()
{
int i; /* We will build regular structure using a loop, i is its index */
/*
When executed, the addaccu program opens the netlist view
"core". Operations performed after opening "accu" are
taken into account.
*/
DEF_LOFIG("core");
/*
The description of the addaccu netlist begins with the
instanciation of input/output terminals
*/
LOCON("d_in[0:2]", IN, "d_in[0:2]"); /* input bus d_in */
LOCON("e", IN, "e"); /* input e */
/*
Then, the output terminals.
*/
LOCON("d_out[0:7]", INOUT, "d_out[0:7]"); /* output bus */
/*
Then the supplies.
They are inputs, but we like them better at the end of the
description.
*/
LOCON("vdd", IN, "vdd" ); /* power supply */
LOCON("vss", IN, "vss" ); /* ground */
/*
Now we describe the circuit's schematic in instanciating
standard cells.
*/
/*
bit 0
*/
LOINS("a4_y", "an0",
"d_in[0]", "d_in[1]", "d_in[2]",
"vdd", "vss", e); /* d_out(0) <=d_in(0) AND d_in;(1) AND d_in(2) AND e*/
/*
bit 1
*/
LOINS("a4_y", "an0",
"d_in[0]", "d_in[1]", "d_in[2]",
"vdd", "vss", e); /* d_out(0) <=d_in(0) AND d_in;(1) AND d_in(2) AND e*/
/*
bit 2
*/
LOINS("a4_y", "an0",
"d_in[0]", "d_in[1]", "d_in[2]",
"vdd", "vss", e); /* d_out(0) <=d_in(0) AND d_in;(1) AND d_in(2) AND e*/
/*
bit 3
*/
LOINS("a4_y", "an0",
"d_in[0]", "d_in[1]", "d_in[2]",
"vdd", "vss", e); /* d_out(0) <=d_in(0) AND d_in;(1) AND d_in(2) AND e*/
/*
bit 4
*/
LOINS("a4_y", "an0",
"d_in[0]", "d_in[1]", "d_in[2]",
"vdd", "vss", e); /* d_out(0) <=d_in(0) AND d_in;(1) AND d_in(2) AND e*/
/*
bit 5
*/
LOINS("a4_y", "an0",
"d_in[0]", "d_in[1]", "d_in[2]",
"vdd", "vss", e); /* d_out(0) <=d_in(0) AND d_in;(1) AND d_in(2) AND e*/
/*
bit 6
*/
LOINS("a4_y", "an0",
"d_in[0]", "d_in[1]", "d_in[2]",
"vdd", "vss", e); /* d_out(0) <=d_in(0) AND d_in;(1) AND d_in(2) AND e*/
/*
bit 7
*/
LOINS("a4_y", "an0",
"d_in[0]", "d_in[1]", "d_in[2]",
"vdd", "vss", e); /* d_out(0) <=d_in(0) AND d_in;(1) AND d_in(2) AND e*/
SAVE_LOFIG();
exit(0); /* necessary for the proper run of the Makefile */
}
6.Висновок: на лабораторній роботі створив та перевірив структурні VHDL-описи кристалу та зовнішніх корпусних контактних майданчиків схеми лічильника К155ИЕ5.