+ All Categories
Home > Documents > MarcReichenbachundMichaelSchmidt - FAU · Multiplexer-Realisierung in VHDL...

MarcReichenbachundMichaelSchmidt - FAU · Multiplexer-Realisierung in VHDL...

Date post: 01-Sep-2018
Category:
Upload: lyquynh
View: 215 times
Download: 0 times
Share this document with a friend
32
Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer Rechenschaltungen 1 Marc Reichenbach und Michael Schmidt Informatik 3 / Rechnerarchitektur Universität Erlangen Nürnberg 06/12 1 / 32
Transcript

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Rechenschaltungen 1

Marc Reichenbach und Michael Schmidt

Informatik 3 / RechnerarchitekturUniversität Erlangen Nürnberg

06/12

1 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Gliederung

Schieberegister

Multiplexer

Barrel-Shifter

Zähler

Addierer

2 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Schieberegister

• z.B. für FIFO (First In First Out) benötigt

• Kette von verbundenen DFFs

• Ports:• Takt• serieller Input• serieller Output• optional: Reset, Enable, Paralleler Ladeport, ...

• Entwurf möglichst generisch (Wiederverwendbarkeit) → Übung

3 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Schieberegister

• Beispiel: einfaches 8-Bit Schieberegister

4 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Schieberegister

• Entity-Definition

l i b r a r y i eee ;use i eee . std_logic_1164 . a l l ;

en t i t y s h i f t r e g i s t e r i sport ( c l k , d i n : i n std_log ic ;

dout : out std_log ic ) ;end s h i f t r e g i s t e r ;

a r ch i t e c t u r e b eha v i o r of s h i f t r e g i s t e r i s

s i g n a l tmp : std_logic_vector (7 downto 0 ) ;

begin. . .

5 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Schieberegister-Realisierung in VHDL

• mögliche Modellierung in VHDL

. . . .

process ( c l k )begin

i f c l k ’ e ven t and c l k = ’1 ’ thentmp (0) <= d in ;f o r i i n 1 to 7 loop

tmp( i ) <= tmp( i −1);end loop ;

end i f ;end process ;

dout <= tmp ( 7 ) ;

end b eha v i o r ;

6 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Schieberegister im FPGA

• Realisierung im FPGA (Bsp. Spartan3E)?

• Variante 1: DFFs der Slices

• Variante 2: LUTs in SLICEM als Schieberegister verwendbar

• sogenannte SRL16 Komponente mit 16 Bit

• Vorteil: Einsparung von DFFs durch Abbildung auf LUTs

• WICHTIG: nur OHNE Reset nutzbar!!! (sonst Abbildung aufDFFs)

7 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Schieberegister im FPGA

• Aufbau SRL16 Komponente• 4 Eingänge der LUT definieren Breite des Schieberegisters

(Länge-1 !!!)• letztes Bit wird in DFF des Slices für taktsynchrone Ausgabe

gespeichert

• weiterer Vorteil: Breite des Schieberegisters zur Laufzeitdynamisch anpassbar

8 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Schieberegister im FPGA

• Technologie-Schematic für 8-Bit Schieberegister

9 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Multiplexer

• benötigt für eine Vielzahl von Schaltungen, z.B. Decoder,State Machines, Barrel Shifter,...

• besteht aus Gatterlogik

• Ports:• 2 oder mehr Inputs• Auswahl-Input• Output

10 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Multiplexer

• Beispiel: 2-to-1 Multiplexer

AB OS

• Realisierung in VHDL durch Datenflussbeschreibung oderkombinatorischen Prozess

11 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Multiplexer-Realisierung in VHDL

• Entity-Definition

l i b r a r y i eee ;use i eee . std_logic_1164 . a l l ;

en t i t y m u l t i p l e x e r i sport ( a , b , s : i n std_log ic ;

o : out std_log ic ) ;end s h i f t r e g i s t e r ;

a r ch i t e c t u r e b eha v i o r of s h i f t r e g i s t e r i s

begin. . .

12 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Multiplexer-Realisierung in VHDL

• Realisierung mit Datenflussbeschreibung

with s s e l e c to <= a when ’ 0 ’ ,

b when others ;

• Realisierung mit komb. Prozess

process ( a , b , s )begin

i f s = ’0 ’ theno <= a ;

e l s eo <= b ;

end i f ;end process ;

→ alternativ über case-Anweisung

13 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Multiplexer-Realisierung im FPGA• Abbildung auf LUTs und F5MUX -Komponenten (2-to-1Multiplexer Ressourcen in den Slices)

• Beispiel: 4-to-1 Multiplexer

14 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter

• ermöglicht Verschiebung um mehrere Bitstellen in einemSystemtakt

• wichtig für Rechenwerke

• besteht aus Gatterlogik

• Ports:• Inputvektor• Shiftweite• Outputvektor• optional: Steuersignale

15 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter

• unterschiedliche Realisierungen• Schieberichtung rechts oder links• nicht zyklisch oder zyklisch (Barrel-Rotator)• vorzeichenbehaftet oder nicht vorzeichenbehaftet

• Realisierung üblicherweise mit n · log2(n) Multiplexern• 8 Bit → 8 · log2(8) = 8 · 3 = 24 Multiplexer• 64 Bit → 64 · 6 = 384 Multiplexer

→ hoher Ressourcenverbrauch bei größeren Barrel-Shiftern

→ Probleme auch bezüglich kritischem Pfad

16 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter in VHDL

. . .en t i t y b a r r e l s h i f t e r i s

port ( d i n : i n std_logic_vector (7 downto 0 ) ;s h i f t : i n std_logic_vector (2 downto 0 ) ;dout : out std_logic_vector (7 downto 0)−− o p t i o n a l : S t e u e r s i g n a l e

) ;end b a r r e l s h i f t e r ;

a r ch i t e c t u r e b eha v i o r of b a r r e l s h i f t e r i s

begin

. . . .

17 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter in VHDL

• unterschiedliche Beschreibungsformen möglich

• kombinatorische Logik → über Datenflussbeschreibung oderkombinatorischen Prozess

• Datenflussbeschreibung beispielsweise über withselect-Anweisung

• kombinatorischer Prozess beispielsweise mit case-Anweisung

18 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter in VHDL

• Beispiel: case-Anweisung für nicht vorzeichenbehaftete,logische Rechtsschiebung

. . .process ( d in , s h i f t )begin

case s h i f t i swhen "000" => dout <= d in ;when "001" => dout <= "0" & d in (7 downto 1 ) ;when "010" => dout <= "00" & d in (7 downto 2 ) ;when "011" => dout <= "000" & d in (7 downto 3 ) ;when "100" => dout <= "0000" & d in (7 downto 4 ) ;when "101" => dout <= "00000" & d in (7 downto 5 ) ;when "110" => dout <= "000000" & d in (7 downto 6 ) ;when "111" => dout <= "0000000" & d in ( 7 ) ;when others => dout <= "00000000" ;

end case ;end process ;. . . .

19 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter in VHDL

• Schiebeoperationen alternativ über VHDL-Operatoren• rol - Rotate Left• ror - Rotate Right• sll - Shift Left Logical• srl - Shift Right Logical• sla - Shift Left Arithemtic• sra - Shift Right Arithemtic

20 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter in VHDL

• Bereitstellung über Bibliothek ieee.numeric_std fürvorzeichenbehaftete und nicht vorzeichenbehafteteSchiebeoperationen

< signed_sig > operator < shift_amount_in_integer >;< unsigned_sig > operator < shift_amount_in_integer >;

• WICHTIG: auf Toolunterstützung achten! (von XSTunterstützt)

21 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter in VHDL

• Beispiel: srl-Anweisung für nicht vorzeichenbehaftete, logischeRechtsschiebung über ieee.numeric_std. . .dout <= std_logic_vector ( uns i gned ( d i n ) s r l

to_integer ( uns i gned ( s h i f t ) ) ) ;. . . .

→ kompaktere Schreibweise

22 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Barrel-Shifter im FPGA

• Abbildung im FPGA auf LUTs und MUXF5-Komponenten

• Problem: kritischer Pfad → Lösung?

• weitere Möglichkeit: Nutzung der Multiplizierer (später mehr)

• Schiebeoperation um n durch Multiplikation mit 2n

• für weitere Informationen: xapp195.pdf

23 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Zähler

• weitere wichtige Grundkomponente, z.B. fürAdressberechnungen, Frequenzteiler,... benötigt

• besteht aus Logik und DFFs

• Ports:• Takt• Zähler-Output• optional: Reset, Enable, Init-Port, ...

24 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Zählermodellierung in VHDL

. . .en t i t y coun t e r i s

port ( c l k , r e s e t : std_log ic ;q : out std_logic_vector (3 downto 0 ) ) ;

end coun t e r ;

a r ch i t e c t u r e b eha v i o r of coun t e r i s

s i g n a l tmp : std_logic_vector (3 downto 0 ) ;

begin

. . . .

25 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Zählermodellierung in VHDL

• Modellierung mit “+“ Operator möglich:

. . .

process ( c l k , r e s e t )begin

i f r e s e t = ’1 ’ thentmp <= "0000" ;

e l s i f c l k ’ e ven t and c l k = ’1 ’ thentmp <= tmp + 1 ;

end i f ;end process ;

q <= tmp ;

end b eha v i o r ;

• Hardware-technische Realisierung?

26 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Zählerschaltung

• Herleitung der kombinatorischen Logik wieder überWahrheitstabelle

• Lösung:

• DI1 = DO1 ⊕ ′1′

• DI2 = DO2⊕ (DO1)• DI3 = DO3⊕ (DO1 ∧ DO2)• DI4 = DO4⊕ (DO1 ∧ DO2 ∧ DO3)• ....

27 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Zählerschaltung

• resultierende Schaltung

Q1D1 Q2D2'1' Q3

D3

• Realisierung im FPGA mit LUTs und DFFs

• größere Zähler: Arithmetik mit speziellen Multiplexern undXOR-Gattern (später mehr)

28 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Ripple-Carry Addierer

• Ripple-Carry Addierer (RCA) aus Volladdierern (FA)

• erster Volladdierer kann durch Halbaddierer ersetzt werden (fürreine Addition)

• alle Volladdierer arbeiten parallel, aber Problem: "rippelndeCarries"

29 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Subtraktion mit RCA

• Subtraktion über Zweierkomplement

• Realisierung in Hardware?

30 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Subtraktion mit RCA

• Invertierung eines Operanden mit XOR-Gattern

• Addition der ’1’ über Carry-in des ersten Volladdierers

31 / 32

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer

Literatur

Bücher

• VHDL-Synthese, Jürgen Reichardt, Bernd Schwarz, 5. Auflage,Oldenbourg Wissenschaftsverlag GmbH, 2009, ISBN978-3-486-58987-0

• The Designer’s Guide to VHDL, P.J. Ashenden, 3. Auflage,Morgan Kaufmann Publisher, 2008, ISBN 978-0-12-088785-9

• Implementing Barrel Shifters Using Multipliers, XAPP195(v1.1), August, 2004

32 / 32


Recommended