Was ist der Unterschied zwischen einem Programmierer und einem Benutzer? Der Unterschied zwischen einem Systemadministrator und einem Programmierer. Konfigurierbare Logikblöcke

Im Kontext der Arbeit mit Softwareprodukten werden Menschen in Benutzer und Programmierer (Betreuer, Implementierer usw.) unterteilt. Dieser Artikel befasst sich mit der Beziehung zwischen diesen beiden Kategorien. Vielleicht hilft dies dabei, einige Konflikte zwischen jungen Berufstätigen und Anwendern zu lösen.

Die meisten Benutzer sind sehr konservativ, wenn es um die Automatisierung geht. Es kann sehr schwierig sein, eine Person von der Zweckmäßigkeit eines Systemwechsels zu überzeugen (es treten Verbindungsprobleme auf, Sie müssen für einige Zeit gleichzeitig in zwei Systemen arbeiten, das neue System erfordert möglicherweise eine andere Herangehensweise an die Durchführung der üblichen Arbeiten.) Aber Nach der schrittweisen Anpassung an das neue System wird der Benutzer alle Vorteile zu schätzen wissen. Im Vergleich zum alten ist dies die beste Belohnung für einen Programmierer.

Eine kleine Anmerkung.

Die meisten Benutzer haben keine Ahnung von den Unterschieden zwischen einem Systemadministrator, einem Programmierer oder einem Unixoid. Für sie bedeutet ein Programmierer, dass er einen Computer reparieren, alles im Internet finden, einen defekten Draht löten und von der Festplatte gelöschte Informationen wiederherstellen kann. Das stimmt natürlich nicht ganz, aber das ist das Bild eines Programmierers im Kopf eines normalen Benutzers.

Einige Punkte, die bei der Installation und dem weiteren Betrieb des Systems besondere Aufmerksamkeit verdienen:

  • Jeder Benutzer arbeitet am liebsten mit demselben Spezialisten zusammen, der alle Probleme kennt, die während des Betriebs regelmäßig auftreten. Vermeiden Sie daher nach Möglichkeit Situationen, in denen ein anderer Spezialist mit Ihrem Kunden zusammenarbeitet.
  • Seien Sie mit Ihren Ratschlägen nicht zu aufdringlich, insbesondere wenn Sie nicht danach gefragt werden. Und beharren Sie nicht auf Ihrem Standpunkt – es reicht aus, nur Ihre Meinung zu äußern. Überlassen Sie die endgültige Entscheidung dem Benutzer.
  • Versuchen Sie, Ihre Kenntnisse nicht nur in der Programmierung, sondern auch im Berufsfeld Ihres Kunden zu verbessern – so können Sie in derselben Sprache kommunizieren. Benutzer stellen häufig Fragen zu den Besonderheiten ihrer beruflichen Tätigkeit.
  • Der Benutzer möchte, dass das System konstant und fehlerfrei arbeitet. Er kümmert sich wenig darum, zu erklären, warum sein System versagt hat. Wenn etwas passiert (was immer Teil des Arbeitsprozesses ist), sollte der Benutzer wissen, wer dafür verantwortlich ist und wann das System repariert wird.
  • Obwohl der Benutzer immer im Voraus über Änderungen in der Abteilungsstruktur und Gesetzesänderungen informiert ist, warten Sie nicht darauf, dass er nach dem Zeitpunkt der Systemaktualisierung fragt. Halten Sie den Benutzer stets mit solchen Informationen auf dem Laufenden.

Programmierer zu sein ist jetzt in Mode. Über erfolgreiche Programmierer werden Filme gedreht, Bücher geschrieben und in vielen Ländern werden Entwickler gut bezahlt. Aber trotz der Mode für „Technikfreaks“ und Innovation gibt es viele Dinge, die Programmierern bekannt sind und die andere überraschen. Quora-Mitwirkende haben diese soziokulturellen und kognitiven Unterschiede diskutiert. Nachfolgend finden Sie die interessantesten Kommentare aus der Diskussion.

Also, Programmierer, anders als normale Leute:

1. Sie verstehen, dass alle Einbruchsszenen in Filmen völliger Unsinn sind. Hier können Sie beispielsweise nachlesen, woher die Codes, die auf den Bildschirmen von „IT-Spezialisten“ in Filmen erscheinen, tatsächlich stammen. Im Allgemeinen sind viele Filmstereotypen über Programmierer Unsinn, schreibt Bill Coleman: „Wir sind nicht alle fette, faule Genies. Im wirklichen Leben wissen wir, wie man normal kommuniziert: Unsere Arbeit hängt davon ab. Und verwechseln Sie uns nicht mit Elektrikern; viele haben nicht einmal einen Lötkolben zu Hause.“

Der wichtigste „Hacking“-Effekt für Uneingeweihte ist die offene Konsole. „Die meisten Leute werden denken, dass ich nur auf den Bildschirm starre und die Zeit totschlage, während ich tatsächlich arbeite. Aber sobald man die Konsole öffnet und mit dem Tippen beginnt, werden sie überzeugt sein, dass ich versuche, das Pentagon zu hacken oder andere magische Dinge zu tun“, schreibt einer der Diskussionsteilnehmer.

2. Während der Arbeit grübeln sie in 25 % der Fälle, wie sie herausfinden können, was der Benutzer in der zu erstellenden Anwendung „kaputt machen“ könnte. „Es ist relativ einfach, Regeln dafür zu schreiben, was ein Programm tun soll, wenn alles so funktioniert, wie es sollte. Es ist viel schwieriger, Regeln dafür zu schreiben, was ein Programm tun soll, wenn etwas schief geht“, schreibt Kim Moser. Gleichzeitig glauben viele Benutzer, dass sich Programme wie ihre schlaueren und sachkundigeren Freunde verhalten sollten.

3. Sie wissen, dass selbst die wichtigste Software, die Benutzer täglich verwenden, eine erschreckende Menge an „Krücken“ enthält, die sich auf wundersame Weise zu einem funktionierenden Ganzen zusammenfügen. „Es ist, als würde man eine Boeing auseinandernehmen und feststellen, dass die Bremsen mit Klebeband zusammengeklebt sind“, schreibt einer der Diskussionsteilnehmer, Ben Cherry. Programmierer wissen, dass eine erschreckende Menge an medizinischen, finanziellen und persönlichen Informationen mit vernachlässigbarem Maß an Systemsicherheit gespeichert werden.

5. Sie wissen: Wenn ein Mensch zum Beispiel sechs Finger an seinen Händen hätte, wäre das wichtigste Zahlensystem der Welt das Dezimalsystem und nicht 10, wie es jetzt ist.

6. Sie können ohne Taschenrechner viel mehr Zweierpotenzen benennen als ein normaler Mensch. Die Abkürzung „k“ in Ausdrücken wie 100k wird nicht als „x1000“, sondern als „x1024“ verstanden. Doch während die meisten Normalbürger denken, dass es beim Programmieren hauptsächlich um Mathematik geht, wissen Programmierer, dass die Logik an erster Stelle steht.

7. Sie wissen, wie komplex einfache Dinge im Internet sind. Denn einfache Aktionen wie die Suche im Internet werden tatsächlich von vielen komplexen Prozessen auf unterschiedlichen Ebenen unterstützt.

8. Glauben Sie, dass die meisten Menschen zu vage sind, wenn sie versuchen zu erklären, was sie wollen.


9. Sie werden wütend, wenn gewöhnliche Menschen aus Verwandten, Freunden und Bekannten ständig darum bitten, „den Computer zu reparieren“.

10. Die Schönheit des Codes kann durchaus mit einem Gedicht verglichen werden, obwohl er für den Benutzer genauso schrecklich aussehen wird wie eine Fehlermeldung.

Als ich vor ein paar Jahren gefragt wurde: „Was machen Sie?“ Sie könnten Ihre Augenbrauen bedeutungsvoll bewegen und sagen: „Computerfreak.“ Das war genug. Unvorbereiteten Menschen, die bestenfalls mit der Zeile „Selbstbewusster PC-Benutzer“ in ihrem Lebenslauf prahlen könnten, subtile Dinge zu erklären, war unnötig, da dies nur zu noch mehr Fragen führen würde. Aber die Zeiten ändern sich, die Alphabetisierung nimmt zu, und jetzt, wo „selbstbewusster PC-Benutzer“ zu einem Atavismus geworden ist, folgt ihm das einst universelle Wort „Computerspezialist“.

Die Berufe eines Programmierers und eines Entwicklers haben viele Gemeinsamkeiten und im Alltag werden diese Wörter oft als Synonyme verwendet, aber es gibt einen Unterschied, wenn auch nicht immer spürbar. Warum tauchten sonst überhaupt Konzepte wie Softwareentwickler, Informatiker und Programmierer auf?

Programmierung

Heutzutage gibt es keine klar definierten Regeln darüber, wer Programmierer und wer Entwickler genannt wird. Daher gibt es keinen anderen Ausweg, als sich den Ursprüngen zuzuwenden.

Computer, das Internet, die mobile Kommunikation sowie eine Vielzahl anderer wunderbarer Dinge, die heute gemeinfrei sind, fielen früher oder später, wenn sie nicht vom Militär erfunden wurden, unter ihre sensiblen Fittiche und Aufsicht. Wenn etwas fliegen, schießen, explodieren oder vor ähnlichen feindlichen Aktionen schützen kann, haben Sie ein Team von Wissenschaftlern. Unterschreiben und empfangen. Im High-Tech-Zeitalter hätte es ein Soldat ohne Wissenschaftler schwer – schließlich haben selbst so kleine Dinge wie Kampfstiefel und Körperpanzer viel technisches Know-how aufgesogen. Was können wir über die Programmierung von Laserkanonen und Interkontinentalraketen sagen?

Ohne die Notwendigkeit, die den Staat dazu veranlasste, Geld für die Finanzierung aufzutreiben, ist nicht bekannt, wie viele Jahrzehnte später wir über Computer und das Internet verfügt hätten. So können diejenigen, die noch keine Zeit hatten, im Geiste den Aggressorstaaten danken, die im Feuer der Kriege neue Technologien hervorgebracht haben und weiterhin hervorbringen.

Und selbst wenn man ein paar Jahrzehnte in die Zukunft gereist ist, ist es immer noch schwer, sich einen Bill Gates vorzustellen, der in seiner Garage einen Computer von 17 Metern Länge und mehr als 2,5 Metern Höhe zusammenbauen würde, der aus 765.000 Teilen bestehen würde, synchronisiert mit 15 -Meter-Welle und wurde von einem Elektromotor mit einer Leistung von 5 PS angetrieben – wie der Mark-1, der 1941 von mehreren Harvard-Mathematikern im Rahmen eines Vertrags mit IBM entwickelt wurde.

Das war zu arbeits- und gehirnintensiv, daher kam es in der Vergangenheit vor, dass derjenige, der den Computer baute, ihn „tanzte“. Es gab nur wenige Computer – am Ende des Krieges funktionierten nur zehn dieser „Kolosse“. Nur wenige Jahre später erschienen die ersten kommerziellen Modelle – zum Beispiel der IBM 701 (im ersten Jahr wurden 19 Einheiten verkauft) oder der IBM 650 (im ersten Jahr wurden bereits 450 Einheiten verkauft). Die Hauptabnehmer waren wissenschaftliche Labore, Fluggesellschaften und staatliche Institutionen.

Und obwohl die Amerikaner seit 1965 damit begonnen haben, Tausende von PDP-8 zu produzieren, die „nur“ 18.000 Dollar kosten, verfügt sie über eine unvollständige Speicherarchitektur, weshalb eine beträchtliche Anzahl ressourcenintensiver Projekte darauf scheiterten. Das Programmieren war damals also nicht einfach (Hallo Hardware) und überhaupt nicht so bequem und zugänglich wie heute. Es gab nur wenige Leute, die programmieren konnten. Es gibt noch weniger Menschen, die damit etwas verdienen könnten. Und die ganze Zeit behält der Programmierer zu Recht den Ruf eines „Nerds“, eines Trägers desselben Pullovers und eines Stammgastes in Bibliotheken. Ein Wunderkind, das nicht von dieser Welt ist und in einem sehr engen Bereich arbeitet, der für die Massen unzugänglich ist.

Historisch gesehen arbeiteten Menschen mit einem Gehirn, die wussten, wie man mit Maschinen per Vornamen spricht, ausschließlich für den militärisch-industriellen Komplex oder in der Wissenschaft. Von hier echter Programmierer Im historischen Sinne des Wortes ist dies eine Person, die Programme für den Verteidigungs-/Waffenkomplex, für die Rechenleistung in einigen Designbüros oder wissenschaftlichen Instituten schreibt, Roboter, Raketen für die Raumfahrt usw. programmiert. Ausschließlich Angelegenheiten von nationaler Bedeutung. Maximale Innovation. Der Geldzins fehlt entweder oder tritt an zweiter Stelle. Der Öffentlichkeit ist es egal, wie viele Milliarden Dollar sie den Erfindern für Computer und Internet gegeben haben, genauso wenig wie es ihr egal ist, wie viel Geld für das Apollo-Programm ausgegeben wurde. Aber jetzt hat jeder einen Computer in der Tasche und auf dem Mond gibt es eine Flagge und Stiefelabdrücke. Niemand erinnert sich an die Reichen, aber jeder erinnert sich an die Erneuerer, denn die ersteren konsumieren, während die letzteren geben.

Entwicklung

Kommerzielle Programmierung in reiner Form gab es nicht und gibt es immer noch nicht – das Wort „Programmierung“ ist hier eindeutig fehl am Platz. Hier Entwicklung- etwas anderes. Die Tatsache, dass Microsoft, IBM, HP, Apple und andere Computerpioniere Märkte eroberten und viel Geld verdienten, änderte nichts an der Tatsache, dass jedes neue Produkt einen Fortschritt darstellte. Sie lösten neue, nicht triviale Probleme.

War Torvalds ein Programmierer? Natürlich. Schließlich hat er den Linux-Kernel geschrieben. In diesem Fall spielt es überhaupt keine Rolle, ob er im Rahmen seiner Arbeit die Best Practices und Entwicklungsmethoden verwendet hat (z. B. ob er die Variablen richtig benannt hat, ob er den Speicher optimal genutzt hat usw.). Hauptsache es funktioniert. Und die Gewinner werden nicht beurteilt. So wie Brendan Eich, der Erfinder von JavaScript, nicht beurteilt wird, obwohl objektiv gesehen etwas dafür spricht.

Ist ein Genie und Teilzeit-Chef der Nullen und Einsen, noch schlauer als Torvalds und Eich, ein Programmierer, wenn er nur Standardprobleme löst? Er schreibt zum Beispiel Online-Shops. Leitfrage: Ist eine Person, die bei den Spezialeinheiten gedient hat, jetzt aber als Wachmann in einem Geschäft arbeitet, ein Soldat der Spezialeinheit oder ein Wachmann? Viele Wachen nennen sich Spezialeinheiten, um in ihren eigenen Augen besser auszusehen und ihre Armee-Tattoos sinnvoll zu reiben. Selten gibt jemand neben seinem Beruf das Wort „ehemaliger“ an. Aber nur wenige geben zu, dass sie entweder ihre Qualifikation verloren haben und deshalb im Sicherheitsdienst arbeiten, oder dass sie für die Position, die sie einnehmen, zu cool sind und damit eine Kanone auf Spatzen abfeuern.

Einige der heutigen Programmierer sind genau wie dieser Spezialeinheitssoldat, der eindeutig fehl am Platz ist und sich ausschließlich mit dem Geldverdienen beschäftigt und sein Talent im Abfluss verschwendet. Es gibt eine andere, viel größere Kategorie von Menschen (99 %), die sich Programmierer nennen, in Wirklichkeit aber Entwickler sind (zu dieser Kategorie gehören auch Redneck-Programmierer). Sie schreiben und ändern ihren eigenen Code oder den Code anderer, kommunizieren mit dem Kunden, den Kunden, beheben ständig Fehler – weil der Entwickler es sich leisten kann, sie zuzulassen; Sie arbeiten nicht für eine Idee, sondern für Geld: heute für den einen, morgen für den anderen. Wer gibt mehr?

Wie ein Akademiker sagte: „Eine Dissertation über Philosophie muss mit einer Revolution enden, sonst ist sie keine Dissertation“; oder, unserer Meinung nach, sollte die Arbeit eines Programmierers mit einem technologischen Durchbruch enden. Ansonsten ist dies nicht die Arbeit eines Programmierers.

Und lassen Sie nicht zu, dass die Beschäftigungsunterlagen à la „Softwareentwickler der ersten Kategorie“ irreführend sind. Die Personalabteilung selbst weiß nicht, was sie tut, indem sie die Briefmarken eines Landes verwendet, das vor 25 Jahren verschwunden ist. Sie müssen lediglich eine Leitfrage stellen: „Woran arbeiten Sie gerade?“ Weil Sie mit einer umständlichen und schwer verständlichen Architektur, die mit vielen Abhängigkeiten und kniffligen Elementen vollgestopft ist und außergewöhnliche geistige Fähigkeiten erfordert, so komplexe Entwicklungen durchführen können, wie Sie möchten. Aber wenn es sich um einen Online-Shop, einen anderen gefälschten „Dienst“, einen Spam-Roboter oder, Gott bewahre, ein Browserspiel handelt und die Person in ihrer Freizeit nicht programmiert, dann riecht es nach Entwicklung. Wie im Ausdruck „Erschließung von Ölfeldern“.

Daher auf die Frage „Was machen Sie?“ Eine genauere Antwort könnte lauten: „Ich bin im Herzen ein Programmierer, aber ich arbeite als Entwickler“, „Ich bin ein Entwickler, aber eines Tages werde ich Programmierer“ oder „Ich bin ein Entwickler, ich hacke.“ Kohl." Wenn eine Situation eine ungenaue und schnelle Antwort erfordert, kann der „Programmierer“ schließlich verstanden werden Entwickler Im Zusammenhang mit Software ist das Wort relativ neu. Aber sich selbst als Programmierer zu bezeichnen, während man am Rande des Outsourcings Saft trinkt, täuscht sich selbst.

FPGA steht für „Field Programmable Gate Array“ und ist eine riesige Reihe von Gates, die jederzeit und überall programmiert und neu erstellt werden können. Viele Anwender verstehen immer noch nicht, was ein FPGA ist. „Eine riesige Reihe von Toren“ ist eine vereinfachte Beschreibung des Modells. Einige FPGAs verfügen über integrierte Hardblöcke: Speichercontroller, Hochgeschwindigkeits-Kommunikationsschnittstellen und PCIe-Endpunkte. In einem FPGA gibt es viele Gates, die frei miteinander verbunden werden können. Das Funktionsprinzip ähnelt mehr oder weniger dem Verbinden einzelner Logikelement-Mikroschaltungen. FPGAs werden von den weltweit führenden Unternehmen Xilinx, Altera und Microsemi hergestellt.

Geschichte der FPGA-Entwicklung

Die FPGA-Industrie entstand aus programmierbaren Festwertspeichern (PROM) und PLD-Logikgeräten. 1970 erfand Philips die feldprogrammierbare Matrix. Beim Entwurf eines solchen FPGA, der aus zwei Plänen bestand, wurde eine spezifische Implementierung von Logikschaltungen erreicht: programmierbares verdrahtetes „AND“ oder „OR“. Dies gab ihr die Möglichkeit, die Funktion in Form von Sum of Products umzusetzen.

Altera wurde 1983 gegründet und brachte bereits 1984 das erste umprogrammierbare Logikgerät der Branche auf den Markt – den EP300 mit einem Quarzfenster im Gehäuse, das die Verwendung einer UV-Lampe auf der Matrix zum Entfernen des EPROM-Tags ermöglichte.

Um die Herausforderungen hinsichtlich Kosten und Geschwindigkeit zu meistern, wurde eine programmierbare Array-Logik entwickelt, die nur einen programmierbaren „AND“-Eingang in ein festes „OR“-Gatter enthielt. PAL und PLA werden zusammen mit anderen Varianten als einfache programmierbare Logikgeräte (SPLDs) gruppiert. Solche FPGAs, die in einem einzigen Chip mit bereitgestellten Verbindungen zur softwaremäßigen Verbindung von Blöcken integriert sind, werden verwendet, um steigenden technologischen Anforderungen gerecht zu werden. Sie werden umfassende PLDs genannt und von Altera entwickelt.

Transistoren sind eine weitere Klasse elektronischer Geräte, die auf Basis von Gate-Array-Masken programmierbar sind. Sie bestehen aus Transistor-Arrays, die über kundenspezifische Drähte verbunden werden können. Sie sind Logikblöcken gewichen, sodass der Benutzer die Konfiguration vor Ort statt im Produktionslabor vornehmen kann.

Die Idee, das erste kommerziell nutzbare FPGA zu entwickeln, stammt von den Xilinx-Mitbegründern Ross Freeman und Bernard Vonderschmitt. Der XC2064 wurde 1985 erfunden und bestand aus 64 konfigurierbaren Logikblöcken mit 3 Nachschlagetabellen. Es vermittelt ein modernes Verständnis dessen, was ein FPGA ist. Ende 1980 fand Steve Casselmans vorgeschlagenes Experiment zur Entwicklung eines Computers mit 6.000.000 umprogrammierten Toren Sponsoren in der Surface Warfare Division der US-Marine und erhielt 1992 ein Patent.

Ende 1990 herrschte in der FPGA-Branche ein stärkerer Wettbewerb und der Marktanteil von Xilinx begann zu sinken. Akteure wie Actel, Altera, Lattice, QuickLogic, Cypress, Lucent und SiliconBlue haben sich zusammen mit Xilinx eine Nische im globalen FPGA-Markt geschaffen. Im Jahr 1997 gelang es Adrian Thompson, FPGA-Programmierung und genetische Algorithmustechnologie mit FPGAs zu kombinieren und damit eine neue Ära von Evolvable einzuleiten.

Heutzutage sind FPGAs recht erschwinglich geworden und erfreuen sich daher auf den Verbrauchermärkten immer größerer Beliebtheit. Sie bestehen aus einer Reihe von Logikzellen, sogenannten LUTs, die von einem Verbindungsnetzwerk umgeben sind und ein flexibles System bieten, das praktisch jeden digitalen Algorithmus implementieren kann.

Programmierprinzipien

FPGA-Programmierung für Anfänger ist der Prozess des Lernens, Planens, Entwerfens und Implementierens einer Lösung auf einem FPGA. Die Anzahl und Art der Layouts variiert von Programm zu Programm. Das Erstellen eines Anforderungsdokuments und eines Entwurfsdokuments, in dem erläutert wird, wie die vorgeschlagene Lösung implementiert wird, kann bei der Lösung potenzieller Probleme sehr hilfreich sein.

Der Zeitaufwand für die Erstellung eines hochwertigen Designdokuments wird in Zukunft Zeit für Refactoring, Debugging und Fehlerbeseitigung sparen. Die Implementierung einer Lösung mithilfe der FPGA-Programmierung erfordert die Erstellung eines Projekts mithilfe einer der Designeinführungsmethoden. Dazu gehören Schaltpläne oder HDL-Code wie Verilog oder VHDL. FPGAs können die Ausgabedatei mithilfe der FPGA-Programmiertools von Altera auf dem physischen FPGA-Gerät programmieren. Die Einführung des Schaltplandesigns wird in der Industrie nicht mehr angewendet. Synthese und Programmierung werden fast vollständig von Anbietertools wie ISE und Vivado sowie den Konfigurationstools von Numato Lab übernommen.

RTL steht für Register Transfer Level. Ein Designer kann auch auf die Begriffe Register Transfer Logic oder Register Transfer Language stoßen, die im Kontext des Hardware-Designs alle dasselbe bedeuten. RTL ist eine Abstraktion auf höherer Ebene für das Design digitaler Hardware, die irgendwo zwischen reiner Verhaltensmodellierung auf der einen Seite und rein struktureller Modellierung auf Gateway-Ebene auf der anderen Seite liegt.

Gate-Modellierung bedeutet, die Hardware mithilfe einfacher Gates zu beschreiben, was ziemlich mühsam ist. RTL kann als Analogie zum Begriff „Pseudocode“ betrachtet werden, der in den Grundlagen der FPGA-Programmierung verwendet wird. Sie können Hardware-Design als eine Reihe von Schritten oder einen Datenfluss von einem Registersatz zum nächsten in jedem Taktzyklus beschreiben.

RTL wird auch als „Datenfluss“-Design bezeichnet. Sobald das RTL-Design fertig ist, ist es einfacher, es mithilfe von Sprachen wie Verilog, VHDL, SystemVerilog oder einer anderen Hardwarebeschreibungssprache in tatsächlichen HDL-Code umzuwandeln.

FPGAs sind viel mehr als nur eine Ansammlung von Gattern. Obwohl es möglich ist, logische Schaltkreise beliebiger Komplexität aufzubauen, indem man logische Elemente organisiert und verbindet. Es ist eine Möglichkeit, Logik in einem einfachen Format auszudrücken, das schließlich in ein Array von Elementen umgewandelt werden kann. Zwei beliebte Methoden hierfür sind die Einführung des Schemas und der Hardwarebeschreibungssprache HDL. Bevor es weit verbreitet wurde, entwarfen Ingenieure alles anhand von Schaltplänen. Sie waren für kleine Projekte sehr einfach, für große jedoch schmerzlich unhandlich. Man kann sich nur vorstellen, wie Intel-Ingenieure Diagramme für den Pentium zeichnen, der über Millionen von Gateways verfügt! Das ist unzumutbar schwierig.

Verilog ist eine HDL-Hardwarebeschreibungssprache, die für digitale Schaltkreise in Textform verwendet werden kann. Das Erlernen von Verilog ist nicht so schwierig, wenn der Benutzer Programmiererfahrung hat. VHDL ist ein weiteres beliebtes HDL, das in der Branche weit verbreitet ist. Verilog und VHDL genießen auf dem Markt mehr oder weniger die gleiche Akzeptanz, aber Benutzer entscheiden sich normalerweise für Verilog, weil es leicht zu erlernen ist und syntaktische Ähnlichkeit mit der Sprache C aufweist.

FPGAs können als Bausteine ​​betrachtet werden, die die gewünschte Hardwarekonfiguration ermöglichen. Es handelt sich um eine spezielle Form des PLD mit höherer Dichte und erweiterter Funktionalität in kürzerer Zeit mithilfe von CAD. FPGAs gibt es je nach eingesetzter Programmiertechnologie in unterschiedlichen Varianten.

Sie können programmiert werden mit:

  1. Antifuse-Technologie.
  2. Programmierung auf Basis der Flash-Technologie als Gerät von Actel.
  3. Das FPGA kann mehrere tausend Mal umprogrammiert werden, wobei die Neuprogrammierung selbst einige Minuten in Anspruch nimmt, und verfügt über einen nichtflüchtigen Speicher.

FPGA auf Basis der SRAM-Technologie, das mit geringem zusätzlichem Schaltungsaufwand eine unbegrenzte Neuprogrammierung und eine sehr schnelle Neukonfiguration oder teilweise Neukonfiguration im Betrieb bietet. Die meisten Unternehmen wie Altera, Actel, Atmel und Xilinx produzieren diese Geräte.

Konfigurierbare Logikblöcke

Unabhängig von verschiedenen Herstellern und leicht unterschiedlichen Architekturen und Funktionssätzen verfolgen die meisten FPGAs einen gemeinsamen Ansatz. Die grundlegenden Komponentenblöcke eines jeden FPGA sind ein flexibler programmierbarer „Logikblock“ (CLB), der von programmierbaren „Eingabe-/Ausgabeblöcken“ mit einer Hierarchie von Routing-Kanälen umgeben ist, die die verschiedenen Blöcke auf der Platine verbinden.

Darüber hinaus können sie aus DLLs zum Verteilen und Verwalten von Uhren und einem dedizierten Block-RAM-Speicher bestehen, wobei der Hauptbaustein eine logische Zelle ist. Letzteres besteht aus einem Eingabefunktionsgenerator, einer Übertragungslogik und Speicherelementen. Generatoren werden als Nachschlagetabellen implementiert und hängen von der Einführung ab. Beispielsweise verfügt der Xilinx Spartan II über 4 Eingangs-LUTs, die jeweils 16 x 1 Bit synchrones RAM bereitstellen und Multiplexer als Schieberegister verwenden, um Daten im Burst-Modus zu erfassen. Speicherelemente reagieren empfindlich auf die Kanten der Auslöser oder die Höhe der Schieber.

  1. Die arithmetische Logik umfasst ein XOR-Gatter zum Betrieb eines Volladdierers und zur Zuweisung logischer Übertragsleitungen.
  2. I/O-Block und Routing-Matrix. Dieser Block verfügt über Ein- und Ausgänge, die eine Vielzahl von Signalstandards und Schnittstellen unterstützen.

Der grundlegende E/A-Block ist unten dargestellt.

Puffer in den Eingangs- und Ausgangspfaden leiten Signale direkt oder über ein Flip-Flop an die interne Logik und die Ausgangspads weiter. Sie sind für eine Vielzahl unterstützter Signalisierungsstandards konfigurierbar, die benutzerdefiniert und extern installiert werden können.

Routing-Matrix

An jedem Fließband bestimmt das langsame Segment die Gesamtproduktivität. Mithilfe von Routing-Algorithmen werden die effizientesten Pfade entworfen, um eine optimale Leistung zu erzielen. Das Routing erfolgt auf verschiedenen Ebenen, z. B. lokales, allgemeines Routing zwischen verschiedenen CLBs, I/O-Routing zwischen Blöcken und CLBs, dediziertes Routing für bestimmte Signalklassen zur Maximierung der Leistung und globales Routing zur Verteilung von Takt und anderen Signalen mit sehr großen Lüftern. aus. . FPGA-Familien verfügen außerdem über große RAM-Blockstrukturen zur Ergänzung verteilter RAM-LUTs, deren Größe je nach FPGA-Gerät unterschiedlich ist.

Das FPGA-Design umfasst im Wesentlichen den gleichen Ansatz wie jedes VLSI-System. Die Hauptschritte sind Design, Verhaltenssimulation, Synthese, Simulation nach der Synthese, Übersetzung, Zuordnung und Routing sowie anschließende Analyse wie Timing-Simulation und statische Timing-Analyse. Auf dem Computer sieht das Design geordnet und gekachelt aus, aber in Wirklichkeit ist die Platzierung und Verlegung schlecht, was zu einer schlechten Leistung führt.

Um die Leistung eines FPGAs zu verbessern, können Sie jederzeit mehr Transistoren verwenden. Der Servicebereich ist hoch. Durch den Einbau weiterer Transistoren sind großformatige Designs möglich. Leakage ist ein ernstes Problem für FPGAs und gleichzeitig interessant. Die Verwendung einer asynchronen FPGA-Architektur zeigt die besten Ergebnisse in Kombination mit der Pipelining-Technologie, die globale Eingaben reduziert und den Durchsatz verbessert.

Torqualität und Probleme

Die Systemsicherheit war schon immer ein wichtiges Anliegen, da Code jedes Mal offengelegt werden muss, wenn er in das FPGA geladen wird. Aufgrund dieser Flexibilität sind FPGAs während der Herstellung anfällig für böswillige Änderungen, sodass die Bitstromverschlüsselung gerade noch rechtzeitig Abhilfe schaffte.

Unerfahrene Designer und Anwender stehen oft vor dem Dilemma, wie leistungsfähig ein FPGA für ihre Designs geeignet ist. Hersteller geben häufig Kennzahlen wie die „Anzahl der Tore“ an. Beispielsweise verwendet die FPGA-Programmierung von Xilinx drei Metriken, um die FPGA-Kapazität, maximale Gates, maximale Speicherbits und den typischen Gate-Bereich zu messen. Solange sie konsistent sind, ist die Migration zwischen Modellen etwas einfacher, bietet jedoch aufgrund der unterschiedlichen Architekturen und Leistungsunterschiede selten einen genauen Vergleich zwischen den Anbietern.

Der beste Indikator ist der Vergleich der Art und Menge der bereitgestellten logischen Ressourcen. Darüber hinaus muss der Designer vollständig verstehen, was genau von dem Gerät benötigt wird, da die Hersteller sich mit Funktionen rühmen, die die Arbeit am wenigsten beeinträchtigen. Beispielsweise verfügt der Stratix II EP2S180 von Altera über etwa 1.86.576 LUTs mit 4 Eingängen, während der Xilinx Virtex-4 XC4VLX200 jeweils 1.78.176 enthält. Wenn das Design jedoch nur 177.000 LUTs benötigt, ist dies ausreichend.

Wenn RAM eine wünschenswerte Messgröße für einen Designer ist, dann wären weder der 6 Mbit Xilinx XC4VLX200 noch der 9 Mbit Altera EP2S180 dem weniger beworbenen, älteren 9,9 Mbit XC4VFX140-Modell vorzuziehen.

Programmiersprachen und Software

Die Programmierung von Altera-FPGAs für Anfänger beginnt mit der Auswahl einer Sprache. Mit der Option C, C++ oder System C können Sie die Fähigkeiten der größten Geräte nutzen und gleichzeitig realistische Entwicklungsgrafiken erzielen. Die Möglichkeit, C für das FPGA-Design zu verwenden, bietet HLS (High Level Synthesis), das mit einem Tool wie Handle-C seit vielen Jahren kurz vor dem Durchbruch steht. Dies ist vor kurzem Realität geworden, da die großen Anbieter Altera und Xilinx HLS in ihren Instrumentenreihen Spectra-Q bzw. Vivado HLx anbieten.

Es sind eine Reihe anderer C-basierter Altera-FPGA-Programmierimplementierungen für Einsteiger verfügbar, beispielsweise OpenCL, das für Softwareentwickler gedacht ist, die Leistungssteigerungen mit FPGAs anstreben, ohne tiefgreifende Kenntnisse des FPGA-Designs zu haben.

Wie bei HDL gibt es bei HLS Einschränkungen bei der Verwendung von FPGA-Programmieransätzen in C; wie bei herkömmlichem HDL müssen Entwickler mit einer Teilmenge der Sprache arbeiten. Beispielsweise ist es schwierig, Systemaufrufe zu synthetisieren und zu implementieren, da Sie sicherstellen müssen, dass alles begrenzt ist und eine feste Größe hat. Das Schöne an HLS ist, dass Sie Ihre eigenen Gleitkomma-Algorithmen entwickeln können und es ein HLS-Tool zum Konvertieren von Gleitkomma in Festkomma gibt.

Die Programmierung von FPGAs mit der Xilinx-Software ist überhaupt nicht schwierig. Sie können es durch den Kauf von Xilinx-Produkten kostenlos oder zu einem modellspezifischen Preis erhalten. Auf der Profilseite können Sie das Video abrufen, das den Nutzungsvorgang anschaulich zeigt. Von allen Unternehmen, aus denen Sie bei der Suche nach programmierbaren Gate-Arrays wählen können, ist Xilinx bei weitem das Beste. Sie sind die Entwickler dieses Produkts und haben es im Laufe der Jahre verbessert. Markensoftware ist leistungsfähiger als je zuvor.

Entwurfsphasen

FPGA-Programmierschulungen können online durchgeführt werden, da die Plattform im Internet gut vertreten ist. Beim Aufbau eines FPGAs besteht der erste Schritt im Entwurf der Schaltung, wofür Kenntnisse der digitalen Elektronik erforderlich sind. Anders als beim Programmieren ist es viel schwieriger, mit dem Slicing von Code zu beginnen, wenn die Architektur des Programms nicht klar ist. Sobald klar ist, was umgesetzt werden muss, beginnen wir mit der Beschreibung der Schaltung in einer der Sprachen: Verilog oder VHDL.

Eine Tatsache, die einen Paradigmenwechsel zeigt, ist, dass sie nicht als FPGA-Programmiersprachen bezeichnet werden, sondern Beschreibungssprachen sind. Aufgrund der Komplexität des Testens digitaler Schaltkreise werden in dieser Phase üblicherweise Testbänke verwendet, die das Verhalten der Geräte simulieren. Mit dieser Art von Tool können Sie jederzeit den Zustand des Signals sehen und prüfen, ob es Übergänge mit den gewünschten Ergebnissen gibt.

Die dritte Stufe wird als Schaltkreissynthese bezeichnet und ist eine der Schlüsselstufen. Es wählt die zu verwendenden Elemente und ihre Beziehungen gemäß den Beschreibungsdateien aus. Für diesen Schritt sind Tools erforderlich, die in den meisten Situationen Aufgaben erleichtern und automatisieren.

Hardware und Einrichtung

Intel Quartus Prime Software Suite Lite Edition ist eine FPGA-Designsoftware. Es ist ideal für Anfänger, da es kostenlos heruntergeladen werden kann und keine Lizenzdatei erforderlich ist. Sie können die Software von der Website des Herstellers herunterladen. Die Dateien sind groß (mehrere Gigabyte) und das Herunterladen und Installieren kann lange dauern. Um den Zeitaufwand und den erforderlichen Speicherplatz zu minimieren, wird empfohlen, nur die Elemente herunterzuladen, die für Benutzeraufgaben erforderlich sind. Wenn Sie aufgefordert werden, Dateien zum Herunterladen anzugeben, deaktivieren Sie „Alle auswählen“ und wählen Sie nur Geräte aus, die Quartus Prime und Cyclone V unterstützen.

Algorithmus zum Erstellen eines Projekts:

  1. Öffnen Sie den Assistenten für neue Projekte.
  2. Wählen Sie „Weiter“ > „Verzeichnis“ > „Name“ > „Objekt der obersten Ebene“.
  3. Wählen Sie ein Verzeichnis aus, um das Projekt abzulegen, zum Beispiel „Blink“, und legen Sie es im Ordner „intelFPGA_lite“ ab. Sie können es aber auch an einer beliebigen Stelle ablegen und auf „Weiter“ klicken.
  4. Wenn Sie aufgefordert werden, ein Verzeichnis zu erstellen, wählen Sie Ja.
  5. Wählen Sie „Projekt leeren“ und klicken Sie auf „Weiter“.
  6. Dateien hinzufügen und „Weiter“ klicken.
  7. Richten Sie Familien, Geräte und Platinen ein, indem Sie Folgendes auswählen: Familie – Cyclone V, Gerät – Cyclone V SE, Basis, Gerätename: 5CSEBA6U2317.
  8. Um ein bestimmtes Gerät auszuwählen, müssen Sie die Aufwärts-/Abwärtspfeile drücken, um eine Liste der unterstützten Geräte anzuzeigen, bis 5CSEBA6U2317 angezeigt wird.
  9. Der Benutzer muss möglicherweise das Feld „Name“ erweitern, um den vollständigen Namen des Geräts anzuzeigen. Klicken Sie auf „Weiter“.
  10. Beim Einrichten des EDA-Tools werden Standardtools verwendet, sodass keine Änderungen vorgenommen werden. Klicken Sie auf „Weiter“ und „Fertig stellen“. Der Zusammenfassungsbildschirm erscheint.
  11. Erstellen Sie eine HDL-Datei mit Verilog-Einbettung als HDL.
  12. Gehen Sie zur Registerkarte „Datei“ (Hauptfenster) und wählen Sie „Neu“.
  13. Wählen Sie „Verilog HDL-Datei“ und klicken Sie auf „OK“.
  14. Wählen Sie „Datei“ > „Speichern unter“.
  15. Wählen Sie einen Dateinamen. Dies ist der Dateiname der obersten Ebene und muss mit dem Projektnamen identisch sein.
  16. Klicken Sie auf „Speichern“.
  17. Erstellen Sie ein Verilog-Modul.
  18. Kopieren Sie den folgenden Verilog-Code, fügen Sie ihn in das blink.v-Fenster ein und speichern Sie dann die Codedatei.
  19. Klicken Sie mit der rechten Maustaste auf „Analyse und Synthese“ und dann auf „Start“, um die Syntaxprüfung und Synthese des Verilog-Codes durchzuführen.

Wenn der Vorgang erfolgreich abgeschlossen wurde, wird neben Analyse und Synthese ein grünes Häkchen angezeigt. Wenn ein Fehler vorliegt, überprüfen Sie die Syntax und stellen Sie sicher, dass sie genau mit dem obigen Codeblock übereinstimmt.

Alle erfahrenen Programmierer wissen, dass komplexe Programme, sogar Unterprogramme, beim ersten Mal nicht richtig funktionieren. Die auf Erfahrung basierende Abstraktionsfähigkeit des Menschen ermöglicht es ihm, Lösungen zu finden, ohne sich um kleinste Details zu kümmern. Aber die harte Wahrheit ist, dass das physische System, in das Programme eingebettet sind, erfordert, dass jedes noch so kleine Detail berücksichtigt wird, bevor alles funktioniert.

Mit der Verbesserung der FPGA-Entwicklungssoftwaretools, hauptsächlich von traditionellen Anbietern sowie unabhängigen Toolanbietern: Synplicity, wird FPGA von Tag zu Tag beliebter. Mittlerweile enthalten FPGAs spezielle Hardware für vom Kunden benötigte Funktionen, wodurch die Kosten für Hersteller gesenkt werden. Daher kann es in Zukunft zu einem Wettbewerb zwischen starren und kostengünstigen Systemen mit flexiblen Kernen kommen. Es wird erwartet, dass die Kosten in naher Zukunft weiter sinken werden, da FPGAs immer beliebter werden.

Hersteller haben begonnen, mit dem Konzept zu experimentieren, FPGAs in integrierte Schaltkreise einzubetten, um ein Hybridgerät zu schaffen. Der Schwerpunkt liegt weiterhin auf dem Interconnect-Routing, und bei den CLB-Architekturen gibt es weniger Veränderungen. Da FPGAs weiterhin Prozessoren antreiben, erfordert die neue Generation nicht nur Hardware-Kenntnisse im digitalen Design, sondern auch Entwicklererfahrung im einmaligen FPGA-Programmierungsprozess. Insgesamt wird erwartet, dass FPGA den Marktanteil bei ASIC-Geräten erobern und zur dominierenden Technologie werden wird, die viele Anwendungen aus verschiedenen Bereichen abdeckt.

Wir stellen oft fest, dass die Leute den Unterschied zwischen einem Systemadministrator und einem Programmierer nicht verstehen und alle IT-Mitarbeiter als Programmierer bezeichnet werden. Manche sind beleidigt, andere haben sich schon daran gewöhnt. Aber ich möchte versuchen, diesen Unterschied zu verdeutlichen, damit er für die meisten, die diesen Artikel lesen, klar ist :)
Wenn eine Organisation über eine IT-Abteilung (Engineering) oder einfacher gesagt eine Computerabteilung verfügt, dann hat sie die folgende Abteilung:

- Die Hauptaufgabe besteht darin, den Betrieb von Servern und Serversoftware, die Verwaltung von Telefonzentralen und Sicherheitsrichtlinien zu steuern. Im Allgemeinen sind dies die Gehirne der gesamten Computerstruktur der Organisation.

Technische Support-Spezialisten (oder Ingenieure)– das sind die Leute, die mit den Computern normaler Benutzer arbeiten, sie einrichten, Benutzern bei der Lösung aktueller Probleme helfen, Viren auf den Computern der Benutzer einfangen usw. usw. Im Wesentlichen ist ein Spezialist ein zukünftiger Systemadministrator, weil Ein Systemadministrator kann auch die Arbeit eines Spezialisten ausführen. Ein Spezialist kann die Arbeit eines Systemadministrators übernehmen, wenn das Management es ihm erlaubt – das Management hat mehr Vertrauen in einen Systemadministrator :)

Programmierer- Das sind die Leute, die ständig verschiedene Texte in einer Sprache schreiben, die für den Durchschnittsbenutzer unverständlich ist. Diese Texte werden dann in nützliche Programme, Dienstprogramme oder einfach Module (zusätzliche Optionen) für nützliche Programme umgewandelt.

2024 wisemotors.ru. Wie es funktioniert. Eisen. Bergbau. Kryptowährung.