首页 >
> 详细

TCSS 372 Winter 2020 HW1 Due: By midnight, Friday Jan. 17

(or with 10% late penalty, by midnight Saturday Jan. 18)

Include your last name in your file names. You should turn in a zip file called SMITH.zip which contains

MULT_SMITH.circ and DIV_SMITH.circ. (but use your own name instead of SMITH!)

1. Use Logisim to implement the simple multiplication circuit shown in Figure 3.3 but instead of

multiplying two 32 bits numbers to produce a 64 bit result, your circuit should multiply two 16

bits numbers to produce a 32 bit result.

You must clearly label the product, multiplicand, and multiplier registers. The multiplier register

should hold 16 bits and the other two should hold 32bits . To test your circuit, manually put a

multiplicand of at most 16 bits in the lower half of the 32 bit multiplicand register, put a value in

the multiplier register and set the product register to 0. Your circuit does not have to stop.

After all 1 bits disappear from the multiplier, the product register will no longer change and

should contain the correct result.

The algorithm repeats two steps, addition and shifting. Keep these steps separate by using the

clock to increment a 1 bit counter register. The counter register will have values 0,1,0,1,0,1

etc. as the clock ticks. Use the 0 to trigger the addition and the 1 to trigger the shifting.

Of course, you may not use the Logisim multiplier component.

2. A starting circuit is provided for this problem. Use Logisim to complete the starting circuit so

that it implements the simple division algorithm specified in Figures 3.8 and 3.9. The starting

circuit has labeled registers for the quotient, remainder, and divisor. The circuit also has a

register on the left side which is like a program counter. That register increases by one on each

clock cycle. The ROM is designed to output the values 001, 010, 100 exactly 17 times. You

must use these signals to trigger the three different stages of the division algorithm:

State 001: subtract the divisor from the remainder

State 010: if needed, add the divisor back into the remainder

and add a 1 or 0 bit to the right end of quotient

State 100: shift the divisor right by one bit

Notice that the PC-like register updates on the first half of the clock cycle, but all the other

registers update on the second half of the cycle. YOU MAY NOT CHANGE THIS!

YOU MAY NOT ALTER OR REMOVE THE COMPONENTS OF THE STARTING CIRCUIT. YOU MUST

USE THEM AS IS TO COMPLETE THE DIVIDER!

Naturally, you may not use the divider component provided by Logisim.

Strategy and hints:

The simplest parts are subtracting the divisor from the remainder and shifting the divisor. Try

them first. When you shift the quotient left, you will need to add either a 0 or 1 to the right

end. This choice will be based on whether the remainder is negative or not. A mux will be

useful.

Finding out whether the remainder is negative is a key step. The easiest way to do this is to use

a Splitter. Once you have split the remainder into 32 bits, you can examine the high end bit to

see if it is negative or not.

When you're working with Logisim, you should be sure that the option "Add noise to component

delays" is turned off (no check mark). You can find it by going to the Project menu and choosing

"Options". It will probably stay unchecked once you set it, but you may want to have a second look if

your circuit behaves oddly.

If you find a component acting strangely, check that you haven't accidentally connected a couple ports

together.

联系我们

- QQ：99515681
- 邮箱：99515681@qq.com
- 工作时间：8:00-23:00
- 微信：codehelp

- 代写dataset留学生作业、代做c++,Java，Python程序语言作业 2020-04-01
- Comp 8042作业代做、代写c/C++程序语言作业、代做g++课程设计作 2020-04-01
- 代写cs304留学生作业、代做c++编程设计作业、代写c/C++课程作业、D 2020-04-01
- Cs544留学生作业代做、Programming作业代写、R编程设计作业代做 2020-04-01
- Csc73010作业代写、代做programming作业、Java语言作业代 2020-04-01
- Logistic Regression作业代做、代写java，Python语 2020-04-01
- Envx3002作业代写、代做statistics课程作业、代做r语言作业、 2020-03-31
- 代做cs2034留学生作业、代写data Analytics作业、Pytho 2020-03-31
- Csi3131作业代做、Java编程设计作业调试、Java语言作业代做、代写 2020-03-31
- Webcms3作业代写、代做data Service作业、C/C++语言作业 2020-03-31
- Stat7017 Final Project 2020-03-29
- Cs3214 Spring 2020 Project 1 - “Extens 2020-03-29
- Co3090/Co7090 Distributed Systems And ... 2020-03-29
- Hw2: Sql 2020-03-29
- Hw1: 5 Points Entity-Relational (Er) 2020-03-29
- Math 104A Homework #3 2020-03-29
- Comp 250 Assignment 2 2020-03-29
- Cs 570课程作业代写、Program作业代做、C++语言作业代写、代做j 2020-03-29
- Comp-424作业代做、代写intelligence作业、Python，C 2020-03-29
- Database作业代做、代写cap Theorem作业、代写java程序语 2020-03-29