Forum: FPGA, VHDL & Co. VGA Textmode - 22% Logikgatter


von Samuel J. (capstrovor)


Lesenswert?

Hallo!

Ich habe gestern den ersten Teil meines VGA-Textmode-Controller in VHDL 
geschrieben. Jetzt habe ich dazu 2 Fragen:

1. Es sind jetzt schon 22% der Logikgatter verbraucht! Könnte jemand 
über den Code schauen, und mir sagen ob ich ihn sehr ineffizient 
geschrieben habe? Oder liegt es daran, dass ich Bitmaps für 2 Buchstaben 
direkt in den FPGA schreibe? Und kennt jemand eine elegantere Methode?

2. Wenn ich 5 mal in jeder Zeile ein 'A' ausgeben lasse, funktioniert 
alles perfekt. Wenn ich aber nur 2 '5' pro Zeile ausgeben lasse, wird 
der rechte Strich des 'A' weggeschnitten?
1
library IEEE;
2
use IEEE.std_logic_1164.all;
3
4
entity vga_core is
5
port
6
(
7
  clk_50: in std_logic;
8
  red: out std_logic_vector(3 downto 0);
9
  green: out std_logic_vector(3 downto 0);
10
  blue: out std_logic_vector(3 downto 0);
11
  hsync: out std_logic;
12
  vsync: out std_logic
13
);
14
end vga_core;
15
16
architecture vga_core_arch of vga_core is
17
18
signal clk: std_logic;
19
signal lineCounter: integer:=0;
20
signal pixelCounter: integer:=0;
21
22
type int_array is array (0 to 79) of integer;
23
signal lineBuffer: int_array:= (others => 1);
24
25
type t_3d is array(1 downto 0, 9 downto 0, 7 downto 0) of std_logic;
26
signal signBuffer: t_3d;
27
28
signal signCounter: integer:= 0;
29
30
begin
31
32
signBuffer <=  (    
33
    (('0','0','0','0','0','0','0','0'),
34
     ('0','0','0','0','0','0','0','0'),
35
     ('0','0','0','0','0','0','0','0'),
36
     ('0','0','0','0','0','0','0','0'),
37
     ('0','0','0','0','0','0','0','0'),
38
     ('0','0','0','0','0','0','0','0'),
39
     ('0','0','0','0','0','0','0','0'),
40
     ('0','0','0','0','0','0','0','0'),
41
     ('0','0','0','0','0','0','0','0'),
42
     ('0','0','0','0','0','0','0','0')),
43
          
44
    (('0','0','0','0','0','0','0','0'),
45
     ('0','0','1','1','1','1','0','0'),
46
     ('0','0','1','0','0','1','0','0'),
47
     ('0','0','1','0','0','1','0','0'),
48
     ('0','0','1','1','1','1','0','0'),
49
     ('0','0','1','0','0','1','0','0'),
50
     ('0','0','1','0','0','1','0','0'),
51
     ('0','0','1','0','0','1','0','0'),
52
     ('0','0','1','0','0','1','0','0'),
53
     ('0','0','0','0','0','0','0','0'))
54
     );
55
56
          
57
lineBuffer(0) <= 0;
58
lineBuffer(1) <= 0;
59
60
61
vga_clk: process(clk_50)
62
begin
63
  if rising_edge(clk_50) then
64
    clk <= NOT clk;
65
  end if;
66
end process vga_clk;  
67
  ------------------------------------------------
68
vga_testpic: process(clk)
69
begin
70
  if clk = '1' then
71
    
72
    pixelCounter <= pixelCounter + 1;
73
    
74
    if pixelCounter = 800 then
75
      pixelCounter <= 0;
76
      lineCounter <= lineCounter + 1;
77
      signCounter <= 0;
78
    end if;
79
    
80
    if lineCounter = 524 then
81
      lineCounter <= 0;
82
    end if;
83
    
84
    if pixelCounter > 112 AND pixelCounter mod 9 = 0 then
85
      signCounter <= signCounter + 1;
86
    end if;
87
    
88
------------------------------------------------
89
    if pixelCounter > 704 AND pixelCounter < 800 then
90
      hsync <= '0';
91
    else
92
      hsync <= '1';
93
    end if;
94
    
95
    if lineCounter > 522 AND lineCounter < 524 then
96
      vsync <= '0';
97
    else
98
      vsync <= '1';
99
    end if;
100
  -------------------------------------------------
101
    if pixelCounter > 112 AND pixelCounter < 752 AND lineCounter > 13 AND lineCounter < 493 then
102
      if signBuffer(lineBuffer(signCounter), 10-((lineCounter - 14) mod 10), 8-((pixelCounter - 113) mod 8)) 
103
= '1' then
104
        red <= "0000";
105
        green <= "1111";
106
        blue <= "0000";
107
      else
108
        red <= "0000";
109
        green <= "0000";
110
        blue <= "0000";
111
      end if;
112
    else
113
      red <= "0000";
114
      green <= "0000";
115
      blue <= "0000";
116
    end if;
117
  ------------------------------------------------
118
  end if;
119
end process vga_testpic;
120
end architecture vga_core_arch;

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Samuel J. schrieb:
> Könnte jemand über den Code schauen, und mir sagen ob ich ihn sehr
> ineffizient geschrieben habe?
Wen oder was?

Warum habe bei diesem "Code" so ein unschönes Dejavu? Hast du den vom 
Peter abkopiert? Und das ohne meine darunterstehenden Kommentare zu 
lesen? Oder muss hier echt jeder jeden Blödsinn selber machen?

Seis drum: die 22% gehen auf die Verwendung des falschen RAMs. Du 
bekommst "Distributed RAM" und nicht einen RAM Block. Das kommt, weil du 
den Synthese-Guide deines Synthesizers nicht gelesen hast.

Zum Code: So beschreibt man keinen Taktteiler, und man verwendet keine 
uneingeschränkten Integer. Das ist übrigens der zweite Grund für so viel 
Speicherbedarf.

von Samuel J. (capstrovor)


Lesenswert?

> Hast du den vom Peter abkopiert?
Nein, hab ich selber geschrieben.

> die 22% gehen auf die Verwendung des falschen RAMs.
Wieso RAMs? Ich verwende doch keinen RAM?

> Das kommt, weil du den Synthese-Guide deines Synthesizers nicht gelesen
> hast.
Ok, schau ich mir mal an.

> So beschreibt man keinen Taktteiler
Wieso nicht? Wie dann?

>man verwendet keine uneingeschränkten Integer
Leuchtet ein!

Danke schonmal für die Hilfe!

PS: Ich sollte mir wahrscheinlich den Post von Peter mal durchlesen, 
oder? :D

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Samuel J. schrieb:
> Wieso RAMs? Ich verwende doch keinen RAM?
Das ist das Problem. Denn wenn du ein Array definierst, aber kein RAM 
verwendest, wie sollte das denn dann umgesetzt werden?
Möglichkeit 1: jedes Bit wird zu einem einzelnen Flipflop im FPGA
Möglichkeit 2: verwende die LUTs als Speicher
Möglichkeit 3: verwende einen RAM Block

>> Hast du den vom Peter abkopiert?
> Nein, hab ich selber geschrieben.
Na gut, dann war Peter der Kopierer...

>> So beschreibt man keinen Taktteiler
> Wieso nicht?
Lies mal den Beitrag "Re: VGA Text Mode Problem" durch.

> Wie dann?
Arbeite mit Clock-Enables. Und simuliere dein Design...

> PS: Ich sollte mir wahrscheinlich den Post von Peter mal durchlesen,
> oder? :D
Ja. Etwas unschön, dass er sich damals einfach so reingedrängelt hat...

von Fpgakuechle K. (Gast)


Lesenswert?

Samuel J. schrieb:
> signal lineCounter: integer:=0;
> signal pixelCounter: integer:=0;
>
> type int_array is array (0 to 79) of integer;


integer ohne range ist ein Grund den immensen Logik-verbauch. Definiere
einen subtype mit einem Wertebereic,h den du auch benötigst. Für pixel 
und linecount sollten 11  .. 12 bit genügen, da braucht es keine 32.

MfG,

von Fpgakuechle K. (Gast)


Lesenswert?

Samuel J. schrieb:

> vga_testpic: process(clk)
> begin
>   if clk = '1' then

Au!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fpga Kuechle schrieb:
> integer ohne range ist ein Grund den immensen Logik-verbauch.
Na gut, was als unnütz erkannt wird, wird hinterher dann schon 
wegoptimiert oder fest auf 0 gesetzt. Allerdings kann der Synthesizer 
nicht alles erkennen...

Fpga Kuechle schrieb:
> Au!
Abe mal so richtig AU!! Das gibt ein Latch. Oder besser: viele Latches!
Ich hatte das übersehen, weil so ein Konstrukt für den Simulator (der 
bekanntermaßen auf einen Signalwechsel in der Sensitivliste anspringt) 
funktioniert. Aber die Synthese ignoriert die Sensitivliste und macht 
gnadenlos Latches und (viel, viel schlimmer!!!) kombinatorische 
Schleifen daraus...
http://www.lothar-miller.de/s9y/archives/42-Kombinatorische-Schleifen.html

Fazit: da MUSS ein 'event mit rein. Oder besser gleich die rising_edge() 
abgefragt werden.

: Bearbeitet durch Moderator
von Sigi (Gast)


Lesenswert?

Hab das Ganze mal eben in ein Xilinx ISE Projekt eingebunden.
ISE hat die Synthese verweiger, da 3-dim. Arrays nicht unterstützt
werden.
In Quartus gehts zumindestens, der Resourcenverbrauch ist aber
angesichts der "Aufgabe" immens. Das liegt aber nicht am Integer-Array
(wird glaube nur mit 1er und 0er konstant gefüllt und somit vom
Tool optimiert), bei mir fallen aber zwei sehr grosse Resourcenkiller
an: die beiden Modulo-Operatoren so zimlich am Ende des Codes
(insgesammt: 3470 LogicCells, Modulo1: 1661, Modulo2: 1554 !!!!).
Und so auf die Schnelle kriege ich auf einem Cyclone-I nur F-MAX
von 7.1 MHz hin, für VGA ein wenig langsam.

Bevor man sich an VGA-Textausgabe rantraut, sollte man zuerst mal
die Basics durchkauen (Lauflicht) und sauber ausformulieren. Und sich
ausserdem klarmachen, das Multiplikation und Division bzw. Modulo-Ops
grosse Resourcenfresser sind und uU nicht ohne Weiteres synthetisierbar
sind.

Zum Code selbst:

if pixelCounter > 112 AND pixelCounter < 752 AND lineCounter > 13 AND 
lineCounter < 493 then
if signBuffer(lineBuffer(signCounter), 10-((lineCounter - 14) mod 10), 
8-((pixelCounter - 113) mod 8))
...

sowas erzeugt einen riesig grossen LUT-Baum mit entsprechend schlechter
Performance. Das muss nicht sein, denn das VGA-Signal ist sehr
periodisch, d.h. sämtliche der obigen "Berechnungen" können schon
einen Takt vorher gemacht werden.

usw. usf...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sigi schrieb:
> ISE hat die Synthese verweiger, da 3-dim. Arrays nicht unterstützt
> werden.
Die könnte schon. Man muss es ihr nur sagen:
http://www.lothar-miller.de/s9y/archives/79-use_new_parser-YES.html

von Sigi (Gast)


Lesenswert?

Ja, kann mich an die Einstellung noch dunkel erinnern.
Aber 3D-Arrays oder höher muss ja nicht sein..

Und was ich noch vergessen habe zu schreiben: Mein
VGA-Text-Controller braucht gerade mal <= 200 LUTs
und <= 200 FF, läuft auf Cyclone-I C6 mit ca 175 MHz
und das ohne grosse Optimierungen. Mit Optimierung
geht's bis ca 230 MHz. (Auf Spartan3 ca. 250 MHz).
Das alles ist keine Zauberei, man muss nur das Problem
zerlegen und sich überlegen wann welche Berechnung
gemacht werden kann und evtl. Berechnungen einen Takt
vorverlegen (VGA-Signale sind PERIODISCH).

von Peter P. (Gast)


Lesenswert?

@Sigi
Wäre es Dir möglich, deinen VGA-Text-Controller zu zeigen
oder ist er vielleicht sogar bereits auf einer Webseite verfügbar?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sigi schrieb:
> sich überlegen wann welche Berechnung gemacht werden kann und evtl.
> Berechnungen einen Takt vorverlegen
Der zugrundeliegende Effekt nennt sich "Latency"...

Sigi schrieb:
> Bevor man sich an VGA-Textausgabe rantraut, sollte man zuerst mal
> die Basics durchkauen (Lauflicht) und sauber ausformulieren.
Und man sollte sich unbedingt das Thema Simulation genauer anschauen. 
Denn gerade so ein VGA-Controller, der als stimuli ausser dem Takt von 
aussen nichts braucht, ist schnuckelig einfach als Waveform darstellbar.

von Sigi (Gast)


Lesenswert?

Peter P. schrieb:
>Wäre es Dir möglich, deinen VGA-Text-Controller zu zeigen
>oder ist er vielleicht sogar bereits auf einer Webseite verfügbar?

das wäre kein Problem, aber dabei lernt ja niemand etwas. Der TO
und andere Interessierte sollten sich lieber selber dran machen und
einen zu designen. Meiner Einschätzung nach bewegt sich ein solcher
Controller komplexitätstechnisch zwischen SPI- und I2C/UART-Controller
(falls man jetzt mal SRAM bzw. SDRAM-Anbindung weglässt).

Ein solches Design kann man in drei Schritte einteilen:

1. Erzeuge ein 2D-Koordinatenraster: zwei Signale RAS_X und RAS_Y
   (bitte noch nicht mit Pixel-Koordinaten verwechseln) werden
   entsprechend hochgezählt bzw. rückgesetzt. RAS_X zunächst in
   jedem Takt, bis eben der rechte Rand erreicht ist und RAS_Y
   bei jeder neuen Zeile. Schon hier kann mann viele Performance-Fehler
   machen. Man hat aber zumindestens schon mal die 2D-Koordinaten.

2. Aus je RAS_X und RAS_Y entsprechende Event-Signale für
   Zeichenbereich Beginn/Ende, Porch-Bereiche (Front,Back),
   Sync Beginn/Ende generieren. Aus diesen Signalen lassen sich
   dann die VGA-Sync-Signale HSYNC/VSYNC ableiten.

3. Aus RAS_X und RAS_Y sowie Zeichenbereich Beginn/Ende kann man
   dann leicht ein erstes Balkendemo ableiten: z.B. horz. Streifen
   aus RAS_X etc.
   Ebenso lassen sich RAS_X und RAS_Y direkt als Pixelkoordinate
   verwenden bzw. eine Pixelkoordinate ableiten (z.B. nur jede 2.
   Rasterposition Horz etc.).
   Oder bei Textdemos: die ersten 3 LSB-Bits von RAS_X und RAS_Y
   als Font-Koordinate und die übrigen X Bits als Zeichenkoordinate.
   Oder ein einfaches Graphikdemo: aus RAS_X und RAS_Y
   eine Speicheraddresse berechnen und die Pixeldaten dann aus
   dem Speicher auslesen (einfach für BlockRAMS und SRAMs,
   komplizierter für SDRAMS, hier muss auf Speicherrefresh geachtet
   werden)

UND: für jeden Schritt eine eigene Komponente anlegen, das erhöht
die Übersichtlichkeit und lehrt ein wenig hierachisches Designen.
Die meisten Designs hier von Anfängern vereinen alle 3 Punkte in
einer total Unübersichtlichen Komponente (=> Spaghetti-Code).

Jeder dieser Schritte lässt sich locker von Anfängern mit erster
Erfahrung ind VHDL in ein paar Abenden durchdesignen. Hier im Forum
gibts dann genug Leute, die das Design dann überschauen.

Und wie Lothar schon warnend gescchrieben hat und von vielen als
selbstverständlich gilt: Siumlieren, simulieren, simulieren...

von Fpgakuechle K. (Gast)


Lesenswert?

Lothar Miller schrieb:
> Fpga Kuechle schrieb:
>> integer ohne range ist ein Grund den immensen Logik-verbauch.
> Na gut, was als unnütz erkannt wird, wird hinterher dann schon
> wegoptimiert oder fest auf 0 gesetzt. Allerdings kann der Synthesizer
> nicht alles erkennen...

IMHO erkennen die Tools nur Logik die un-verdrahtet ist, aber zum 
erkennen von un-nütz reicht es bei der KI nicht. Und der counter ist als 
solcher komplett beschaltet: 32 bit register, die einen 32 bit 
inkrementor treiben desen ausgang auf die D-Inputs der FF gehen ... Das 
einige FF vorm inkrementieren zurück gesetzt werden erkenen die Tools 
nicht, denn dazubraucht es Wissen über das Verhalten in Laufzeit. 
Interessant wäre noch wie sich der init-wert bei der signal deklaratio 
auswirkt. bei Null müssten die oberen bits wegoptimiert werden; bei 
2**31-1 dagegen nicht (weil doch alle FF mindestens einmal tooglen.

-> nach meiner Erfahrungen werden zu breite Zähler nicht auf die 
passende Breite optimiert.

MfG,

von Peter B. (funkheld)


Lesenswert?

Es hat noch kein deutscher geschafft hier im Forum mit VHDL ein VGA-Text 
zu erzeugen 80x30 oder höher. Es sind hier alle Sprücheklopfer mit ihren 
Ratschlägen. Aber es gibt einen deutschen der das in Verilog geschafft 
hat mit 100 Zeilen und mit PS2-Tastatur den Text darstellen auf 190 
Zeilen.

Na dann....mit fertigen Argumenten und keinen leeren Sprüchen.


Gruss

: Bearbeitet durch User
von Schlumpf (Gast)


Lesenswert?

Peter Bierbach schrieb:
> Es sind hier alle Sprücheklopfer mit ihren
> Ratschlägen.

Das merke ich mir.. von mir bekommst du hier jedenfalls nie wieder einen 
Ratschlag.

Und glaube mir, im Gegensatz zu dir kann ich mir was merken!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Peter Bierbach schrieb:
> Aber es gibt einen deutschen der das in Verilog geschafft hat
Wusste ich es doch: WIR sind die Besten.

> es gibt einen deutschen der das in Verilog geschafft
> hat mit 100 Zeilen
Und: kapierst DU, was der da gemacht hat?

> Es sind hier alle Sprücheklopfer mit ihren Ratschlägen.
Mir scheint diese Ansicht irrig.

von Schlumpf (Gast)


Lesenswert?

Lothar Miller schrieb:
> Peter Bierbach schrieb:
>> Aber es gibt einen deutschen der das in Verilog geschafft hat
> Wusste ich es doch: WIR sind die Besten.

Ich denke, er meint damit sich selbst :-)

Lothar Miller schrieb:
>> es gibt einen deutschen der das in Verilog geschafft
>> hat mit 100 Zeilen
> Und: kapierst DU, was der da gemacht hat?

Mit Sicherheit nicht. Selbst, wenn er glaubt, den Code selbst 
geschrieben zu haben :-) :-)

Lothar Miller schrieb:
>> Es sind hier alle Sprücheklopfer mit ihren Ratschlägen.
> Mir scheint diese Ansicht irrig.

Ausser Irriges habe ich von Peter hier auch noch nichts gelesen. Daher 
erstaunt mich das nicht.

von Christian R. (supachris)


Lesenswert?

Peter Bierbach schrieb:
> Es hat noch kein deutscher geschafft hier im Forum mit VHDL ein VGA-Text
> zu erzeugen 80x30 oder höher. Es sind hier alle Sprücheklopfer mit ihren
> Ratschlägen.

Vielleicht haben die Leute hier einfach anderes zu tun, als so einen 
Spielkram zu implementieren? Ich kann dir z.B. aus zuverlässiger Quelle 
sagen, dass die FPGA Designs für diese Hardware komplett in VHDL und von 
einem Deutschen erstellt wurden, der auch hier im Forum aktiv ist ;) 
http://www.izfp-d.fraunhofer.de/competence/systeme/index.html

: Bearbeitet durch User
von Peter B. (funkheld)


Lesenswert?

--------------------------
Vielleicht haben die Leute hier einfach anderes zu tun, als so einen
Spielkram zu implementieren?
--------------------------

Ein Forum sollte nichts mit der Arbeitswelt zu tun haben.
Ein Forum ist für Spieler und Hobbysten.

Gruss

von Peter B. (funkheld)


Lesenswert?

---------------------------------------------------
Und: kapierst DU, was der da gemacht hat?
---------------------------------------------------

Ja, mit Verilog ist die Struktur durchschaubar. Auch ohne Testbench.
Da hat jede Textzeile eine klare Bedeutung was im FPGA vor sich geht.

VHDL ist sehr Widersprüchlich, das geht schon auseinander von der 
Nutzung der Bitvectoren bis zu verschiedenen Takteilern die immer neue 
Superlativen an nehmen , weil immer daran etwas zu meckern gibt.

Gruss

von Christoph Z. (christophz)


Lesenswert?

Peter Bierbach schrieb:
> Ein Forum sollte nichts mit der Arbeitswelt zu tun haben.
> Ein Forum ist für Spieler und Hobbysten.

Wieder so ein schöner versuch herum zu Trollen, aber weil es Freitag ist 
bekommst du trotzdem eine Antwort (und einen Fisch):

Willkommen in der neuen Zeit, ohne Foren und Wikis kann die Arbeitswelt 
heute nicht mehr auskommen. Diverse grosse Firmen haben ihren Telefon 
und sogar ihren E-Mail Support eingestellt und man darf als Kunde seine 
Fragen im Community Forum oder im Wiki stellen. Leider nicht immer zum 
Vorteil von uns Kunden.

Im deutschsprachigen Raum gibt es, aus meiner Sicht, keine bessere 
Anlaufstelle für Fragen zu VHDL und FPGAs (Danke dafür). Natürlich gibt 
es immer noch sehr spezifische Sachen die ein Field-Application-Engineer 
besser und schneller beantworten kann, wenn es um spezifische Produkte 
geht. Aber beides ergänzt sich sehr gut.
(Der FAE der mich aktuell betreut, liest hier sogar mit! Hat mich schon 
gefreut :-) )

von peter (Gast)


Lesenswert?

Nur wer in der realen Arbeitswelt nicht genug anerkannt wird von 
Auszubildenden oder Untergegebenen, versucht hier sein Glück teilweise 
mit protzigen Antworten an den Man zu bringen. Damit meine ich auch die 
Jungs  die an einem der sogenannten hohem Instituten ihr Geld 
schwermütig verdienen, ob Professor oder ein anderer Handlanger.

Also runter vom hohem Sessel.

Gruss

von peter (Gast)


Lesenswert?

Man könnte auch erzählen:
Wenn du hier ins Forum kommst (Hölle) bekommst du einen Löffel der ist 2 
Meter lang, womit du dir Suppe holen kannst aus einem Topf der ist ist 2 
Meter enfernt von dir, nun führ deinen gefüllten Löffel an den 
Mund....????

Es gibt Foren da bekommst du einen Löffel der ist auch 2 Meter lang, 
womit du dir Suppe holen kannst aus einem Topf der ist 2 Meter enfernt 
von dir, bloß in diesen Foren werden die Löffel gegenseitig von Mensch 
zu Mensch zum Mund geführt, einer ernährt den Anderen.

Gruss

von Christian R. (supachris)


Lesenswert?

Peter, kann das sein, dass du ein generelles Problem mit anderen bzw. 
anders denkenden Menschen hast?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

peter schrieb:
> Wenn du hier ins Forum kommst (Hölle)
Mal ganz ehrlich: wer zwingt dich?
Offenbar kommen viele Andere mit der Art Hilfestellung, wie sie hier 
geboten wird, klar und ans Ziel:
https://www.mikrocontroller.net/search?query=Danke

von Ale (Gast)


Lesenswert?

Ein Text Kontroller in 100 Linien verilog ist nicht schwer. So ein 
Kontroller braucht 2 Zähler, 2 Rams, ein Schieberegister und ein paar 
comparatoren... es braucht nicht viel mehr, genau wie Lothar gesagt hat.

von Schlumpf (Gast)


Lesenswert?

Ale schrieb:
> Ein Text Kontroller in 100 Linien verilog ist nicht schwer.

Und in VHDL? :)

von daniel__m (Gast)


Lesenswert?

Schlumpf schrieb:
> Ein Text Kontroller in 100 Linien

Welche Aussagekraft hat den die Mengenangabe 100 Zeilen Code? Lasst die 
Zeilenumbrüche weg und ihr bekommt einen ganzen Prozessor in eine Zeile 
(egal ob Verilog oder VHDL) ;)

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

daniel__m schrieb:
> Welche Aussagekraft hat den die Mengenangabe 100 Zeilen Code?

Keine. Das ist ein Anhaltspunkt.

Ein CSS-Decoder für DVDs in Pyton kommt z.B. mit wenigen Zeilen aus. War 
es eine? Oder zwei? Ich habe keine Lust jetzt danach zu googeln.

von daniel__m (Gast)


Lesenswert?

Torsten C. schrieb:
> Keine.

sehe ich auch so

von Schlumpf (Gast)


Lesenswert?

daniel, wenn du zitierst, dann bitte richtig, ja?

Die Anzahl der Codezeilen hat natürlich GAR NICHTS mit dem Umfang der 
realen Hardware zu tun.

Meine Frage, wie es denn in VHDL sei, war ironisch gemeint, WEIL es 
total blödsinnig ist, den Umfang einer Funktion in Anzahl der Codezeilen 
anzugeben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.