• Keine Ergebnisse gefunden

HARDWAREENTWURFMITVHDL HARDWARE-BESCHREIBUNGSSPRACHEN

N/A
N/A
Protected

Academic year: 2022

Aktie "HARDWAREENTWURFMITVHDL HARDWARE-BESCHREIBUNGSSPRACHEN"

Copied!
6
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

HARDWAREENTWURF MIT VHDL

Notizen Notizen

(2)

WAS IST VHDL?

VHDL ist eine Sprache zurBeschreibungvon Hardware (Hardwarebeschreibungssprache) undkeine

Programmiersprache!

VHDL steht für ›VHSIC Hardware Description Language‹, wobei VHSIC für ›Very High Speed Integrated Circuits‹. Die Entwicklung von VHDL begann ca. 1980 und wurde durch das US DoD initiiert.

VHDL wird sowohl zurSynthesevon Schaltkreisen, als auch zu derenSimulation(≜Test & Debugging) verwendet.

Im Gegensatz zu der auch weit verbreiteten Beschreibungssprache Verilog ist VHDL ein (IEEE) Standard, der sowohl

herstellerübergreifendals auchherstellerunabhängigist.

Anders bei (klassischen) Programmiersprachen werden in VHDL bis auf Ausnahmen (innerhalbPROCESS,FUNCTIONund

PROCEDURE) alle Anweisungenparallel ausgeführt!

14

Hardwareentwurf mit VHDL

HARDWAREENTWURF / GAJSKI-KUHN Y-DIAGRAMM

Verhalten Struktur

Geometrie

Systeme Algorithmen Register-Transfer

Logik DGL

Prozessoren Subsysteme / Busse ALU, RAM, etc.

Gatter, Flip-Flops, etc.

Transistoren

Partitionierung Floorplan Modullayout Zellenlayout Transistorlayout

Notizen Notizen

(3)

DER GRUNDSÄTZLICHE WORKFLOW FÜR (C)PLD / FPGAS / ASICS VHDL (RTL)

Netzliste

Optimierte Netzliste

Compilation

Optimierung

Place & Route Simulation

Simulation Simulation

16

Hardwareentwurf mit VHDL

EDA-TOOLS (ELECTRONIC DESIGN AUTOMATION)

Für FPGAs sind die Tools der Firma Xilinx (ISE / Vivado) bzw. der Firma Altera (Quartus II) verbreitet.

In der Vorlesung werden wir dieVivado Suiteverwenden. Diese macht aus der Beschreibung:

1 library ieee;

2 use ieee.std_logic_1164.all;

3

4 entity Adder is

5 port (a : in std_logic;

6 b : in std_logic;

7 cin : in std_logic;

8 s : out std_logic;

9 cout : out std_logic );

10 end Adder;

11

12 architecture Behavioral of Adder is

13 begin

14 s <= a xor b xor cin;

15 cout <= (a and b) or (a and cin) or (b and cin);

16 end Behavioral;

Notizen Notizen

(4)

ERGEBNIS DER SYNTHESE

Eine Übersetzung in eine Netzliste und dann in „echte“ Hardware ergibt folgendes Bild:

s0_i

RTL_XOR I0

I1 O

c_i

RTL_OR I0

I1 O

c_OBUF_inst

OBUF O I b

cout c1_i

RTL_AND I0

I1 O

c0_i__0

RTL_AND I0

I1 O

a

c1_i__0

RTL_AND I0

I1 O

c0_i

RTL_OR I0

I1 O

s_i

RTL_XOR I0

I1 O

s_OBUF_inst

OBUF O cin I

s

Abbildung:RTL-Level

a_IBUF_inst IBUF

O a I

c_OBUF_inst_i_1

EQN=8'hE8 O I0 I1 b_IBUF_inst I2

IBUF O I

c_OBUF_inst OBUF

O I

b

cout cin_IBUF_inst

IBUF O I

s_OBUF_inst OBUF

O I s_OBUF_inst_i_1

EQN=8'h96 O I0 I1 I2 cin

s

Abbildung:Technologie-Level

18

Hardwareentwurf mit VHDL

EINE BEISPIELHAFTE FPGA-ARCHITEKTUR

Man kann sich ein FPGA als regelmäßiges Array von Funktionsblöcken vorstellen, die flexibel verdrahtbar sind:

IOB CLB BRAM DSP

CLB

CLB

CLB

CLB CLB

CLB

CLB

CLB

CLB IOB

IOB

IOB

IOB

IOB IOB

IOB IOB

BRAM

BRAM

BRAM

BRAM DSP

DSP

DSP

DSP BRAM

BRAM

BRAM

BRAM

BRAM CLB

CLB

CLB

CLB

CLB CLB

CLB

CLB

CLB

CLB

IOB IOB

IOB IOB IOB

IOB

IOB

IOB

IOB

IOB

IOB IOB IOB IOB IOB

Das FPGA kommuniziert durch IO-Blöcken (IOB), die Configurable Logic Blocks (CLB) enthalten Logik und kleine Speicher (einzelne Flip-Flops). Weiterhin gibt es große Speicherblöcke (BRAM) und evtl. schnelle Hardwaremultiplizierer für DSP-Anwendungen.

Notizen Notizen

(5)

EINE BEISPIELHAFTE FPGA-ARCHITEKTUR (II)

Real existierende FPGAs sind deutlich komplexer aufgebaut:

CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Multiplizierer

CLBCLB

CLBCLB CLBCLB MultipliziererCLB

CLB

CLBCLB

Clock-ManagementI/O-Clock Management CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Multiplizierer

CLBCLB

CLBCLB CLBCLB MultipliziererCLB

CLB

CLBCLB

Clock-ManagementI/O-Clock Management CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Multiplizierer

CLBCLB

CLBCLB CLBCLB MultipliziererCLB

CLB

CLBCLB Clock-ManagementI/O-Clock Management

CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Multiplizierer

CLBCLB

CLBCLB CLBCLB MultipliziererCLB

CLB

CLBCLB Clock-ManagementI/O-Clock Management

CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Multiplizierer

CLBCLB

CLBCLB CLBCLB MultipliziererCLB

CLB

CLBCLB Clock-ManagementI/O-Clock Managment

CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Block-RAM

CLBCLB

CLBCLB CLBCLB Multiplizierer

CLBCLB

CLBCLB CLBCLB MultipliziererCLB

CLB

CLBCLB

Clock-ManagementI/O-Clock Management FIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-Buffer

FIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFOFIFO

I/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-BufferI/O-Buffer

programmierbarer Interconnect

Slice - vier 6-stellige beliebige Boolesche Funktionen - Multiplexer - acht FlipFlops großes RAM (z.B. 32 kB)

Hardwaremultiplizierer für DSP-Operationen

programmierbare Takterzeugung

FIFO für schnelle I/O-Operationen

Pad

Multi-Standard I/O-Treiber Block-RAM

CLB CLB CLB CLB

CLB

Block-RAM CLB

CLB CLB

Block-RAM CLB CLB CLB

CLB CLB

Multiplizier er CLB

CLB CLB

CLB

CLB CLB

Multiplizier er CLB CLB

CLB CLB

Clock-Management

I/O-Clock Management CLB

Multiplizier er CLB CLB

I/O-Clock ManagmentFIFO

FIFO FIFO FIFO FIFO

I/O-Buffer I/O-Buffer I/O-Buffer I/O-Buffer

I/O-Bu ffer er Configurable Logic Block

(enthält zwei Slices)

LUT6_2 Port B 66

LUT6_2

Port A

Port B Out

MUX

Port A

Port B Out

MUX

66

LUT6_2

Port A

Port B Out

MUX

Port A

Port B Out

MUX

66

20

Hardwareentwurf mit VHDL

SIMULATION

Bevor ein Schaltkreis gebaut werden kann, muss dieser mit Hilfe der Schaltungsbeschreibung (VHDL)validiert / getestetwerden.

Dazu simuliert man Schaltkreise mit unterschiedlichem Detailgrad (z.B. Signallaufzeiten aufgrund der geometrischen Struktur).

Eine einfache Simulation des Addierers ergibt:

Zur Durchführung von Simulation werdenTestbenches verwendet, die alle notwendigen Signalkombination an den (simulierten) Schaltkreis anlegen.

Notizen Notizen

(6)

WELCOME TO THE REAL WORLD!

22

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: