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
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
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
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
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
WELCOME TO THE REAL WORLD!
22
Notizen Notizen