Visualizing Data Flow and Control Signaling Inside the Microprocessor Ms. Isha Sharma 1, Mrs. Neha Sharma 2, Mr. Jitender Chhabra 3 1 M.Tech. Scholar, SGTIET, Gurgaon. 2 Asst. Professor, SGTIET, Gurgaon 3 Asst. Professor, AKGEC, Ghaziabad. ABSTRACT This paper describes the key aspects of simulation of a 16-bit Microprocessor s hardware using VHDL to visualize the data flow and control signaling inside the microprocessor. Functioning of all the key components such as CPU, ALU, RAM, Registers and Control unit are visualized analytically through the VHDL simulated waveforms. All the components are simulated separately by writing the separate VHDL code for them. Keywords: ALU, CPU, Microprocessor, Simulation, VHDL 1. INTRODUCTION Designing a microprocessor is extremely timeconsuming (up to seven years). Computer designers and architects heavily rely on simulation tools for exploring the huge microprocessor design space. These simulation tools are at least three or four orders of magnitude slower than real hardware execution. In addition, architects and designers use long-running benchmarks that are built from real-life applications; today s benchmarks execute several hundreds of billions of instructions. [1] The end result is that simulating a single benchmark can take days to weeks. And this is to simulate a single microarchitecture configuration. As a result, exploring a huge design space in order to find an optimal trade-off between design metrics of interest - such as performance, cost or power consumption is impossible through detailed simulation. 16 bit microprocessor contains a number of basic modules which together completes the processor. The processor uses 16 bit data bus to communicate through different sections like General purpose registers, Arithmetic logic unit, CU (control unit), memory, comparator, program counter, address register, instruction register and shift register. With the advancement in integrated circuit technology the power of the processor has increased tremendously. 2. ARCHITECTURE OF A 16-BIT MICROPROCESSOR A microprocessor incorporates the functions of a computer's central processing unit (CPU) on a single integrated circuit (IC), or at most a few integrated circuits. It is a multipurpose, programmable device that accepts digital data as input, processes it according to instructions stored in its memory, and provides results as output. It is an example of sequential digital logic, as it has internal memory. Microprocessors operate on numbers and symbols represented in the binary numeral system. The advent of low-cost computers on integrated circuits has transformed modern society. General-purpose microprocessors in personal computers are used for computation, text editing, multimedia display, and communication over the Internet. Many more microprocessors are part of embedded systems, providing digital control over myriad objects from appliances to automobiles to cellular phones and industrial process control. [2] Fig. 1 below shows the 16 bit microprocessor architecture. ALU Register Array Control Unit R/W Memory, 64K Fig1. 16-bit Microprocessor Architecture The key components as shown in the figure above are the ALU, Registers, and Control Unit. All these components are interfaced with an external memory of 64K 3. FUNCTIONAL DESCRIPTION OF THE HARDWARE TO BE SIMULATED 3.1 CENTRAL PROCESSING UNIT (CPU) CPU controls the operation of the computer.in a microcomputer the CPU is a microprocessor. The CPU fetches the binary coded instructions from memory, decodes the instructions into a series of simple action and carries out these actions in sequence of steps. CPU contains an a address counter or instruction pointer 112
register which holds the address of the next instruction or data item to be fetched from memory, general purpose register, which are used for temporary storage or binary data and circuitry, which generates the control bus signals. Similarly, the bit pattern of an instruction initiates a sequence of clock signals, activates the appropriate logic circuits in the ALU, and performs the task; this is called microprogramming, which is done in the design stage of the microprocessor. 3.2 ARITHMETIC LOGIC UNIT (ALU) Microprocessors tend to have a single module that performs arithmetic operations on integer values. This is because many of the different arithmetic and logical operations can be performed using similar (if not identical) hardware. The component that performs the arithmetic and logical operations is known as the Arithmetic Logic Unit, or ALU. The ALU is one of the most important components in a microprocessor, and is typically the part of the processor that is designed first. Once the ALU is designed, the rest of the microprocessor is implemented to feed operands and control codes to the ALU. 3.3 RAM A RAM memory device has either one or two control inputs. If there is one control input it is often called R/W. This pin selects a read operation or a write operation only if the device is selected by the selection input (CS ). Static RAM memory device retain data for as long as DC power is applied. Because no special action is required to retain stored data, these devices are called as static memory. They are also called volatile memory because they will not retain data without power. Whenever a large capacity memory is required in a microprocessor, the memory subsystem is generally designed using dynamic RAM because there are various advantages of dynamic RAM. 3.4 REGISTER 8086 has a powerful set of registers containing general purpose and special purpose registers. All the registers of 8086 are 16-bit registers. The general purpose registers, can be used either 8-bit registers or 16-bit registers. The general purpose registers are either used for holding the data, variables and intermediate results temporarily or for other purpose like counter or for storing offset address for some particular addressing modes etc. The special purpose registers are used as segment registers, pointers, index registers or as offset storage registers for particular addressing modes. Fig 2 shows register organization of 8086. 3.5 CONTROL UNIT It provides the necessary timing and control signals to all the operations in the microprocessor. It controls the flow of data between microprocessor and memory / peripherals. A clock initiates every operation. Fig2. 8086 Registers 4. SIMULATION RESULTS All the components mentioned and shown in the architecture are taken one by one for analysis. A separate code is written for each of the components i.e. for ALU, RAM, Shift Unit, Control Unit, Registers and CPU. Keeping in mind the data bus and address bus specifications of the microprocessor to be designed some variables, constants and signals pertaining to different data types are declared while writing the VHDL code for the individual components. On successful compilation of the VHDL code separate test bench is generated for each of the component where the stimulus is provided for the input variables and signals. Troubleshooting is done on the VHDL code and the generated test bench if any error has occurred. On successful compilation of both the source code and the testbench the simulation waveforms are obtained which explicitly shows the data flow and control signaling inside the microprocessor. [3] Figure 3, 4, 5, 6, 7 and 8 shows the simulated waveforms for ALU, RAM, Shift Unit, Control Unit, Registers and CPU respectively. 113
Fig. 3 Simulation waveform for ALU Fig. 4Simulation waveform for RAM Fig. 5 Simulation waveform for Shift Unit 114
Fig. 6 Simulation waveform for Control Unit Fig. 7 Simulation waveform for Registers Fig. 7 Simulation waveform for CPU 115
5. CONCLUSION The simulation waveforms show that the microprocessor s all functional units described in the paper are operational in the way they should be. Separate analysis of each component has provided a greater insight to the data flow and the control signaling occurring inside the microprocessor. Also the work shown in this paper lays a strong foundation for the design and implementation of a 32-bit microprocessor and other higher associates. REFERENCES [1] M. Mano and C. Kime, Logic and Computer Design Fundamentals, 2nd Edition, Prentice Hall, 2001. [2] Ronald J. Tocci, Neal S. Widmer and Gregory L.Moss, Digital systems principles and application, Prentice Hall, 2007. [3] Douglas L. Perry, VHDL Programming by Examples, TMH, 200 [4] Davy Genbrugge and LievenEeckhout, Memory Data Flow Modeling in Statistical Simulation for the Efficient Exploration of Microprocessor Design Spaces, IEEE Transactions on Computers, 45(2),2007, 192-205. [5] Fu-Ching Yang, Student Member, IEEE, Wen-Kai Huang, Automatic Verification of External Interrupt Behaviors for Microprocessor Design, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, Vol. 27, NO. 9, September 2008, 1670-1683. [6] Benjamin Stolt, Yonatan Mittlefehldt, Design and Implementation of the POWER6 Microprocessor, IEEE Journal of Solid-State Circuits, Vol. 43, No. 1, January 2008, 21-28. International Journal of Emerging Technologies and Engineering (IJETE) 116