This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
During the design of simple microprocessor, decoder is the hardest to design because decoder needs to put between the control and data path to let control communicate with data path. Therefore, it is easier to design decoder after design control and data path. Besides that, data path and control can be complicated to design and difficult to test each of the components to make sure they work. One of the solutions is using the top down methodology to design the simple microprocessor.
Different between a dedicated digital system and a general purpose programmable design
Dedicated Digital System
Digital systems take limited number when process digital signals. Usually two values are used, the positive voltage to represent one and negative represent zero. Dedicated digital system usually designed to does only one particular purpose type of work with contain devices such as flip-flops, logic gates, counters and shift registers.
General Purpose of Programmable Design
The general purpose it is only programmable logic that work in a module design which can be tested on board in maximum speed, independent of the other modules and then later put them all together. Therefore programmable design will make the designer much easier to done its work. Although, programmable chips are large but they are very fast when testing and it is cheaper than before while software is improving.
I used top down methodology to design simple microprocessor because the top down method is one of the most commonly way to construct or design an application. The construction progress will begin at the top level of the general idea and then works downward according to the application planed and repeat the process until bottom of the application as planned.
The top down method are widely being use because it making a more comprehensible and normally the design is in modeling more towards a business problem, which favors the designers to easily understood the complexity while design an application. But, sometimes it is more productive to work from bottom to top (bottom up method).
First of all, I established microprocessor top level that include control and data path then work downwards from control to program counter, program memory, instruction register and instruction decoder with correct timing. Plan and draw data path in detail that includes register, MUX, shifter, ALU, Accumulator register and output register. After that, search the components that already created in software to achieve my specification. If not create the components manually. Finally, test each of the components makes sure it is work according to my own specification then plans to connect each of the components together piece by piece. According to my plan, I design decoder after finish design control and data path because it will make my work easier to design the decoder.
For hardware testing setup:
1) Use the simulator to make sure the program counter is working for correct cycle of timing before begin testing.
2) Make sure the program memory is loaded with correct code to give the instruction to data path
3) Use the simulator to test the output of instruction register to avoid enters wrong code.
4) Use the simulator check the output of instruction decoder is given the correct output from instruction register.
5) Use the simulator to check each of the components in data path to make sure is work correctly.
6) Finally, use the simulator to test the output to make sure the microprocessor is given the correct answer after given random two input value.
The microprocessor can perform 16 instructions:
When T0 is high, Instruction register will fetch the machine code from ROM. When T1 is high, Decoder instruction will decode the instruction. When T2 is high, Decoder will execute the instruction to active or enable the components that are requires. When T3 is high, the program counter will update or go to the next instruction.
Load A register from input switches
Given machine code is 0000. The A register will enable to store input A.
Load B register from input switches
Given machine code is 0001. The B register will enable to store input B.
Load output register
Given machine code is 1000. The output register will enable to store and give the output value.
Load shifter with A register contents
Given machine code is 0010. The first multiplexer will select A register. Shifter and Load Shifter will enable to load A register contents.
Load shifter with B register contents
Given machine code is 0011. The first multiplexer will select B register. Shifter and Load Shifter will enable to load B register contents.
Given machine code is 0100. Shifter is activate and Left Shifter is low to perform shift right.
Given machine code is 0101. Shifter is activate and Left Shifter is high to perform shift left.
If the shifter flag is 1, add contents of A register into accumulator
Given machine code is 0110. The flag bit register in decoder will detect the flag bit of the shifter. If flag bit is high, the first multiplexer will select A register and the second multiplexer will select the first multiplexer to load input A in to ALU. After that, ALU will perform additional of input A and accumulator register then load into accumulator register. If flag bit is low, the instruction will be ignore.
If the shifter flag is 1, add contents of shifter into accumulator
Given machine code is 0111. The flag bit register in decoder will detect the flag bit of the shifter. If flag bit is high, the second multiplexer will select the output value of shifter in to ALU. After that, ALU will perform additional of output of shifter and accumulator register then load into accumulator register. If flag bit is low, the instruction will be ignore.
Add the ALU inputs
Given machine code is 1001. The ALU will perform Add.
Subtract the ALU inputs
Given machine code is 1010. The ALU will perform Subtract.
Bitwise invert an ALU input
Given machine code is 1011. The ALU will perform invert.
Bitwise AND the ALU inputs
Given machine code is 1100. The ALU will perform AND.
Bitwise OR the ALU inputs
Given machine code is 1101. The ALU will perform OR.
Bitwise XOR the ALU inputs
Given machine code is 1110. The ALU will perform XOR.
Clear the contents of the accumulator
Given machine code is 1111. The instruction will reset the accumulator register.
Discussion and conclusion
Assume that clock cycle is correct, make sure that there are no undetermined values. If there are undetermined values, debug from final output bus to the beginning of output bus because it is easier to determine the error by using these method. Check the instruction code is given the correct instruction to data path. If the final output given the wrong value, make sure there are no logical error (usually the problems from the decoder).
According to the Spartan-3 Starter Kit Board User Guide, clock oscillator of the 50MHz is mounted on the bottom side of the board. So, the maximum speed of operation is 200MHz. Furthermore, it is depends on dedicated 50 MHz Epson SG-8002JF series clock oscillator source.