Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти, науки, молоді та спорту України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
ЗВІТ
до лабораторної роботи №6
на тему: «Побудова функціональної схеми RISC CPU згідно програмної моделі»
з предмету: «Комп’ютерні системи»
Підготував: ст.гр. КІ-41
Глова Ю.І.
Прийняв:
Муляревич О.В.
Львів 2017
Мета роботи: Дослідити програмну модель блоків ,які входять до складу програмної моделі RISC CPU, створеної на мові SystemC. Побудувати структурну схему блоків
Програмна модель блоку PAGING
*************************************** paging.cpp -- Instruction Paging Unit
********************************
#include <iostream>
#include "systemc.h"
#include "paging.h"
#include "directive.h"
using namespace std;
void paging::entry()
{
int address=0;
int address_conversion_factor = 0;
int dataout_tmp =0;
while (true) {
wait_until(paging_csin.delayed() == true);
address = logical_address.read();
address_conversion_factor = paging_din.read();
if (address >= 5) {
if (paging_wein.read() == true) { // Write operation
paging_dout.write(paging_din.read());
paging_csout.write(true);
paging_weout.write(true);
physical_address.write(logical_address.read());
wait();
paging_csout.write(false);
paging_weout.write(false);
}
else { // Read operation
paging_csout.write(true);
paging_weout.write(false);
physical_address.write(logical_address.read());
wait();
wait_until(icache_validin.delayed() == true);
dataout_tmp = icache_din.read();
if (PRINT_PU){
cout << "-----------------------" << endl;
printf( "PAGE : mem=%x\n",dataout_tmp);
cout << "PAGE : " ;
cout << "at CSIM " << sc_time_stamp() << endl;
cout << "----" << endl;
}
dataout.write(icache_din.read());
data_valid.write(true);
paging_csout.write(false);
wait();
data_valid.write(false);
wait();
}
}
}
} // end of entry function
******************************************
paging.h -- Instruction Paging Unit
struct paging : sc_module {
sc_in<unsigned > paging_din; // input data
sc_in<bool> paging_csin; // chip select
sc_in<bool> paging_wein; // write enable
sc_in<unsigned > logical_address; // logical address
sc_in<unsigned > icache_din; // data from BIOS/icache
sc_in<bool> icache_validin; // data valid bit
sc_in<bool> icache_stall; // stall IFU if busy
sc_out<unsigned > paging_dout; // output data
sc_out<bool> paging_csout; // output cs to cache/BIOS
sc_out<bool> paging_weout; // write enable to cache/BIOS
sc_out<unsigned > physical_address; // physical address
sc_out<unsigned > dataout; // dataout from memory
sc_out<bool> data_valid; // data valid
sc_out<bool> stall_ifu; // stall IFU if busy
sc_in_clk CLK;
signed int pid_reg; //CPU process ID register
SC_CTOR(paging) {
SC_CTHREAD(entry, CLK.pos());
pid_reg = 0;
}
void entry();
};.
Структурна схема блоку PAGING
Висновок: у цій лабораторній роботі я дослідив програмну модель блоку PAGING, який входять до складу програмної моделі RISC CPU, створеної на мові SystemC, та побудував структурну схему блоків PAGING.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!