## Residue Number System Reverse Converters

**Converters for RNS Four-Moduli sets:**

The usage of the RNS can provide great advantages for the parallelization of algorithms. However, it requires efficient converters to convert from the RNS representation to binary in order for the utilization of this system to be profitable. Examples for such four-moduli sets are {2^{n}+1,2^{n}-1,2^{n},2^{2n+1}-1}, {2^{n}+1,2^{n}-1,2^{n},2^{2n+1}+1}, {2^{n}+1,2^{n}-1,2^{2n},2^{2n}+1}, {2^{n}+1,2^{n}-1,2^{2n},2^{2n+1}-1} and {2^{n}+1,2^{n}-1,2^{2n+1}-3,2^{2n}-2}.

## Microcoded Elliptic Curve Processor over Binary Extension Fields

**Description:**

This prototype consists of a FPGA based processor to compute cryptographic algorithms based on Elliptic Curves over GF(2^{m}) fields. This processor consists of an instruction memory and 4 processing units that can operate in parallel . Both instruction and data memories (in each processing unit) are fully accessible by the user to be programmed with personalized algorithms.

Read more: Microcoded Elliptic Curve Processor over Binary Extension Fields

## CRNS: Computing with the Residue Number System Framework

**Description:**

The CRNS framework consists of a comprehensive set of tools ranging from a programming language and respective compiler to backends targeting parallel computation platforms such as GPUs and reconfigurable hardware supporting applications based on Modular Arithmetic. The aim of CRNS is to automate the design for this class of applications, exploiting the increasing parallelism available in nowadays computing devices. The parallelism is obtained by employing optimized routines based on the Residue Number System in the resulting implementations. Given an input algorithm described with an high-level language, any designer can obtain in a few seconds a fully functional parallel implementation for the CRNS supported devices.

Read more: CRNS: Computing with the Residue Number System Framework