Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет „Львівська політехніка”
кафедра ЕОМ
Звіт
про виконання лабораторної роботи №4
з курсу „ Дослідження та проектування комп’ютерних систем і мереж”
на тему:
SystemC : інсталяція і користування.
Елементарна модель Hello World
Виконав:
ст. гр. КСМм-1
Львів – 2007
Мета роботи: ознайомитись з бібліотекою класів SystemC та структурою елементарного проекту Hello world.
Теоретичні відомості
SystemC – це бібліотека класів С++, яка виникла у відповідь на все більш зростаючі потреби у мові, яка б збільшувала продуктивність роботи розробників електронних систем. Сучасні системи зазвичай містять в своєму складі програмну та апаратну частини, що розробляються у вкрай жорстких часових рамках та вимогах до продуктивності, що вимагає всебічної функціональної перевірки розробленої системи для запобігання виникненню помилок.
SystemC пропонує значний виграш у продуктивності завдяки поєднанню процесів проектування програмної та апаратної частин системи на вищому рівні абстракції. Цей рівень надає розробнику можливість вже на початку проектування побачити структуру системи в цілому, таким чином легше уявляючи процес взаємодії між її окремими частинами, виявити «проблемні місця», провести верифікацію на більш ранніх етапах проектування. Власне кажучи, SystemC не є тією «панацеєю», що обіцяє вирішити усі проблеми розробників. Однак, при появі цієї бібліотеки разом з бібліотекою тестування SystemC Verification Library в них поєдналися багато характеристик, які були повністю відсутні чи слабо представлені в інших мовах проектування.
Характеристики бібліотеки SystemC:
SystemC є засобом сумісного проектування апаратури та програмного забезпечення, а також опису архітектури складних систем завдяки наступним характеристикам:
Модулі – у SystemC є поняття контейнеру класу, що має назву «модуль». Це є ієрархічна структура, що може містити інші модулі та (чи) процеси.
Процеси – процеси використовуються для функціонального опису системи. Процеси входять до складу модулів. SystemC підтримує три різні абстракції процесів для використання розробниками ПЗ та апаратури.
Порти – модулі містять порти, що використовуються для з’єднання з іншими модулями. SystemC підтримує одно – та двонаправлені порти.
Сигнали – SystemC підтримує як складні, так і прості сигнали. Складні сигнали можуть мати більш ніж одне джерело.
Великий набір типів даних - SystemC має великий набір типів даних для підтримки багатьох областей проектування та рівнів абстракції. Типи даних з фіксованою точністю використовуються для швидкої симуляції. Типи даних з довільною точністю використовуються для операцій з великими значеннями.
Сигнали синхронізації – SystemC має спеціальний набір сигналів синхронізації.
Виконання роботи
1. Для початку роботи з бібліотекою класів SystemC потрібно виконати інсталяцію компілятора С++. В якості компілятора використаємо безкоштовний С++ компілятор від фірми Borland. Після розархівування файлів компілятора запускаємо на виконання файл SystemC_Win.exe з директорії SystemC_Win1.0 Beta\Bin. При першому запуску система видає повідомлення про необхідність вказати шлях до С++ компілятора, що і потрібно зробити, вказавши шлях до директорії, куди було розархівовано компілятор.
2. У меню File\Open Project вибираємо проект «Hello World».
Рисунок 1. Вигляд проекту в середовищі SystemC_Win
3. Командою Project/Run запускаємо проект на виконання. Спостерігаємо результати роботи.
Структура програми Hello World, призначення кожної складової частини, опис команд та параметрів
// Black and Donovan, p.48
#include <systemc.h>
#include <iostream>
SC_MODULE(hello_systemC) // оголошення класу модуля
{
sc_in_clk iclk; // оголошення порту синхронізації
SC_CTOR(hello_systemC) { // конструктор
SC_METHOD(main_method) ; // головний метод (процес)
sensitive << iclk.neg(); // чутливість до негативного фронту clk
dont_initialize(); // не виконувати ініціалізуючий виклик
}
void main_method(void) { // реалізація головного методу
std::cout << sc_time_stamp() << "Hello world!" << std::endl;
}
};
int sc_main(int argc, char* argv[]) {
// оголошення часової константи - 8 наносекунд
const sc_time t_PERIOD (16,SC_NS);
// створення періодичного сигналу синхронізації
sc_clock clk ("clk", t_PERIOD);
// створення екземпляру класу hello_systemC
hello_systemC U1 ("iHelloWorld");
// з'єднання clk з портом синхронізації
U1.iclk(clk);
// викликати симулятор
sc_start(45,SC_NS);
return (0);
}
Результати роботи програми
4 ns Hello world!
12 ns Hello world!
20 ns Hello world!
28 ns Hello world!
36 ns Hello world!
44 ns Hello world!
SystemC 2.0 --- Nov 18 2001 14:42:05
Copyright (c) 1996-2001 by all Contributors
ALL RIGHTS RESERVED
Висновок: при виконанні даної лабораторної роботи я ознайомився з бібліотекою класів SystemC та структурою елементарного проекту Hello world.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!