@@ -10,14 +10,14 @@ program memory requirements when implemented entirely in software. Some potentia
1010use-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]
3232The 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
45451 destination register) and **R4-type** instructions (3 source registers, 1 destination register). Both instruction
4646formats 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]
5252The 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
184184This 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