Question: COMP 4 3 0 0 Lab Exercise Three Objective This lab develops some remaining datapath building blocks for the SimpleRISC processor . It will be
COMP
Lab Exercise Three
Objective
This lab develops some remaining datapath building blocks for the SimpleRISC
processor It will be combined with the control logic to make a working cpu in Lab
and
Instructions
Develop VHDL for the following components. You should define an architecture for
each of the entities given below. You should test each entity by developing simulation
files for the entity. Your architecture should implement the functionality described in the
text for each entity.
You should use the types from the dlxtypes and bvarithmetic packages you used in
lab
bit Singlevalue Register. This will be used everywhere in the chip that is there will
be multiple instances of it that a temporary value should be stored. The propagation
delay for the unit should be ns
entity dlxregister is
portinval: in dlxword; clock: in bit; outval: out
dlxword;
end entity dlxregister;
The register should be sensitive to all inputs. If clock is one, the value present
at inval should be copied to outval When clock goes to zero, the output
value is frozen until clock goes high again.
Register File
This is the unit where there numbered registers R are found. The propagation delay
through the register file should be nanoseconds for a read operation write has
no output, but it is specified that results of write wont be asked for until nS have
passed. You dont have to do anything about that The regnumber is a fivebit
number which specifies which register is being read or written. The register file can
do one read or one write per clock cycle. If a read is being done readnotwrite is
the datain input is ignored, and the value in register regnumber is copied to the
dataout port. If a write is being done readnotwrite is the value present on
datain is copied into register number regnumber. The dataout port does not have
a meaningful value for a write.
The entity declaration should look like:
entity regfile is
portdatain : in dlxword; readnotwrite, clock: in bit; dataout: out
dlxword; regnumber : in registerindex;
end entity regfile;
The entity should be implemented with an architecture consisting of a single VHDL
process. You should use an array variable of dlxwords to store the register
values, something like
type regtype is array to of dlxword;
variable registers : regtype;
The multiplexer copies the input named like the value of the which input to the output
that is if which copy input to the output; if which copy input to the output
Twoway multiplexer
entity mux is
genericpropdelay : Time : ns;
port inputinput : in dlxword; which: in bit; output: out dlxword;
end entity mux;
PC Incrementer
This unit increments the bit unsigned value at its input port when clock transitions to
one. Dont worry about behavior when it overflows; it can just go back to zero.
entity pcplusone is
genericpropdelay: Time : ns;
port input: in dlxword; clock: in bit; output: out dlxword;
end entity pcplusone;
Deliverables
Please turn in the following things for this lab:
You VHDL code.
Your simulation test script. Do not exhaustively test these designs since they take
lots of input bits, but do test a reasonable number of things. There is NO need to
develop a testbench, just a file of commands to execute with the DO command in
the transcript window. If you would prefer to do a testbench, that is fine, be sure
to include the code for it in your submission
Transcriptsscreenshots of tests running your simulations. You cannot test
exhaustively, but you should demonstrate that all your modules work.
Please turn in all files on Canvas. If I have questions, I may ask you to schedule
a time to demo your code, if I can't figure out how something works by reading
the code.
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
