XL16
Advanced
16-bit Microprocessor
Registers
There are various types of registers within the XL16 , the General Purpose Registers (GPR), the Memory Address
Register(MAR), the Memory Data Register(MDR), the Immediate Register, the
Instruction Register, the Program Counter (PC) and the Processor Status
Register(PSR). You can find information
on the PC on the PC page and the PSR on the ALU page. Below is a
schematic of the GPR.
The GPR is composed of two RAM 16X8’s as provided on
the Xilinx Xcess boards. These are
single port write and double port read registers holding 16-8bit values. Using two allows us to create a register
file that holds 16-16 bit words. Using
double read ports allows us to read both register values simultaneously on
register to register operations. Due to
the manner that the CR16 instruction set is written the addresses to the
registers hard wired to the Instruction Register, as the source and destination
bits are the same across all instructions.
The Instruction Register holds the instruction
word. The Immediate Register holds
medium (16 bit) immediate values. The Memory Address Register holds the address
of the memory being accessed. These are
simply 16-bit Flip Flops placed in the Datapath. Their Clock Enable lines are controlled by the VHDL Finite State
Machine which decides when these registers will be updated. The Memory Data Register is part of the Read
Output Decode in the Memory section.
![]()
Created
with Microsoft Word