Forum: FPGA, VHDL & Co. VHDL: Aufsteigende Adresse an Port ausgeben


von Stefan (Gast)


Lesenswert?

Hallo Miteinander!

Ich habe folgendes Problem:
Ich möchte an 4 Ports eine aufsteigende Adresse ausgeben.
Dafür hab ich folgendes Programm mit einem Zähler, der Zählerstand soll 
an dann an den Ports ausgegeben werden.
Bei der Simulation wird folgende Fehlermeldung ausgegeben:

WARNING:Simulator:29 - at 0 ns: Warning: There is an 'U'|'X'|'W'|'Z'|'-' 
in an arithmetic operand, the result will be 'X'(es).

Code:

ENTITY MAIN IS
   PORT (CLK:      IN std_logic;
  Output:   OUT STD_LOGIC_VECTOR(3 downto 0) := "0000");
END;


ARCHITECTURE BEHAVIOR OF M200_MASTER IS
   signal Count : std_logic_vector (3 downto 0);

BEGIN

   PROCESS (CLK)
   BEGIN
      IF CLK='1' AND CLK'event THEN
      Output <= Count;
      END IF;
   END PROCESS;

   PROCESS
   BEGIN
      Count <= Count + 1;
   END PROCESS;

END BEHAVIOR;




Entwicklungsumgebung: Xilinx ISE 9.1i

Bin für Hilfe wirklich dankbar!

von Rick Dangerus (Gast)


Lesenswert?

Mach mal
1
   signal Count : std_logic_vector (3 downto 0) := "0000";
Und übersetze mal die Fehlermeldung.

Rick

von Stefan (Gast)


Lesenswert?

Hab ich gemacht!
bekomm keine Fehlermeldung...

von Klaus F. (kfalser)


Lesenswert?

Das  Count <= Count + 1  gehört in den getakteten Prozess, Count darf 
sich nur an jeder Flanke ändern!

   PROCESS (CLK)
   BEGIN
      IF CLK='1' AND CLK'event THEN
      Output <= Count;
      Count <= Count + 1;
      END IF;
   END PROCESS;

von rrascher (Gast)


Lesenswert?

Also, ich würde es so machen:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
use ieee.numeric_std.all;
4
5
ENTITY MAIN IS
6
  PORT (
7
    clk   : in  std_logic;
8
    Output: out std_logic_vector(3 downto 0)
9
  );
10
END;
11
12
13
ARCHITECTURE BEHAVIOR OF M200_MASTER IS
14
15
  signal Count : unsigned(3 downto 0) := "0000";
16
17
begin
18
  process (clk)
19
  begin
20
    if rising_edge(clk) then
21
      Count <= Count + 1;
22
    end if;
23
24
    Output <= std_logic_vector(Count);
25
  end process;
26
end behavior;

Die Syntax habe ich nicht überprüft. Hoffe trotzdem dass
es richtig ist. Zähler sind bei mir immer unsigned.

Gruß

Ralf

von Schlumpf (Gast)


Lesenswert?

Ausserdem würd ich nen Reset durchführen, wo beim anlegen eines Reset- 
Signals Count auf Null gesetzt wird.

von Stefan (Gast)


Lesenswert?

habs mit eurer Hilfe hinbekommen...

Vielen Dank!!!

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
Noch kein Account? Hier anmelden.