Forum: FPGA, VHDL & Co. wofür FPGA??


von mike101 (Gast)


Lesenswert?

guten tag

da ich zur zeit VHDL lernen will, habe ich paar fragen die ich  nicht so 
verstehe.

was ist der unterschied zwischen VHDL und fpga??

Programmiere ich über fpga den cpu?oder umgekehrt??

was will man mit VHDL oder FPGA erreichen??

wer weiss villeicht denkt ihr: ,,wie kann man so dumm fragen.
würd mich freuen wenn ihr mir dabei hilft

danke voraus

von manoh (Gast)


Lesenswert?

Schau dir doch mal 
http://www.mikrocontroller.net/articles/Programmierbare_Logik an, da 
sollte schnell klar werden was VHDL und FPGA ist. Wenn doch nicht, dann 
findest Du sicher auch was bei Wikipedia....

von Patrick (Gast)


Lesenswert?

VHDL, ist eine Hardwarebeschreibungssprache, vergleichbar mit einer 
Programmiersprache, mit der es einfach möglich ist, komplizierte 
digitale Systeme zu beschreiben.

Ein FPGA ist ein programmierbarer Integrierter Schaltkreis (IC) der 
Digitaltechnik. Die englische Abkürzung steht für Field Programmable 
Gate Array und kann als „Vor Ort modifizierbarer Logikbaustein“ 
übersetzt werden.


Also ist VHDL die Sprache, mit der Du den FPGA programmierst. Alles 
klar?

von Patrick (Gast)


Lesenswert?


von Günter -. (guenter)


Lesenswert?

Patrick wrote:
...
> Also ist VHDL die Sprache, mit der Du den FPGA programmierst. Alles
> klar?

Das mag jetzt etwas penibel klingen, aber ich finde die Wortwahl nicht 
sehr sinnvoll. Gerade für einen Anfänger sollte der Unterschied zwischen 
der Programmierung einer CPU und der Entwicklung von digitaler Logik für 
einen FPGA klar gemacht werden.

VHDL ist eine Hardwarebeschreibungssprache, mit der, wie der Name es 
sagt, Hardware beschrieben wird. Es ist keine Programmierung im Sinne 
einer Programmiersprache.

Das Synthesetool übersetzt dann die Hardwarebeschreibung in eine 
Netzliste, die z.B. für einen speziellen FPGA implementiert werden kann.

Programmiert wird dann der FPGA mit dem Bitstrom, der aus der 
Implementierung resultierte.

Die unterschiedliche Sichtweise halte ich für wichtig, damit man bei der 
Hardwarebeschreibung nicht anfängt die Sprachkonstrukte von VHDL wie 
eine Programmiersprache zu nutzen.

von mike101 (Gast)


Lesenswert?

Ich bedanke an allen die mir eine schnelle Anwort geschrieben haben 
Dankeschön...


warum ich unbedingt den unterschied wissen wollte liegt es darum, weil 
ich ein Projekt bekommen habe.

Es geht um Digitale In und Out mein Arbeitskollege hat mir dabei 
geholfen um den einstieg zu bekommen, hat mir das hier geschieben.

Meine aufgabe ist ich soll die Daten schreiben und lesen und simulieren 
können, weil mir viel wiessen über VHDL fehlt krieg ich es nicht ihn

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;

ENTITY Cpu_testben IS
END Cpu_testben;

ARCHITECTURE behavior OF Cpu_testben IS

    -- Component Declaration for the Unit Under Test (UUT)

    COMPONENT CPU
    PORT(
         Data : INOUT  std_logic_vector(15 downto 0);
         Addr : IN  std_logic_vector(3 downto 0);
         SDRAM_Clock1 : IN  std_logic;
         SDRAM_Clock2 : IN  std_logic;
         Reset_n : IN  std_logic;
         CS_n : IN  std_logic;
         RD_n : IN  std_logic;
         WR_n : IN  std_logic;
         WAIT_n : IN  std_logic;
         DIN : IN  std_logic_vector(16 downto 1);
         DOUT : OUT  std_logic_vector(16 downto 1)
        );
    END COMPONENT;


   --Inputs
   signal Addr : std_logic_vector(3 downto 0) := (others => '0');
   signal SDRAM_Clock1 : std_logic := '0';
   signal SDRAM_Clock2 : std_logic := '0';
   signal Reset_n : std_logic := '0';
   signal CS_n : std_logic := '1';
   signal RD_n : std_logic := '1';
   signal WR_n : std_logic := '1';
   signal WAIT_n : std_logic := '1';
   signal DIN : std_logic_vector(16 downto 1) := (others => '0');

  --BiDirs
   signal Data : std_logic_vector(15 downto 0);

   --Outputs
   signal DOUT : std_logic_vector(16 downto 1);


  CONSTANT clock_period : Time := 10 ns;
  signal clock: std_logic;

BEGIN

  -- Instantiate the Unit Under Test (UUT)
   uut: CPU PORT MAP (
          Data => Data,
          Addr => Addr,
          SDRAM_Clock1 => SDRAM_Clock1,
          SDRAM_Clock2 => SDRAM_Clock2,
          Reset_n => Reset_n,
          CS_n => CS_n,
          RD_n => RD_n,
          WR_n => WR_n,
          WAIT_n => WAIT_n,
          DIN => DIN,
          DOUT => DOUT
        );

   -- No clocks detected in port list. Replace <clock> below with
   -- appropriate port name


  clock_process :process
  begin
    -- Schreib vorgang
    wait for 10 ns;  --  10ns lang LOW
    Reset_n <= '1';

    wait for 5 ns;  -- ab 15ns CS_n nach low ziehen
    Addr <= "0000";   -- Daten auf adres 0000 settings schreiben
    wait for 5 ns;  -- ab 25ns Addr,Data,WR_n nach high ziehen
    CS_n <= '0';
    wait for 5 ns;
    WR_n <= '0';
    wait for 5 ns;
    Data <= "0000000001000000";  -- in 40hexideziml zahl
     wait for 5 ns;
    WR_n <= '1';
     wait for 5 ns;
    CS_n <= '1';
    wait;
  end process;

  Lesen_process :process
   begin

    wait for 10 ns;
    Addr <= "0000";
--    wait for 5 ns;
    CS_n <= '0';
    wait for 15 ns;
    RD_n <= '0';
    wait for 15 ns;
    RD_n <= '1';
--    wait for 20 ns;
--    CS_n <= '0';
--    wait for 10 ns;  -- 25ns lang LOW
--    CS_n <= '1';
    wait;
end process;
end;

von Thomas H. (mac4ever)


Lesenswert?

Am besten ist wirklich, wenn Du Dir erstmal ein wenig Literatur zum 
Thema VHDL durchliest. Dann wird das ganze wesentlich verständlicher für 
Dich werden.

Was Du da gepostet hast ist ein sogenannter Testbench. Das ist im 
Prinzip eine Simulation, wo nach deinen Vorgaben Signalpegel und Timing 
bestimmt und getestet werden können. In deinem Beispiel wird eine CPU 
getestet. Nachdem sie virtuell "verdrahtet" wurde ( -- Instantiate the 
Unit Under Test (UUT) ) kann man die Signale am Eingang festlegen und 
schauen was am Ausgang wieder raus kommt ;)

Es gibt sehr viel leicht verständliche Literatur dazu, also einfach mal 
Onkel Google fragen :)

http://www.google.de/search?q=VHDL+Tutorial

von lkmiller (Gast)


Lesenswert?

@Günter -..

[Schlaumeiermodus=on]
VHDL ist keine Hardwarebeschreibungssprache sondern eine 
Systembeschreibungssprache.
VHDL kann nämlich viel mehr, als Hardware je können wird.
VHDL kann absolut und ganz ohne Probleme
komplexe mathematische Probleme
in beliebigen Zeitdimensionen beschreiben,
für die es sicher keine Hardware gibt.
[Schlaumeiermodus=off]

;-)

von Mark (Gast)


Lesenswert?

@ lkmiller:

VHSIC HDL = VHDL da steckt der Begriff Hardwarebeschreibungssprache nun 
mal drin. Wenn Du das anders siehst solltest Du auch gleich sämtliche 
Wiki-Seiten zum Thema VHDL im Web updaten.
Natürlich kann VHDL mehr, deshalb ist es auch eine faszinierende 
Sprache. Aber wofür setzt man sie praktisch ein? Um FPGAs oder ASICs zu 
entwickeln. Zur Simulation von Systemen geht z.B. MATLAB oder SystemC 
sicher besser.
Also passt der Begriff schon.

von Günter -. (guenter)


Lesenswert?

@ lkmiller :

Du hasst natürlich recht das sich die Sprache weiterentwickelt.

Wenn du Funktionen ansprichst die nicht für die Hardwareimplementierung 
verwendet werden darfst du aber auch nicht vergessen das die Sprache 
ursprünglich zum modellieren verwendet wurde. Die synthesierbare 
Untermenge der Sprache wurde erst später festgelegt.

Auch wird für die Verifikation eine wesentlich komplexerer Modellierung 
genutzt. So komplex, dass teilweise sich eigene Sprachen wie OpenVera 
oder e dafür entwickelt haben.

von Umberto (Gast)


Lesenswert?

"VHDL ist eine Hardwarebeschreibungssprache,"

VHDL ist dem Ursprung nach eine Simulationsprache!

von high_speed (Gast)


Lesenswert?

> VHDL ist dem Ursprung nach eine Simulationsprache!

2 Geschichte von VHDL
VHDL wurde Usprünglich vom amerikanischen Verteidigungsministerium
(Department of Defense) entwickelt. Man hat eine Sprache
zur Hardwareentwicklung gebraucht, die maschinen- und menschenlesbar
ist und den Entwickler dazu zwingt strukturiert und "leserlich"
zu schreiben. Anfang der 70er Jahre wurde zum ersten mal über eine
solche Hardwarebeschreibungssprache diskutiert. Zum ersten mal
wurde VHDL dann 1987 standardisiert und 1993 aktualisiert. 1999
entstand VHDL-AMS, was eine Erweiterung von VHDL um analoge
und mixed-signal Sprachelemente ist. VHDL-AMS ist damit eine
Obermenge zu VHDL. Allerdings ist die Analogsynthese ein zu komplexes
Feld und wird von VHDL-AMS ausgespart.[1]

Quelle:
http://www.uni-koblenz.de/~beckert/Lehre/Seminar-Formal-Methods/ko-seminarSS05-vhdl.pdf
-> Siemers, Christian - Hardwaremodellierung, Hanser,2001

MfG
Holger

von VerWickler (Gast)


Lesenswert?

Die Abkürzung bedeudet
V HDL ... VLSI - Hardware Description Language

also Hardware Beschreibungs Sprache.

VHDL wurde für die Verifikation und Dokumentation eingeführt, 
Verifikation bedeudete damals Simulator. Später hat man die automat. 
Generierung einer Netzliste (Synthese) aus VHDL "erfunden", wobei man 
aber in VHDL so schreiben muss, dass es die Synthese vesteht. Hat den 
Vorteil das man mit den selben Quellen verfizieren und (PLD-) 
Schaltkreis basteln kann.

Noch Fragen?

von lkmiller (Gast)


Lesenswert?

Very high speed integrated circuit Hardware Description Language

Bodenseedamfschifffahrtsgesellschaftskapitänskajütentürklinkenputzer

Noch Fragen?

von Umberto (Gast)


Lesenswert?

Und damit ist es dem Wesen nach eine Simualtionssprache! Erst wurde 
gedacht, dann simuliert ,um zu verfizieren. Die Synthese ist ein neuerer 
Aspekt, der eine eingeschränkte Untermenge von VHDL nutzt.

Daß HDL = Hardwarebeschreibungssprache heisst, steht dem nicht entgegen.

Auch SPICE.net ist eine Simulationssprache, die faktisch Hardware 
bechreibt.

von Andrê (Gast)


Lesenswert?

> was will man mit VHDL oder FPGA erreichen??

Man kann auf einer Platine sehr viel Platz sparren ;)
Anstatt 5000 Gatter-Bausteine für eine Schaltung zu benutzen, reicht ein 
FPGA. Das FPGA wird mit VHDL programmiert und stellt somit die ganze 
Gatter-Verdrahtung intern dar. Ein FPGA kann außerdem jederzeit 
umprogrammiert werden, was gewissermaßen das Risiko eines Fehldesigns 
sinkt.

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.