Build a software based implementation of a central


Assignment Overview

The overall aim of your assignment is to build a software based implementation of a Central Processing Unit (CPU). Such an implementation should be capable of simulating the execution of machine code instructions. The implementation should be written in the ‘C' programming. However, in both cases you should use the GNU tool-chain to build the program. CPUs can clearly be very complex devices, hence you will not be expected to build a fully compliant implementation. However the more complete the implementation, the higher the final grade will be. The CPU to be simulated will be loosely based on the standard ARM architecture. You will be provided with a datasheet which will specify the nature of the device (e.g. register count, status register format etc. and the instruction set to be supported). In order for the simulation to work your program will also have to provide some virtual peripheral devices. e.g. Some virtual RAM will be required.

The project has been broken down into four requirements described as follows.

Requirement 1 - Program Design

The first requirement will be to undertake some initial design work for the product. This will require the development of a written design document, which may also include block diagrams, that defines the overall architecture of the system you intend to build. This should be a maximum of four pages in length. The purpose of this work is to ensure you have a clear understanding of the major tasks to be performed by your simulation program. For example you may break down a solution along the following lines -

Device Initialisation
Instruction fetching
Instruction decoding
Instruction execution

Under each of these headings you could describe the major tasks to be performed for that stage. You may also need to consider how the current ‘state' of the CPU (and possibly the memory content) is to be shown. e.g. following the execution of each instruction you may decide to show the contents of the main registers and anything else that has been changed as a result of the last instruction.

One key aspect you will have to consider is how the instructions will be defined and read by your simulator. The op-codes should be stored in your virtual RAM (or ROM if you decide to include such a feature). However these codes need to get into the virtual machine somehow. Initially you may want to consider hard-coding some simple instructions for testing purposes. Later you may decide to load the instructions from a file.

Request for Solution File

Ask an Expert for Answer!!
Software Engineering: Build a software based implementation of a central
Reference No:- TGS01220213

Expected delivery within 24 Hours