DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

Рік:
2014
Тип роботи:
Звіт до лабораторної роботи
Предмет:
ТБВ

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

Міністерство освіти, науки, молоді та спорту України Національний університет “Львівська політехніка” Кафедра ЕОМ Звіт до Лабораторної роботи №4 «Аналіз програмної моделі процесу роботи арифметичного конвеєра» Варіант 24 Підготувала: ст.гр. КІ-31 Тріщ Ганна Перевірив: Торубка Т.В. Львів 2013 Мета роботи: Навчитись здійснювати аналіз програмних моделей комп’ютерних систем, виконаних на мові System C. Лістинг програмної моделі арифметичного конвеєра: display.h: #ifndef DISPLAY_H #define DISPLAY_H #include "stage1.h" // Added by ClassView struct display : sc_module { sc_in<double> in; // input port 1 sc_in<bool> clk; // clock sc_in<double> diff; void print(); // method to display input port values //Constructor SC_CTOR( display ) { SC_METHOD( print ); // declare print as SC_METHOD and sensitive_pos << clk; // make it sensitive to positive clock edge } public: }; #endif numgen.h: #ifndef NUMGEN_H #define NUMGEN_H struct numgen : sc_module { sc_out<double> out1; //output 1 sc_out<double> out2; //output 2 sc_in<bool> clk; //clock // method to write values to the output ports void generate(); //Constructor SC_CTOR( numgen ) { SC_METHOD( generate ); //Declare generate as SC_METHOD and sensitive_pos << clk; //make it sensitive to positive clock edge } }; #endif stage1.h: #ifndef STAGE1_H #define STAGE1_H struct stage1 : sc_module { sc_in<double> in1; //input 1 sc_in<double> in2; //input 2 sc_out<double> sum; //output 1 sc_out<double> diff; //output 2 sc_in<bool> clk; //clock void addsub(); //method implementing functionality SC_CTOR( stage1 ) { SC_METHOD( addsub ); //Declare addsub as SC_METHOD and sensitive_pos << clk; //make it sensitive to positive clock edge } public: }; #endif stage2.h: #ifndef STAGE2_H #define STAGE2_H struct stage2 : sc_module { sc_in<double> sum; //input port 1 sc_in<double> diff; //input port 2 sc_out<double> prod; //output portik 1 sc_out<double> quot; //output portik 2 sc_in<bool> clk; //clock void multdiv(); //method providing functionality //Constructor SC_CTOR( stage2 ) { SC_METHOD( multdiv ); //Declare multdiv as SC_METHOD and sensitive_pos << clk; //make it sensitive to positive clock edge. } }; #endif stage3.h: #ifndef STAGE3_H #define STAGE3_H struct stage3: sc_module { sc_in<double> prod; //input port 1 sc_in<double> quot; //input port 2 sc_out<double> powr; //output port 1 sc_in<bool> clk; //clock void power(); //method implementing functionality SC_CTOR( stage3 ){ SC_METHOD( power ); //declare power as SC_METHOD and sensitive_pos << clk; //make it sensitive to positive clock edge } }; display.cpp: #include "systemc.h" #include "display.h" #include <stdio.h> //Definition of print method void display::print() { printf("Result = %f CLK=%d\n", in.read(),clk.read()); printf("prom rezultati stage1 %d ",diff.read()); } main.cpp: #include "systemc.h" #include "stage1.h" #include "stage2.h" #include "stage3.h" #include "display.h" #include "numgen.h" #define NS * 1e-9 int sc_main(int ac, char *av[]) { //Signals sc_signal<double> in1; sc_signal<double> in2; sc_signal<double> sum; sc_signal<double> diff; sc_signal<double> prod; 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 stage1 S1("stage1"); //instance of `stage1' module //Named port binding S1.in1(in1); S1.in2(in2); S1.sum(sum); S1.diff(diff); S1.clk(clk); stage2 S2("stage2"); //instance of `stage2' module S2(sum, diff, prod, quot, clk ); //Positional port binding stage3 S3("stage3"); //instance of `stage3' module S3( prod, quot, powr, clk); //Positional port binding display D("display"); //instance of `display' module D(powr,clk,diff,sum,prod,quot); //Positional port binding sc_initialize(); //Initialize simulation for(int i = 0; i < 50; i++){ clk.write(1); sc_cycle( 10 NS ); clk.write(0); sc_cycle( 10 NS ); } return 0; } numgen.cpp: #include "systemc.h" #include "numgen.h" // definition of the `generate' method void numgen::generate() { static double a = 134.56; static double b = 98.24; a -= 1.5; b -= 2.8; out1.write(a); out2.write(b); } stage1.cpp: #include "systemc.h" #include "stage1.h" //Definition of addsub method void stage1::addsub() { double a; double b; a = in1.read(); b = in2.read(); sum.write(a+b); diff.write(a-b); } stage2.cpp: #include "systemc.h" #include "stage2.h" //definition of multdiv method void stage2::multdiv() { double a; double b; a = sum.read(); b = diff.read(); if( b == 0 ) b = 5.0; prod.write(a*b); quot.write(a/b); } stage3.cpp: #include <math.h> #include "systemc.h" #include "stage3.h" //Definition of power method void stage3::power() { double a; double b; double c; a = prod.read(); b = quot.read(); c = pow(a, b); powr.write(c); } Stage4.cpp: #include <math.h> #include "systemc.h" #include "stage4.h" //Definition of power method void stage4::okruhll() { double f; f= powr.read(); okruh.write(f+1); } // end of power method Stage4.h #ifndef STAGE4_H #define STAGE4_H struct stage4: sc_module { sc_in<double> powr; sc_out<int> okruh; //input port 1 sc_in<bool> clk; //clock void okruhll(); //method implementing functionality //Constructor SC_CTOR( stage4 ){ SC_METHOD( okruhll ); //declare power as SC_METHOD and dont_initialize(); sensitive << clk.pos(); //make it sensitive to positive clock edge } }; #endif Структурна схема арифметичного конвеєра, що відповідає програмній моделі:  Висновок: Я навчилася здійснювати аналіз програмних моделей комп’ютерних систем, виконаних на мові System C.
Антиботан аватар за замовчуванням

06.12.2014 16:46

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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