- Pre-Knowledge
In order to complete this lab you will need an understanding what a register is.
Pre-Lab
Type out a short paragraph 100 words, about what register file is. You can use any source.
Objective
In this lab we learn to design a register file containing 16 bit registers. A register file is a group of registers of a certain bit size. We will then hook up the register file to our 16 bit ALU (designed in Lab04).
Lab Execution
Guidelines: For each lab there will be a report. This report will consist of a text that follows the report guideline, your code file, and screenshots of your working code. These files should be placed together in a single file, printed, and then turned into your TA. Your lab report is due the week after you finish lab. The lab is composed of a report worth 70 points (20 from the report and 50 for the vhdl files) and possibly a pre-lab worth 30 points. On labs that take place over multiple weeks there will be only a single lab report due the week after the lab is completed. Lab reports suffer a 10% per day overall penalty for late work. Tools: Xilinx ISE. If you have forgotten how to use ISE please review lab 1. VHDL Programming instructions: For this lab your first goal is to create a register file and then connect the register file with the 16 bit ALU you constructed last week. To assist you we have provided the entity of the register as well as some slides detailing how registers work and how you might code one. Your entity should be as follows : -------------------------------------------------------------------------------------------
Entity RegisterFile is port( clk: in std_logic;
- - positive edge triggered clock
clear: in std_logic;
- - asynchronous reset
a_addr: in std_logic_vector ( 3 downto 0);
- - input data port
a_data: in std_logic_vector (15 downto 0);
- - register select for input a
load: in std_logic;
- - load enable
b_addr: in std_logic_vector ( 3 downto 0);
- - register select for output b
c_addr: in std_logic_vector ( 3 downto 0);
- - register select for output c
b_data: out std_logic_vector (15 downto 0);
- - first output data port
c_data: out std_logic_vector (15 downto 0)
- - second output data port
); End RegisterFile;
Code ends here : -------------------------------------------------------------------------------------------