Memory Lab Simulation Software Guide

This guide briefly explains how to use the software program that you will be using to complete the Memory Lab. The program simulates the operation of the SRAM memory device that is located on the DE2 board, and allows you to observe the results of your actions in real time. It only simulates the first 16 memory locations out of the 256 available on the SRAM chip.

Screenshot image
Figure 1: A sample screenshot from the Memory Lab program

Program Elements Description

  1. These are the control signal sliders. Any one of the control signals can be changed at any time. If the CE (Chip Enable) signal is asserted, changes to any other input signals will produce immediate results. The control signals are active-low, and therefore they all begin in the high position initially. For more information about the control signals, consult the device datasheet.
  2. These are the address signals. Using these 4 sliders, you can input 16 different addresses. Each address defines a memory location. For more information about the specific nature of each memory location, consult the device datasheet. As you move the sliders, the equivalent address will be displayed in hexadecimal notation in the "Address" field under the sliders.
  3. These are the input data signals. They are connected to the 16 data lines of the memory device, and represent the data to be written in the next write operation. These signals are ignored during read operations.
  4. This field changes as the input data signal sliders are moved, and shows the data to be written in the next write operation in hexadecimal format. Double-clicking on this field will open a dialog box that allows entering the data as a hexadecimal value, as an alternative to moving the 16 data input sliders.
  5. These bars represent the output data that was read from the memory device in the most recent read operation. The data represented by the bars remains unchanged until the next read operation; therefore, you can think of them as displaying the contents of a register that is connected to the 16 data lines of the memory device, and is enabled only during read operations.
  6. This field displays the data from the last read operation (represented by the bars above it), in hexadecimal format. Double-clicking on this field will copy its contents to the data input field and change the position of the 16 sliders accordingly. It can be used to copy data from one memory location to another.
  7. This vertical column displays the addresses of the memory contents panel. They are in hexadecimal format, and each row contains two memory locations (hence they increase by 2 each time).
  8. This portion of the memory contents panel displays the actual contents of all the 16 memory locations. On each row, the leftmost column refers to the address displayed on its left, and the rightmost column refers to the address immediately following it. All displayed data is in hexadecimal format.
  9. This section of the data representation panel allows you to select whether to interpret data (starting from the "starting address") as big endian or little endian. For a particular "starting address", the word at that address and the one immediately following it (if there is one) are read. The endianness choice determines which one represents the high word, and which one represents the low word.
  10. This field shows how the data read from the specified address is interpreted, depending on the particular data type in question. To select an address, simply change the address signals (but make sure that the CE signal is high to prevent changes from being made). The endianness selection above determines the order of the data that was read. Selecting the last address only displays data types that use one word, because two words are not available.
  11. This is the status bar. Hovering your mouse over many of the labels and some of the controls in the program will cause the status bar to display some extra information about them.

Notes

Good luck!