Desplaçador de barril

circuit digital que implementa una operació de desplaçament de bits

Un desplaçador de barril és un circuit digital que pot desplaçar una paraula de dades per un nombre especificat de bits sense l'ús de cap lògica seqüencial, només lògica combinacional pura, és a dir, proporciona inherentment una operació binària. Tanmateix, en teoria també es pot utilitzar per implementar operacions unàries, com ara el desplaçament lògic a l'esquerra, en els casos en què està limitat per una quantitat fixa (per exemple, per a la unitat de generació d'adreces). Una manera d'implementar un desplaçador de barril és com una seqüència de multiplexors on la sortida d'un multiplexor es connecta a l'entrada del següent multiplexor d'una manera que depèn de la distància de canvi. Un canviador de barril s'utilitza sovint per desplaçar i girar n-bits en els microprocessadors moderns,[1] normalment dins d'un sol cicle de rellotge.[2]

Esquema d'un canviador de canó de barra transversal de 4 bits. 'x' denota bits d'entrada i y indica bits de sortida.

Per exemple, agafeu un canviador de barril de quatre bits, amb entrades A, B, C i D. El canviador pot ciclar l'ordre dels bits ABCD com DABC, CDAB o BCDA ; en aquest cas, no es perd cap tros. És a dir, pot desplaçar totes les sortides fins a tres posicions cap a la dreta (i així fer qualsevol combinació cíclica d'A, B, C i D). El canvi de barril té una varietat d'aplicacions, inclosa ser un component útil en microprocessadors (al costat de l'ALU).[3]

Implementació

modifica

Els canviadors més ràpids s'implementen com a barres transversals completes, d'una manera semblant al canviador de 4 bits que es mostra més amunt, només més gran. Aquests incorren en el menor retard, amb la sortida sempre amb un retard de porta únic darrere de l'entrada que s'ha de canviar (després de permetre el petit temps necessari perquè el descodificador de recompte de canvis s'estableixi; aquesta penalització, però, només es produeix quan canvia el recompte de canvis). Aquests desplaçadors de barres transversals requereixen, però , n2 portes per a desplaçaments de n bits. A causa d'això, el canviador de barrils s'implementa sovint com una cascada de multiplexadors paral·lels 2×1, la qual cosa permet una gran reducció del recompte de portes, que ara només creix amb n x log n ; No obstant això, el retard de propagació és més gran, creixent amb el log n (en lloc de ser constant com amb el canviador de la barra transversal).

Per a un desplaçador de barril de 8 bits, s'utilitzen dos senyals intermedis que es desplaça de quatre i dos bits, o passa les mateixes dades, en funció del valor de S[2] i S[1]. Aquest senyal es desplaça després per un altre multiplexor, que està controlat per S[0]:

int1 = IN , if S[2] == 0

= IN << 4, if S[2] == 1

int2 = int1 , if S[1] == 0

= int1 << 2, if S[1] == 1

OUT = int2 , if S[0] == 0

= int2 << 1, if S[0] == 1

Els canvis de barril més grans tenen etapes addicionals.

El canviador en cascada té l'avantatge addicional sobre el canviador de barra transversal completa de no requerir cap lògica de descodificació per al recompte de canvis.[4]

Un ús comú d'un canviador de barril és en la implementació de maquinari de l'aritmètica de coma flotant. Per a una operació de suma o resta de coma flotant, s'han d'alinear els significats dels dos nombres, la qual cosa requereix desplaçar el nombre més petit cap a la dreta, augmentant el seu exponent, fins que coincideixi amb l'exponent del nombre més gran. Això es fa restant els exponents i utilitzant el canviador de barril per desplaçar el nombre més petit cap a la dreta per la diferència, en un cicle.

Referències

modifica
  1. Abhilasha; Sudharshan; Anusha, S.L. Proceedings of Second International Conference on Signal Processing, Image Processing and VLSI [Singapore], 2015. DOI: 10.3850/978-981-09-6200-5_vlsi-74.
  2. «barrel shifter using multiplexer: how to go about it» (en anglès). [Consulta: 14 gener 2024].
  3. «Barrel Shifter» (en anglès americà). [Consulta: 14 gener 2024].
  4. «Design alternatives for barrel shifters» (en anglès). [Consulta: 14 gener 2024].