Hallo,
ich habe Fragen zum Entwurf von µC und Prozessoren. An der Uni kann man
bei uns Pratikas machen, in denen man ganze µC mittels VHDL entwirft um
diesen auf einem FPGA laufen zu lassen. Ich weiß wie FPGAs funktionieren
und der Entwurf ist mir in etwa klar, aber macht man das in der Praxis
auch so? Entwerfen Hersteller wie Texas Instruments ihre µC ebenfalls in
VHDL?
Was machen Prozessorhersteller wie INtel und AMD? Werden die Prozessoren
ebenfalls in VHDL oder Verilog entworfen und auf FPGAs getestet?
Danke für eure Hilfe,
Beste Grüße
Viel mehr wird wahrscheinlich aber auf Simulation gesetzt - damit kann
man einfach mehr Testfälle abfangen wie bei einer Synthetisierung auf
einem FPGA.
Grafikprozessoren sollen heutzutage als FPGA laufen. Da sind die
Produkteabfolgen viel schneller wie bei einer HauptCPU. Deshalb ist ein
FPGA auszuliefern guenstiger wie maskenprogrammiete CPUs.
Hey noch Was schrieb:> Grafikprozessoren sollen heutzutage als FPGA laufen.
Das glaube ich aber nicht.
Soviele Gatter wie eine GPU braucht. Da währe die GPU so groß wie ein
Pizza Blech :)
Es werden natürlich auch Prozessoren auf FPGAs getestet. Wenn es nicht
passt/funktioniert ist auch die Aufteilung auf mehrere FPGAs sowie die
Verlangsamung des Designs auf einen Bruchteil der Zieltaktes möglich um
es trotzdem auf FPGA testen zu können.
Die Simulation deckt zwar viele Probleme auf, in echter Hardware verhält
sich ein Design dennoch oft völlig anders. Das hängt z.B. in VHDL mit
den "sensitivity lists" zusammen, die ein Simulator natürlich anders
auswertet als echte Hardware.
Bei Ablauf auf FPGA kann auch ein Fehler in der Synthesesoftware
entdeckt werden, der bei Simulation natürlich nicht passiert. (Ok, es
gibt auch Netzlistensimulation, die ist aber wesentlich langsamer...)
Während der Entwicklung verwendet man RTL-Simulationen. Sobald es
richtung Tapeout geht werden die Netzlisten simuliert, inklusive den
Delays des beabsichtigten Prozesses.
Zusätzlich wird die funktionale Equivalenz der Netzliste und des
RTL-codes mithilfe spezieller Software geprüft (formale Verifikation).
Wenn das alles funktioniert wie gewünscht (und beim Testen nichts
übersehen wurde) kann man schon davon ausgehen dass das Design im ASIC
am Schluss auch genau so funktioniert.
Als ich bei einem einschlägigen Unternehmen war, wurden FPGAs nur
gemacht wenn der Kunde das gewünscht hat, zwingend notwendig ist es
jedoch nicht wenn die Kompetenz und die richtige Software vorhanden ist.
Martin schrieb:> Hallo,>> ich habe Fragen zum Entwurf von µC und Prozessoren. An der Uni kann man> bei uns Pratikas machen, in denen man ganze µC mittels VHDL entwirft um> diesen auf einem FPGA laufen zu lassen. Ich weiß wie FPGAs funktionieren> und der Entwurf ist mir in etwa klar, aber macht man das in der Praxis> auch so? Entwerfen Hersteller wie Texas Instruments ihre µC ebenfalls in> VHDL?> Was machen Prozessorhersteller wie INtel und AMD? Werden die Prozessoren> ebenfalls in VHDL oder Verilog entworfen und auf FPGAs getestet?
Ja, das ist gängig, nennt sich Prototypen für ASIC. Das macht man um
- das eigene design zu prüfen
- für die Softwareentwickler Hardware bereits vor der langwierigen ASIC
fertigung zu haben
- schnell sich wandelnde Standards (LTE) evaluieren zu können
-für Kunden die auf das eigene produkt aufsetzen, schon mal ein Art
testmustergenerator zu haben (z.B. fertigt Erikson Handy-Prototypen aus
FPGA's für die BaseStation-Entwicklung)
Diese Dinger sind u. U. schon in Küchenblechgröße und lauf schon recht
schnell im Vergleich zu einer Simulation (Taktfrequ. FPGA typ 50 ... 500
MHz).
AMD in der Sachsenmetropole beispielsweise liess seinen Chipsatz auch
auf FPGA's bauen, damit die LinuxTruppe schon mal Treiber stricken
konnte.
MfG,
Hey noch Was schrieb:> Grafikprozessoren sollen heutzutage als FPGA laufen. Da sind die> Produkteabfolgen viel schneller wie bei einer HauptCPU. Deshalb ist ein> FPGA auszuliefern guenstiger wie maskenprogrammiete CPUs.
Was ist für Dich ein Grafikprozessor?
Eine HighEnd-Gamer-Grafikkarte ist ja wohl Massenware.
Entsprechend wird das ein ASIC/SOC.
Wer sollte die Dinger sonst bezahlen können, wenn sie auf FPGA(s)
liefen.
Industrie/Med mit ihren homöopathischen Stückzahlen läuft eher auf
FPGA, weil die Stückzahlen gering sind und die NRE für ein paar ASICs
unbezahlbar wären.
Erstmal vielen Dank für eure Antworten.
Werden die Prozessoren und µC dann noch per Hand "optimiert"? Meine
Frage zielt darauf, dass ich mir nicht vorstellen kann, dass diese Art
von Design wirklich "sauber" ist. Wenn man beispielsweise µC in C
programmiert, wird wohl nicht so optimiert sein, wie wenn man das Gerät
in Assembler programmieren würde. Findet hier also noch eine Optimierung
der Schaltung per "Hand" statt? (Also wirklich auf Transistor bzw.
Gatterebene?)
Martin schrieb:> Erstmal vielen Dank für eure Antworten.> Werden die Prozessoren und µC dann noch per Hand "optimiert"? Meine> Frage zielt darauf, dass ich mir nicht vorstellen kann, dass diese Art> von Design wirklich "sauber" ist. Wenn man beispielsweise µC in C> programmiert, wird wohl nicht so optimiert sein, wie wenn man das Gerät> in Assembler programmieren würde. Findet hier also noch eine Optimierung> der Schaltung per "Hand" statt? (Also wirklich auf Transistor bzw.> Gatterebene?)
Der Vergleich mit c_Compiler und assembler führt dich eher in die Irre.
Verkürzt ist es so:
Man entwirft die CPU auf mehreren Abstraktionsebenen, also RTL, Gatter,
Transistor. Auf jeder Ebene prüft man ob die auch das macht was, was sie
soll, also man vergleicht sie mit der nächsthöheren. Den Übergang von
einer höheren zu einer niedrigeren nennt man Synthese. Das können tools
machen, da kann man per Hand eingreifen, oder man macht es komplett neu.
So ne CPU wird zuerst modelleirt, das kann ein Algorythmus in C sein,
oder in einer Hardwarebeschreibungssprache (HDL). Hat man die
Beschreibung in der HDL kann man die auf verschiedenen "Architekturen"
umsetzen. z:B. FPGA, ASIC-Gatarray oder komplettdie Transitoren selbst
zeichnen (Full Costum).
Für einen FPGA wird man ein Nand-Gatter mit einer LookUp-table
realisieren, ebenso OR etc.. Dan man mit einer LUT verschiedenste
Gatterfunktionen realisierenkann ist sie auch größer und langsamer als
eine klassischen CMOS-NOR Gatter. Intel wird also bei der Synthese aus
RTL ein Element NAND aus seiner Bauteibibliothek nehmen. etc also
optimierte Elemente. Dann muss dann noch extra Kram rein, für Tests
(Scan-Path. JTAG-BSCAN) und um Fehler bei der Fertigung auszugleichen
(sewing gates). hat das dann alles zusammengeschaltet (als Netzliste)
fällt Platzierung und Routing an (so wie beim PCB).
Optimierung wurde ich das nicht nennen, es ist eher ein kompletter
neuentwurf aus den gleichen VHDL-Code. So also ob du einen tollen
Algorithmus zum Kantenglatten hast (als Formel beschrieben) und denn
setzt du einmal in Basic zur Ausgabe auf einer superschnellen GraKa um,
und dann nochmal , dann läuft er auf einem LowPower Mikrocontroller und
kleckst Tinte sparend auf einem Drücker glatte Linien.
MfG
Mir hatte das Buch "CPU-Design - Entwurf eines RISC-Prozessors in VHDL"
( ISBN 978-3-8442-6666-5) als Einstieg in diese Materie sehr geholfen.
Der Author beschreibt darin Schritt für Schritt den Entwurf einer CPU in
einer Hardwarebeschreibungssprache.
Gruß
Eine eigene Frage?
Dieser Thread ist über 16 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.