Hallo
ich habe das programm geschrieben nun leider der Prof hat verlangt dass
ich es nicht mit Buffer schreiben sondern mit OUT. habe ja versucht aber
leider ging nicht ( immer fehler )
kann mir jemand helfen bitte und es korregieren.
danke !!!!
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Counter is
generic( N: natural := 4);
port( CLK, RESET, UND : in std_logic;
Q : buffer integer range 0 to 2**N-1);
end Counter;
architecture Behaviour of Counter is
begin
process(CLK, RESET)
begin
if RESET = '1' then -- Asynchron
Q <= 0; -- Loeschen
elsif CLK='1' and CLK'event then -- Synchron zaehlen
if UND = '1' then
Q <= (Q+1) mod 2**N; -- Aufwaerts
else
Q <= (Q-1) mod 2**N; -- Abwerts
end if;
end if;
end process;
end Behaviour;
Internes Signal zum Zählen innerhalb des Prozesses verwenden und
auuserhalb dem Ausgangsport zuweisen.
[vhdl]
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity Counter is
generic( N: natural := 4);
port( CLK, RESET, UND : in std_logic;
Q : buffer integer range 0 to 2**N-1);
end Counter;
architecture Behaviour of Counter is
-- internes signal
signal s_q : integer range 0 to 2**N-1;
begin
process(CLK, RESET)
begin
if RESET = '1' then -- Asynchron
s_q <= 0; -- Loeschen
elsif rising_edge(CLK) then -- Synchron zaehlen
if UND = '1' then
s_q <= (s_q+1) mod 2**N; -- Aufwaerts
else
s_q <= (s_q-1) mod 2**N; -- Abwerts
end if;
end if;
end process;
-- ausgang
Q <= s_q;
end Behaviour;
danke für dein antwort Soll ich also auch Buffer mit Out ändern ????? weil du hast es in deine korretur nicht geändert danke nochmal
Sollte man generell Buffer vermeiden und mit Hilfs- bzw. Zwischensignalen arbeiten oder eher nicht ? Vor- und Nachteile beider Ansätze ?
ja genau . buffer total vermeiden und OUt benutzen wegen die verzögerung in der Simulation so habe ich verstanden von der Prof. ich bin nur ein anfänger in Vhdl danke
Buffer sollte man nicht für die Synthese verwenden. Ports mit Buffer in der Richtungsangabe werden nicht von allen Synthesewerkzeugen unterstützt. Und für Simulationszwecke auch nur wenn man genau weiß was man tut. Auf den ersten Blick, scheint sich ein Buffer wie ein inout zu verhalten. Doch liefert ein Buffer nur den Wert des mit ihm assoziierten Treibers und nicht den Wert der wirklich an dem angeschlossenen Signal außerhalb des Moduls anliegt. Wenn z.B. das Modul eine '1' treibt und außerhalb ein anderes Modul eine '0' ist das Signal undefiniert. Doch die Abfrage des Buffers wird die '1' seines Treibers liefern.
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.