FR2754616A1 - Procede et circuit de division d'elements d'un corps de galois - Google Patents

Procede et circuit de division d'elements d'un corps de galois Download PDF

Info

Publication number
FR2754616A1
FR2754616A1 FR9612591A FR9612591A FR2754616A1 FR 2754616 A1 FR2754616 A1 FR 2754616A1 FR 9612591 A FR9612591 A FR 9612591A FR 9612591 A FR9612591 A FR 9612591A FR 2754616 A1 FR2754616 A1 FR 2754616A1
Authority
FR
France
Prior art keywords
bits
numbers
coded
multiplication
produced
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9612591A
Other languages
English (en)
Other versions
FR2754616B1 (fr
Inventor
Jacques Meyer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics SA
Original Assignee
SGS Thomson Microelectronics SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SGS Thomson Microelectronics SA filed Critical SGS Thomson Microelectronics SA
Priority to FR9612591A priority Critical patent/FR2754616B1/fr
Priority to US08/948,741 priority patent/US5890800A/en
Publication of FR2754616A1 publication Critical patent/FR2754616A1/fr
Application granted granted Critical
Publication of FR2754616B1 publication Critical patent/FR2754616B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/726Inversion; Reciprocal calculation; Division of elements of a finite field

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

L'invention concerne un procédé et un circuit (2) correspondant, pour calculer le résultat de la division, dans un corps de Galois de 2**n = N éléments, d'un nombre A par un nombre B, ces nombres étant codés sur n bits, caractérisé en ce qu'il comprend les étapes suivantes: a) production d'un nombre intermédiaire S(1) codé sur n bits, par élévation du nombre A au carré, b) production d'un nombre intermédiaire R(1) codé sur n bits, par multiplication du nombre intermédiaire S(1) par le nombre B, c) mise en oeuvre n-2 fois des étapes a et b, les nombres intermédiaires produits par multiplication R(j) étant successivement élevés au carré et les nombres intermédiaires produits par élévation au carré S(j) étant successivement multipliés par le deuxième nombre B, et d) production du résultat S(n) par élévation au carré du nombre intermédiaire R(n-1) produit par la [n-1]ième multiplication.

Description

Procédé et circuit de division d'éléments d'un corps de Galois.
L'invention concerne les circuits permettent d'effectuer des calculs sur des éléments d'un corps de Galois GF(2n), et en particulier un circuit permettant de calculer des divisions dans un tel corps.
Un corps de Galois est un ensemble fini de nombres binaires servant, par exemple, à la correction d'erreurs dans les transmissions de données mettant en oeuvre un codage et décodage Reed-Solomon. L'ensemble des nombres binaires de n bits, n entier, forme un corps de Galois de 2n = N éléments, sur lequel on définit une addition et une multiplication internes, c'est-à-dire telles que la somme ou le produit de deux nombres du corps est également un nombre du corps. L'addition de deux nombres consiste à effectuer un OU exclusif bit par bit entre ces deux nombres. il en résulte qu'en considérant un élément x quelconque du corps, on a x + x = 2.x = 0. La multiplication est une multiplication classique de deux nombres binaires de n bits tant qu'elle ne génère pas de retenue, c'est-à-dire tant que le résultat ne comporte pas de bits à 1 de poids supérieur à n-l. Dès qu'une retenue est générée, celle-ci est combinée par
OU exclusif à des bits prédéterminés des bits de poids 0 à n-l, définis par un polynôme dit polynôme générateur du corps de Galois.
Tout élément non nul du corps de Galois est une puissance d'un autre élément non nul et non unitaire de ce corps. Dans un corps de Galois de N + l éléments, ces puissances sont définies modulo-N, c'est-à-dire que xi = xi+N avec x un élément non nul et non unitaire du corps de Galois et i un entier positif ou négatif. Les éléments d'un corps de Galois de N + l éléments 0, a 0àa
0, 21, ... , 2n-l constituant la base des nombres binaires de n bits.
Dans certaines applications, on est amené à effectuer des divisions. Ainsi, par exemple, pour calculer des coefficients de correction dans un décodeur Reed
Solomon, il est nécessaire de calculer des rapports A/B, où A et B sont des nombres calculés par le décodeur et pouvant avoir des valeurs quelconques. Il n'existe pas à l'heure actuelle de diviseurs simples permettant d'effectuer directement une division.
Pour calculer A/B, on multiplie généralement A par l'inverse de B.
Pour calculer un inverse, on a généralement recours à une table d'inverses stockée dans une mémoire ROM dédiée à cette usage. Toutefois, l'utilisation d'une mémoire ROM se prête mal à une intégration parmi les autres circuits de traitement avec les techniques actuelles de conception de circuit intégré. Avec ces techniques, la mémoire ROM doit être placée en dehors d'une zone où sont intégrés les autres éléments du circuit de traitement. Ceci entraîne une perte de surface notable même si cette mémoire ROM occupe une surface relativement faible (si on utilise par exemple des mots de 8 bits, la mémoire contiendra 256 mots, ce qui est peu).
Un objet de l'invention est de proposer un procédé de division d'éléments d'un corps de Galois ne nécessitant pas de mémoire ROM. Un autre objet de l'invention est de proposer un circuit de division mettant en oeuvre ce procédé et occupant une surface particulièrement faible, facilement implémentable en termes de placement et de routage automatique.
Ainsi l'invention propose un procédé pour calculer le résultat de la division, dans un corps de Galois de 2n = N éléments, d'un premier nombre A par un deuxième nombre B, ces nombres étant codés sur n bits, caractérisé en ce qu'il comprend les étapes suivantes:
a - production d'un premier nombre intermédiaire S(1) codé sur n bits, par élévation du premier nombre A au carré,
b - production d'un deuxième nombre intermédiaire R(l) codé sur n bits, par multiplication du premier nombre intermédiaire S(l) par le deuxième nombre B,
c - mise en oeuvre n-2 fois des étapes a et b, les nombres intermédiaires produits par multiplication R(j), j indice variant de 2 à n - 1, étant successivement élevés au carré, et les nombres intermédiaires produits par élévation au carré S(j) étant successivement multipliés par le deuxième nombre B, et
d - production du résultat S(n) par élévation au carré du nombre intermédiaire
R(n-l) produit par la [n-l]ième multiplication.
L'invention concerne également un circuit de division, dans un corps de
Galois de 2n = N éléments, d'un premier nombre A par un deuxième nombre B, ces nombres étant codés sur n bits. Le circuit comprend un élévateur à la puissance deux recevant d'un circuit de multiplexage le premier nombre A ou un premier nombre intermédiaire R(j) codé sur n bits obtenu par multiplication de puissances du premier et du deuxième nombre. L'élévateur à la puissance deux produit un deuxième nombre intermédiaire S(j) codé sur n bits. Le circuit comprend enfin un multiplieur pour multiplier le deuxième nombre intermédiaire par le deuxième nombre et pour produire le premier nombre intermédiaire, et un registre pour mémoriser le premier ou le deuxième nombre intermédiaire afin d'isoler l'élévateur à la puissance deux et le multiplieur.
D'autres avantages et particularités apparaîtront à la lecture de la description qui suit d'un exemple de réalisation de l'invention, à lire conjointement aux dessins annexés dans lesquels la figure 1 représente un circuit selon l'invention et la figure 2 représente schématiquement un élévateur à la puissance deux d'un nombre codé sur 8 bits.
Soit un corps de Galois de 2n = N éléments, avec n un nombre naturel. Soit A et B deux nombres de ce corps, codés sur n bits. On considérera par exemple n = 8 bits.
On a alors N = 256.
Le procédé selon l'invention permet d'effectuer la division de A par B. Pour ce faire, on met en oeuvre les étapes suivantes
1 - production d'un nombre intermédiaire S(1) = A2, codé sur n bits, par élévation du nombre A au carré,
2 - production d'un nombre intermédiaire R(1) = A2 * B, codé sur n bits, par multiplication du nombre intermédiaire S(1) par le nombre B,
3 - production d'un nombre intermédiaire S(2) = A4 * B2, codé sur n bits, par élévation au carré du nombre R(1),
4 - production d'un nombre intermédiaire R(2) = A4 * B3, codé sur n bits, par multiplication du nombre S(2) par le nombre B,
5-soitj indice variant de 3 àn- 1 = 7 et K = 2j-l mise en oeuvre n - 3 = 5 fois des étapes 3 et 4, les nombres intermédiaires produits par multiplication R(j) = (A2K * B2K-2) * B = A2K * g2K-l étant successivement élevés au carré, et les nombres intermédiaires produits par élévation au carré 5(j) = (AK * BK-2)2 = A2K *
B2K-2 étant successivement multipliés par le deuxième nombre B, et
6 - production du résultat S(n) = S(8) = AN * BN-I A * B1 = A/B, codé sur n bits, par élévation au carré du nombre intermédiaire R(n-l) produit par la [n l]ième multiplication.
La figure 1 illustre un circuit 2 permettant de mettre en oeuvre le procédé cidessus. I1 comprend une entrée 4 pour recevoir le nombre A, une entrée 6 pour recevoir le nombre B, et une sortie 8 pour fournir le résultat S(n) = A/B.
Un élévateur 14 à la puissance deux permet de produire les nombres intermédiaires S(1), S(2), ... , S(7) et le résultat S(8). Un multiplieur 16 permet de produire les nombres intermédiaires R(1), R(2),..., R(7) en multipliant les nombres intermédiaires S(1), S(2), ... , S(7) par le nombre B et en ne gardant que les bits de poids faible du résultat. Un registre 12, placé entre le multiplieur 16 de l'élévateur 14, permet de mémoriser les nombres produits par le multiplieur et d'isoler les circuits 16 et 14 afin d'éviter de créer un circuit bouclé instable. De cette façon, en effet, l'entrée de l'élévateur est stable lors de l'élévation à la puissance deux d'un nombre reçu par cet élévateur. On notera que le registre pourrait être disposé différemment dans la boucle constituée par l'élévateur 14 et le multiplieur 16, par exemple entre la sortie de l'élévateur et le multiplieur. Un multiplexeur 10 est placé entre l'entrée 4 et le registre 12. I1 reçoit le nombre A et les nombres produits par le multiplieur et fournit sélectivement ces nombres au registre. Lors de la première étape, le multiplexeur fournit le nombre A. Lors des étapes ultérieures, il fournit les nombres produits par le multiplieur.
On peut montrer que dans GF(2n), on (a + b + ... + z)2 = a2 + b2 + ... + ç.
Cette propriété permet de réaliser un élévateur à la puissance deux qui est peu complexe en terme de composants et qui est, de ce fait, peu encombrant. La figure 2 illustre un exemple de réalisation de l'élévateur 14.
Dans l'exemple considéré, c'est-à-dire pour n = 8, le polynôme générateur du corps de Galois est x8 + x4 + x3 + x2 + 1. Tout nombre peut être représenté comme une combinaison linéaire de 1, x, x2,.., x7. Les nombres produits par l'élévateur peuvent être représentés comme une combinaison linéaire de 1, x2, x4, 4 x14, avec x8 = 4 + x3 + x2 + 1,x10 = x6 + x5 + x4 + x2,x12 = x7 + x6 + x3 + x2 + 1, et x14 = x4 + x + 1.
Si on note Eo, E1 , ... , E7 les bits des nombres fournis à l'élévateur sur des entrées 20, 21 ..., 27 et 50 , ..., S7 les bits des nombres produits sur des sorties 30, 31, ..., 37 à partir des bits d'entrée, on peut montrer que: S0 = E0 #E4 #E6 # E7, O+E7,
S1 =E7,
S2=E1#E4#E5#E6,
S3=E40#E6,
S4=E2#E4#E5#E7,
S5=E5,
S6=E3#E5#E6 et
S7 = E6 ,avec # représentant l'opération logique OU exclusif (figurée sur la figure 2 par douze portes logiques G1 à G12). Si on utilise un multiplieur de type série, on intercalera un registre à entrée parallèle et sortie série entre l'élévateur et le multiplieur. On choisira alors un registre 10 à entrée série et sortie parallèle.
Le procédé selon l'invention suppose que l'on dispose, dans l'application l'utilisant, du nombre de cycles nécessaire pour le calcul. Si cela est le cas, le circuit le mettant en oeuvre occupe une surface moindre et plus facile à placer et à router automatiquement qu'une solution de type ROM.

Claims (2)

REVENDICATIONS
1 - Procédé pour calculer le résultat de la division, dans un corps de Galois de 2n = N éléments, d'un premier nombre A par un deuxième nombre B, ces nombres étant codés sur n bits, caractérisé en ce qu'il comprend les étapes suivantes
a - production d'un premier nombre intermédiaire S(1) codé sur n bits, par élévation du premier nombre A au carré,
b - production d'un deuxième nombre intermédiaire R(1) codé sur n bits, par multiplication du premier nombre intermédiaire S(1) par le deuxième nombre B,
c - mise en oeuvre n-2 fois des étapes a et b, les nombres intermédiaires produits par multiplication R(j), j indice variant de 2 à n - 1, étant successivement élevés au carré, et les nombres intermédiaires produits par élévation au carré S(j) étant successivement multipliés par le deuxième nombre B, et
d - production du résultat S(n) par élévation au carré du nombre intermédiaire
R(n-l) produit par la [n-l]ième multiplication.
2 - Circuit (2) de division, dans un corps de Galois de 2n = N éléments, d'un premier nombre (A) par un deuxième nombre (B), ces nombres étant codés sur n bits, caractérisé en ce qu'il comprend:
- un élévateur (14) à la puissance deux recevant d'un circuit de multiplexage (10) le premier nombre (A) ou un premier nombre intermédiaire (R(j)) codé sur n bits obtenu par multiplication de puissances du premier et du deuxième nombre et produisant un deuxième nombre intermédiaire (S(j)) codé sur n bits,
- un multiplieur (16) pour multiplier le deuxième nombre intermédiaire par le deuxième nombre et pour produire le premier nombre intermédiaire, et
- un registre (12) pour mémoriser le premier ou le deuxième nombre intermédiaire afin d'isoler l'élévateur à la puissance deux et le multiplieur.
FR9612591A 1996-10-11 1996-10-11 Procede et circuit de division d'elements d'un corps de galois Expired - Fee Related FR2754616B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR9612591A FR2754616B1 (fr) 1996-10-11 1996-10-11 Procede et circuit de division d'elements d'un corps de galois
US08/948,741 US5890800A (en) 1996-10-11 1997-10-10 Method and device for the division of elements of a Galois field

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9612591A FR2754616B1 (fr) 1996-10-11 1996-10-11 Procede et circuit de division d'elements d'un corps de galois

Publications (2)

Publication Number Publication Date
FR2754616A1 true FR2754616A1 (fr) 1998-04-17
FR2754616B1 FR2754616B1 (fr) 1998-12-04

Family

ID=9496703

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9612591A Expired - Fee Related FR2754616B1 (fr) 1996-10-11 1996-10-11 Procede et circuit de division d'elements d'un corps de galois

Country Status (2)

Country Link
US (1) US5890800A (fr)
FR (1) FR2754616B1 (fr)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044389A (en) * 1997-12-29 2000-03-28 Quantum Corporation System for computing the multiplicative inverse of a field element for galois fields without using tables
US5964826A (en) * 1998-01-13 1999-10-12 National Science Council Division circuits based on power-sum circuit for finite field GF(2m)
US6199088B1 (en) * 1998-06-30 2001-03-06 Quantum Corp. Circuit for determining multiplicative inverses in certain galois fields
TW421756B (en) * 1998-10-01 2001-02-11 Wei Shiue Wen Arithmetic operation circuit of finite field GF(2<m>)
US20020055962A1 (en) * 1999-11-12 2002-05-09 Richard Schroeppel Automatically solving equations in finite fields
US7895253B2 (en) * 2001-11-30 2011-02-22 Analog Devices, Inc. Compound Galois field engine and Galois field divider and square root engine and method
US7269615B2 (en) 2001-12-18 2007-09-11 Analog Devices, Inc. Reconfigurable input Galois field linear transformer system
US7283628B2 (en) * 2001-11-30 2007-10-16 Analog Devices, Inc. Programmable data encryption engine
US8375077B2 (en) * 2008-09-29 2013-02-12 Intel Corporation Method, apparatus and media for performing GF(2) polynomial operations
US8443028B2 (en) * 2009-06-02 2013-05-14 Exelis Inc. Circuits and methods for performing exponentiation and inversion of finite field elements

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6248812A (ja) * 1985-08-28 1987-03-03 Fujitsu Ltd 逆元計算方式

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4975867A (en) * 1987-06-26 1990-12-04 Digital Equipment Corporation Apparatus for dividing elements of a Galois Field GF (2QM)
US4994995A (en) * 1990-03-14 1991-02-19 International Business Machines Corporation Bit-serial division method and apparatus
US5379243A (en) * 1992-08-31 1995-01-03 Comstream Corporation Method and apparatus for performing finite field division
US5467297A (en) * 1993-11-04 1995-11-14 Cirrus Logic, Inc. Finite field inversion
FR2724741B1 (fr) * 1994-09-21 1996-12-20 Sgs Thomson Microelectronics Circuit electronique de calcul modulaire dans un corps fini

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6248812A (ja) * 1985-08-28 1987-03-03 Fujitsu Ltd 逆元計算方式

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FENN S T J ET AL: "FINITE FIELD INVERSION OVER THE DUAL BASIS", IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS, vol. 4, no. 1, 1 March 1996 (1996-03-01), pages 134 - 137, XP000582858 *
PATENT ABSTRACTS OF JAPAN vol. 11, no. 237 (E - 528) 4 August 1987 (1987-08-04) *
S. FENN ET AL.: "Fast normal basis inversion in GF(2^m)", ELECTRONICS LETTERS, vol. 32, no. 17, 15 August 1996 (1996-08-15), STEVENAGE GB, pages 1566 - 1567, XP000624531 *

Also Published As

Publication number Publication date
FR2754616B1 (fr) 1998-12-04
US5890800A (en) 1999-04-06

Similar Documents

Publication Publication Date Title
Chaurasiya et al. Parameterized posit arithmetic hardware generator
EP0265336B1 (fr) Opérateur polynomial dans les corps de Galois, et processeur de traitement de signal numérique comportant un tel opérateur
US20190042924A1 (en) Hyperbolic functions for machine learning acceleration
US6687722B1 (en) High-speed/low power finite impulse response filter
FR2867579A1 (fr) Multiplieur modulaire de montgomery
FR2757969A1 (fr) Procede et appareil de multiplication en champ fini
US7315163B2 (en) Arithmetic unit
FR2754616A1 (fr) Procede et circuit de division d&#39;elements d&#39;un corps de galois
US6754689B2 (en) Method and apparatus for performing subtraction in redundant form arithmetic
US20220230057A1 (en) Hyperbolic functions for machine learning acceleration
FR2724741A1 (fr) Circuit electronique de calcul modulaire dans un corps fini
EP0695989B1 (fr) Circuit d&#39;inversion d&#39;éléments d&#39;un corps de galois
JP2001222410A (ja) 除算器
EP1071008B1 (fr) Procédé pour effectuer une multiplication avec accumulation dans un corps de Galois.
JP2000252795A (ja) 移動平均フィルタ
EP0690584A1 (fr) Circuit de localisation d&#39;erreurs d&#39;un décodeur Reed-Solomon
EP0778518B1 (fr) Procédé de production d&#39;un paramètre J0 associé à la mise en oeuvre d&#39;opérations modulaires selon la méthode de Montgomery
EP0947913B1 (fr) Procédé de réalisation amélioré d&#39;une division entière
US9459836B2 (en) Simplified inversionless berlekamp-massey algorithm for binary BCH code and circuit implementing therefor
JP2002111447A (ja) ディジタルフィルタ
JPH0981541A (ja) 累算器
Ragunath et al. Delay optimized binary to BCD converter for multi-operand parallel decimal adder
JPH11317676A (ja) 有限フィ―ルドでの任意要素の逆数具現回路
Lo et al. A reusable distributed arithmetic architecture for FIR filtering
FR2585150A1 (fr) Multiplieur pour la multiplication de deux nombres complexes

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20070629