Practical Application for Computer Architecture: How Memory Functions

Instructor: Martin Gibbs

Martin has 16 years experience in Human Resources Information Systems and has a PhD in Information Technology Management. He is an adjunct professor of computer science and computer programming.

In this practical lesson, you will develop a memory and addressing system using Logism. You will build and test the layout for a RAM module with input and output data.

Lesson Overview & Knowledge Required

In this lesson, you will develop a memory and addressing system. In order to successfully complete this lesson, you should have be able to define 2D memory models, stacks, and cache write policies in computer memory. You should be able to describe a multiplexer. Finally, Logism should be installed on your computer and you should be able to create and test designs using this free software.

Program Code

Following are the steps for adding the parts we will need; you will have to connect the pieces in the code application.

Add Memory (RAM)

Logisim provides a folder for memory. Start Logisim, and expand the Memory folder as shown in Figure 1.

Figure 1: Logisim Memory Folder
Logisim Memory Folder

Click on RAM then click anywhere in the palette to drop the memory block. Be sure to click on the block and review the properties as shown in Figure 2. You can click the poke icon (the pointed finger icon) in Logisim and click on each byte in the RAM to change line 0c to a 10 as shown in Figure 2.

Figure 2: Logisim RAM
Logism RAM Change Value


Add three pins and ensure that bit widths match. These pins represent the addresses going in and out of memory.

For an 8x8 memory, each pin will be 8 bits. These are the addresses in the memory. You can click the poke icon (the pointed finger icon) in Logisim and click on each byte in the pin to change to a 0. Click again to flip it to a 1.

Make sure the pins face the correct direction (e.g., the Data Out is facing north; Data In is south; Address faces east). Connect as shown in Figure 3. Labels have been added for readability.

Figure 3: Addresses Added
Pins Buffers and Clock Added

The top-right pin represents the data going in; the bottom-right is the data out. To change the label, click on the pin and change the Label property under the properties label in Logisim. Don't forget to change the 'Output?' setting for Data Out to 'Yes'.

Pins, Buffers, and Clock

Next, you will add 1-bit pins for read/write and to start the flow. Add a clock and attach. Finally, add a controlled buffer and a controlled inverter, available under Gates.

The controlled inverter points north (it has the extra circle above the triangle); while the controlled buffer directs flow on the eastern side of the circuit. You can now click Poke and test out the memory! In Figure 4, we've changed engage to a 1; notice the change to the Data Out value.

Figure 4: Full Memory Engaged
Full Memory Engaged

Code Application

Now it is your turn to use Logisim to modify the memory we have shown in pieces. Your job is to:

  • Change the RAM to 16 x 8. Pay attention here! The address bit width is 8 and the data bit width is 16.

Follow-Up Questions

Answer the following questions based on your knowledge of memory and the code application in this lesson.

To unlock this lesson you must be a Member.
Create your account

Register for a free trial

Are you a student or a teacher?

Unlock Your Education

See for yourself why 30 million people use

Become a member and start learning now.
Become a Member  Back
What teachers are saying about
Free 5-day trial

Earning College Credit

Did you know… We have over 160 college courses that prepare you to earn credit by exam that is accepted by over 1,500 colleges and universities. You can test out of the first two years of college and save thousands off your degree. Anyone can earn credit-by-exam regardless of age or education level.

To learn more, visit our Earning Credit Page

Create an account to start this course today
Try it free for 5 days!
Create An Account