• Keine Ergebnisse gefunden

AUTOMATENMITDATENPFAD HARDWARE-BESCHREIBUNGSSPRACHEN

N/A
N/A
Protected

Academic year: 2022

Aktie "AUTOMATENMITDATENPFAD HARDWARE-BESCHREIBUNGSSPRACHEN"

Copied!
7
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

SRQPON

MLKJIH GFEDCBA89

6O0EKJ5Z2I1HRD8QGY9U3F

HARDWARE-

BESCHREIBUNGSSPRACHEN

Hardwareentwurf mit VHDL

1. Januar 2019

Revision: c9b2bc4 (2019-01-01 19:36:22 +0100)

Steffen Reith

Theoretische Informatik

Studienbereich Angewandte Informatik HochschuleRheinMain

AUTOMATEN MIT DATENPFAD

Notizen Notizen

(2)

AUTOMATEN MIT DATENPFAD

Bisher haben die betrachteten Automaten nur Ausgabesignale erzeugt. Nun soll dieses Konzept zur Steuerung von

komplexe(re)n Komponenten verwendet werden.

Definition (Datenpfad)

Zustandsspeicher, Schaltkreise für Berechnungen und deren Ver- bindungen, die zusammen den Fluss und die Umwandlung von Daten ermöglichen, werden Datenpfad (engl. data path) ge- nannt.

Definition (Kontrollpfad)

Ein (endlicher) Automat, der die Komponenten eines Datenpfads sinnvoll steuert und so eine zielgerichtete Berechnung ermög- licht heißt Kontrollpfad (engl. control path).

122

Automaten mit Datenpfad

DIE REGISTER-TRANSFER METHODE

Mit Hilfe von Automaten mit Datenpfad können sequentielle Schaltkreise implementiert werden, die entsprechend der RT-Methode (Register-Transfer) arbeiten.

Bei der RT-Methode werden Berechnungen durch die

Manipulation und den Transfer von Daten zwischen Registern durchgeführt. Eine elementare Register-Transfer Instruktion hat die Form

r

dest

f (r

src1

, . . . , r

srcn

)

Die Funktion f wird auf die Werte der Register r

src1

, . . . , r

srcn

angewendet und das Ergebnis im Register r

dest

abgelegt.

Notizen Notizen

(3)

BEISPIELE FÜR REGISTER-TRANSFER INSTRUKTIONEN

Die folgenden Instruktionen zeigen beispielhaft die Möglichkeiten.

Transfer- und Initialisierungsoperationen:

r

i

0 (belege Register i mit dem Wert 0)

r

j

r

i

(speichere den Inhalt von Register i in Register j)

r

i

r

j

?r

a

: r

b

(wenn r

j

̸ = 0 speichere den Inhalt von r

a

in r

i

, sonst speichere r

b

in r

i

)

Logische und arithmetische Operationen:

r

i

r

a

AND r

b

(und-Verknüpfung der Register r

a

und r

b

)

r

i

r

i

<<3 (schiebe r

i

um drei Bits nach links)

r

i

r

a

+ r

b

(addiere r

a

mit r

b

und speichere Ergebnis in r

i

)

r

i

r

i

+ 1 (Inkrement)

124

Automaten mit Datenpfad

AUTOMAT MIT DATENPFAD - GRUNDLEGENDE STRUKTUR

Next State Logic

d

clk q

State Register

Output Logic Routing

Network Funktions-

einheiten Routing Network

d

clk q

Data Registers

InputData

Data Output

Command

External Status

Internal Status Control Signal

KontrollpfadDatenpfad

125

Notizen Notizen

(4)

BEISPIEL: EIN SCHALTKREIS FÜR FIBONACCI-ZAHLEN

IC FSM

RegFile

AU +

RegMUX

OutMUX loadIC

decIC

isZero

value loadReg writeEnable

result ready

n start

adr adr

Datenpfad Kontrollpfad

126

Automaten mit Datenpfad

BEISPIEL: EIN SCHALTKREIS FÜR FIBONACCI-ZAHLEN (II) Defaultwerte: loadIC <= '0', value <= (others => '0'), adr

<= '0', loadReg

<= '0' , decIC <= '0' , ready <= '0' und writeEnable <= '1' .

idle

writeEnable <= '0'

load1

writeEnable <= '0' loadIC <= '1';

load2

loadReg <= '1';

adr <= '0';

value <= 1;

load3

loadReg <= '1';

value <= 1;

decIC <= '1';

adr <= '1';

calc1

adr <= '0';

calc2

adr <= '1';

output1

writeEnable <= '0' ready <= '1'

adr <= '0';

output2

writeEnable <= '0' ready <= '1'

adr <= '1';

¬start

start

¬isZero

isZero ¬isZero isZero

Zusätzlich: Die Mealy-Übergänge ¬ isZero belegen decIC <= '1'

Notizen Notizen

(5)

SCHNITTSTELLEN DES DATENPFADS

1 library ieee;

2 use ieee.std_logic_1164.all;

3

4 library FibLib;

5 use FibLib.FTypes.all;

6

7 entity DataPath is

8

9 port (reset : in std_logic;

10 clk : in std_logic;

11 value : in word_t;

12 loadReg : in std_logic;

13 adr : in std_logic;

14 writeEnable : in std_logic;

15 output : out word_t );

16

17 end DataPath;

128

Automaten mit Datenpfad

DIE ARITHMETISCHE EINHEIT

Die arithmetische Einheit stellt eine extrem vereinfachte Version einer ALU dar.

1 library ieee;

2 use ieee.std_logic_1164.all;

3 use ieee.numeric_std.all;

4

5 library FibLib;

6 use FibLib.FTypes.all;

7

8 entity AU is

9

10 port (portA : in word_t;

11 portB : in word_t;

12 result : out word_t );

13

14 end AU;

15

16 architecture Behavioral of AU is

17 begin

18 result <= std_logic_vector(unsigned(portA) + unsigned(portB ));

19 end architecture;

129

Notizen Notizen

(6)

SCHNITTSTELLEN DES KONTROLLPFADS

1 library ieee;

2 use ieee.std_logic_1164.all;

3

4 library FibLib;

5 use FibLib.FTypes.all;

6

7 entity ControlPath is

8

9 port (reset : in std_logic;

10 clk : in std_logic;

11 n : in word_t;

12 value : out word_t;

13 adr : out std_logic;

14 loadReg : out std_logic;

15 writeEnable : out std_logic;

16 start : in std_logic;

17 ready : out std_logic );

18

19 end ControlPath;

130

Automaten mit Datenpfad

ERZEUGUNG DER STEUERSIGNALE

1 library ieee;

2 use ieee.std_logic_1164.all;

3

4 library FibLib;

5 use FibLib.FTypes.all;

6

7 entity FSM is

8

9 port (reset : in std_logic;

10 clk : in std_logic;

11 loadIC : out std_logic;

12 decIC : out std_logic;

13 value : out word_t;

14 adr : out std_logic;

15 loadReg : out std_logic;

16 writeEnable : out std_logic;

17 start : in std_logic;

18 isZero : in std_logic;

19 ready : out std_logic );

20

Notizen Notizen

(7)

ERZEUGUNG DER STEUERSIGNALE (II)

Es wird das übliche Design-Pattern für Moore/Mealy-Automaten verwendet:

1 architecture Behavioral of FSM is

2

3 type state_t is (idle ,load1 ,load2 ,load3 ,calc1 ,calc2 ,output1 ,

4 output2 ,crash );

5 signal state_reg , state_next : state_t;

6 7 begin

8

9 state_handler : process (reset , clk)

10 begin

11

12 if (reset = '1') then

13 state_reg <= idle;

14 elsif (rising_edge(clk)) then

15 state_reg <= state_next;

16 end if;

17

18 end process;

132

Automaten mit Datenpfad

ERZEUGUNG DER STEUERSIGNALE (III)

1 transition : process(state_reg , start , isZero)

2 begin

3 -- Set defaults

4 state_next <= state_reg; writeEnable <= '1';

5 loadIC <= '0'; value <= (others => '0');

6 adr <= '0'; loadReg <= '0';

7 decIC <= '0'; ready <= '0';

8

9 case (state_reg) is -- Handle all possible states

10

11 when idle =>

12

13 writeEnable <= '0'; -- Do not write to the register file

14

15 if (start = '1') then -- Check for start signal

16 state_next <= load1;

17 else

18 state_next <= idle; -- Wait for start

19 end if;

133

Notizen Notizen

Referenzen

ÄHNLICHE DOKUMENTE

Es entstehen unerwünschte Zwischenwerte (vgl. Glitches) Bei Drehwinkelgebern bewirken kleine Winkelfehler auch nur kleine Änderungen im Codewort. Dies gleich Fertigungstoleranzen

Damit ergibt sich für exCase eine zeitliche Abhängigkeit, die mit der Instantiierung eines Latches (Speicher) gelöst werden muss, da das Speicherverhalten nicht vom Takt abhängig

Liegt ein Schaltkreis als VHDL-Beschreibung vor, so kann mit Hilfe der folgenden Schritte eine gepipelinte Version gewonnen werden:. → Bringe die graphische Darstellung der Schaltung

Soll fremdes Bildmaterial in einer Arbeit veröffentlich werden, so ist immer eine schriftliche Genehmnigung des Urhebers einzuholen. Sie sparen sich viel Ärger und Geld,

VHDL wird sowohl zur Synthese von Schaltkreisen, als auch zu deren Simulation (≜ Test &amp; Debugging) verwendet.. VHDL ein in Europa sehr verbreiteter (IEEE) Standard, der

Die Zuweisung an ein Signal wird nicht sofort aktiv, sondern erst nach einer gewissen Verzögerungszeit (z.B. erst nach verlassen eines Prozesses). Dies ist nützlich, um

Mit Hilfe von speziellen Taktverteilungsnetzwerken wird in einem FPGA (oder anderen synchronen Schaltkreisen) der Clock Skew minimiert.. Aus diesem Grund sollte keine

Solche Clock Manager können mit dem „Clock-Wizard“ von Vivado instantiiert werden oder durch besondere VHDL-Beschreibungen, die das Synthesetool automatisch erkennt (siehe: