VHDL-Forum

 
Sie sind nicht eingeloggt.
LoginLogin Kostenlos anmeldenKostenlos anmelden
BeiträgeBeiträge MembersMitglieder SucheSuche HilfeHilfe
VotesUmfragen FilesDateien CalendarKalender BookmarksBookmarks
VHDL-Forum
27 Treffer gefunden
Suchdauer: 0,01 Sekunden
VHDL-Forum Anfang   zurück   weiter   Ende
   Betreff   Autor   Datum 
No new posts Re: Zeiten in VHDL
270kHz -> Zeit pro Periode 1/270k = 3.7us 37us / 3.7us = 10 -> integer Wert delay_37 152us / 3.7us = 41.08 -> 42 integer Wert delay_152 Gruß
witteks 08.04.07, 13:28
No new posts Re: Simulation pull-up an open collector inouts
Hallo Stefan, ich weiß nicht, ob ich dir helfen kann, aber hast du schon probiert diesen pull-up selbst als kleinen Block zu beschreiben, über den du die anderen beiden Blöcke verbindest. Ich stecke jetzt leider nicht so richtig drin, aber du hast wahrscheinlich das Problem das du einen hochohmigen Zustand nicht auswerten kannst, richtig ? Sind beide Ports wirklich funktionale Ein- und Ausgänge? Sven
witteks 06.10.05, 22:37
No new posts Re: PS2 Schnittstelle
Hallo, das ist zwar jetzt nicht extra für dich geschrieben, aber vielleicht kannst du es etwas für dich abwandeln. Es nimmt das Startbit in einem D-FF auf und wertet den Inhalt an der nächsten Flanke des 25MHz Taktes aus. Da der interne Takt wesentlich höher ist, sollte die Auswertung der seriellen Schnittstelle kein Problem sein. Sven -- proc_start_int : Dieser Prozess erzeugt aus der steigenden Taktflanke -- des externen Startbits ein internes taktsynchrones Signal proc_start_int : PROCESS (ars , clk25) BEGIN IF ars = '1' THEN start_int <= '0'; start_dead <= '0'; ELSIF clk25'EVENT AND clk25 = '1' THEN IF start = '1' AND sync_start = '0' THEN start_int <= '1'; start_dead <= '1'; ELSIF frame_count (4) = '1' THEN start_dead <= '0'; ELSE start_int <= '0'; END IF; END IF; END PROCESS proc_start_int;
witteks 06.10.05, 22:24
No new posts Re: Fehler bei Signal Synthese
Hallo Christof, habe gerade nicht so viel Zeit gehabt. Ich bin aber noch interessiert an der Weiterentwicklung. Hast du die Auswertung der Daten schon abgeschlossen? Ich habe noch nicht so viele Erfahrungen mit CPLDs gemacht, wobei ich allerdings schon einen PC84-Sockel für einen FPGA per Hand aufgelötet habe. Der Pinabstand war kein Problem. Was für Packages gibt es denn für 160 Makrozellen? Sven
witteks 24.05.05, 23:41
No new posts Re: Fehler bei Signal Synthese
Hallo Christof, habe mich jetzt mal einen Augenblick :D mit der Seite beschäftigt und versucht das ganze umzusetzen. Ich habe mich nicht so an das Flußdiagramm gehalten, hoffe aber, dass es trotzdem verständlich ist. Dazu habe ich auch eine MiniTestbench geschrieben. Hast du denn schon den Decoder für das Auswerten des data_bit mit Hilfe von min_clk und bit_clk? Gruß, Sven
witteks 11.05.05, 23:26
No new posts Re: Fehler bei Signal Synthese
Hallo nochmal, habe jetzt versucht zu verstehen, was die Schaltung machen soll und veränderte ein paar Sachen. Es ergibt sich eine Funktion, bei der ich mir aber nicht sicher bin, ob das so sein soll, weil die beiden Ausgänge min_clk und bit_clk HIGH werden, sobald der lokale Takt anliegt. Schau es dir an und schreibe mir mal, ob du es so gebrauchen kannst. Sven
witteks 10.05.05, 22:21
No new posts Re: Fehler bei Signal Synthese
Hallo ChristofR, das Problem beginnt ab der Zeile elsif counter >= 130 then Da sich das elsif auf die clk-Flanke bezieht, kommt es zu dem Fehler. Die Abfrage von counter darf nur an Flanken erfolgen, ansonsten mußt du das außerhalb des Prozesses asynchron verarbeiten. Ich versuche noch hinter die Funktion zu kommen und kann vielleicht noch einen Lösungsvorschlag bringen. Sven
witteks 10.05.05, 21:51
No new posts Re: Impulsabstandsmessung
Hallo Sven, hier ein Lösungsvorschlag mit Testbench (im Anhang ZIP-Datei). library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive components. --library UNISIM; --use UNISIM.VComponents.all; entity Messung is Port ( reset : in std_logic; Zu_testendes_Signal : in std_logic; clk_ref : in std_logic; Impulsabstand : out std_logic_vector(15 downto 0); Messung_fertig : out std_logic; Ueberlauf : inout std_logic ); end Messung; architecture Behavioral of Messung is signal halten : std_logic; -- zum Messen einer ganzen Periode des zu messenden Signales signal Impulsabstand_zaehler : std_logic_vector(15 downto 0); begin process (reset, clk_ref) begin if reset = '1' then Impulsabstand_zaehler <= X"0000"; Impulsabstand <= X"0000"; Messung_fertig <= '0'; Ueberlauf <= '0'; halten <= '0'; elsif rising_edge (clk_ref) then if Impulsabstand_zaehler = X"FFFF" then Impulsabstand_zaehler <= X"0000"; Ueberlauf <= '1'; else -- kein Überlauf if Ueberlauf = '0' then if Impulsabstand_zaehler = X"0000" then if Zu_testendes_Signal = '1' then Impulsabstand_zaehler <= Impulsabstand_zaehler + 1; halten <= '1'; Messung_fertig <= '0'; end if; else -- Impulsabstand_zaehler nicht 0 if halten = '1' then if Zu_testendes_Signal = '1' then Impulsabstand_zaehler <= Impulsabstand_zaehler + 1; else Impulsabstand_zaehler <= Impulsabstand_zaehler + 1; halten <= '0'; end if; else -- halten = '0' if Zu_testendes_Signal = '0' then Impulsabstand_zaehler <= Impulsabstand_zaehler + 1; else Impulsabstand_zaehler <= X"0000"; Messung_fertig <= '1'; Impulsabstand <= Impulsabstand_zaehler; end if; end if; end if; else -- Überlauf = 1 if Zu_testendes_Signal = '0' then Impulsabstand_zaehler <= X"0000"; Ueberlauf <= '0'; halten <= '0'; end if; end if; end if; end if; end process; end Behavioral;
witteks 14.03.05, 21:07
No new posts Re: DCT mit parallel multiplier
Hallo Jens, Was meinst du denn mit zwei verschiedenen Modi für die diskrete Cosinus Transformation (DCT). Erklär doch mal näher welche Schritte dabei durchgeführt werden und welche Operationen man benötigt. Ich glaube, nicht viele können was mit DCT anfangen, aber vielleicht kann man dir helfen, wenn man weiß, wie gerechnet wird. Gruß Sven
witteks 11.03.05, 13:38
No new posts Re: Lauflicht & Würfel ... bitte helft mir!
Hallo, Habe mich mal ein paar Minuten hingesetzt. Hier die Lösungsvorschläge: Wahlweise kannst du auch die zip-Datei in dein Xilinx-Projektverzeichnis entpacken und danach auf die lauflicht.npl doppelklicken. Lauflicht: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity LaufendeLED is Port ( taster : in std_logic; ars : in std_logic; clk : in std_logic; led : out std_logic_vector(7 downto 0)); end LaufendeLED; architecture Behavioral of LaufendeLED is signal led_intern : std_logic_vector (7 downto 0); begin process (clk, ars) begin if ars = '1' then led_intern <= "00000001"; elsif rising_edge (clk) then if taster = '1' then if led_intern (7) = '1' then led_intern (0) <= '1'; else led_intern (0) <= '0'; end if; led_intern (7 downto 1) <= led_intern (6 downto 0); end if; end if; end process; led <= led_intern; -- Übergabe an Ausgabe asynchron -> dadurch ist in der -- Realität im CPLD led = led_intern end Behavioral; Würfel: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity wuerfel is Port ( ars : in std_logic; clk : in std_logic; taster : in std_logic; zahl : out std_logic_vector(6 downto 0)); end wuerfel; architecture Behavioral of wuerfel is signal zahl_intern : std_logic_vector (6 downto 0); -- -- Würfeldarstellung LED-Anordnung (Bit 0 bis 6) -- -- O O (0) (4) -- -- O O O (1) (3) (5) -- -- O O (2) (6) -- begin process (clk, ars) begin if ars = '1' then zahl_intern <= "0001000"; -- eins elsif rising_edge (clk) then if taster = '1' then case zahl_intern is when "0001000" => -- eins zahl_intern <= "0010100"; -- zwei when "0010100" => zahl_intern <= "1001001"; -- drei when "1001001" => zahl_intern <= "1010101"; -- vier when "1010101" => zahl_intern <= "1011101"; -- fünf when "1011101" => zahl_intern <= "1110111"; -- sechs when others => zahl_intern <= "0001000"; -- eins end case; end if; end if; end process; zahl <= zahl_intern; -- Übergabe an Ausgabe asynchron -> real: zahl = zahl_intern end Behavioral;
witteks 10.03.05, 16:42
No new posts Re: Lauflicht & Würfel ... bitte helft mir!
Hallo Katja, mußt du dazu unbedingt VHDL benutzen? Solche Aufgaben lassen sich leichter über "Schematic Entry" lösen, weil die Aufgabenstellung nicht wirklich komplex ist. Mit Schematic Entry bedienst du dich sozusagen aus einem Baukasten der Funktionen deines CPLDs und verdrahtest dann einfach. Dabei behältst du auf jeden Fall besser die Übersicht und kannst leichter verstehen, was du da überhaupt machst. Arbeitest du schon länger mit CPLDs? Sven
witteks 01.03.05, 12:31
No new posts Re: Error: VHDL error ... can't determine definition of operator ""+"" -- found 0 possible definitions
Hallo Andreas, vielleicht ist das '+' für die Addition dieser beiden Werte nicht definiert. Wahrscheinlich werden dabei unterschiedliche Typen miteinander verknüpft. Deshalb ist bestimmt erst eine Typkonvertierung von acvar.areg(ac_int) (auf welchen Typ zeigt das?) oder x"00000002" (ist das eine Konstante?) nötig. Gruß, Sven
witteks 18.02.05, 08:44
No new posts Re: Linear Feedback Shit Register
Hallo Mark10k! Du hast sicher bestimmt schon herausbekommen, aber ich denke es liegt daran, dass du Variablen, Signale und Ports verschiedener Typen verwendet hast. Port : data (Typ - std_logic) Variable : feedback (Typ - bit) Signal : LSFR (Typ - bit_vector) Du darfst bei Zuweisungen untereinander nur gleiche Typen benutzen oder Konvertierungen vornehmen. Ich empfehle dir generell nur std_logic einzusetzen, weil damit mehr Zustände eines Signals betrachtet werden können, als beim Typ bit (siehe Dokumentation). Sven
witteks 03.01.05, 09:57
No new posts Re: Einstellungen sepichern
Hallo, du kannst, nachdem du die Testbench im Navigator verändert hast, im Hauptfenster des noch von der vorherigen Testbench offenen ModelSim mit der Pfeiltaste nach oben gehen, um durch die letzten Befehle zu gehen. Beim erneuten Ausführen ***Testbench***.do wird nur die Waveform neu berechnet. Andere Befehle können so sinnvoll wiederholt werden. Damit spart man unheimlich viel Zeit, weil ja auch nicht mehrere Instanzen vom ModelSim gestartet werden können. Gruß, Sven
witteks 04.11.04, 21:10
No new posts Re: Nah zur Realität Simulation!!
Hallo! Wenn ich es richtig verstanden habe, benutzt du die Xilinx Edition. In dieser Variante schreibst du einfach eine Testbench und klickst danach auf "Simulate Post-Place & Route VHDL-Model". Die Ergebnisse der Ausgänge entsprechen dann den Verzögerungen in der "Realität". Timing Simulationen sind aber für komplexe Schaltungen immer sehr rechenintensiv und sollten zur Überprüfung von Verletzungen der Setup- und Holdzeiten eingesetzt werden. Durch Bekanntmachung von Frequenzen in den Constraint-Dateien ist man dann aber schon ein Stück weiter. Im Normalfall, bei synchroner Programmierung von Prozessen, reicht der Einsatz der Behavioral Simulation, solange man sich nicht im Grenzbereich der Takte des FPGA befindet. Gruß, Sven
witteks 18.09.04, 13:20
No new posts Re: Frequenz Multiplizierer
Hallo Gaelforce! Meines Wissens nach, ist es immer ein bisschen komplizierter eine Frequenz zu erhöhen, aber es gibt verschiedene Möglichkeiten. Die erste ist die, dass du schon einen höheren Takt im System hast, von dem du die neue Frequenz, in Abhängigkeit eines bestimmten Faktors der zu multiplizierenden kleineren Frequenz, ableitest. Bei so geringen Frequenzen, wie in deinem Beispiel sollte das eigentlich kein Problem sein. Die zweite Möglichkeit ist die Nutzung von bestimmten Einheiten, die dir im FPGA zur Verfügung gestellt werden. Bei Xilinx nennt sich das Digital Clock Management (DCM) und bei Altera gibt es das auch (Bezeichnung fällt mir jetzt nicht ein). Ich kann jetzt nur für Xilinx sprechen, aber dort kannst du nur Frequenzen verdoppeln (durch kaskadieren von mehreren DCMs sind jedoch auch andere Faktoren möglich). Mit der Verwendung von DCMs benötigst du keine externen höheren Frequenzen, weil die DCM intern mit festen Verzögerungsgliedern und Zählern arbeitet und dadurch selbst sehr hohe Takte erzeugen kann. Wenn mich nicht irrt, kann z.B. der Virtex II einen Eingangstakt von 150 MHz sogar noch verdoppeln. Bei Altera solltest du ähnliche Funktionen vorfinden. Gruß, Sven
witteks 31.08.04, 10:31
No new posts Re: paralleles Singal seriell ausgeben
Hallo Steffen 1. Wie erfolgt die Übernahme eines Strings in einem digitalen System? :confused: Ich denke, dass dazu zwischen zwei digitalen Systemen auch nur ein binärer serieller oder paralleler Datenstrom fließt. Es sei denn, dass der String innerhalb eines Systems übergeben wird. In diesem Fall wandelt das Synthesetool das automatisch im Hintergrund. 2. Erfolgt die Übernahme des Strings in einem Prozess? Vielleicht wird der Prozess nicht aktiviert. Sven
witteks 19.08.04, 21:05
No new posts Re: paralleles Singal seriell ausgeben
Hallo Steffen! Wenn du schon das ganze neu programmierst, dann versuche alles synchron von einem clk zu takten. Das wird eindeutig besser von den Synthesetools unterstützt und du handelst dir nicht so viele Probleme ein. Das Ganze gilt natürlich nicht, wenn du unbedingt asynchron arbeiten wolltest! Was mich noch interessiert: Weil ich noch nicht so viel in deiner Funktion 'gekramt' habe, würde mich interessieren, was für ein Bitvektor dort abhängig vom Zeichen zurückgegeben wird. Kannst du das mit kurzen Worten erklären? Sven
witteks 17.08.04, 20:19
No new posts Re: paralleles Singal seriell ausgeben
Hallo code_HH! Ich habe mal versucht in deinen Code hereinzukommen. Leider ist das sehr schwer in kurzer Zeit, weil überhaupt keine Kommentare vorhanden sind. Soll das ganze mal in Realität umgesetzt werden? Mit welchem Programm hast du das geschrieben, weil ich mit dem WebPack viele Syntaxfehler erhalte. Sven
witteks 13.08.04, 21:35
No new posts Re: paralleles Singal seriell ausgeben
[quote:Dr. Faustus] Wenn man : if (bit_zaehler = 0) then bit_zaehler := 0; else bit_zaehler := bit_zaehler + 1; schreibt wird weniger logik auf dem Chip produziert [/quote] Dann aber eher so: if (bit_zaehler = 5) then bit_zaehler := 0; else bit_zaehler := bit_zaehler + 1; end if; Gruß Sven
witteks 04.08.04, 12:20
No new posts Re: paralleles Singal seriell ausgeben
Gib das Signal in einem mit Clock getakteten Prozess aus. Sowas in der Art signal : bit_vector (5 downto 0); --(vielleicht besser std_logic_vector) signal : ausgang bit; process (clk) var bit_zaehler : integer; begin if rising_edge(clk) then if bit_zaehler /= 5 then bit_zaehler := bit_zaehler + 1; else bit_zaehler := 0; end if; end if end process; ausgang <= signal (bit_zaehler); Ich hoffe das funktioniert so, leider habe ich jetzt nix zum Testen. Unter Templates im WebPack findest du übrigens auch Beispiele für solche Wandler. Sven
witteks 03.08.04, 21:01
No new posts Meinungen
Hallo, Wer von euch hat dieses Buch schon gelesen? Ich habe bis jetzt die Hälfte davon gelesen und finde es richtig gut, weil es viele Probleme bei der Synthetisierung aufgreift, erklärt und Lösungen anbietet. Zum Beispiel bringt er Beispiele zu 'multi'process- und single'process' FSMs und erklärt dabei für mich gut verständlich die Anwendung von Variablen, die ich vorher immer versucht habe zu umgehen, weil ich den Unterschied nicht kapiert habe. Gruß Sven
witteks 08.07.04, 09:03
No new posts Umsetzung rising_edge(clk)
In einem Beitrag habe ich gelesen, dass man statt if clk'event and clk = '1' then besser if rising_edge(clk) then schreiben sollte. Welchen Grund hat das? Eigentlich sollten beide Varianten das gleiche Ergebnis in Hardware und Simulation haben, oder? Ich benutze bisher nur Variante 1 in meinen synchronen Umgebungen. Sven
witteks 22.06.04, 14:27
No new posts Re: Unterschied zwischen net und pin im ucf file
Was möchtest du denn genau für constraints vergeben (Angaben zur Frequenz?)? Stell doch mal das ucf-file rein. Bei mir habe ich zum Beispiel nur net als Befehl. Sowohl für Taktangaben, als auch für Angaben der Pinbelegung. Sven
witteks 21.06.04, 13:09
No new posts Re: Bräuchte Hilfe !!!
Stell doch mal deinen Quelltext rein. Dann kann man vielleicht schon so helfen. Auf welcher Hardware soll das realisiert werden? Sven
witteks 21.06.04, 12:57
No new posts Re: SRAM vs. BlockRAM
Ich habe schon mit BlockRAM im VirtexII gearbeitet. Hast du schon bestimmte Vorstellungen und Erfahrungen bei SRAM? Auf welcher Hardware soll das implementiert werden? Sven
witteks 21.06.04, 12:51
No new posts Re: Is ja noch nich so viel los hier...
Hallo Ich bin noch Elekrotechnik-Student und habe einen Teil meiner Studienarbeit und meine komplette Diplomarbeit mit VHDL geschrieben. Ich arbeite mit dem WebPack von Xilinx und dem ModelTechSimulator auf der VirtexII-Basis. Ich habe jetzt Erfahrungen mit der Anwendung von BlockRAM und den DCMs in der Virtex-Baureihe. Ich hoffe wir können uns hier gegenseitig helfen. Gruß, Sven
witteks 21.06.04, 12:46
 
 
20 von 27 Ergebnisse Anfang   zurück   weiter   Ende
Search

powered by carookee.com - eigenes profi-forum kostenlos

Design © trevorj