Click here to load reader

Einführung in die Elektronik für Physiker - ipe.fzk.de file19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 3 •! die proprietäre* Hardwarebeschreibungssprache

  • View
    2

  • Download
    0

Embed Size (px)

Text of Einführung in die Elektronik für Physiker - ipe.fzk.de file19.01.2009 Hartmut Gemmeke,...

  • Hartmut Gemmeke Forschungszentrum Karlsruhe, IPE [email protected]

    Tel.: 07247-82-5635

    Einführung in die Elektronik für Physiker

    19. ALTERA HDL

    Was ist eine Hardware Beschreibungs-Sprache (HDL) - warum brauchen wir sie?

    Konventionen der AHDL-Sprachelemente

    Sprachelemente: CONSTANT, FUNCTION, SUBDESIGN, BEGIN, END, VARIABLE, IF, CASE, Wahrheitstafeln (TABLE),

    Logische und arithmetische Operationen

    Bibliothekselemente Knoten (NODE), TRIstate, Flipflops

    Sequentielle Logik

    AHDL Style Guide

    19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 2

    Warum macht man die HDL-Beschreibung?

    Probleme:

    1.! Kosten

    2.! Personal- Jahre für die Ent-

    wicklung

    Zukunft? System-C?

    Ein modifizier- tes C für

    Soft- und Hardware.

    Um in noch vertretbarer Zeit und mit endlichem Aufwand den Design fertig zu stellen

  • 19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 3

    •! die proprietäre* Hardwarebeschreibungssprache von ALTERA •! entwickelt für komplexe kombinatorische und sequentielle Logik:

    –! Altera-EPLDs (erasable and programmable logic devices) –! Unabhängig von der Wahl der verwendeten EPLD-Bausteine –! Wiederverwendbarkeit von Teildesigns (SUBDESIGN) in hierarchischer

    Struktur, auch in VHDL –! Simulation –! Synthese

    •! Beispiel Halbaddierer in AHDL: SUBDESIGN halbadd (

    a, b : INPUT; car, sum : OUTPUT;

    )

    BEGIN

    car = a & b;

    sum = a & !b # !a & b;

    -- kürzer: sum = a $ b; -- wegen der benutzten Look-up-tables END -- dauert das auch genauso lange

    Was ist AHDL?

    $ = XOR ! = NICHT & = UND # = ODER

    * proprietär = firmeneigene

    C HA

    !

    a

    b

    =1

    &

    !

    C

    a

    b

    19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 4

    Aufbau einer AHDL-Beschreibung

    •! Jedes Subdesign wird in einem Text-Design-File (*.TDF) abgelegt und setzt sich aus mehreren Sektionen zusammen (siehe Tabelle):

    –! Jeder dieser Files muss eine SUBDESIGN- und Logik-Sektion besitzen

    –! Konstanten, Funktionsprototypen, TITLE, INCLUDE und Deklarationen von Variablen sind optional und hängen von der Anwendung ab

    TITLE Anweisung! Gibt dem Projekt einen Titel (für die Dokumentation)!

    INCLUDE Anweisung! Erlaubt als *.inc File, ähnlich wie ein *.h-File in C, z.B.

    Definitionen, aber keine Logik oder Subdesigns zu laden!

    CONSTANT Anweisung! Definiert Konstanten!

    FUNCTION Prototyp! Definiert Prototypen für Makrofunktionen!

    SUBDESIGN Sektion! Deklariert Schnittstellen des Subdesigns (Ein- und

    Ausgangs-Signale)!

    VARIABLE Sektion! Deklariert logische Elemente, d.h. Instanzen von

    Funktions-Primitiven oder Makrofunktionen!

    Logik Sektion! Zwischen BEGIN und END steht die Logik, die parallel

    ausgeführt wird!

  • 19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 5

    Was ist AHDL II

    •! AHDL-Beschreibung = textuelle Beschreibung von Hardware- komponenten in Text Define Files (.TDF)

    •! Syntheseergebnis ist bei einfacher Beschreibung oft optimal

    •! AHDL ist eine parallele Sprache

    Include Files

    (.inc)

    CONSTANT

    DEFINE

    PARAMETERS

    FUNCTION Prototyp

    text define files (.TDF)

    TITLE Anweisung

    INCLUDE Anweisung

    CONSTANT

    DEFINE

    PARAMETERS

    FUNCTIONs Prototyp

    OPTION

    SUBDESIGN

    Sektion

    VARIABLE

    Logik Sektion

    Notwendig in einem TDF-File

    SUBDESIGN halbadd (

    a, b : INPUT;

    car, sum : OUTPUT;

    )

    BEGIN

    car = a & b;

    sum = a & !b # !a & b;

    -- kürzer sum = a $ b;

    END

    –! Alle Anweisungen in einer logischen SUBDESIGN Sektion werden parallel, d.h. zur gleichen Zeit

    ausgeführt und nicht sequentiell !

    –! d.h. Reihenfolge spielt keine Rolle

    –! Sequentielle Logik lässt sich nur durch Speicherelemente realisieren

    (z.B. Flipflops)

    Beispiel für parallele Abarbeitung

    SUBDESIGN bool

    (

    a,b,c : INPUT;

    out1,out2 : OUTPUT;

    )

    BEGIN

    out1 = a&b; -- a,b,c : z.B.: alle 3 gleichzeitig 0->1

    out2 = !out1&c; -- ??? out1, out2

    END;

    19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 6

  • 19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 7

    Konventionen der AHDL Sprachelemente I

    •! Kommentare: –! Kommentare werden bei AHDL mit %-Zeichen eingeschlossen,

    –! Oder wie in VHDL durch -- gestartet und mit dem Ende der Zeile beendet

    –! man kann sehr übersichtlich mit “%“ den nicht benötigten Code über die Zeilengrenzen hinaus auskommentieren

    •! Zahlen –! können binär, oktal, dezimal oder hexadezimal eingegeben und

    beliebig in einem Ausdruck kombiniert werden:

    •! Binär: B“010X“ Sequenz von 1, 0 und X (don‘t care)

    •! Oktal: O“037“ Reihe von Zahlen im Bereich 0 ..7 oder Q“037“

    •! Dezimal: Serie von Zahlen zwischen 0 und 9

    •! Hexadezimal X“03F“ Reihe von Zahlen im Bereich 0 bis 15: 0..9,A..F oder H“03F“

    19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 8

    Konventionen der AHDL Sprachelemente II

    •! Namen –! Namen dürfen keine Leer- oder Sonderzeichen enthalten (sonst Namen mit (‘)

    einschließen), AHDL unterscheidet nicht zwischen Groß- und Kleinschreibung!

    –! Namen dürfen nicht länger als 32 Zeichen sein. •! Man kann die Ziffern 0..9 und

    •! die Buchstaben A..Z (groß oder klein) sowie

    •! den Unterstrich _ im Namen verwenden.

    •! "/" am Anfang eines Namens = "active-low"-Signal (invertiertes Signal)

    –! Man unterscheidet 3 Typen von Namen: •! Symbolische Namen für benutzerdefinierte Bezeichner (Identifier) von Variablen,

    Konstanten, ...

    •! Subdesign-Namen

    •! Namen von Schnittstellen (Ports)

    •! Strings (Zeichenketten) sind Argumente für TITLE und INCLUDE, werden durch Anführungsstriche eingeschlossen:

    –! TITLE “volladder“ -- oder z.B.

    –! INCLUDE “volladder.inc“ -- ein Default-Include-File von einem *.tdf File -- wird im File-Menu erzeugt

  • 19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 9

    Konventionen der AHDL Sprachelemente III

    •! Boolesche Größen: –! Einzelne Signale werden in AHDL stets als boolesche Größen interpretiert und –! Wertzuweisung über die reservierten Schlüsselwörter VCC und GND:

    •! „wahr“ als VCC (z.B. a = VCC) und •! „nicht wahr“ als GND (z.B. a = GND)

    •! (Bit-)Vektoren: –! Gruppen von Booleschen Größen = Vektoren von maximal 256

    Einzelelementen (Bits oder Komponenten) : •! z.B. a[5..0]

    •! ist dieser Vektor einmal definiert, so kann ich auch Teilbereiche verwenden a[5..2] •! oder die Bereichsangaben weglassen a[ ] = a[5..0]

    •! bei Teilvektoren mit nur einem Element, kann man die eckige Klammern auch weglassen a[5] = a5

    •! Aufzählungsvektoren sind mit einer runden Klammer eingeschlossen und die Elemente mit Kommata getrennt: (a[4..2], b, c)

    •! Vektoren lassen sich logisch und arithmetisch interpretieren: a[3..0] = (VCC, GND, GND, VCC) = (1,0,0,1) = 9 = -7 (siehe Vorlesung 17.10)

    •! Konstanten: –! sind ganze positive oder negative Zahlen (als 2er Komplement)

    19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 10

    •! Mit Hilfe des CONSTANT Bezeichners werden symbolischen Namen numerische Konstanten zugewiesen

    –! wenn z.B. eine Konstante öfters in einem Design auftaucht, erhöht das die Übersichtlichkeit, Konstanten wird der Wert nur einmal zugewiesen:

    –! CONSTANT N_REG = LOG2(256) - 1

    •! FUNCTION Prototyp Anweisungen sind notwendig, –! um einen Logikdesign in mehrere Teildesigns

    zu zerlegen und wieder für ein SUBDESIGN zur Verfügung zu stellen, z.B.:

    –! FUNCTION volladd(a,b,carry_in) RETURNS (sum, carry_out);

    –! Es werden die Eingangs- und Ausgangsports definiert, die tatsächliche Realisierung (Code) befindet sich in dem zugehörigen File für dieses SUBDESIGN oder eine MAX+PlusII Mega- oder Macrofunction

    CONSTANT- und FUNCTION- Anweisung

    a b carry_in

    sum carry_out

    volladd

  • 19.01.2009 Hartmut Gemmeke, WS2008/2009, Einführung in die Elektronik, Vorlesung 19 11

    •! Das Schlüsselwort SUBDESIGN ist gefolgt von einem Subdesign-Namen (*) und muss den gleichen Namen haben wie der *.TDF-File

    •! Deklaration der Ein- und Ausgänge eines Subdesigns –! Eingeschlossen durch Klammern ()

    –! Signalnamen sind durch ", " getrennt, durch ein “ : " gefolgt und nach der Typdeklaration mit ";" abgeschlossen.

    –! D

Search related