Аналіз програмної моделі процесу роботи арифметичного конвеєра, ч.2

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2018
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерні системи

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” / Звіт До Лабораторної роботи №4 З дисципліни: «Комп'ютерні системи» на тему: «Аналіз програмної моделі процесу роботи арифметичного конвеєра, ч.2» Мета роботи: Навчитись здійснювати аналіз програмних моделей комп’ютерних систем, виконаних на мові System C. Хід роботи Завдання Здійснити модернізацію функцій або параметрів арифметичного конвеєра (див. лабораторну роботу № 3), шляхом під’єднання розроблених модулів S1 та S2 (див. лабораторну роботу № 2). Порядок та тип з’єднання мають бути обгрунтовані, можливо розробка буферних або додаткових модулів з метою надавання нових властивостей тестувальній моделі. Лістинг змінених файлів тестової програми #include "systemc.h" #include "stage1.h" #include "stage2.h" #include "stage3.h" #include "s1.h" #include "s2.h" #include "display.h" #include "numgen.h" int sc_main(int, char *[]) { //Signals sc_signal<double> in1; sc_signal<double> in2; sc_signal<double> sum; sc_signal<double> diff; sc_signal<double> prod; sc_signal<double> o1; sc_signal<double> r1; sc_signal<double> r2; sc_signal<double> o2; sc_signal<double> quot; sc_signal<double> powr; //Clock sc_signal<bool> clk; numgen N("numgen"); //instance of `numgen' module N(in1, in2, clk); //Positional port binding S1 s_1("s1"); s_1(in1, in2, power, o1, clk); S2 s_2("s2"); s_2(o1, o2, r1, r2, clk); stage1 S_1("stage1"); //instance of `stage1' module //Named port binding S_1.in1(r1); S_1.in2(r2); S_1.sum(sum); S_1.diff(diff); S_1.clk(clk); stage2 S_2("stage2"); //instance of `stage2' module S_2(sum, diff, prod, quot, clk); //Positional port binding stage3 S_3("stage3"); //instance of `stage3' module S_3(prod, quot, powr, clk); //Positional port binding display D("display"); //instance of `display' module D(powr, clk); //Positional port binding sc_start(0, SC_NS); //Initialize simulation for (int i = 0; i < 50; i++) { clk.write(1); sc_start(10, SC_NS); clk.write(0); sc_start(10, SC_NS); } return 0; } #ifndef TEST_SYSTEMC_S1_H #define TEST_SYSTEMC_S1_H #include "systemc.h" #include "cmath" #include "s2.h" SC_MODULE (S1) { sc_in<double> x; sc_in<double> y; sc_out<double> o1; sc_out<double> o2; sc_in<bool> clk; SC_CTOR(S1) { SC_METHOD(calc_o1); sensitive << x << y << clk.pos(); SC_METHOD(calc_o2); sensitive << x << y << clk.pos(); } void calc_o2() { double x_val = x.read(); double y_val = y.read(); double acc = 0; acc += ((x_val + y_val) / 2.0) & (2 >> x_val); f1.write(acc); } void calc_o1() { double x_val = x.read(); double y_val = y.read(); o1.write(x_val - y_val); } }; #endif //TEST_SYSTEMC_S1_H #ifndef TEST_SYSTEMC_S2_H #define TEST_SYSTEMC_S2_H #include "systemc.h" SC_MODULE(S2) { sc_in<double> a; sc_in<double> b; sc_out<double> r1; sc_out<double> r2; sc_in<bool> clk; SC_CTOR(S2) { SC_METHOD(calc_r1); sensitive << a << b << clk.pos(); SC_METHOD(calc_r2) sensitive << a << b << clk.pos(); } void calc_r1() { double a_val = a.read(); double b_val = b.read(); r1.write(a_val * b_val); } void calc_r2() { r2.write(16); } }; #endif //TEST_SYSTEMC_S2_H Модель арифметичного конвеєра з внесеними змінами / Висновок: на даній лабораторній роботі я навчитився здійснювати аналіз програмних моделей комп’ютерних систем, виконаних на мові System C.
Антиботан аватар за замовчуванням

24.11.2018 16:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!