<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">CS</journal-id><journal-title-group><journal-title>Circuits and Systems</journal-title></journal-title-group><issn pub-type="epub">2153-1285</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/cs.2016.712333</article-id><article-id pub-id-type="publisher-id">CS-71686</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject><subject> Engineering</subject><subject> Physics&amp;Mathematics</subject></subj-group></article-categories><title-group><article-title>
 
 
  Area Efficient Sparse Modulo 2&lt;sup&gt;n&lt;/sup&gt; - 3 Adder
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Ritesh</surname><given-names>Kumar Jaiswal</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Chatla</surname><given-names>Naveen Kumar</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Ram</surname><given-names>Awadh Mishra</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Department of Electronics and Communication Engineering, Motilal Nehru National Institute of Technology, Allahabad, India</addr-line></aff><pub-date pub-type="epub"><day>28</day><month>10</month><year>2016</year></pub-date><volume>07</volume><issue>12</issue><fpage>4024</fpage><lpage>4035</lpage><history><date date-type="received"><day>April</day>	<month>23,</month>	<year>2016</year></date><date date-type="rev-recd"><day>Accepted:</day>	<month>May</month>	<year>23,</year>	</date><date date-type="accepted"><day>October</day>	<month>31,</month>	<year>2016</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
  This paper presents area efficient architecture of modulo 2
  <sup>n </sup>- 3 adder. Modulo adder is one of the main components for the implementation of residue number system (RNS) based applications. The proposed modulo 2
  <sup>n </sup>
  - 3 adder is implemented effectively, which utilizes parallel prefix and sparse concepts. The carries of some bits are calculated with the help of sparse approach in log
  <sub>2</sub>n prefix levels. This scheme is implemented with the help of idempotency property of the parallel prefix carry operator and its consistency. Parallel prefix structure contributes to fast carry computation. This will reduce area as well as routing complexity efficiently. The presented adder has double representation of residues in {0, 1, and 2}. The proposed adder offers significant reduction in area as the number of bits increases.
 
</p></abstract><kwd-group><kwd>Residue Number System (RNS)</kwd><kwd> Parallel Prefix Adder</kwd><kwd> End Around Carry (EAC)</kwd><kwd> Sparse Adder</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>Residue number system (RNS) is a classical and a non weighted number system [<xref ref-type="bibr" rid="scirp.71686-ref1">1</xref>] . RNS divides the given number into collection of small numbers, which significantly improves the speed of operation; the result is obtained by reverse conversion [<xref ref-type="bibr" rid="scirp.71686-ref2">2</xref>] . RNS has plenty of applications in different fields, e.g., digital signal processing (DSP) for filters, convolution, FFT transforms [<xref ref-type="bibr" rid="scirp.71686-ref3">3</xref>] - [<xref ref-type="bibr" rid="scirp.71686-ref7">7</xref>] , cryptography [<xref ref-type="bibr" rid="scirp.71686-ref8">8</xref>] , image processing for wavelet transforms [<xref ref-type="bibr" rid="scirp.71686-ref9">9</xref>] - [<xref ref-type="bibr" rid="scirp.71686-ref11">11</xref>] , error detection and error correction [<xref ref-type="bibr" rid="scirp.71686-ref12">12</xref>] , fault tolerance signal processing properties [<xref ref-type="bibr" rid="scirp.71686-ref13">13</xref>] and communication [<xref ref-type="bibr" rid="scirp.71686-ref14">14</xref>] .</p><p>An RNS is specified by set of moduli<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x2.png" xlink:type="simple"/></inline-formula>, which are relatively prime to each other. An Integer A is converted into RNS as <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x3.png" xlink:type="simple"/></inline-formula> here <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x4.png" xlink:type="simple"/></inline-formula> i.e. the least non negative remainder of the division of A by m<sub>k</sub>. The dynamic range is denoted by M, which is defined as a product of moduli set [<xref ref-type="bibr" rid="scirp.71686-ref1">1</xref>] . The residue number system also has a lot of applications in the field of arithmetic operations like addition, subtraction, multiplication [<xref ref-type="bibr" rid="scirp.71686-ref15">15</xref>] . The most widely used moduli set is <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x5.png" xlink:type="simple"/></inline-formula> [<xref ref-type="bibr" rid="scirp.71686-ref16">16</xref>] . To increase the dynamic range of RNS, the moduli set is increased further to <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x6.png" xlink:type="simple"/></inline-formula> [<xref ref-type="bibr" rid="scirp.71686-ref17">17</xref>] . L. Kalampoukas in [<xref ref-type="bibr" rid="scirp.71686-ref18">18</xref>] has proposed a new design in the view of modularizing to generate and propagate a factor in place of conventional end around carry scheme (EAC). This adder has parallel prefix carry computation structure which reduces the number of stages, leading to optimize in the speed and area for 2<sup>n</sup> − 1 modulo addition. H. T. Vergos et al. [<xref ref-type="bibr" rid="scirp.71686-ref19">19</xref>] proposed a new architecture which eliminates double parallel-prefix computation problem and customizes modulo 2<sup>n</sup> + 1 addition. The design offers reduction in cell area, wiring complexity and power consumption in conjunction with high speed of operation with the concept of sparse modulo 2<sup>n</sup> + 1 adder which is based on the extension of eminent idempotency property of prefix operator. Latency compatible parallel prefix modulo 2<sup>n</sup> − 3 adder is presented in [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] to include extra modulus term. In this, design technique of [<xref ref-type="bibr" rid="scirp.71686-ref18">18</xref>] is extended and modified for the difficulties occurred in derivation of generate and propagates signals formula with variable-weight end around carries.</p>Main Contribution<p>Double representation for modulo (2<sup>n</sup> − 3) i.e. (0, 1, and 2) is explained in [<xref ref-type="bibr" rid="scirp.71686-ref21">21</xref>] where ripple carry addition strategy is used. In this paper we propose a modulo 2<sup>n</sup> − 3 adder which uses the concept of parallel prefix sparse adder. Parallel prefix approach has better compatibility with modulo (2<sup>n</sup> − 1). Sparse parallel prefix adder is endorsed for large word-lengths addition, curtails the wiring and area design without affecting the delay. The proposed adder has lesser area as compared to existing modulo 2<sup>n</sup> − 3 adder [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] .</p><p>This paper is organized as follows: Section 2 describes basics of parallel prefix addition. In Section 3, modulo 2<sup>n</sup> − 3 adder is discussed. Section 4 explains about sparse concept for modulo 2<sup>n</sup> − 3 adder. Finally, unit gate area and unit gate delay are calculated in Section 5.</p></sec><sec id="s2"><title>2. Basics of Parallel Prefix Adder</title><p>Parallel-Prefix adder (PPA) performs parallel addition which plays a key role in microprocessors, DSP, mobile devices and other high speed applications. Parallel-Prefix structure reduces logic complexity and delay thereby enhancing the performance in term of area and power dissipation. Let the two inputs are A, B described as <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x7.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x8.png" xlink:type="simple"/></inline-formula>, addition of these two numbers are represented as<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x9.png" xlink:type="simple"/></inline-formula>. The addition performed in PPA is computed in three steps. The first stage computes the carry generation (G<sub>i</sub>), propagation (P<sub>i</sub>) and half sum (H<sub>i</sub>) bits given as.</p><disp-formula id="scirp.71686-formula634"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x10.png"  xlink:type="simple"/></disp-formula><p>where<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x11.png" xlink:type="simple"/></inline-formula>, + and - symbols are used to represent the logical AND, OR, XOR operations. Second stage of network defines carry computation unit, where we use two different types of operators that are and . The operation performed by these operators is as follows [<xref ref-type="bibr" rid="scirp.71686-ref22">22</xref>] .</p><p><img src="http://html.scirp.org/file/3-7601199x12.png" /> <img src="http://html.scirp.org/file/3-7601199x13.png" /> (2)</p><p><img src="http://html.scirp.org/file/3-7601199x14.png" /> <img src="http://html.scirp.org/file/3-7601199x15.png" /> (3)</p><p>The equations that are useful for generation of carry network [<xref ref-type="bibr" rid="scirp.71686-ref23">23</xref>] are:</p><disp-formula id="scirp.71686-formula635"><label>(4)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x16.png"  xlink:type="simple"/></disp-formula><p>Or</p><p><img src="http://html.scirp.org/file/3-7601199x17.png" /> <img src="http://html.scirp.org/file/3-7601199x18.png" /> <img src="http://html.scirp.org/file/3-7601199x19.png" /> (5)</p><p>In the above expression <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x20.png" xlink:type="simple"/></inline-formula></p><p>The third stage is an “xor” operation of half sum bits and previous carry to get the final sum.</p><disp-formula id="scirp.71686-formula636"><label>(6)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x21.png"  xlink:type="simple"/></disp-formula><p><xref ref-type="fig" rid="fig1">Figure 1</xref>(a) and <xref ref-type="fig" rid="fig1">Figure 1</xref>(b) represent 8 bit Ladner Fischer and Kogge Stone structure of PPA respectively. <xref ref-type="fig" rid="fig1">Figure 1</xref>(c) represents the basic cells that are used in the construction of PPA.</p><p>For the design of large word length adders the concept of sparse is used [<xref ref-type="bibr" rid="scirp.71686-ref24">24</xref>] . In sparse PPA, instead of generating carry for every bit, it generates the carry for every k<sup>th</sup> bit therefore it is called sparse-k parallel prefix adder. <xref ref-type="fig" rid="fig2">Figure 2</xref>(a) represents a simple 16-bit sparse-4 PPA as shown below.</p><p><xref ref-type="fig" rid="fig2">Figure 2</xref>(b) shows carry select adder block which is used in sparse-4 PPA. This computes two sets of sum assuming carry equal to one and zero, select the resultant sum based on the carry which come from prefix network. By applying carry select adder in sparse PPA, routing problem is eliminated and area decreases effectively.</p></sec><sec id="s3"><title>3. Modulo 2<sup>n</sup> − 3 Adder</title><p>The generalized formula for modulo 2<sup>n</sup> − 3 adder is described as [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] :</p><disp-formula id="scirp.71686-formula637"><label>(7)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x22.png"  xlink:type="simple"/></disp-formula><p>The above expression for modulo 2<sup>n</sup> − 3 adder has double representation for {0, 1 and 2} with the last three numbers that are 2<sup>n</sup> − 3, 2<sup>n</sup> − 2, 2<sup>n</sup> − 1.</p><p>Unlike the modulo 2<sup>n</sup> − 1 adder, here we have to add the end around carry to the position 0 as well as position 1, this creates problem in implementation of the modulo PPA structure during addition. The two inputs and the EAC for position zero and position one [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] are taken as follows:</p><fig-group id="fig1"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> 8-bit parallel prefix adder. (a) Ladner FISCHER [<xref ref-type="bibr" rid="scirp.71686-ref23">23</xref>] , (b) Kogge Stone [<xref ref-type="bibr" rid="scirp.71686-ref22">22</xref>] , (c) The basic cells used in PPA.</title></caption><fig id ="fig1_1"><label> (b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x23.png"/></fig><fig id ="fig1_2"><label>(c)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x24.png"/></fig><fig id ="fig1_3"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x25.png"/></fig></fig-group><disp-formula id="scirp.71686-formula638"><graphic  xlink:href="http://html.scirp.org/file/3-7601199x26.png"  xlink:type="simple"/></disp-formula><p><xref ref-type="fig" rid="fig3">Figure 3</xref> describes that the carry generated in position zero enters in to next bit that is position one which already contains EAC. In worst case the carry bypasses from position two to next position. This problem can be eliminated by using carry save preprocessing stage [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] as shown in <xref ref-type="fig" rid="fig4">Figure 4</xref>.</p><p>Where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x27.png" xlink:type="simple"/></inline-formula> is the half adder sum output of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x28.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x28.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x29.png" xlink:type="simple"/></inline-formula>, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x28.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x30.png" xlink:type="simple"/></inline-formula>is the half adder carry</p><fig-group id="fig2"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> (a) 16 bit sparse-4 parallel prefix adder, (b) carry select adder which is used in <xref ref-type="fig" rid="fig2">Figure 2</xref>(a).</title></caption><fig id ="fig2_1"><label>(b)</label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x31.png"/></fig><fig id ="fig2_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x32.png"/></fig></fig-group><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Two stage modulo 2<sup>n</sup> − 3 adder [<xref ref-type="bibr" rid="scirp.71686-ref21">21</xref>] </title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x33.png"/></fig><fig id="fig4"  position="float"><label><xref ref-type="fig" rid="fig4">Figure 4</xref></label><caption><title> Modulo (2<sup>n</sup> − 3) EAC addition using carry-save processing</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x34.png"/></fig><p>output of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x35.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x35.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x36.png" xlink:type="simple"/></inline-formula>. <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x35.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x36.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x37.png" xlink:type="simple"/></inline-formula>represents end around carry for the next stage.</p><p>The alternative approach has been presented for modulo adder using PPA structures [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] . It had given that i<sup>th</sup> carry expression in the case of modulo 2<sup>n</sup> − 3 adder is as follows:</p><disp-formula id="scirp.71686-formula639"><label>(8)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x38.png"  xlink:type="simple"/></disp-formula><p>where,</p><disp-formula id="scirp.71686-formula640"><graphic  xlink:href="http://html.scirp.org/file/3-7601199x39.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.71686-formula641"><graphic  xlink:href="http://html.scirp.org/file/3-7601199x40.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.71686-formula642"><graphic  xlink:href="http://html.scirp.org/file/3-7601199x41.png"  xlink:type="simple"/></disp-formula><p>The sum expression for bit position one is</p><disp-formula id="scirp.71686-formula643"><label>(9)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x42.png"  xlink:type="simple"/></disp-formula><p>From above expression, the carries can be calculated by propagate and generate bits. <xref ref-type="fig" rid="fig5">Figure 5</xref>(a) shows modulo <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x43.png" xlink:type="simple"/></inline-formula> regular parallel prefix (RPP) adder structure [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] . The RPP is differing with modulo <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x44.png" xlink:type="simple"/></inline-formula> having half carry-save stage for preprocessing, one bit in “zero” position before enforcing the EAC and two carries enter into the position “one” after EAC enforcement. <xref ref-type="fig" rid="fig5">Figure 5</xref>(b) represents modulo <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x45.png" xlink:type="simple"/></inline-formula> total parallel prefix (TPP) adder structure [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] . TPP is same as RPP. The only difference is that we have <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x46.png" xlink:type="simple"/></inline-formula> one gate more delay than other carries. The sum S<sub>1</sub> is implemented with the help of multiplexer taking <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x43.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x44.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x45.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x46.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x47.png" xlink:type="simple"/></inline-formula> as selection line shown in <xref ref-type="fig" rid="fig5">Figure 5</xref>(b). For the rest of bits the sum expression calculated using exclusive-OR gate.</p><p>The delay offered by RPP adder structure is more as compared to TPP adder structure due to extra prefix level. The TPP structure has a disadvantage of routing complexity as well as excessive area problem as the bit length of adder increases.</p></sec><sec id="s4"><title>4. Sparse Modulo 2<sup>n</sup> − 3 Adder</title><p>In this segment, we proposed modulo 2<sup>n</sup> − 3 adder by utilizing the concept of integer</p><fig-group id="fig5"><label><xref ref-type="fig" rid="fig5">Figure 5</xref></label><caption><title> (a) Modulo 2<sup>8</sup>-3 EAC adder, (b) recirculating EAC modulo 2<sup>8</sup>-3 adder.</title></caption><fig id ="fig5_1"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x49.png"/></fig><fig id ="fig5_2"><label></label><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x48.png"/></fig></fig-group><p>sparse-4 PPA in which the same carry select adder, used to implement sparse modulo 2<sup>n</sup> − 3 adder. In sparse-4, the carry is generated for every 4<sup>th</sup> bit. We are using carry select adder for modulo operation so we are required to show that the rest of carries are associated with available ones.</p><p>From the general carry expression given in Equation (8)</p><p>Let n = 32 bit, the carry expression <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x50.png" xlink:type="simple"/></inline-formula> can be derived by available <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x50.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x51.png" xlink:type="simple"/></inline-formula> written as:</p><disp-formula id="scirp.71686-formula644"><label>(10)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x52.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.71686-formula645"><label>(11)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x53.png"  xlink:type="simple"/></disp-formula><p>We can also write it as:</p><p><img data-original="http://html.scirp.org/file/3-7601199x54.png" /> <img data-original="http://html.scirp.org/file/3-7601199x55.png" /> (12)</p><p>This can also be expanded as:</p><p><img data-original="http://html.scirp.org/file/3-7601199x56.png" /> <img data-original="http://html.scirp.org/file/3-7601199x57.png" /> <img data-original="http://html.scirp.org/file/3-7601199x58.png" /> (13)</p><p>By the formula of Rearraging the redundant terms given in [<xref ref-type="bibr" rid="scirp.71686-ref23">23</xref>] .</p><p><img data-original="http://html.scirp.org/file/3-7601199x59.png" /> <img data-original="http://html.scirp.org/file/3-7601199x60.png" /> <img data-original="http://html.scirp.org/file/3-7601199x61.png" /> <img data-original="http://html.scirp.org/file/3-7601199x62.png" /> (14)</p><p>Finally it is expressed by,</p><p><img data-original="http://html.scirp.org/file/3-7601199x63.png" /> <img data-original="http://html.scirp.org/file/3-7601199x64.png" /> <img data-original="http://html.scirp.org/file/3-7601199x65.png" /> (15)</p><p>So</p><p><img data-original="http://html.scirp.org/file/3-7601199x66.png" /> <img data-original="http://html.scirp.org/file/3-7601199x67.png" /> (16)</p><p>At last, the carry expression <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x68.png" xlink:type="simple"/></inline-formula> in terms of <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x68.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x69.png" xlink:type="simple"/></inline-formula> is written as:</p><disp-formula id="scirp.71686-formula646"><label>(17)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/3-7601199x70.png"  xlink:type="simple"/></disp-formula><p>From above expression we conclude that this relation is quite similar to integer adder. Therefore we can directly use carry select block <xref ref-type="fig" rid="fig2">Figure 2</xref>(b) of sparse integer adder for performing modulo operation. But the main problem is the carry expression given in Equation (8) which is defined for<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x71.png" xlink:type="simple"/></inline-formula>. The carry equation for <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x71.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x72.png" xlink:type="simple"/></inline-formula> is quite dif- ferent so the modification of carry select block is needed for first four bits of modulo 2<sup>n</sup> − 3 adder, it is based on carry <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x71.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x72.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x73.png" xlink:type="simple"/></inline-formula> given in Equation (9).</p><p><xref ref-type="fig" rid="fig6">Figure 6</xref> is similar to carry select block of <xref ref-type="fig" rid="fig2">Figure 2</xref>(b) except at sum position S<sub>1</sub>. The <xref ref-type="fig" rid="fig6">Figure 6</xref> is used only for first four bits of sparse-4 modulo 2<sup>n</sup> − 3 adder. The remaining bits uses carry select block of <xref ref-type="fig" rid="fig2">Figure 2</xref>(b) for implementation of sparse modulo (2<sup>n</sup> − 3) adder.</p><p>This sparse-4 modulo 2<sup>n</sup> − 3 adder has double representation for {0,1,2} with 2<sup>n</sup> − 3, 2<sup>n</sup> − 2, 2<sup>n</sup> − 1, so there are six pairs of combinations in which two pairs has tendency to produce wrong addition result. The solution for this problem is explained in [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] and [<xref ref-type="bibr" rid="scirp.71686-ref21">21</xref>] ; these explanations still exist for proposed adder.</p><p><xref ref-type="fig" rid="fig7">Figure 7</xref> represents the proposed 32 bit sparse modulo 2<sup>n</sup> − 3 Adder having lesser area than previously reported modulo adder.</p><fig id="fig6"  position="float"><label><xref ref-type="fig" rid="fig6">Figure 6</xref></label><caption><title> Carry select block for modulo 2<sup>n</sup> − 3 adder only for first 4 bits</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x74.png"/></fig><fig id="fig7"  position="float"><label><xref ref-type="fig" rid="fig7">Figure 7</xref></label><caption><title> The proposed 32 bit sparse-4 modulo 2<sup>n</sup> − 3 parallel prefix adder using [<xref ref-type="bibr" rid="scirp.71686-ref17">17</xref>] architectures</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/3-7601199x75.png"/></fig></sec><sec id="s5"><title>5. Performance Analysis and Comparison</title><p>The theoretical area and delay analysis is explained in terms of area (∆a) and delay (∆g) of basic 2-input gates. From the concept of unit gate model, basic 2-input AND, OR, NAND, NOR are assumed as single unit gate (∆a, ∆g), whereas exclusive-OR &amp; exclusive-NOR and assumed to be double unit gate (2∆a, 2∆g) [<xref ref-type="bibr" rid="scirp.71686-ref15">15</xref>] . The area and delay of Inverters and buffers are not taken into account in unit gate model.</p><p>The delay offered by proposed sparse modulo 2<sup>n</sup> − 3 adder is same as [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] . <xref ref-type="table" rid="table1">Table 1</xref> shows the estimated gate delay and gate area of proposed adder as function of bit length n.</p><p><xref ref-type="table" rid="table2">Table 2</xref> shows the unit gate delays and unit gate areas for different values of n of proposed adder and also shows the percentage reduction in area in comparison with [<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>] .</p><p>The percentage reduction in area increases as the number of bit length increases. We have also elaborated proposed work with HDL code written on Xilinx 14.7 and verified for correctness using simulation tests. Number of lookup table (LUTs) count is given in <xref ref-type="table" rid="table3">Table 3</xref> for n = 8 which measures the area utilization for proposed adder.</p></sec><sec id="s6"><title>6. Conclusion</title><p>In this paper, we have proposed an area efficient sparse modulo 2<sup>n</sup> − 3 adder which plays an important role in verity of computer applications. The efficiency in term of area of proposed adder is explained by using the concept of unit gate model. For different value of n (=8, 16, 32, 64), the percentage area reduction is (=2.3, 13.2, 21, 27.54)</p><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Adders unit gate area and delay estimations</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >Adder</th><th align="center" valign="middle" >Delay (∆g)</th><th align="center" valign="middle" >Area (∆a)</th></tr></thead><tr><td align="center" valign="middle" >[<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>]</td><td align="center" valign="middle" ><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x76.png" xlink:type="simple"/></inline-formula></td><td align="center" valign="middle" ><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x77.png" xlink:type="simple"/></inline-formula></td></tr><tr><td align="center" valign="middle" >Proposed</td><td align="center" valign="middle" ><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x78.png" xlink:type="simple"/></inline-formula></td><td align="center" valign="middle" ><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/3-7601199x79.png" xlink:type="simple"/></inline-formula></td></tr></tbody></table></table-wrap><table-wrap id="table2" ><label><xref ref-type="table" rid="table2">Table 2</xref></label><caption><title> Delay and area for different bit length</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  >Bits (n)</th><th align="center" valign="middle"  colspan="2"  >[<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>]</th><th align="center" valign="middle"  colspan="2"  >Proposed</th><th align="center" valign="middle"  colspan="2"  >Reduction %</th></tr></thead><tr><td align="center" valign="middle" >Delay (∆g)</td><td align="center" valign="middle" >Area (∆a)</td><td align="center" valign="middle" >Delay (∆g)</td><td align="center" valign="middle" >Area (∆a)</td><td align="center" valign="middle" >Delay (∆g)</td><td align="center" valign="middle" >Area (∆a)</td></tr><tr><td align="center" valign="middle" >8 16 32 64</td><td align="center" valign="middle" >10 12 14 16</td><td align="center" valign="middle" >126 310 726 1654</td><td align="center" valign="middle" >10 12 14 16</td><td align="center" valign="middle" >123 269 573 1205</td><td align="center" valign="middle" >0 0 0 0</td><td align="center" valign="middle" >2.3 13.2 21.0 27.54</td></tr></tbody></table></table-wrap><table-wrap id="table3" ><label><xref ref-type="table" rid="table3">Table 3</xref></label><caption><title> LUT count for n = 8</title></caption><table><tbody><thead><tr><th align="center" valign="middle" >[<xref ref-type="bibr" rid="scirp.71686-ref20">20</xref>]</th><th align="center" valign="middle" >Proposed Sparse Adder</th><th align="center" valign="middle" >% Reduction in LUT Count</th></tr></thead><tr><td align="center" valign="middle" >64</td><td align="center" valign="middle" >42</td><td align="center" valign="middle" >34</td></tr></tbody></table></table-wrap><p>respectively with same delay. Simulation results show that the area of proposed adder has been reduced by 34% in term of LUT count for n = 8. Therefore, it is observed that, the presented modulo adder offers less area in performing the addition for larger word length input and also reduces the routing complexity in comparison with the previously reported adder.</p></sec><sec id="s7"><title>Cite this paper</title><p>Jaiswal, R.K., Kumar, C.N. and Mishra, R.A. (2016) Area Ef- ficient Sparse Modulo 2<sup>n</sup> − 3 Adder. Circuits and Systems, 7, 4024-4035. http://dx.doi.org/10.4236/cs.2016.712333</p></sec></body><back><ref-list><title>References</title><ref id="scirp.71686-ref1"><label>1</label><mixed-citation publication-type="other" xlink:type="simple">Mathew, S., Anders, M., Krishnamurthy, R. and Borkar, S. (2002) A 4 GHz 130 nm Address Generation Unit with 32-Bit Sparse-Tree Adder Core. VLSI Circuits Digest of Technical Papers, Honolulu, 13-15 June 2002, 126-127.</mixed-citation></ref><ref id="scirp.71686-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Ladner, R.E. and Fischer, M.J. (1980) Parallel Prefix Computation. Journal of the ACM, 27, 831-838. http://dx.doi.org/10.1145/322217.322232</mixed-citation></ref><ref id="scirp.71686-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Kogge, P.M. and Stone, H.S. (1973) A Parallel Algorithm for the Efficient Solution of a General Class of Recurrence Equations. IEEE Transactions on Computers, 22, 786-793.  
http://dx.doi.org/10.1109/TC.1973.5009159</mixed-citation></ref><ref id="scirp.71686-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Fatemi, H. and Jaberipur, G. (2014) Double {0, 1, 2} Representation Modulo-(2&lt;sup&gt;n&lt;/sup&gt; - 3) Adders. IWSSIP Proceedings, Dubrovnik, 12-15 May 2014, 119-122.</mixed-citation></ref><ref id="scirp.71686-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Jaberipur, G. and Langroudi, S.H.F. (2015) (4 + 2logn)?G Parallel Prefix Modulo-2&lt;sup&gt;n&lt;/sup&gt; - 3 Adder via Double Representation of Residues in [0, 2]. IEEE Transactions on Circuits and Systems II: Express Briefs, 62, 583-587. http://dx.doi.org/10.1109/TCSII.2015.2407772</mixed-citation></ref><ref id="scirp.71686-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Vergos, H.T. and Dimitrakopoulos, G. (2012) On Modulo 2&lt;sup&gt;n&lt;/sup&gt; + 1 Adder Design. IEEE Transactions on Computers, 61, 173-186.</mixed-citation></ref><ref id="scirp.71686-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Kalampoukas, L., et al. (2000) High-Speed Parallel-Prefix Modulo 2&lt;sup&gt;n&lt;/sup&gt; - 1 Adders. IEEE Transactions on Computers, 49, 673-680.</mixed-citation></ref><ref id="scirp.71686-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Ananda Mohan, P.V. (2008) New Reverse Converters for the Moduli Set {2&lt;sup&gt;n&lt;/sup&gt; - 3, 2&lt;sup&gt;n&lt;/sup&gt; - 1, 2&lt;sup&gt;n&lt;/sup&gt; + 1, 2&lt;sup&gt;n&lt;/sup&gt; + 3}. International Journal of Electronics and Communications, 62, 643-658.  
http://dx.doi.org/10.1016/j.aeue.2007.08.008</mixed-citation></ref><ref id="scirp.71686-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Safari, A., Niras, C.V. and Kong, Y. (2016) Power-Performance Enhancement of Two-Dimensional RNS-Based Dwt Image Processor Using Static Voltage Scaling. Integration, 53, 145-156.</mixed-citation></ref><ref id="scirp.71686-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">Schinianakis, D.M., Kakarountas, A.P. and Stouraitis, T. (2006) A New Approach to Elliptic Curve Cryptography: An RNS Architecture. MELECON 2006—2006 IEEE Mediterranean Electrotechnical Conference, Malaga, 16-19 May 2006, 1241-1245.</mixed-citation></ref><ref id="scirp.71686-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Krishnan, R., Jullien, G. and Miller, W. (1985) Complex Digital Signal Processing Using Quadratic Residue Number Systems. IEEE International Conference on Acoustics, Speech, and Signal Processing, 764-767.</mixed-citation></ref><ref id="scirp.71686-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Kurokawa, T., Payne, J. and Lee, S. (1980) Error Analysis of Recursive Digital Filters Implemented with Logarithmic Number Systems. IEEE Transactions on Acoustics, Speech, and Signal Processing, 28, 706-715. http://dx.doi.org/10.1109/TASSP.1980.1163466</mixed-citation></ref><ref id="scirp.71686-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Chang, C.H., Molahosseini, A.S., Zarandi, A.A.E. and Tay, T.F. (2015) Residue Number Systems: A New Paradigm to Datapath Optimization for Low-Power and High-Perfor-mance Digital Signal Processing Applications. IEEE Circuits and Systems Magazine, 15, 26-44.</mixed-citation></ref><ref id="scirp.71686-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Di Claudio, E. D., Piazza, F. and Orlandi, G. (1995) Fast Combinatorial RNS Processors for DSP Applications. IEEE Transactions on Computers, 44, 624-633.  
http://dx.doi.org/10.1109/12.381948</mixed-citation></ref><ref id="scirp.71686-ref15"><label>15</label><mixed-citation publication-type="other" xlink:type="simple">Garai, P. and Dutta, C.B. (2014) RNS Based Reconfigurable Processor for High Speed Signal Processing. TENCON 2014—2014 IEEE Region 10 Conference, Bangkok, 22-25 October 2014, 1-6.</mixed-citation></ref><ref id="scirp.71686-ref16"><label>16</label><mixed-citation publication-type="other" xlink:type="simple">Garner, H.L. (1959) The Residue Number System IRE. Transactions on Electronic Computers, 8, 140-147. http://dx.doi.org/10.1109/TEC.1959.5219515</mixed-citation></ref><ref id="scirp.71686-ref17"><label>17</label><mixed-citation publication-type="other" xlink:type="simple">Ma, S., Hu, J.H., Zhang, L. and Xiang, L. (2008) An Efficient RNS Parity Checker for Moduli Set and Its Applications. Science in China, Series F: Information Sciences, 51, 1563-1571.</mixed-citation></ref><ref id="scirp.71686-ref18"><label>18</label><mixed-citation publication-type="other" xlink:type="simple">Chang, C.H. and Low, J.Y.S. (2011) Simple Fast and Exact RNS Scaler for the Three-Moduli Set 2&lt;sup&gt;n&lt;/sup&gt; - 1, 2&lt;sup&gt;n&lt;/sup&gt;, 2n + 1. IEEE Transactions on Circuits and Systems I: Regular Papers, 58, 2686-2697. http://dx.doi.org/10.1109/TCSI.2011.2142950</mixed-citation></ref><ref id="scirp.71686-ref19"><label>19</label><mixed-citation publication-type="other" xlink:type="simple">Zimmermann, R. (1999) Efficient VLSI Implementation of Modulo (2n ± 1) Addition and Multiplication. 14th IEEE Symposium on Computer Arithmetic, Adelaide, 14-16 April 1999, 158-167.</mixed-citation></ref><ref id="scirp.71686-ref20"><label>20</label><mixed-citation publication-type="other" xlink:type="simple">Yang, L.-L. and Hanzo, L. (2002) A Residue Number System Based Parallel Communication Scheme Using Orthogonal Signaling. I. System Outline. IEEE Transactions on Vehicular Technology, 51, 1534-1546. http://dx.doi.org/10.1109/TVT.2002.804850</mixed-citation></ref><ref id="scirp.71686-ref21"><label>21</label><mixed-citation publication-type="other" xlink:type="simple">Pontarelli, S., Cardarilli, G.C., Re, M. and Salsano, A. (2008) Totally Fault Tolerant RNS Based FIR Filters. 14th IEEE International On-Line Testing Symposium, Rhodes, 7-9 July 2008, 192-194. http://dx.doi.org/10.1109/iolts.2008.14</mixed-citation></ref><ref id="scirp.71686-ref22"><label>22</label><mixed-citation publication-type="other" xlink:type="simple">Etzel, M. and Jenkins, W. (1980) Redundant Residue Number Systems for Error Detection and Correction in Digital Filters. IEEE Transactions on Acoustics, Speech, and Signal Processing, 28, 538-545. http://dx.doi.org/10.1109/TASSP.1980.1163442</mixed-citation></ref><ref id="scirp.71686-ref23"><label>23</label><mixed-citation publication-type="other" xlink:type="simple">Taleshmekaeil, D.K., Mohamamdzadeh, H. and Mousavi, A. (2011) Using Residue Number System for Edge Detection in Digital Images Processing. 2011 IEEE 3rd International Conference on Communication Software and Networks (ICCSN), Xi’an, 27-29 May 2011, 249-253.</mixed-citation></ref><ref id="scirp.71686-ref24"><label>24</label><mixed-citation publication-type="other" xlink:type="simple">Taleshmekaeil, D.K. and Mousavi, A. (2010) The Use of Residue Number System for Improving the Digital Image Processing. IEEE 10th International Conference on Signal Processing Proceedings, Beijing, 24-28 October 2010, 775-780.</mixed-citation></ref></ref-list></back></article>