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
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?
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.
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;
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
@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]
;-)
@ 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.
@ 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.
> VHDL ist dem Ursprung nach eine Simulationsprache!
2 Geschichte von VHDLVHDL 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
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?
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.
> 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.