Modify the single-cycle datapath by implementing the push instruction. The instr
ID: 3854113 • Letter: M
Question
Modify the single-cycle datapath by implementing the push instruction. The instruction below pushes register t0 on the stack. Notice that the rs field encodes register sp and that the immediate value is equal to 4.
The stack in MIPS is a full descending stack. Therefore, in the push operation, the register is written to memory address (sp-4), then the value of (sp-4) is written to register sp.
push $t0
unique
sp
t0
4
opcode
rs
rt
immediate
a) Explain the functional form of the instruction based on the register names.
b) Explain the functional form based on the instruction fields.
c) Draw the changes on the datapath diagram and highlight them so they're visible
d) Give the values of the control signals
unique
sp
t0
4
opcode
rs
rt
immediate
Explanation / Answer
Core components
Core components can be used with all files (audio, video, tinkerforge, etc.) in the graph editor.
core:container
Component that can contain other components. Use core|audio|video:container:in|out to add ports.
core:custom
Base for core (not audio, video, etc.) components. No ports or controls by default. See coding guide.
core:property
Stores a property, and sends it from its output port whenever a new value is received. Also sends its value when the root container starts (eg. audio starts playing).
core:start-trigger
Output a signal (empty value) when the root container starts.
core:tracker
Tracker sequencing component, supporting 8 channels and multiple patterns. The trigger port would normally be connected to a core:timing:timer or audio:clock component.
Use Edit patterns from the component popup menu to open the pattern table editor. Use Save (CTRL-S) to update the component.
core:variable
Stores a value and sends it whenever triggered. Unlike core:property it does not automatically send on each update.
core:array:iterator
Loops through an array of arguments, jumping to the next each time it is triggered. Can be set to jump a (random) number of elements ahead, determined by min-skip and max-skip. Can loop continuously forwards, or ping-pong back and forth through the array.
If the array is empty, an empty string will be sent instead.
core:array:random
Stores an array (list) of arguments, and selects and sends one randomly when triggered.
If the array is empty, an empty string will be sent instead.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.