Technische und Wirtschaftswissenschaftliche Universität Budapest Lehrstuhl für Elektronische Bauelemente MIKROELEKTRONIK, VIEEAB00.

Slides:



Advertisements
Ähnliche Präsentationen
Organisatorisches Die * bzw. ** Aufgaben müssen gelöst werden, da sie später wieder gebraucht werden. Musterlösungen werden zwei Wochen nach den Übungsblättern.
Advertisements

Integrations- und Funktionstests im Rahmen des V-Modelles
Objektorientierte Programmierung
Das „Vorgehensmodell“
Einfügen einer Scanchain in ein Chipdesign mittels DFT- Compiler.
Vergleichende Untersuchungen zur effizienten VHDL-Simulation
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Seminar Software-Engineering für softwareintensive Systeme
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Beispiel: Wasserfallmodell als einfaches Phasenmodell
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
2.5. Mikrocontroller-Komponenten
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
Zusammenfassung Vorwoche
Rechnerarchitektur Vorlesung 2 Peter B. Ladkin
So animieren Sie Kreisdiagramme mit der Eingangs-Animation „Rad“
Open Source Prozessor Leon2 Peer Royla und Marco Siebert RST-Labor WS 04/05 Prof. Dr.-Ing. Thomas Risse.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
EDO-RAM,SDRAM,RDRAM,DDR2-SDRAM.
Fachprojekte „Entwurf Eingebetteter Systeme”
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Java programmieren mit JavaKara
Duo- und Quad Prozessor-Architektur
CPLD/FPGA-Programmierung mit E-blocks. Wozu die CPLD/FPGA-Programmierung untersuchen? Zusammenhang zur modernen Digitalen Elektronik Verschwinden der.
Name des Vortragenden Klasse Ort / tt.mm.jjjj Beschreibung Zentraleinheit CPU, Motherbord, RAM.
Steuerung externer Komponenten über ein USB-Interface.
Industrial Projects and Technical Services - ATD TD MCH 8 Information Technology Electronic Design - Test Engineering Herbert Schmidt GmbH Flying Probe.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
FPGA... ein Versuch. Uli Schäfer 1. Historie: PLD Uli Schäfer 2 Schaltungsgrösse wächst drastisch mit Zahl der Eingänge CPLD = Array + Flipflops + macro.
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)
Kommission und Steuerung in wenigen Minuten Daten- und Steuerungsflexibilität in einem einzigen Netzwerk.
Wasserfallmodell und Einzelbegriffe
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Das Binär-System Alles ist davon abhängig, ob Strom fließt oder nicht!
Netzwerke.
Μ Version 1.0Seite 1µVision Start Debugger Set Breakpoint µVision Debugger.
Vienna University of Technology Pirker Simon 1. Überblick Definition Motivation Vorteile Entwurf von VP Pirker Simon 2.
PHP: Operatoren und Kontrollstrukturen
Technische Informatik II
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Komplexitätsmanagment
Universität Rostock Fachbereich Elektrotechnik und Informationstechnik Institut für Angewandte Mikroelektronik und Datentechnik Eine Prozessorarchitektur.
Technische Universität München Zentralübung Automotive Software Engineering – Übungsblatt 6.
Modellbasierte Software- Entwicklung eingebetteter Systeme Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Folien zur Vorlesung Hardwarearchitekturen und Rechensysteme von Prof. Dr. rer. nat. U. Brinkschulte Prof. Dr.-Ing. L. Hedrich (basierend auf Materialien.
Schnittstellen vom Computer
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Technische und Wirtschaftswissenschaftliche Universität Budapest Lehrstuhl für Elektronische Bauelemente MIKROELEKTRONIK, VIEEAB00.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Technische und Wirtschaftswissenschaftliche Universität Budapest Lehrstuhl für Elektronische Bauelemente MIKROELEKTRONIK, VIEEAB00.
A. Steininger TU Vienna 1 Multicore eleganter Work-Around um die Design-Crisis Problemverschiebung in die SW (= auf höhere Ebene) ABER: hohe Parallelität.
Tutorium Software-Engineering SS14 Florian Manghofer.
Einführung in die Programmierung
MIKROELEKTRONIK, VIEEAB00
MIKROELEKTRONIK, VIEEAB00
 Präsentation transkript:

Technische und Wirtschaftswissenschaftliche Universität Budapest Lehrstuhl für Elektronische Bauelemente MIKROELEKTRONIK, VIEEAB00 Entwurf auf FPGA, Verilog, SystemC

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Entwurf auf FPGA

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Kosten von Standardzellen-ICs ► Die Kosten der vollen Si Technologie sind zu bezahlen  Der volle Satz der Masken muss erstellt werden (NRE)  Die vollen Kosten der Bearbeitung des Si treten auf; proportional der Si Fläche ► Verpackungskosten  proportional der Anzahl der Anschlüsse des IC  hängen von der Schwierigkeiten der Verpackung ab ► Testkosten  Scheibentest – als Teil der Kosten für Scheibenfertigung im Rahmen von small volume production liefern MPW Broker getestete Scheiben  Endtest-Kosten – diese können durch DFT (Design for Testability, siehe später) reduziert werden

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Oder: Ausführung auf FPGA ► Ausgang: die Idee von gate array bleibt, aber die Verbindungen werden nicht durch Photomasken programmiert – nicht mit Metallisierungsgebilde (starke Reduzierung von NRE Kosten)  das Grundelement ist: logic array block ► Statt dessen: die Architektur des Verbindungsnetzes wird vorweg aufgebaut, die Verbindungen werden programmiert  Durchschmelzen von Sicherungen – oder günstiger ist die antifuse Technik (niederohmiger Kontakt durch Durchbrennen einer Isolationsschicht)  Speicherung der Verbindungen in SRAM  Vorweg gestaltete I/O Schaltkreise ► Die modernen FPGAs enthalten auch sehr komplexe Blöcke (RAM, DSP Block,...)

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Beispiel von Altera: Stratix

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Altera Stratix

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET z.B.: Xilinx Virtex-5 ► 65-nm CMOS Technologie ► 12 Metallschichten ► 1.0V core Voltage ► 36-Kbit Block RAM/FIFO ► I/O Betrieb: 1.2 bis 3.3V ► RocketIO GTP transceivers 100 Mb/s Gb/s ► PCI Express Endpoint Blöcke ► 10/100/1000 Mb/s Ethernet ► On-chip Temperaturmonitoring ► On-chip Versorgungsmonitoring

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Prozess des Entwurfs von FPGA-s: Systembeschreibung Spezifikation in SystemC. HW-SW co-design System Simulation Entwurf auf System- Ebene High-Level Syntheis Timing Parameter Abstraktionsebene:Repräsentation: Simulator: Verhaltensbeschreibung Spezifikation in VHDL oder in Verilog Funktionale Verifikation Strukturelle Beschreibung in VHDL oder Verilog Logik-Simulation Mapping und Layouterstellung Entwurf auf Logik- Ebene Physikalischer Entwurf (Layout) Erstellung von Timing Data Entwurf auf Transistor- Ebene Das Entwerfen konzentriert sich hier Das bleibt aus, es wird ein Programmcode generiert, das die Verbindungen repräsentiert

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Programmierung – Entwurf von FPGA-s Programmierungsprache Compiler Object Dateien Linker Ausführbare Datei HDL Synthese „Placierung und Verdrahtung" Netzliste Bit-Datei Software FPGA hardware

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET VHDL Muster:

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Verilog Muster

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Synthese Netlist RTL HDL

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Hardware-Beschreibung Sprachen (HDL) ► Überschau ► Verilog ► Kurz über SystemC

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Entwicklung von HDL-s ► In den 80-er Jahren wurden die digitalen Schalt- kreise so komplex, dass sie auf Transistor- bzw. Gatterebene nicht mehr überschaubar waren ► Es wurde ein Mittel gebraucht zur schnellen und effizienten Gestaltung und Prüfung der Entwürfe ► Die Lösung kam in Form von Programmiersprachen (Verilog, VHDL, ABEL, usw.) ► Diese sind Spezialsprachen, die direkt für die Ansprüche des Hardware-Entwurfs gestaltet sind

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die Geschichte von Verilog ► Diese Sprache hat die Firma Gateway Design Automation 1984 entwickelt (Simulator Verilog-XL) ► Diese Firma hat Cadence Design Systems aufge- kauft, und 1990 veröffentlicht, um damit eine verbreitete Verwendung zu ermöglichen. Dadurch wurde Verilog de facto Standard. ► Die offizielle Standardisierung erfolgte 1995 unter der Betreuung durch die Organisation Open Verilog International (OVI – alias Accelera) – dann wurde Verilog de jure Standard ► 2001 wurde das Standard erweitert: Verilog-2001

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Eigenschaften der HDLs ► Sie sind spezielle Programmierungssprachen ► Sie modellieren, simulieren (und darstellen) die digitale Hardware ► Sie können das konkurrente Funktionieren beschreiben (Parallelität) ► Sie wiedergeben den zeitlichen Verlauf der Signale, behandeln die hardwarenspezifische Signal-Pegel ► Sie realisieren einfach die unterschiedlichen digita- len Modelle (kombinatorische, synchrone und asynchrone sequentielle Netzwerke) ► Unterstützen den modularen Entwurf

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Vorteile der HDLs ► Unterstützung der strukturierten Entwurfsmethoden ► Projekte können flexibel partitioniert werden ► Auf Grund der Sprachbeschreibung kann der Schaltplan generiert werden, wenn notwendig ► Abstraktion auf hoher Ebene ist möglich ► Einfacher Vergleich von Alternativen ist möglich ► Änderungen können schnell durchgeführt werden ► Bessere Effizienz und Qualität  grössere Produktivität beim Entwerfen ► Schneller Prototypenentwurf durch Synthese

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Hierarchischer Aufbau aus Elementen 1 ► In Verilog werden Moduln definiert ► Diese sind Teilschaltkreise mit Ein- und Ausgängen ► z.B.: module AND(inA, inB, q); input inA, inB; output q; … endmodule A inA inB q

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Hierarchischer Aufbau aus Elementen 2 ► Eine beliebige Anzahl von Moduln kann eingebaut werden– Instanzierung: module Komplex(in, out); input [3:0] in; output [1:0] out; AND a1(in[0], in[1], out[0]); AND a2(in[2], in[3], out[1]); endmodule 4-Bit Eingang 2-Bit Ausgang Name des zu instanzierenden Moduls Individueller Name der Instanz Portliste Die einzelnen Bits werden mittels des Index-Operators ([ ]) selektiert

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Hierarchischer Aufbau aus Elementen 3 module Komplex module AND a1 a2 in [3:0]out [1:0] in[0] in[1] in[2] in[3] out[0] out[1] inA inB q q inA inB

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Leitungen im Verilog ► Leitung: das einfachste Schaltkreiselement (wire) ► Sie braucht ständige Steuerung, denn sie hat keinen Speicher ► Dafür gibt es zwei Möglichkeiten:  Kontinuierliche Zuweisung (continuous assignment): Das ist ein Modell des (kombinatorischen) Schaltnetzes An der rechten Seite der Zuweisung werden die Werte kontinu- ierlich beobachtet, und wenn sich etwas ändert, werden die Zuweisungen sofort aufgefrischt  Anschluss an den Ausgang eines Registers: Die Register speichern den zugewiesenen Wert (siehe später), deshalb können sie die angeschlossene(n) Leitung(en) kontinuierlich antreiben

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Kontinuierliche Zuweisung ► Wird mittels des Schlüsselwortes assign gemacht ► Realisierung des AND Gatters von Slide 18: module (inA, inB, q); input inA, inB; output q; assign q = inA & inB; endmodule;

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Deklaration von Leitungen ► Wenn nicht anders deklariert, werden die An- schlüsse eines Moduls als Leitungen behandelt ► Weitere Leitungen können mittels des Schlüssel- worts wire deklariert werden ► Z.B. eine einfache Leitung und ein 8-Bit-Bus: wire leitung; wire [7:0] bus;

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Register ► Ein-Bit Speicher ► Zuweisungen können nur durch ein Ereignis statt- finden (z:B. steigende Flanke eines Taktsignals) ► Der zugewiesene Wert wird bis zur nächsten Zuweisung beibehalten ► Deklaration: mittels des Schlüsselwortes reg reg q; reg [3:0] counter;

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Ereignisgesteuerte Zuweisung 1 ► In einem always Block können Werte, gesteuert durch ein Ereignis, einem Register zugewiesen werden: ► wire clk; reg counter; clk) begin counter = counter + 1; end Nach dem wird das Ereignis angegeben Eine steigende Flanke des Signals clk startet die Durch- führung der Befehle im Block Ein Befehlsblock befindet sich zwischen den Schlüsselwörtern begin und end

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Ereignisgesteuerte Zuweisung 2 ► Das System kontinuierlich prüft die Bedingungen im Kopf der always Blöcke und bei Erfüllung führt das Befehlsblock im Körper aus ► In einem always können Werte nur Registern zugewiesen werden (in gewissen Fällen kann der Syntheser das Register zur Leitung umgestalten) ► Die always Blöcke innerhalb eines moduls laufen parallel ► Es gibt always Blöcke auch ohne Bedingung,die kontinuierlich durchgeführt werden

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Ein komplexeres Beispiel: Zähler module zaehler(clk, reset, q); input clk, reset; output reg [7:0] q; clk) begin if (reset == 1) q = 0; else q = q + 1; end endmodule Der Ausgang ist ein 8-Bit-Regiszter Das Reset ist synchron, weil das Resetsignal nur bei der steigen-de Flanke des Taktes geprüft wird Die bedingte Abzweigung ( if-else ) funktioniert genau so, wie in anderen Sprachen (z.B. C) Wichtig: die logische Gleichheitsprüfung ist nicht identisch mit der Zuweisung

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Testen ► Auch das Testen (Prüfung) erfolgt mit Sprachmitteln ► Ein portloser Modul wird erstellt ► Darin wird der zu prüfende Modul instanziert ► Für die Eingänge werden Register definiert, in diesen wird die Testsequenz erstellt ► Eine Testsequenz mit einmaliger Ablauf kann in einem initial Block generiert werden ► Die Leitungen an den Ausgängen werden beobachtet

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Generierung von aperiodischen Testsignalen ► Die Ausführung des initial Blocks beginnt am Anfang der Simulation ► Am Ende des Blocks wird die Simulation beendet ► Nur Registern dürfen Werte zugewiesen werden reg in; initial begin in = 0; #5 in = 1; #500 $finish; end Das bedeutet eine Verzögerung von fünf Zeiteinheiten der Simulation So können Änderungen in einer Testsequenz zeitlich bestimmt werden Diese Art Verzögerung ist nicht synthetisierbar

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Generierung von periodischen Testsignalen ► Periodische Testsignale können in bedingungslosen always Blöcken generiert werden, ein Anfangswert soll aber in einem initial Block zugewiesen werden ► z.B. ein Rechtecksignal von zehn Zeiteinheiten (Takt): initial clk = 0; always begin #5 clk = !clk; end Der Wert des Registers clk wird nach fünf Zeiteinheiten invertiert

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Beispiel: Prüfung des Zählers module teszt; reg clk, reset; wire [7:0] q; zaehler z1(clk, reset, q); initial begin clk = 0; reset = 0; #2 reset = 1; #2 reset = 0; #2600 $finish; end always #5 clk = !clk; endmodule

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Spezialoperatoren 1 ► Bit-shift Operatoren ( >):  Genauso, wie in der C Sprache  Sie können für Demultiplexer verwendet werden: module demux(in, addr, out); input in; input [2:0] addr; output [7:0] out; assign out = in << addr; endmodule Der Eingangssignal in wird entspre- chend der Nummer am Eingang addr verschoben werden.

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Spezialoperatoren 2 ► Anhängeoperator ({}):  Bits oder Bitserien können aneinandergehängt werden  Einzelteile müssen durch Komma separiert angegeben werden  Damit können z.B. die Bits eines Registers rotiert werden: reg [7:0] rx; always begin #1 rx = {rx[6:0], rx[7]}; end Die niedrigen 7 Bits werden oben (MSB) placiert, während das echte MSB zum Platz 0 (LSB)

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Spezialoperatoren 3 ► Reduktionsoperatoren:  Diese machen die Beschreibung von Gattern mit vielen Eingängen einfacher  Die Einoperandversion der Logikoperatoren wird vor eine Variante placiert, so werden die Operationenan an allen Bits durchgeführt: wire [3:0] in; wire q; q = &in; & in[0] in[1] in[2] in[3] q

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog-2001 ► Zusammengefasste Port-Deklaration:  In der früheren Versionen musste es separat angegeben werden, dass ein Ausgang Register ist  Beim Verilog-2001: module m(in, out); input [7:0] in; output reg [2:0] out; … endmodule

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog ► Port-Deklaration in der Portliste:  Beim Verilog-2001 können die Ports in der Portliste deklariert werden: module m(input [7:0] in, output reg [2:0] out); … endmodule

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog ► Skalierbare Moduln – Hardwaregenerierung 1:  Problem: Zahlreiche Instanzen desselben Moduls Ein Modul besteht aus vielen identischen Elementen  In solchen Fällen müsste viel Text eingetippt werden (zeitraubend, Fehltipp-Gefahr)  Das VHDL hatte es schon seit langem: parametrisierte Hardwaregenerierung – das hat auch Verilog übernommen  Mittels des Schlüsselwortes generate können parametrisierte Hardware-Elemente zyklisch eingebaut werden

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog ► Skalierbare Moduln – Hardwaregenerierung 2: module myMod(input a, input b, output q);... module generator(input [7:0] a, input [7:0] b, output [7:0] q); genvar i; generate for (i = 0; i < 8; i=i+1) begin : bigMod myMod m(a[i], b[i], q[i]); end endgenerate endmodule Zählvariable 8 Stücke vom Modul myMod werden instanziert Der Name des komplexen Moduls wird bigMod sein Die einzelnen Instanzen können unter dem Namen m referenziert werden

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog ► Skalierbare Moduln – Hardwaregenerierung 3:  Bezugname auf die instanzierten Elementen: bigMod[3].m Ordinalzahl der Instanz (0..7) Modulnamen innerhalb der Instanzen (In diesem Fall enthalten die Instanzen nur je einen Modul (je ein Exemplar von myMod ))

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Verilog Literatur ► Kollegienhefte vom Lehrstuhl:   ► Andere Quellen:    

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Andere Trends ► SOC ► SystemC

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Andere Trends– SoC ► SoC = System on Chip  Ein vollständiges System, gebaut auf einem Chip digitaler Teil eingebettete Software analoge Schnittstellen (wenn notwendig)  Homogene Technologie – z.B. alle Hardwarekompo- nenten CMOS  Es wird auf hoher Abstraktionsebene entworfen Verilog/VHDL für Analogteile die Erweiterungen: Verilog-A, VHDL-A  Typisch ist die Verwendung von IP Blöcken  Gemeinsamer Hardware-Software Entwurf: z.B. SystemC Das wurde 2005 standardisiert

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET “Intellectual Property” A Protocol Processor for Wireless

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Gemeinsamer Entwurf von Hardware und Software ► SystemC – ein typisches Mittel für HSCD (hardware- software co-design) ► IEEE Standard ab 2005: IEEE std ► Das Ziel ist: HW-SW parallel (gleichzeitig)  Entwurf  Simulation  Verifizierung ► Es ist nicht notwendig, mit dem Entwurf der eingebetteten Software die Fertigstellung der Hardware abzuwarten  time-to-market kann reduziert werden ► Der Entwurf kann auf hoher Abstraktionsebene durchgeführt werden

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Gemeinsamer Entwurf von Hardware und Software ► ESL: Electronic System Level design  HSCD ► Das wichtigste Ziel des gemeinsamen HW-SW Entwurfs ist, dass  der Entwurf durch Beschreibung auf hoher Abstraktionsebene besser überschaubar wird,  Fehler leichter zu finden sind,  die HW-SW Partitionierung optimalisiert wird,  die Zeit zur Markkteinführung kürzer wird, und  die Entwurfskosten reduziert werden. ► Dafür ist ein günstiges Mittel das SystemC ► Eine andere Version: Verwendung von ANSI C, z.B. Mentor Graphics CatapultC

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Das SystemC ► Das SystemC ist eine C++ Bibliothek und Methode, die recht effizient verwendet werden kann zum  Erstellen Software-Algorithmen,  Modellieren Hardware-Architekturen, sowie  Realisieren der Schnittstellen von SoC und System-Level Modellen. ► Durch Verwendung von Entwurfsumgebung für SystemC und traditionelles C++ können Modelle auf System-Ebene beschrieben werden, diese können leicht simuliert und optimalisiert werden. ► Das System-Modell ist ein C++ Programm, das beim Laufen dasselbe produziert als das System selber

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die Komponenten von SystemC ► Modul: ist ein container, das andere Moduln und process-e enthalten kann ► Process: beschreibt eine gegebene Funktionalität ► Signal: sowohl das 2-Werte (0,1) als auch das 4-Werte (0,1,X,Z) Logik wird unterstützt ► Port: Signalanschluss ► Datentypen – vielerlei Typen können gebraucht werden Vorsicht – Syntethisierbarkeit!! ► Taktsignal: Spezialsignal zum Modellieren der Zeit ► Simulationskernel – Ermöglicht eine schnelle Simulation (compiled Kode) ► Signal-Monitoring:  VCD (Value Change Dump),  WIF (Waveform Intermediate Format) und  ISDB (Integrated Signal Data Base) Dateiformate werden unterstützt

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Ein Beispiel für SystemC ► Steuerung von Verkehrsampeln (BAH Knoten)  9 KFZ,  7 Fussgänger Ampeln  Zyklus: 90 sec  3 Moduln Zähler (Zeitgeber) KFZ Ampelsteuerung Fussgänger Ampelst. Balotai Péter: Diploma dolgozat, 2007

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Steuerung von Verkehrsampeln Balotai Péter: Diploma dolgozat, 2007

Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Steuerung von Verkehrsampeln // count.h #include "systemc.h" SC_MODULE(count) { //input ports sc_in clk; sc_in en; //output ports sc_out > ido; int countval; void countproc(); SC_CTOR(count) { SC_METHOD(countproc); countval = 89; sensitive_pos << clk; sensitive << en; } }; //count.cpp #include "count.h" void count::countproc() { if (en == 1) { if (countval < 89) { countval++; } else { countval = 0; } } else { countval = 0x7f; } ido = countval; }