Skip to content

Commit 8cb45cb

Browse files
committed
[docs] update CFU section
1 parent c7d52d3 commit 8cb45cb

File tree

1 file changed

+6
-34
lines changed

1 file changed

+6
-34
lines changed

docs/datasheet/cpu_cfu.adoc

Lines changed: 6 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ program memory requirements when implemented entirely in software. Some potentia
1010
use-cases might include:
1111

1212
* **AI:** sub-word / vertical vector/SIMD operations like processing all four sub-bytes of a 32-bit data word individually
13-
* **Cryptographic:** bit substitution and permutation
13+
* **Cryptography:** bit substitution and permutation
1414
* **Communication:** data conversions like binary to gray-code
1515
* **Arithmetic:** BCD (binary-coded decimal) operations; multiply-add operations; shift-and-add algorithms like CORDIC or BKM
1616
* **Image processing:** look-up-tables for color space transformations
1717
* implementing instructions from **other RISC-V ISA extensions** that are not yet supported by NEORV32
1818
19-
The NEORV32 CFU supports two different instruction formats (R3-type and R4-type; see <<_cfu_instruction_formats>>) and also
20-
allows to implement up to 4 CFU-internal custom control and status registers (see <<_cfu_control_and_status_registers_cfu_csrs>>).
19+
The NEORV32 CFU supports two different instruction formats: RISC-V R3-type (up to two source operands) and RISC-V R4-type
20+
(up to three source operands) instructions. See <<_cfu_instruction_formats>> for more information.
2121

2222
.CFU Complexity
2323
[NOTE]
@@ -30,7 +30,7 @@ https://stnolting.github.io/neorv32/ug/#_adding_custom_hardware_modules[Adding C
3030
.Default CFU Hardware Example
3131
[TIP]
3232
The default CFU module (`rtl/core/neorv32_cpu_cp_cfu.vhd`) implements the _Extended Tiny Encryption Algorithm (XTEA)_
33-
as "real world" application example.
33+
as application example.
3434

3535

3636
:sectnums:
@@ -45,8 +45,8 @@ The NEORV32 CFU utilizes these two opcodes to support user-defined **R3-type** i
4545
1 destination register) and **R4-type** instructions (3 source registers, 1 destination register). Both instruction
4646
formats are compliant to the RISC-V specification.
4747

48-
* `custom-0`: `0001011` RISC-V standard, used for NEORV32 <<_cfu_r3_type_instructions>> (3x register addresses)
49-
* `custom-1`: `0101011` RISC-V standard, used for NEORV32 <<_cfu_r4_type_instructions>> (4x register addresses)
48+
* `custom-0`: `0001011` RISC-V standard, used for NEORV32 <<_cfu_r3_type_instructions>> (3 register addresses)
49+
* `custom-1`: `0101011` RISC-V standard, used for NEORV32 <<_cfu_r4_type_instructions>> (4 register addresses)
5050
5151
[TIP]
5252
The provided instructions formats are _predefined_ to allow an easy integration framework.
@@ -184,34 +184,6 @@ There is an example program for the CFU, which shows how to use the _default_ CF
184184
This example program is located in `sw/example/demo_cfu`.
185185

186186

187-
:sectnums:
188-
==== CFU Control and Status Registers (CFU-CSRs)
189-
190-
The CPU provides up to four control and status registers (<<_cfureg, `cfureg*`>>) to be used within the CFU.
191-
These CSRs are mapped to the "custom user-mode read/write" CSR address space, which is explicitly reserved for
192-
platform-specific application by the RISC-V spec. For example, these CSRs can be used to pass additional operands
193-
to the CFU, to obtain additional results, to check processing status or to configure operation modes.
194-
195-
.CFU CSR Access Example
196-
[source,c]
197-
----
198-
neorv32_cpu_csr_write(CSR_CFUREG0, 0xabcdabcd); // write data to CFU CSR 0
199-
uint32_t tmp = neorv32_cpu_csr_read(CSR_CFUREG3); // read data from CFU CSR 3
200-
----
201-
202-
.Additional CFU-internal CSRs
203-
[TIP]
204-
If more than four CFU-internal CSRs are required the designer can implement an "indirect access mechanism" based
205-
on just two of the default CSRs: one CSR is used to configure the index while the other is used as alias to exchange
206-
data with the indexed CFU-internal CSR - this concept is similar to the RISC-V Indirect CSR Access Extension
207-
Specification (`Smcsrind`).
208-
209-
.Security Considerations
210-
[NOTE]
211-
The CFU CSRs are mapped to the user-mode CSR space so software running at _any privilege level_ can access these
212-
CSRs.
213-
214-
215187
:sectnums:
216188
==== Custom Instructions Hardware
217189

0 commit comments

Comments
 (0)