From 58e86384e7f19cc853094ef2cb85540f404154a3 Mon Sep 17 00:00:00 2001 From: Olof Kindgren Date: Mon, 17 Aug 2020 10:37:41 +0200 Subject: [PATCH] Update serv_bufreg documentation --- doc/index.rst | 4 +++- doc/serv_bufreg_int.png | Bin 0 -> 22781 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 doc/serv_bufreg_int.png diff --git a/doc/index.rst b/doc/index.rst index a277464..951dddd 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -59,7 +59,9 @@ serv_bufreg .. image:: serv_bufreg.png -For two-stage operations, serv_bufreg holds data between stages. This data can be the effective address for branches or load/stores or data to be shifted for shift ops. It has a serial output for streaming out results during stage two and a parallel output that forms the dbus address. serv_bufreg also keeps track of the two lsb when calculating adresses. This is used to check for alignment errors +For two-stage operations, serv_bufreg holds data between stages. This data can be the effective address for branches or load/stores or data to be shifted for shift ops. It has a serial output for streaming out results during stage two and a parallel output that forms the dbus address. serv_bufreg also keeps track of the two lsb when calculating adresses. This is used to check for alignment errors. In order to support these different modes, the input to the shift register can come from rs1, the immediate (imm), rs1+imm or looped back from the shift register output. The latter is used for shift operations. For some operations, the LSB of the immediate is cleared before written to the shift register. bufreg also latches and exposes the two LSB bits of the data written to the shift register. These are used to check data/address alignment issues early. + +.. image:: serv_bufreg_int.png serv_csr ^^^^^^^^ diff --git a/doc/serv_bufreg_int.png b/doc/serv_bufreg_int.png new file mode 100644 index 0000000000000000000000000000000000000000..972aac110fccb10c6681f7fdd8931d06f2b172ae GIT binary patch literal 22781 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 QD1_|U^|L{?zTKsN19wPpPyhe` literal 0 HcmV?d00001