Highlights
1. In the first part of the project, you are to model a RAM and a simple memory controller in Verilog. The depth of the RAM is 256. Each data line in RAM is 32 bits (4 bytes) and the memory controller reads and writes all 4 bytes at the same time.
Your memory controller sits between the CPU and the RAM. It receives read and write requests from CPU, and does a complete handshake with it. Then it sends the read and write requests to the RAM. Once the data is read from or written to the RAM, it signals the completion of the operation along with data (in case of a memory read) with a READY signal to CPU.
Communication with CPU:
During a write operation, CPU places the memory address to write to on Addr_in and the data to be written on Data_in ports, then RW is de-asserted (RW = 0) and Valid is asserted (Valid = 1). The memory controller deasserts Ready, performs any address calculations and communicates with RAM through appropriate signals write the data to the memory. It takes 3 cycles for the write to be completed. So, after 4 cycles the operation is complete, so the memory controller asserts Ready to indicate to CPU that the write operation is done. At this time CPU deasserts Valid, then it can initiate a new read/write from/to the memory.
During a read operation, CPU places the memory address to read from on Addr_in port, then RW is asserted (RW = 1) and Valid is asserted (Valid = 1). The memory controller deasserts Ready, performs any address calculations and communicates with RAM through appropriate signals to read data from the memory. It takes 3 cycles for the read to be completed. So, after 4 cycles, the memory controller asserts Ready to indicate to CPU that the read is complete and data is ready on Data_in for CPU to read in case of a read. At this time CPU deasserts Valid, then it can initiate a new read/write from/to the memory.
Communication with RAM:
During a write operation, the memory controller reads the memory address to write to and the data to be written from the CPU interface and places them on Addr and Data ports, then it asserts rdEn, and keeps wrEn de-asserted (rdEn = 1 and wrEn = 0). The write operation takes 3 cycles to complete. Hence the memory controller waits 4 cycles before asserting Ready to indicate this to CPU. The memory controller needs to keeps track of write delays to ensure correct operation of the design.
During a read operation, the memory controller reads the memory address to read from rom CPU interface and places it on Addr port, then it asserts wrEn, and keeps rdEn de-asserted (wrEn = 1 and rdEn = 0). The read operation takes 3 cycles to complete. Hence the memory controller waits 4 cycles before reading the data from the RAM interface (Data) and writing it to the CPU interface (Data_in), then asserting Ready to indicate to CPU that data is ready. The memory controller needs to keeps track of reading delays to ensure the correct operation of the design.
You are to write a Verilog model for implementing the RAM and the Memory Controller (40%), then write the testbench that acts as the CPU. To test your memory controller, you need to write several values to the same or different addresses, then read from these addresses (20%) in different order. You need to submit any block diagrams, state transition diagrams and explanations in your report. Your Verilog code should include a header file with all the necessary information and be well commented. You need to provide waveforms that show your design works correctly. (10%)
2. You are to expand the design of your ALU. For this phase of the project, your ALU must be able to perform more arithmetic and logic operations of the β microprocessor including the multiplication and division. (10%).
3. You are to complete the design of the data-path of the CPU, buy adding a 32-bit Instruction register (IR), a 32-bit Memory Data Register (MDR) and a 10-bit Memory Address Register (MAR), then making interconnections to complete the design of the data-path. (20%)
The IR holds the instruction to be decoded with the fields for Opcode, up to 2 source operands, one destination operand, or a small constant.
The two registers MDR and MAR provide the interface to the memory controller.
This EE435: IT Assignment has been solved by our IT Experts at My Uni Paper. Our Assignment Writing Experts are efficient to provide a fresh solution to this question. We are serving more than 10000+ Students in Australia, UK & US by helping them to score HD in their academics. Our Experts are well trained to follow all marking rubrics & referencing style.
Be it a used or new solution, the quality of the work submitted by our assignment experts remains unhampered. You may continue to expect the same or even better quality with the used and new assignment solution files respectively. There’s one thing to be noticed that you could choose one between the two and acquire an HD either way. You could choose a new assignment solution file to get yourself an exclusive, plagiarism (with free Turnitin file), expert quality assignment or order an old solution file that was considered worthy of the highest distinction.
© Copyright 2026 My Uni Papers – Student Hustle Made Hassle Free. All rights reserved.