Hallo Leute :)
ich hatte die Idee einen taktsynchronen Primzahlgenerator mittels VHDL
zu entwerfen, jedoch klappt es irgendwie nicht so wie ich möchte und
hoffe, dass Ihr mir da vielleicht weiterhelfen könntet.
Also wie oben beschrieben war meine Idee, einen Primzahlgenerator zu
entwerfen. Die Zahlenfolge (1,2,3,5,7,11,13) will ich zyklisch, mit
jeder steigenden Taktflanke dual am Ausgang ausgeben. Zusätzlich habe
ich einen asynchronen Low-aktiven Reset eingebaut, bei dem der Ausgang
wieder auf 1 zurück gesetzt wird.
1
architecturertlofprim_genis
2
begin
3
p_prim:process(Reset,Clk)
4
variablev_var:natural;
5
begin
6
if(Reset='0')then
7
Q_o<="0001";
8
v_var:=0;
9
elsif(Clk='1'andClk'event)then
10
f_cnt:forv_varinv_varto6loop
11
c_switch:casev_varis
12
when0=>Q_o<="0001";
13
when1=>Q_o<="0010";
14
when2=>Q_o<="0011";
15
when3=>Q_o<="0101";
16
when4=>Q_o<="0111";
17
when5=>Q_o<="1011";
18
when6=>Q_o<="1101";
19
whenothers=>Q_o<=(others=>'0');
20
endcasec_switch;
21
exit;
22
endloopf_cnt;
23
endif;
24
endprocessp_prim;
25
endarchitecturertl;
Wenn ich diesen Code simuliere, bleibt der Ausgang auf x"1". Ich
vermute, dass die Variable in der Vorschleife jedes mal wieder bei 0
anfängt, aber bleiben Variablenwerte trotz deren nicht erhalten?
Johannes H. schrieb:> Wenn ich diesen Code simuliere
Wenn Du uns die Testbench zur Verfügung stellst (Anhang) können wir die
Simulation auch nachvollziehen.
Duke
Johannes H. schrieb:> Die Zahlenfolge (1,2,3,5,7,11,13) will ich zyklisch, mit jeder> steigenden Taktflanke dual am Ausgang ausgeben.
Gleichzeitig?
Denn eine for-Schleife wird in VHDL "prinzipiell" in der Zeit 0
durchlaufen.
> when others => Q_o <= (others => '0');
Das ist unnötig, weil v_var eh' nur von 0 bis 6 laufen kann...
> aber bleiben Variablenwerte trotz deren nicht erhalten?
Du willst dir doch nicht etwa eine speichernde Variable an die Backe
kleben?
Lies mal den Beitrag Beitrag "Variable vs Signal" und
verwende als Anfänger fürderhin erst mal nur Signale. Denn auch wenn du
"Variablen" und "Schleifen" vieleicht von C her kennst: in VHDL tun die
ganz was anderes...
> Wenn ich diesen Code simuliere, bleibt der Ausgang auf x"1". Ich> vermute, dass die Variable in der Vorschleife jedes mal wieder bei 0> anfängt, aber bleiben Variablenwerte trotz deren nicht erhalten?
Könnte auch sein, dass du im Dauerreset bist...
> f_cnt : for v_var in v_var to 6 loop
Hmmmm, du bist sicher dass du das, was da steht, tatsächlich willst?
Danke leute habe es lösen können. Habe statt der for-Schleife die
1
useIEEE.numeric_std.all
verwendet.
Ich wollte es eigentlich nur durch die for-Schleife lösen aber
anscheinend ist es möglich. Kann man eigentlich einen Counter in VHDL
mittel einer for-Schleife realisieren?
Johannes H. schrieb:> Habe statt der for-Schleife die use IEEE.numeric_std.all verwendet.
Du wirfst hier aber ganz heftig Kraut und Rüben in einen Topf!
> Ich wollte es eigentlich nur durch die for-Schleife lösen aber> anscheinend ist es möglich. Kann man eigentlich einen Counter in VHDL> mittel einer for-Schleife realisieren?
Jein. Man kann es für die simulation, indem man ein wait until() in die
Schleife einfügt. Ich würde mich das jetzt aber nicht für die Synthese
trauen...
> Kann man eigentlich einen Counter in VHDL> mittel einer for-Schleife realisieren?
Bestimmt, jedoch wird die for Schleife in VHDL nicht wie in C
nacheinander durchlaufen, sondern für die anzahl der Durchläufe wird die
in der Schleife geschriebene Hardware "generiert". Du kannst ein
einzelnes Zählerglied beschreiben und es mit for mehrmals hintereinander
platzieren und somit einen Zähler aufbauen.
Jan H. schrieb:> Du kannst ein einzelnes Zählerglied beschreiben und es mit for mehrmals> hintereinander platzieren und somit einen Zähler aufbauen.
Da wäre es aber schlau, dafür generate statt eines Prozesses zu
verwenden. Und beim generate sieht man dann auch ganz gut, dass mit
einer Schleife einfach mehr Hardware gebaut wird.
Jan H. schrieb:> Bestimmt, jedoch wird die for Schleife in VHDL nicht wie in C> nacheinander durchlaufen
Doch, natürlich wird sie durchlaufen. Aber sie wird vom Synthesetool
abgearbeitet und ausgeführt und nicht etwa - wie es ein C-Compiler tut -
nur übersetzt und in anderer Form an den Prozessor weitergereicht.
DAS ist der Unterschied, den Anfänger kapieren müssen:
Das VHDL-Programm läuft sowohl für die Simulation als auch für die
Synthese komplett in der Synthesesoftware ab. Ob und was da rauskommt,
hängt von der Beschreibung ab. Das haben wir aber schon zur Genüge
durchgekaut und ist auch im FPGA-Artikel hinreichend erklärt, auf den
man verweisen sollte.
> sondern für die anzahl der Durchläufe wird die> in der Schleife geschriebene Hardware "generiert".
.. sofern das das so steht, ja. Aber in Schleifen in VHDL kann man so
ziemlich alles formulieren und mehrfach ausführen lassen. Da kommt nicht
unbedingt Hardware bei raus, sondern gfs auch nur ein kompliziert zu
ermittelndes Zwischenergebnis. Je nachdem, was man alles in Bedingungen
und Schleifen stopft, kann man komplette FPGAs dynamisch beschreiben,
bis hin zum mehrfachen Erzeugen von verteilen Schaltungen in mehreren
FPGAs, durch Erzeugen unterschiedlicher Versionen oder Teilfunktionen
i.A. variierender Randbedingungen, die sich dann zu einem Ganzen
zusammenfügen, wobei in jedem FPGA nur ein Teil einer Funktion oder
redundante Kopien steckt:
http://www.96khz.org/htm/scalableaudiodsp.htm
Obwohl da 4 Schleifen ineinander laufen und theoretisch X x Y x t x k
Schaltungen bilden, sind es infolge der Bedingungen nur XYt geteilt
durch ein Produkt A x B an Schaltungen, je nachdem, wie groß die FPGAs
(a) und deren Kapazität (b) für ein Audiomodul ist.
Die Zahl der sichtbaren Durchläufe ist also nicht direkt an eine Breite
eines Busses oder Zahl von Elementen gekoppelt.
Da muss man genau hinschauen, was da passiert:
Die ganze SOPC-Welt funktioniert ja so, dass alle erdenklichen
Konfigurationsfälle und Verbindungsoptionen vorgedacht und mit
Bedingungen verknüpft werden, die dann je nach Anschluss und Konfig
durch den User beim Abarbeiten ausgeführt werden.
Den Anfängern sage Ich immer, dass VHDL so zu verstehen ist, wie eine
Arbeitsanleitung an einen Layouter/Schaltungsentwickler. Wenn Ich den
10mal irgendwas was machen lasse, habe ich nur im Ausnahmefall im
späteren FPGA eine Schaltung, die zufällig auch 10mal was tut.
VHLD ist eine Beschreibungs-Sprache. Sie beschreibt (ähnlich wie HTML
eine Webseite, TeX ein schriftliches Dokument oder troff eine
Unix-Manpage beschreibt) eine digitale Schaltung.
Der Witz an all diesen Sprachen ist, daß letztendlich nicht das
Programm, das da läuft, interessant ist, sondern das Ergebnis des
Programmlaufs: eben die HTML-Seite, das TeX-DVI, die Manual-Page oder
eben das Bitfile, das als Ergebnis der Synthese rausfällt.
Hallo Leute :)
Tut mir Leid, dass ich erst jetzt zurück und auch vielen Dank für die
vielen Antworten. Wie schon erwähnt habe ich das Beispiel gelöst und es
funktioniert auch, jedoch bin ich mir jetzt unsicher, ob es so "schön"
geschrieben ist und ob man es besser schreiben machen könnte. Irgendwie
habe ich das Gefühl, dass es zu sehr "C-Mäßig" geschrieben ist
Ich hatte das zu Heimcomputerzeiten in Basic so gelöst:
- Aus der zu untersuchenden Zahl die Quadratwurzel ziehen, gucken ob
ohne Rest, wenn ja verwerfen, wenn nein, als Variable speichern
- versuchen durch 2 zu teilen, wenn ohne Rest möglich, Zahl verwerfen,
ansonsten gucken ob Ergebnis größer als Wurzel
- Teiler um eins erhöhen, wenn ohne Rest möglich, Zahl verwerfen,
ansonsten gucken ob Ergebnis größer als Wurzel...
wenn der Teiler das Ergebnis der Wurzel übersteigt, dann ist die
untersuchte Zahl eine Primzahl
da ab der Wurzel sich Teiler und Ergebnisse nur umkehren, kann ich so
die Hälfte des Berechnungsaufwandes unter den Tisch fallen lassen :-)
Die Idee ist mir irgendwann als Optimierung meiner Routine gekommen.
Zuvor habe ich bis 1 kleiner der zu untersuchenden Zahl den Teiler
erhöht.
Markus F. schrieb:> VHLD ist eine Beschreibungs-Sprache. Sie beschreibt (ähnlich wie HTML> eine Webseite, TeX ein schriftliches Dokument oder troff eine> Unix-Manpage beschreibt) eine digitale Schaltung.>
Und auch wenn es immer wieder gebetsmühlenartig als
"Beschreibungssprache" bezeichnet wird: VHDL ist immer noch eine
Programmiersprache. Turing würde sich im Grabe umdrehen...
Dass man damit HW beschreibt, heisst nicht, dass man es mit einer
Nicht-Turing-Beschreibungssprache wie HTML verwechseln darf. Faktisch
ist VHDL Ada mit ein paar Erweiterungen.
Aber zum Thema Primzahlen: Versuch doch mal einen anderen Ansatz, ich
geb mal nen Hinweis:
signal p2 : std_logic_vector(1 downto 0) := "01";
signal p3 : std_logic_vector(2 downto 0) := "001";
signal p5 : std_logic_vector(4 downto 0) := "00001";
.. (vervollständige weiter).
Nun die Uebung: Ueberleg dir mal, was du mit Shift-Registern mit
"rotate"
(was hinten rausfällt kommt vorne wieder rein) und OR-Gattern daraus
machen kannst, um weitere Primzahlen herauszusieben (nach Eratosthenes).
Also denke erst in Gattern, dann schreibst es hin. Ohne Variablen, nur
mit Signalen. Und einen Zähler brauchst du.
Martin S. schrieb:> Und auch wenn es immer wieder gebetsmühlenartig als> "Beschreibungssprache" bezeichnet wird: VHDL ist immer noch eine> Programmiersprache. Turing würde sich im Grabe umdrehen...> Dass man damit HW beschreibt, heisst nicht, dass man es mit einer> Nicht-Turing-Beschreibungssprache wie HTML verwechseln darf. Faktisch> ist VHDL Ada mit ein paar Erweiterungen.
Und wenn man tausend Jahre darüber streiten kann, was denn
Programmierung sein und was nicht, aber der Begriff
"Beschreibungssprache" steckt bei VHDL schon im Namen:
"VHSIC Hardware Description Language".
Wenn das kein Beweis ist...
Martin S. schrieb:> Und auch wenn es immer wieder gebetsmühlenartig als> "Beschreibungssprache" bezeichnet wird: VHDL ist immer noch eine> Programmiersprache.
Dem würde ich keinesfalls widersprechen (und was ich oben schrob,
widerspricht dem m.E. auch nicht).
Wenn das einer wollte, könnte man wohl einen Texteditor in VHDL
schreiben. Wahrscheinlich ist alles dafür da, was man braucht. Als
Beweis für "Programmiersprache" sollte das wohl ausreichen.
Man könnte sicher auch C++-Code schreiben, der - in einem passenden
Synthese-Programm ausgeführt - ein Bitfile auswerfen kann (wenn man denn
wüsste, wie das aussehen soll). Würde das C++ zur Beschreibungssprache
"degradieren"?
Johannes H. schrieb:> Irgendwie> habe ich das Gefühl, dass es zu sehr "C-Mäßig" geschrieben ist
Nö, passt schon. Alles, was du jetzt geschrieben hast, lässt sich direkt
auf Hardwarekomponenten abbilden. Du hast einen Zähler, der bei jedem
Takt eins hochzuählt und beim Überlauf auf 0 zurückspringt. Und du hast
ein Schaltnetz (-> LUT), das aus dem Zälerstand einen Ausgabewert
generiert.
Du könntest dir nur selbst einen Gefallen tun, wenn du den Zähler per
Signal statt per Variable beschreibst (du müsstest den Überlauf dann
etwas anders regeln).
Hier funktioniert zwar eigentlich beides gleich gut, aber ich würde dir
empfehlen, Variablen erst/nur dann einzusetzen, wenn du dir der
Unterschiede zwischen Variable und Signal wirklich bewusst bist und wenn
du eine Variable brauchst (weil es mit einem Signal nicht gehen würde).
Wurde ja glaube ich weiter oben schon mal empfohlen.
Klaus F. schrieb:> "Beschreibungssprache" steckt bei VHDL schon im Namen:> "VHSIC Hardware Description Language".> Wenn das kein Beweis ist...
Was aber nicht bedeutet, dass alles, was nicht genannt ist, nicht
stimmt.
XML wäre dann auch weder eine Programmier- noch eine
Beschreibungssprache, denn im Namen steckt nix davon drin.
Eigentlich ist es kaum zu fassen, wie angebliche Ingenieure so
engstirnig sein können und sich an Begriffen hochziehen, die in aller
Regel dadurch zustande gekommen sind, dass ein Nerd spät des Nachts
irgendeinen Einfall hatte und ausprobiert hat, mit welchen Abkürzungen
man das halbwegs gut formulieren kann, damit es klingt. Auf Inhalte hat
da nie einer genau geschaut. Ausserdem entwicklen sich Dinge und
entfernen sich von ihrer ursprünglichen Bedeutung und Deklaration.
So eine hadere Begriffsgläubigkeit kennt man sonst nur von Juristen!
Ist nicht alles eine Programmiersprache?
Ich hatte da zu Anfang der Computerära so ein Erlebnis mit einer
Sekretärin, die sagte, sie würde jetzt auch programmieren. Nach einer
kurzen Abklärungsphase war dann klar, dass sie Texte in den Computer
"programmierte".
Heute wird mir klar: die Frau war uns allen voraus...
Was mich aber hauptsächlich nachdenklich stimmt, ist, dass nach meiner
Erfahrung diese verbissene VHDL-ist-eine-Programmiersprache Einstellung
vorrangig von ehemaligen Softwerkern kommt.
Heidbutel schrieb:> Eigentlich ist es kaum zu fassen, wie angebliche Ingenieure so> engstirnig sein können und sich an Begriffen hochziehen
Ja, dann lass mich doch weiterhin von einer Beschreibungssprache
sprechen. Andere dürfen das meinetwegen auch eine Programmiersprache
oder sonstwas nennen.
Lothar M. schrieb:> Heidbutel schrieb:>> Eigentlich ist es kaum zu fassen, wie angebliche Ingenieure so>> engstirnig sein können und sich an Begriffen hochziehen> Ja, dann lass mich doch weiterhin von einer Beschreibungssprache> sprechen. Andere dürfen das meinetwegen auch eine Programmiersprache> oder sonstwas nennen.
Vorschlag: Nenne es nicht FPGA-Programmierung und auch nicht
FPGA-Beschreibung, sondern "Digitaler Schaltungsentwurf mit FPGA".
Hat man Erfahrung darin, arbeitet es sich viel leichter mit VHDL und Co.
Ein Problem ist allerdings das Lehrbücher über Schaltungsentwurf gern
beim Urschleim wie die Unterschieder zwischen TTL und CMOS oder
Gattermodell eines FF/Counter anfangen, so dass der geneigte Leser
ermüdet bevor er bei den essentiellen FPGA-Grundlagen wie synchroner
Schaltungsentwurf/FSM-Design/Clocknetwork ankommt. Falls letzteres über
in den Lehrbüchern behandelt wird.
Heidbutel schrieb:> XML wäre dann auch weder eine Programmier- noch eine> Beschreibungssprache, denn im Namen steckt nix davon drin.
Nanu, seit wann ist denn XML eine Programmiersprache? Auf die Idee würde
keiner kommen. Das mit der Beschreibungssprache steckt in dem Markup
schon irgend wie mit drin.
nicht"Gast" schrieb:> Heidbutel schrieb:>> XML wäre dann auch weder eine Programmier- noch eine>> Beschreibungssprache, denn im Namen steckt nix davon drin.>> Nanu, seit wann ist denn XML eine Programmiersprache? Auf die Idee würde> keiner kommen. Das mit der Beschreibungssprache steckt in dem Markup> schon irgend wie mit drin.
Wurde XML nicht mal wie SGML als Seitenbeschreibungssprache bezeichnet?!
Das Problem ist das "Programmieren" im Deutschen fast ausschließlich
*Computer*-Ablauf programmieren benutzt wird, während es im Englischen
im Sinne von Ablaufsteuerung weiter gefasst wird. HTML steuert also den
Ablauf des Parsers/Renders die die Seite produziert. Aber es gibt noch
das Tagesprogramm und das Programmieren des Videorecorders/Mikrowelle
(im Sinne von Zeitschaltuhr einstellen).
Lothar M. schrieb:> Ist nicht alles eine Programmiersprache?
Nö. Siehe Turing-Vollständigkeit.
Und genau darin besteht der Unterschied zw. Beschreibung und
Programmierung.
Lax ausgedrückt, sobald prozedurale Elemente vorkommen, ist es keine
Beschreibung mehr.
Dazu kommt, dass es für eine Beschreibung typischerweise in der Syntax
verankerte Designregeln gibt (die der korrekten Beschreibung zielführend
sind), bei XML z.B. ein Schema.
Bei VHDL ist das schon nicht mehr der Fall. Da wurde faktisch Ada
(Programmiersprache) aufgebohrt, um HW zu simulieren.
Für die eigentliche Beschreibung von HW gibt es keine Syntaxregeln. Man
kann eine Menge programmieren, was sich nicht in eine Beschreibung
umsetzen lässt.
Deswegen ist VHDL für eine konkrete Beschreibung recht schwerfällig, da
sich digitale Vorgänge zu leicht abstrahieren lassen, dementsprechend
offenbart sich hier immer wieder der harzige Weg zu einer korrekten
Beschreibung.
C. A. Rotwang schrieb:> Vorschlag: Nenne es nicht FPGA-Programmierung und auch nicht> FPGA-Beschreibung, sondern "Digitaler Schaltungsentwurf mit FPGA".
Bingo. Es geht ja schlussendlich um ein Design. Designs kann man
durchaus prozedural programmieren. Ob das Synthesetool daraus eine
richtige Beschreibung macht, ist immer das Abenteuer.
Was XML angeht: Es gibt Ansätze, HDL wirklich als echte Beschreibung in
XML zu formulieren, um darauf Designregeln-Checks laufen zu lassen.
Um die Verwirrung so ganz am Rande noch komplett zu machen: Es gibt auch
bei XML eine Ausnahme: XSLT gilt wie LaTeX als Turing-vollständig. Man
hat damit eine Beschreibung programmatischer Abläufe in XML...
Mit dem Ausflug in die TI sind wir allerdings jetzt gehörig vom Thema
abgedriftet und der TO hat wohl die Nase voll von VHDL :-)
Lothar M. schrieb:> Lies mal den Beitrag Beitrag "Variable vs Signal"
Und täglich grüßt das Murmeltier ... Wollte gerade mal wieder meine
Kenntnisse bzgl Variable vs Signal auffrischen - dann stelle ich fest,
der damalige Thread wurde von mir erstellt ...
Ich bin immer noch der Meinung, dass Variablen vieles vereinfachen und
man sie nicht pauschal verteufeln sollte :)
Martin S. schrieb:> Lothar M. schrieb:>> Ist nicht alles eine Programmiersprache?> Nö. Siehe Turing-Vollständigkeit.
Hast du mal einen Link, der definiert, dass Programmiersprachen generell
Turing-Vollständigkeit besitzen müssen (*)?
Oder einen, der definiert, dass Turing-Vollständigkeit aus irgendwas
automatisch eine Programmiersprache macht?
(*)https://www.golem.de/news/crema-eine-programmiersprache-ohne-turing-vollstaendigkeit-1508-115591.htmlMampf F. schrieb:> Ich bin immer noch der Meinung, dass Variablen vieles vereinfachen und> man sie nicht pauschal verteufeln sollte :)
Ich verteufle Variablen nicht. Ich verwende sie ja selbst, wo es
sinnvoll ist. Ich weise nur ausdrücklich darauf hin, daß Variablen in C
und in VHDL außer dem Namen nichts gemein haben. Und dass man wissen
sollte, wo in VHDL sinnvoller Signale oder Variablen eingesetzt werden.
C. A. Rotwang schrieb:> Vorschlag: Nenne es nicht FPGA-Programmierung und auch nicht> FPGA-Beschreibung, sondern "Digitaler Schaltungsentwurf mit FPGA".
Das ist aber auf einer anderen Abstraktionebene angesiedelt. Wie nenne
ich die Beschreibung eines einzelnen Zählers? Frage ich da
"Wie sieht das VHDL-Programm für den Zähler aus?" oder frage ich "Zeig
mal die Beschreibung des Zählers." oder verbiege ich mich und sage "Wie
sieht der VHDL-Schaltungsentwurf für den Zähler aus?"
Was sage ich dann, wenn es kein Entwurf mehr, sondern nach der
Serieneinführung schon tausendfach umgesetzte Realität ist?
Und warum sollte die Problematik durch die Einführung eines dritten
Begriffs einfacher oder klarer werden?
> C. A. Rotwang schrieb:>> Vorschlag: Nenne es nicht FPGA-Programmierung und auch nicht>> FPGA-Beschreibung, sondern "Digitaler Schaltungsentwurf mit FPGA".> Das ist aber auf einer anderen Abstraktionebene angesiedelt. Wie nenne> ich die Beschreibung eines einzelnen Zählers? Frage ich da> "Wie sieht das VHDL-Programm für den Zähler aus?" oder frage ich "Zeig> mal die Beschreibung des Zählers." oder verbiege ich mich und sage "Wie> sieht der VHDL-Schaltungsentwurf für den Zähler aus?"> Was sage ich dann, wenn es kein Entwurf mehr, sondern nach der> Serieneinführung schon tausendfach umgesetzte Realität ist?> Und warum sollte die Problematik durch die Einführung eines dritten> Begriffs einfacher oder klarer werden?
Ich kann dir hier nicht folgen. Meines Erachtens ist das keine weitere
Abstraktionsebene sondern eine konkrete Realisierung mit "komplexen"
bausteinen. Zähler ist vielleicht nicht das beste Beispiel. Aber einer
der Digitalentwurf gelernt hat, weiss schon mal das man hier einen binär
synchronzähler nimmt und dem Überlauf realisiert indem man mit
komperator den Zustand der Zähl-FF mit dem Eckwertvergleich und dessen
Ausgang an die Reset der FF führt. Weis man das quält man nicht das
Synthesetool mit unsynthetierbaren VHDL-Konstrukten, die sich nur im
Simulator wie ein Counterverhalten. Oder Flanken detector, wer
schaltungstechnik gelernt hat, weiss das man das mit einen D-FF und
Gatter realisiert. Und einem Schaltungstechniker muss man nicht erklären
das clock zwar auch nur ein Signal ist, es aber nicht auf "normale"
Signal-Netze gehört, sondern einem clock tree.
Außerdem führt der Hinweis mit dem Schaltungsdesign dazu das man sich
das passende Buch neben der VHDL-Syntaxbeschreibung auf den Schreibtisch
stellt, bspw Tietze, Schenk Schaltungstechnik. Den dort werden solche
esentialen Begriffe wie Taktnetzwerk, sequentielle und Kombinatorische
Logik, shiftregister, Multiplexer, kritisch Pfad, Setup/Hold-time
geklärt und nicht/kaum in Literatur zur VHDL-syntax.
So wie man beispielsweise für das Programmieren von
Bildverarbeitungstools nicht nur den C++ Syntax braucht sondern auch
Wissen über
Bildverarbeitungsalgorithmen/Farbmodelle/Koordinatentransformation/alais
ing ...
Jetz kann man schon fast nen Thread dazu aufmachen...
>> Lothar M. schrieb:>>> Ist nicht alles eine Programmiersprache?>> Nö. Siehe Turing-Vollständigkeit.> Hast du mal einen Link, der definiert, dass Programmiersprachen generell> Turing-Vollständigkeit besitzen müssen (*)?> Oder einen, der definiert, dass Turing-Vollständigkeit aus irgendwas> automatisch eine Programmiersprache macht?>
Zu letzterem kann man sich garantiert streiten.
Ich würde mich auf Aussagen von Niklaus Wirth in seinen Vorlesungen aus
den 90ern berufen..
Ansonsten:
https://de.wikipedia.org/wiki/Turing-Vollst%C3%A4ndigkeit
"Einige Autoren definieren den Begriff „Programmiersprache“ auf Basis
der Turing-Vollständigkeit.[6]"
> (*)https://www.golem.de/news/crema-eine-programmiersp...
Guck ich mir jetz lieber nich im Detail an...
Andauernd werden in nerdy Hinterzimmern eine Menge
"anwendungsorientierter" Sprachen erfunden...
Aber das Thema mit der Endlosschleife <-> Turing-complete ist ein
kontroverses. Was für n Abend und n Bier...
Irgendwo muss halt die Trennlinie gezogen werden. Visual Basic oder
Excel-Makros sind für mich wie LaTeX gerade noch Programmiersprache,
während es XSLT nicht mehr ist (wenn auch Turing-completeness hingefaket
wird).
IP-XACT oder die div. XHDL-Ansätze mit einem Schema hingegen sind
definitiv Beschreibungssprachen. Eine eindeutig abbildende
Beschreibungssprache sollte eigentlich immer ein Schema haben.
So ganz am Rande für die Freaks: man kann den AST (abstrahierten
Syntax-Baum) von VHDL in eine echte 'XHDL' übersetzen, die sogar über
Umwege synthetisiert. Da gehen aber momentan auch nur Konstrukte, die
strikt "beschrieben" werden, sobald programmatische Elemente
(Funktionen, Schleifen) im Spiel sind, meckert der 'DRC'.
Beispiel: https://section5.ch/dclib/xhdl/, um damit zu spielen (d.h.
VHDL auf Designregeln zu checken) ist allerdings ne aktuelle
GHDL-Version mit XML-Ausgabe nötig.
Grüsse,
- Strubi