\n
address_offset : 0x0 Bytes (0x0)
size : 0x14 byte (0x0)
mem_usage : registers
protection :
Configuration register
address_offset : 0x0 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
ECC_OpPtrA : When executing primitive arithmetic operations, this Pointer defines where operand A is located in memory.
bits : 0 - 4 (5 bit)
access : read-write
ECC_OpPtrB : When executing primitive arithmetic operations, this Pointer defines where operand B is located in memory.
bits : 8 - 20 (13 bit)
access : read-write
ECC_OpPtrC : When executing primitive arithmetic operations, this pointer defines the location where the result will be stored in Memory.
bits : 16 - 36 (21 bit)
access : read-write
Version register
address_offset : 0x10 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
ECC_SVN : Version of Crypto code to be read via CPU interface.Note that this should be read before ECC is used since it corrupts its contents.
bits : 0 - 7 (8 bit)
access : read-only
ECC_HVN : Version of IP to be read via CPU interface.
bits : 8 - 23 (16 bit)
access : read-only
Command register
address_offset : 0x4 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
ECC_TypeOperation : Primitive Arithmetic Operations F(p) and F(2m) [6:4] = 0x0 [3:0] = 0x0 -> Reserved 0x1 -> Modular Addition 0x2 -> Modular Subtraction 0x3 -> Modular Multiplication (Odd N) 0x4 -> Modular Reduction (Odd N) 0x5 -> Modular Division (Odd N) 0x6 -> Modular Inversion (Odd N) 0x7 -> Reserved 0x8 -> Multiplication 0x9 -> Modular Inversion (Even N) 0xA -> Modular Reduction (Even N) others -> Reserved C = A + B mod N C = A - B mod N C = A * B mod N C = B mod N C = A/B mod N C = 1/B mod N C = A * B C = 1/B mod N C = B mod N High-level RSA, CRT and DSA Operations - F(p) only ([7] forced to 0) [6:4] = 0x1 [3:0] = 0x0 -> MulModN 0x1 -> MulAddN 0x2 -> ECMQV (part1) others -> Reserved Primitive ECC and Check Point Operations F(p) and F(2m) [6:4] = 0x2 [3:0] = 0x0 -> Point Doubling (Projective Coord.) 0x1 -> ptAdd3 0x2 -> GenSessionKey 0x3 -> Check_AB (ECDSA) 0x4 -> Check_n (ECDSA) 0x5 -> Check single value less than N 0x6 -> Check_Point_On_Curve 0x7-> Reserved 0x8 -> Curve25519 point multiplication 0x9 -> Ed25519 Check point on curve 0xA -> Ed25519 ScalarMult 0xB -> Ed25519 CheckValid others -> Reserved High-level ECC ECDSA Operations F(p) and F(2m) [6:4] = 0x3 [3:0] = 0x0 -> ECMQV (part 2) 0x1 -> Verify ZKP 0x2 -> ECDSA Domain Parameters Validation others -> Reserved [6:4]=0x4, 0x5, 0x6, 0x7 -> Reserved
bits : 0 - 6 (7 bit)
access : read-write
ECC_Field : '0': Field is F(p) '1': Field is F(2m)
bits : 7 - 14 (8 bit)
access : read-write
ECC_SizeOfOperands : This field defines the size (= number of 64-bit double words) of the operands for the current operation. Possible values are limited by the generic parameter g_Log2MaxDataSize that defines the max space allocated or reserved to each operand. Arbitrary Data/Key size from 128 up to 2566 are supported: 0x02 (02d) -> 128-bit Data/Key size 0x03 (02d) -> 256-bit Data/Key size ECC-ECDSA - Prime Field F(p) 0x03 -> 192-bit (Curve P-192) 0x04 -> 256-bit (Curves P-224 and P-256) ECC-ECDSA - Binary Field F(2m) 0x03 -> 192-bit (Curve K-163) 0x04 -> 256-bit (Curve K-233) - 4 Xers: 0x01, 0x02, 0x4, 0x6 -> 64, 128 and multiples of 128 bits
bits : 8 - 23 (16 bit)
access : read-write
ECC_SignA : Sign of parameter A in equation y2=x3+Ax+B '0': A is positive '1': A is negative
bits : 29 - 58 (30 bit)
access : read-write
ECC_SignB : Sign of parameter B in equation y2=x3+Ax+B '0': B is positive '1': B is negative
bits : 30 - 60 (31 bit)
access : read-write
ECC_CalcR2 : This bit indicates if the IP has to calculate R mod N for the next operation. This bit must be set to 1 when a new prime number has been programmed. This bit is automatically cleared when R mod N has been calculated. '0': no effect '1': forces the IP to re-calculate R mod N
bits : 31 - 62 (32 bit)
access : read-write
Control register
address_offset : 0x8 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
ECC_Start : The Start signal is activated when all data and key inputs have been loaded in the external crypto memory and are available for processing. This signal is active high and is sampled on the rising edge of Clk. When this signal goes high, the PK Command present in the PK_CommandReg[] is initiated and executed. The PK_Start signal is ignored when the core is already processing data and is automatically cleared when the operation is finished
bits : 0 - 0 (1 bit)
access : read-write
Status register
address_offset : 0xC Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
ECC_Fail_Address : Address of the last Point detected as Not On Curve, Not Valid or at the infinity.
bits : 0 - 3 (4 bit)
access : read-only
ECC_Point_Px_NotOnCurve : Status signal set to 1 when Point Px is not on the defined EC. This flag is updated after execution of the command Check_Point_OnCurve.
bits : 4 - 8 (5 bit)
access : read-only
ECC_Point_Px_AtInfinity : Status signal set to 1 when Point Px is at the infinity. This flag is updated after execution of an ECC operation.
bits : 5 - 10 (6 bit)
access : read-only
ECC_Couple_NotValid : Status signal set to 1 when couple x, y is not valid (i.e. not smaller than the prime). This flag is updated after execution of the command Check_Couple_Less_Prime.
bits : 6 - 12 (7 bit)
access : read-only
ECC_Param_n_NotValid : Status signal set to 1 when Parameter n is not valid. This flag is updated after execution of the command Check_n.
bits : 7 - 14 (8 bit)
access : read-only
ECC_Signature_NotValid : This flag indicates if the signature can be accepted or must be rejected. This flag is set to 1 when the signature is not valid and is updated after execution of the command ECDSA_Generation, ECDSA_Verification, DSA_Generation, DSA_Verification.
bits : 9 - 18 (10 bit)
access : read-only
ECC_Param_AB_NotValid : Status signal set to 1 when parameters A and B are not valid, i.e 4A+ 27B = 0. This flag is updated after execution of the command Check_AB.
bits : 10 - 20 (11 bit)
access : read-only
ECC_NotInvertible : This flag is set to 1 when executing a modular inversion (PK_CommandReg[3:0] = 0x6 or 0x9) if the operand is not invertible.
bits : 11 - 22 (12 bit)
access : read-only
ECC_PrimalityTestResult : After the Miller-Rabin Primality test, this flag is: - set to 0 when the random number under test is probably prime - cleared to 1 when the random number under test is composite
bits : 12 - 24 (13 bit)
access : read-only
ECC_Busy : This Status Signal indicates that the core is processing data. This signal is active high and goes low when the selected algorithm is finished.
bits : 16 - 32 (17 bit)
access : read-only
Is something missing? Is something wrong? can you help correct it ? Please contact us at info@chipselect.org !
This website is sponsored by Embeetle, an IDE designed from scratch for embedded software developers.