Search for question
Question

ts

40

Here is a block diagram for the register file:

32X64

WP

Register File

Ra

Rb

Rw

Bus W

Cik

Bus A

Upload Choose a File

Bus B

RegWr

Save your new register file as RegisterFile.v.

Test your code against the provided testbench to make sure it is working (If you are not working on

Vivado, you may need include "RegisterFile.v" command).

Demo for your TA.

Attach a zip/tar file containing your completed module along with a screenshot of the waveform.

registerfile tb.v↓/n2023

cements

5

ents

ons

ro 1.3

40

Question 1

Implement a 32x64 register file (32 registers; each register is 64-bit wide).

Below is a specification of the register file:

• Inputs Ra and Rb are read register indices. Input Ra indexes the register whose value is on BusA,

and input Rb indexes the register whose value is on BusB.

• Input Rw is the write register index.

• When RegWr is high, the data on Bus W is stored in the register specified by Rw, on the

negative (falling) clock edge.

Register reading should occur after the register write (on the negative clock edge), but before

the positive clock edge.

• Register 31 must always read zero, even if it has not been written to.

• The Register File module should have the following interface:

●.

module RegisterFile (BusA, BusB, BusW, RA, RB, RW, RegWr, Clk);

output [63:0] BUSA;

output [63:0] BusB;

input [63:0] BusW;

input [4:0] RA;

input [4:0] RB;

input [4:0] RW;

input RegWr;

input clk;

reg [63:0] registers [31:0];

Here is a block diagram for the register file:

Ra

Bb

20 pts

-----

Bus A

Fig: 1

Fig: 2