首页 > > 详细

辅导 Homework 3 Make a CPU调试R语言程序

Homework 3

Make a CPU

Your task is to build an 8-bit CPU / computer in logisim, which runs an instruction set of your design. Your instruction set should implement (at least) the following instructions:

● AND                                     ● beq (best to save for last)

● OR                                       ● bne (best to save for last)

●  add                                     ● j

● addi (easiest to do first!)         ●  lw

● sub                                       ● sw

●  slt                                        no-op

NOR

This instruction set is very short (compared to x86 for example, which has hundreds of instructions). It is also very inefficient for most things, but it can be considered a “complete” CPU. You are free to use any of the things we’ve built in class, but there are several Logisim items you should avoid using (e.g., the divider).  In short, you should be able to build the entire computer using only the components listed below.  If you find that you want to use something not on this list, please feel free to ask me about it.

●  Register                                     ● Bit Extender (set to sign-extend)

● ALU                                            ● Multiplexers / Demultiplexer

● Memory                                      ● Button & LED

RAM for data                      ● 7 Logical  Gates  (AND,  OR,  NOT,  NAND,  NOR, XOR, XNOR)

ROM for instructions

●  Clock                                         ● Anything from the wiring”  folder  of components in Logisim

Splitter

Grading

Your computer will be graded using this program.

#  Hash-tag  (pound-sign)  indicates  a  comment

0 no-op                      #  do  nothing

1  addi  $r1  $r2  3     #  r1:3

2  addi  $r2  $r0  2     #  r2:2

3  add  $r3  $r1  $r2   #  r1:3   r2:2   r3:5

4  sub  $r4  $r2  $r1

5  and  $r5  $r1  $r2

6  or  $r6  $r1  $r2

7  slt  $r7  $r2  $r3

8 nor  $r3  $r2  $r3

9  sw  $r3  1($r1)       #  mem[3+1]:0xf8

10  lw  $r4  2($r2)     #  r4:  0xf8

11 bne  $r2  $r3  13   #  goto  instruction  13

12  addi  $r1,  $r0,  0x0D  #  should  be  skipped!

13 beq  $r2,  $r5  15

14  addi  $r2,  $r0,  0x0E

15  j  1                           #  goto  line  1

You will need to translate the above program from my pseudo-assembly, to machine language for your computer / cpu / ISA. Your grade will be based primarily on how many of the instructions function correctly in your computer.  Specifically, each successive instruction that your computer executes will be worth about one point out of thirteen.

Road Map

We’ve built a few simple machines in class.  The computer will be like a more versatile version of those machines.  Over the next two weeks, I will give lectures that will help explain how to go about this process. I highly recommend that you start working early, so that you can bring questions to class.  I will have class time every day until the project is finished devoted to answering questions in detail.  Here is a high-level outline you should take in building your computer in logisim.

1. Build and test a working 8-bit ALU.

2.  Build and test a working register file.

3.  Build a program counter and use its value to address the program memory.

4.  Design your instruction set (loosely) on paper or using a spreadsheet program.

5.  Split the output of each instruction into components based on your instruction format in logisim.

6. Pick one instruction and wire it up completely to an ALU, register file, and the main memory (I recommend starting with r-type instructions).

● Make sure the “Asynchronous read” property is set to “Yes” on the RAM

● Make sure the “Trigger” property is set to “Falling Edge” on the RAM

7. Add instructions by implementing control lines (in (a) control module(s)).

8.  Test the machine as you add each instruction. Write a simple program and make sure it does what you think it should.

9.  Translate and code the grading program into your computer ROM in machine code, test it.

10. Fix anything you find that’s wrong!

11.  Submit.

Submitting

Please submit to me  (a) the logisim file containing your CPU project  (and all necessary circuits) and (b) the binary representation of the given program.  Please name your computer creatively, for example I called mine Holly . circ





联系我们
  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp
热点标签

联系我们 - QQ: 99515681 微信:codinghelp
程序辅导网!