Hallo, ich habe folgendes problem: ich will auf einen string signal von zwei verschiedenen processen zugreifen. habe folgendes in inet zu dem thema gefunden. http://mikro.e-technik.uni-ulm.de/vhdl/anl-deut.vhd/html/node28.html werde aber daraus nicht viel schlauer. Gibt es eine fertige resolution funktion für string signale zum download? Bzw. kann mir jemand ein paar tipps geben wie ich die selbst schreiben kann, da ich aber ein noob in sachen VHDL-programmierung bin, bitte etwas ausführlicher. Danke und Gruß Andreas.
Was verstehst du denn unter "string signal"? Wenn du es nur lesen musst, dann mach das einfach. Sonst wirst du einen Multiplexer einbauen muessen (angenommen das Signal ist in deinem FPGA intern enthalten). Manche FPGA's unterstuetzen auch interne Tri-State-Buffers, aber nicht viele. Zen
nein, lesen klapt ohne problemme, allerdings den signal zu überschreiben funktioniert nicht. ENTITY Programm IS PORT ( .... STRING_OUT : out string(6 downto 1) --ausgabe von texten .... ); END ENTITY Programm; jetzt versuche ich von zwei verschiedenen processen über diesen out-pin texte auszugeben. Was meinst du mit Tri-State-Buffer? Wie gesagt ich bin ein absoluter anfänger, könntest du das bitte etwas genauer erklären. Grüße Andreas
Hmm, ich wusste gar nicht, das string ueberhaupt ein VHDL typ ist... Was willst du denn extern (also ausserhalb deiner Entity) mit diesem String anfangen? Ein grosser Fehler den Anfaenger sehr hauefig machen ist das ganze als Programm und nicht als Hardware zu sehen. Du schreibst hier kein Programm das sequentiel von einem Kontroller durchgearbeitet wird. Du beschreibst die Struktur einer "Platine"! Man sollte eigentlich immer mit einer Zeichnung anfangen, wie das ganze als Hardware aussehen soll - und zwar am Anfang mit einzelnen Registern und Gattern, so als ob du die Schaltung auf einer Platine mit einzelnen ICs zusammen loeten wuerdest. Dann kann man diese Zeichnung per VHDL beschreiben, um sie auf einen FPGA zu bringen. Bei komplizierteren Designs zeichnet man natuerlich nicht mehr einzelne Register, aber auch hier sollte man sich das System erst einmal zeichnen. Dabei hat man dann nicht nur einzelne Register und Gatter, sondern auch schon kompliziertere Bloecke die von sich aus wieder aus Registern und Gattern bestehen, und so weiter. Es sollte auch klar sein, das es in einer Hardware so etwas wie einen String eigentlich nicht geben kann... es gibt schliesslich nur einzelne "bits" die eine '1' oder '0' darstellen koennen. Du kannst zwar viele bits (pro Character 8 bits) als "String" definieren, im grunde sind es aber immer noch nur '1'-en und '0'-en. Also noch mal die Frage, was du mit diesen Strings ueberhaupt machen moechtest? Zurueck zu deinem Problem, wie man zwei Treiber fuer ein Signal hinkriegt: Du musst halt zusehen, dass immer nur ein Process auf einmal den string beschreiben kann. Die ordentliche Methode dies zu machen ist mit einem Multiplexer. Das sieht im grunde so aus: beide deiner Prozesse generieren ihr eigenes Signal. Dann wird in einem weiteren Prozess ausgewaehlt, welches dieser beiden Signale nun an dein Ausgangsignal angeschlossen wird. Es gibt diverse Methoden dies in VHDL zu beschreiben, zum beispiel ein Multiplexer mit Eingaengen A und B von denen je nach dem Wert von S einer zum Ausgang Y geleitet wird (Schau dir mal die Funktionsweise von einem Multiplexer (Mux, zb. 74LS151) in einem Datenblatt an wenn das unverstaendlich war): architecture... signal A,B,Y,S: std_logic; ... begin ... -- 1. Variante: S <= A when (S='0') else B; -- 2. Variante: process(A,B,S) begin if(S='0') then Y <= A; else Y <= B; end if; end process; ... end architecture; Hoffentlich hilft dir das weiter, sonst lass uns mal wissen wofuer du die strings brauchst! Zen
Hallo Zen, Wie du schon sagtest: Ich komme aus der Softwareentwicklung und habe das wirklich wie ein Programm runter geschrieben. Allerdings habe ich dann bei der Synthese meine ersten Probleme bekommen...mit denen ich immer noch zu kämpfen habe. Dazu kommt noch das ich in FPGA - Entwicklung ein absoluter Anfänger bin und für Beseitigung von meisten Fehlern/Warnungen sehr sehr lange brauche. Falls du wissen willst was ich mit dem String vorhabe, hier sind die VHDL Dateien: http://www.mikrocontroller.net/forum/read-9-198112.html#new Der String wird vom "Programm" an den "Wrapper" übergeben und dort verarbeitet. Ich versuche deine Idee mit dem Multiplexer umzusetzen...mal sehen was daraus wird. Auf jeden Fall danke für die Hilfe. Grüße Andreas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.