www.mikrocontroller.net

Forum: FPGA, VHDL & Co. zähler rückwärts und vorwärts


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;

Autor: TM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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;

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hans-Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte man generell Buffer vermeiden und mit Hilfs- bzw. 
Zwischensignalen arbeiten oder eher nicht ? Vor- und Nachteile beider 
Ansätze ?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.