User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
labs:registerfile [2019/05/24 10:51]
jgoeders
labs:registerfile [2019/07/17 15:14] (current)
jgoeders [Final Pass Off]
Line 42: Line 42:
 For the body of this module, instance four FDCE flip-flops and complete the following steps. For the body of this module, instance four FDCE flip-flops and complete the following steps.
   * Attach the clock of each flip flop, **C**, to the 4-bit register module'​s **clk** signal.   * Attach the clock of each flip flop, **C**, to the 4-bit register module'​s **clk** signal.
 +  * Attach the asynchronous clear of each flip flop, **CLR**, to the 4-bit register module'​s **reset** signal.
   * Attach the 4-bit register'​s **we** signal to the **ce** input of each flip-flop.   * Attach the 4-bit register'​s **we** signal to the **ce** input of each flip-flop.
   * Attach a different bit of **datain** to the **D** input of each FDCE flip-flop.   * Attach a different bit of **datain** to the **D** input of each FDCE flip-flop.
Line 52: Line 53:
  
 <code TCL> <code TCL>
 +restart
 # run for 100ns so the FDCE can properly reset # run for 100ns so the FDCE can properly reset
 run 100 ns run 100 ns
 +
 # add oscillating clock input # add oscillating clock input
 add_force clk {0 0} {1 5ns} -repeat_every 10ns add_force clk {0 0} {1 5ns} -repeat_every 10ns
 +
 +# clear value
 +add_force reset 1
 +run 10 ns
 +add_force reset 0
 +
 # initialize signals # initialize signals
 add_force we 0 add_force we 0
Line 69: Line 78:
 </​code>​ </​code>​
  
- 
-<color red>​Provide a copy of your 4-bit register SystemVerilog code in your laboratory report.</​color>​ 
  
 **Exercise 1 Pass-off:** Show a TA your code for your register4 module and your simulation waveform.\\ \\  **Exercise 1 Pass-off:** Show a TA your code for your register4 module and your simulation waveform.\\ \\ 
Line 81: Line 88:
 ^ Port Name ^ Direction ^ Width ^ Function ^ ^ Port Name ^ Direction ^ Width ^ Function ^
 | clk | Input | 1 | Clock input | | clk | Input | 1 | Clock input |
 +| reset | Input | 1 | Active-high reset, clears all registers |
 | datain | Input | 4 | Data to be loaded into register file | | datain | Input | 4 | Data to be loaded into register file |
 | we | Input | 1 | Write enable | | we | Input | 1 | Write enable |
Line 92: Line 100:
   - Create the **Write Decoder** that generates a unique register write signal for each of the eight registers. As described in the reading, this decoder will decode write address (**waddr**) and use the **we** signal to generate a write enable for each register.   - Create the **Write Decoder** that generates a unique register write signal for each of the eight registers. As described in the reading, this decoder will decode write address (**waddr**) and use the **we** signal to generate a write enable for each register.
   - Instance eight of the 4-bit registers that you created in the previous exercise. These eight registers form the core of the register file module.   - Instance eight of the 4-bit registers that you created in the previous exercise. These eight registers form the core of the register file module.
-  - Attach the clock input to all eight registers and the **datain** signal to the input to each register.+  - Attach the clock and reset inputs ​to all eight registers and the **datain** signal to the input to each register.
   - Create two 8:1 multiplixers for the read ports.   - Create two 8:1 multiplixers for the read ports.
  
Line 102: Line 110:
  
 <color red>​Provide a copy of your TCL script you used to simulate the register file.</​color>​ <color red>​Provide a copy of your TCL script you used to simulate the register file.</​color>​
- 
-<color red>​Provide a copy of your register file SystemVerilog code in your laboratory report.</​color>​ 
  
 **Exercise 2 Pass-off:** Show a TA your code for your register8x4 module and your simulation waveform. Show that your tcl file meets the requirements listed above.\\ \\  **Exercise 2 Pass-off:** Show a TA your code for your register8x4 module and your simulation waveform. Show that your tcl file meets the requirements listed above.\\ \\ 
Line 114: Line 120:
 ^ Port Name ^ Direction ^ Width ^ Function ^ ^ Port Name ^ Direction ^ Width ^ Function ^
 | clk | Input | 1 | Clock input | | clk | Input | 1 | Clock input |
 +| CPU_RESETN | Input | 1 | Active-low reset, clears all registers |
 | sw | Input | 10 | Switches for address input and data input | | sw | Input | 10 | Switches for address input and data input |
 | btnc | Input | 1 | Write to register file | | btnc | Input | 1 | Write to register file |
Line 125: Line 132:
 Instance your register_file_8x4 module you created in the previous exercise and complete the following. Instance your register_file_8x4 module you created in the previous exercise and complete the following.
   * Attach the top-level clock input to the clock port of the register file.   * Attach the top-level clock input to the clock port of the register file.
 +  * Attach the top-level reset input (CPU_RESETN) to the ''​reset''​ port of the register file.  Note: The CPU_RESETN button is active-low (0 when pressed), so you will want to connect the inverted signal (~CPU_RESETN) to the register file.
   * Attach the **btnc** input to the **we** input of the register file (the center button will be used to write new values into the register file).   * Attach the **btnc** input to the **we** input of the register file (the center button will be used to write new values into the register file).
   * Attach **sw[3:0]** to the **datain** input of the register file. The lower four switches will be used to set the data that is written into the register file.   * Attach **sw[3:0]** to the **datain** input of the register file. The lower four switches will be used to set the data that is written into the register file.
Line 143: Line 151:
  
 <color red>Copy the console output for your testbench simulation and add it to your laboratory report.</​color>​ <color red>Copy the console output for your testbench simulation and add it to your laboratory report.</​color>​
- 
-<color red>​Submit your top-level SystemVerilog code in your laboratory report.</​color>​ 
  
 **Exercise 3 Pass-off:** Show a TA your code for your top level module and your testbench output.\\ \\  **Exercise 3 Pass-off:** Show a TA your code for your top level module and your testbench output.\\ \\ 
Line 175: Line 181:
 <color red>​Provide any suggestions for improving this lab in the future.</​color>​ <color red>​Provide any suggestions for improving this lab in the future.</​color>​
  
 +<color red>​Submit your SystemVerilog modules using the code submission on Learning Suite.</​color>​ (Make sure your SystemVerilog conforms to the lab SystemVerilog coding standards).
 ===== Personal Exploration ===== ===== Personal Exploration =====